Add support for link deletion

Julien LepillerTue Feb 02 00:38:28+0100 2021

eda6d58

Add support for link deletion

doc/guile-netlink.texi

528528
@end example
529529
@end deffn
530530
531+
@deffn {Scheme Procedure} link-del @var{device}
532+
Delete a link.  @var{device} can contain the name of the link, as a string,
533+
or its index, as a number.
534+
@end deffn
535+
531536
@bye

ip/link.scm

2828
  #:use-module (srfi srfi-1)
2929
  #:use-module (srfi srfi-9)
3030
  #:export (link-add
31+
            link-del
3132
            link-set
3233
            link-show))
3334

315316
    (let ((answer (receive-and-decode-msg sock %default-route-decoder)))
316317
      (close-socket sock)
317318
      (answer-ok? (last answer)))))
319+
320+
(define* (link-del device)
321+
  (define request-num (random 65535))
322+
323+
  (define message
324+
    (make-message
325+
      RTM_DELLINK
326+
      (logior NLM_F_REQUEST NLM_F_ACK)
327+
      request-num
328+
      0
329+
      (make-link-message
330+
        AF_UNSPEC
331+
        0
332+
        (cond
333+
          ((number? device) device)
334+
          ((string? device) (link-name->index device)))
335+
        0
336+
        0
337+
        '())))
338+
339+
340+
  (let ((sock (connect-route)))
341+
    (send-msg message sock)
342+
    (let ((answer (receive-and-decode-msg sock %default-route-decoder)))
343+
      (close-socket sock)
344+
      (answer-ok? (last answer)))))