[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
04/06: syscalls: 'read-socket-address' gracefully handles unsupported fa
From: |
Ludovic Courtès |
Subject: |
04/06: syscalls: 'read-socket-address' gracefully handles unsupported families. |
Date: |
Sat, 25 Jul 2015 12:45:09 +0000 |
civodul pushed a commit to branch master
in repository guix.
commit 3ca337699a2feb2a42f3661b7321a5e7d5fec594
Author: Ludovic Courtès <address@hidden>
Date: Sat Jul 25 12:22:30 2015 +0200
syscalls: 'read-socket-address' gracefully handles unsupported families.
* guix/build/syscalls.scm (PF_PACKET, AF_PACKET): New variables.
(read-socket-address): Make 'index' optional. Return (vector FAMILY) when
FAMILY is neither AF_INET nor AF_INET6.
---
guix/build/syscalls.scm | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/guix/build/syscalls.scm b/guix/build/syscalls.scm
index 73c5437..69abea1 100644
--- a/guix/build/syscalls.scm
+++ b/guix/build/syscalls.scm
@@ -57,6 +57,8 @@
clone
setns
+ PF_PACKET
+ AF_PACKET
IFF_UP
IFF_BROADCAST
IFF_LOOPBACK
@@ -506,7 +508,10 @@ bytevector BV at INDEX."
(else
(error "unsupported socket address" sockaddr)))))
-(define (read-socket-address bv index)
+(define PF_PACKET 17) ;<bits/socket.h>
+(define AF_PACKET PF_PACKET)
+
+(define* (read-socket-address bv #:optional (index 0))
"Read a socket address from bytevector BV at INDEX."
(let ((family (bytevector-u16-native-ref bv index)))
(cond ((= family AF_INET)
@@ -514,7 +519,9 @@ bytevector BV at INDEX."
((= family AF_INET6)
(read-sockaddr-in6 bv index))
(else
- "unsupported socket address family" family))))
+ ;; XXX: Unsupported address family, such as AF_PACKET. Return a
+ ;; vector such that the vector can at least call 'sockaddr:fam'.
+ (vector family)))))
(define %ioctl
;; The most terrible interface, live from Scheme.
- branch master updated (bd4af2f -> e7f5691), Ludovic Courtès, 2015/07/25
- 01/06: doc: Make "Application Setup" more prominent., Ludovic Courtès, 2015/07/25
- 03/06: syscalls: 'define-c-struct' distinguishes pointers from integers., Ludovic Courtès, 2015/07/25
- 02/06: syscalls: Rename 'network-interfaces' and 'all-network-interfaces'., Ludovic Courtès, 2015/07/25
- 04/06: syscalls: 'read-socket-address' gracefully handles unsupported families.,
Ludovic Courtès <=
- 05/06: syscalls: 'define-c-struct' properly align reads., Ludovic Courtès, 2015/07/25
- 06/06: syscalls: Add 'network-interfaces', which wraps libc's 'getifaddrs'., Ludovic Courtès, 2015/07/25