GNU bug report logs -
#63516
Static networking should wait for interfaces to be up
Previous Next
Full log
Message #34 received at 63516 <at> debbugs.gnu.org (full text, mbox):
* ip/addr.scm (new-address-message->address): New procedure.
(get-addrs): Use it, and use 'filter-map' instead of 'filter' followed
by 'map'.
---
ip/addr.scm | 40 +++++++++++++++++++---------------------
1 file changed, 19 insertions(+), 21 deletions(-)
diff --git a/ip/addr.scm b/ip/addr.scm
index fcb286f..f82d733 100644
--- a/ip/addr.scm
+++ b/ip/addr.scm
@@ -183,6 +183,24 @@
(close-port sock)
(answer-ok? (last answer)))))
+(define (new-address-message->address msg)
+ "If MSG has type 'RTM_NEWADDR', return the corresponding <addr> object.
+Otherwise return #f."
+ (and (eqv? (message-kind msg) RTM_NEWADDR)
+ (let* ((data (message-data msg))
+ (attrs (addr-message-attrs data)))
+ (make-addr (addr-message-family data)
+ (addr-message-prefix-len data)
+ (map int->ifa-flag
+ (split-flags (logior (addr-message-flags data)
+ (get-attr attrs IFA_FLAGS))))
+ (addr-message-scope data)
+ (addr-message-index data)
+ (get-attr attrs IFA_LABEL)
+ (get-attr attrs IFA_ADDRESS)
+ (get-attr attrs IFA_BROADCAST)
+ (get-attr attrs IFA_CACHEINFO)))))
+
(define (get-addrs)
(define request-num (random 65535))
(define message
@@ -195,27 +213,7 @@
(let ((sock (connect-route)))
(send-msg message sock)
(let* ((answer (receive-and-decode-msg sock %default-route-decoder))
- (addrs (filter
- (lambda (msg) (equal? (message-kind msg) RTM_NEWADDR))
- answer))
- (addrs (map
- (lambda (msg)
- (let* ((data (message-data msg))
- (attrs (addr-message-attrs data)))
- (make-addr
- (addr-message-family data)
- (addr-message-prefix-len data)
- (map
- int->ifa-flag
- (split-flags (logior (addr-message-flags data)
- (get-attr attrs IFA_FLAGS))))
- (addr-message-scope data)
- (addr-message-index data)
- (get-attr attrs IFA_LABEL)
- (get-attr attrs IFA_ADDRESS)
- (get-attr attrs IFA_BROADCAST)
- (get-attr attrs IFA_CACHEINFO))))
- addrs)))
+ (addrs (filter-map new-address-message->address answer)))
(close-port sock)
addrs)))
--
2.40.1
This bug report was last modified 2 years and 55 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.