diff options
Diffstat (limited to 'tests/014')
-rw-r--r-- | tests/014/dgram-stream.expected | 0 | ||||
-rw-r--r-- | tests/014/dgram-stream.tl | 8 | ||||
-rw-r--r-- | tests/014/in6addr-str.tl | 120 | ||||
-rw-r--r-- | tests/014/inaddr-str.tl | 78 | ||||
-rw-r--r-- | tests/014/sockaddr-str.tl | 49 | ||||
-rw-r--r-- | tests/014/socket-basic.expected | 0 | ||||
-rw-r--r-- | tests/014/socket-basic.tl | 19 | ||||
-rw-r--r-- | tests/014/socket-misc.tl | 20 | ||||
-rw-r--r-- | tests/014/str-addr.tl | 68 |
9 files changed, 350 insertions, 12 deletions
diff --git a/tests/014/dgram-stream.expected b/tests/014/dgram-stream.expected deleted file mode 100644 index e69de29b..00000000 --- a/tests/014/dgram-stream.expected +++ /dev/null diff --git a/tests/014/dgram-stream.tl b/tests/014/dgram-stream.tl index 5902a84d..6890e300 100644 --- a/tests/014/dgram-stream.tl +++ b/tests/014/dgram-stream.tl @@ -1,7 +1,7 @@ (load "../common.tl") (load "../sock-common.tl") -(defvar family) +(defvar *family*) (defun server (svc-sock) (whilet ((acc-sock (sock-accept svc-sock)) @@ -10,7 +10,7 @@ (close-stream acc-sock))) (defun client (addr) - (with-stream (cli-sock (open-socket family sock-dgram)) + (with-stream (cli-sock (open-socket *family* sock-dgram)) (sock-connect cli-sock addr) (dotimes (i 1000) (print i cli-sock) @@ -22,7 +22,7 @@ (flush-stream cli-sock))) (defun dgram-test () - (let* ((svc-sock (open-socket family sock-dgram)) + (let* ((svc-sock (open-socket *family* sock-dgram)) (svc-addr (bindfree svc-sock 1025 65535)) (server-pid (fork))) (cond @@ -37,6 +37,6 @@ (fboundp 'fork)) (let ((maybe-ipv6 (if (memq (os-symbol) '(:linux :macos :cygwin :cygnal)) (list af-inet6)))) - (each ((family ^(,af-inet ,*maybe-ipv6))) + (each ((*family* ^(,af-inet ,*maybe-ipv6))) (unless (dgram-test) (error "test failed"))))) diff --git a/tests/014/in6addr-str.tl b/tests/014/in6addr-str.tl new file mode 100644 index 00000000..a85da416 --- /dev/null +++ b/tests/014/in6addr-str.tl @@ -0,0 +1,120 @@ +(load "../common.tl") + +(test (in6addr-str "junk") :error) + +(test (in6addr-str "0:0:0:0:0:0:0:0:0") :error) +(test (in6addr-str "0:0:0:0:0:0") :error) +(test (in6addr-str "0:0:0:0") :error) +(test (in6addr-str "") :error) + +(test (in6addr-str "0:0:0:0:0:0:0:x:0") :error) + +(test (in6addr-str ":0:0:0:0:0:0:0:0:0") :error) +(test (in6addr-str "0:0:0:0:0:0:0:0:0:") :error) + +(test (in6addr-str "0:0:0:0:0:0:0:0:FFFFF") :error) +(test (in6addr-str "0:0:0:0:0:0:0:FFFFF:0") :error) +(test (in6addr-str "0:0:0:0:0:0:FFFFF:0:0") :error) +(test (in6addr-str "0:0:0:0:0:FFFFF:0:0:0") :error) +(test (in6addr-str "0:0:0:0:FFFFF:0:0:0:0") :error) +(test (in6addr-str "0:0:0:FFFFF:0:0:0:0:0") :error) +(test (in6addr-str "0:0:FFFFF:0:0:0:0:0:0") :error) +(test (in6addr-str "0:FFFFF:0:0:0:0:0:0:0") :error) +(test (in6addr-str "FFFFF:0:0:0:0:0:0:0:0") :error) + +(test (in6addr-str "0:0:0:0:0:0:0:0/") :error) +(test (in6addr-str "0:0:0:0:0:0:0:0/129") :error) +(test (in6addr-str "[0:0:0:0:0:0:0:0]:") :error) +(test (in6addr-str "[0:0:0:0:0:0:0:0]:65536") :error) + +(test (in6addr-str "0:0:0:0:0:0:0:0") + #S(sockaddr-in6 addr 0 + port 0 flow-info 0 scope-id 0 prefix 128)) +(test (in6addr-str "1111:2222:3333:4444:5555:6666:7777:8888") + #S(sockaddr-in6 addr 22685837286468424649968941046919825544 + port 0 flow-info 0 scope-id 0 prefix 128)) +(test (in6addr-str "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF") + #S(sockaddr-in6 addr 340282366920938463463374607431768211455 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "[0:0:0:0:0:0:0:0]:42") + #S(sockaddr-in6 addr 0 + port 42 flow-info 0 scope-id 0 prefix 128)) +(test (in6addr-str "[1111:2222:3333:4444:5555:6666:7777:8888]:42") + #S(sockaddr-in6 addr 22685837286468424649968941046919825544 + port 42 flow-info 0 scope-id 0 prefix 128)) +(test (in6addr-str "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF]:42") + #S(sockaddr-in6 addr 340282366920938463463374607431768211455 + port 42 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "0:0:0:0:0:0:0:0/16") + #S(sockaddr-in6 addr 0 + port 0 flow-info 0 scope-id 0 prefix 16)) +(test (in6addr-str "1111:2222:3333:4444:5555:6666:7777:8888/16") + #S(sockaddr-in6 addr 22685144974938661909049738462362599424 + port 0 flow-info 0 scope-id 0 prefix 16)) +(test (in6addr-str "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF/16") + #S(sockaddr-in6 addr 340277174624079928635746076935438991360 + port 0 flow-info 0 scope-id 0 prefix 16)) +(test (in6addr-str "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff/16") + #S(sockaddr-in6 addr 340277174624079928635746076935438991360 + port 0 flow-info 0 scope-id 0 prefix 16)) + +(test (in6addr-str "[0:0:0:0:0:0:0:0/16]:42") + #S(sockaddr-in6 addr 0 + port 42 flow-info 0 scope-id 0 prefix 16)) +(test (in6addr-str "[1111:2222:3333:4444:5555:6666:7777:8888/16]:42") + #S(sockaddr-in6 addr 22685144974938661909049738462362599424 + port 42 flow-info 0 scope-id 0 prefix 16)) +(test (in6addr-str "[FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF/16]:42") + #S(sockaddr-in6 addr 340277174624079928635746076935438991360 + port 42 flow-info 0 scope-id 0 prefix 16)) + +(test (in6addr-str "1:2:3:4:5:6::7:8:9") :error) +(test (in6addr-str "1:2:3:4:5:6::7:8:9") :error) +(test (in6addr-str "1:2:3:4:5:6::7:8") :error) + +(test (in6addr-str "::1") + #S(sockaddr-in6 addr 1 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "1::") + #S(sockaddr-in6 addr 5192296858534827628530496329220096 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "1::1") + #S(sockaddr-in6 addr 5192296858534827628530496329220097 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "1:2::3:4") + #S(sockaddr-in6 addr 5192455314859856157205683417317380 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "::ffff:1.2.3.4.5") :error) +(test (in6addr-str "::ffff:1.2.3.4:5") :error) +(test (in6addr-str "::ffff:1.2.3") :error) +(test (in6addr-str "::ffff:1.2.3:4") :error) + +(test (in6addr-str "::ffff:1.2.3.4") + #S(sockaddr-in6 addr 281470698652420 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "::FFFF:1.2.3.4") + #S(sockaddr-in6 addr 281470698652420 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "::FfFf:1.2.3.4") + #S(sockaddr-in6 addr 281470698652420 + port 0 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "::FFFF:1.2.3.4/96") + #S(sockaddr-in6 addr 281470681743360 + port 0 flow-info 0 scope-id 0 prefix 96)) + +(test (in6addr-str "[::ffff:1.2.3.4]:42") + #S(sockaddr-in6 addr 281470698652420 + port 42 flow-info 0 scope-id 0 prefix 128)) + +(test (in6addr-str "[::FFFF:1.2.3.4/96]:42") + #S(sockaddr-in6 addr 281470681743360 + port 42 flow-info 0 scope-id 0 prefix 96)) diff --git a/tests/014/inaddr-str.tl b/tests/014/inaddr-str.tl new file mode 100644 index 00000000..67283188 --- /dev/null +++ b/tests/014/inaddr-str.tl @@ -0,0 +1,78 @@ +(load "../common.tl") + +(test (inaddr-str "junk") :error) +(test (inaddr-str "0.0.0.0.0") :error) +(test (inaddr-str "0.0.0") :error) +(test (inaddr-str "0") :error) +(test (inaddr-str "") :error) +(test (inaddr-str "0.0.0.nnn") :error) +(test (inaddr-str "0.0.0.256") :error) +(test (inaddr-str "0.0.256.0") :error) +(test (inaddr-str "0.256.0.0") :error) +(test (inaddr-str "256.0.0.0") :error) +(test (inaddr-str "0.0.0.0:65537") :error) +(test (inaddr-str "0.0.0.0/33") :error) +(test (inaddr-str "0.0.0.0/32:65537") :error) +(test (inaddr-str "0.0.0.0/33:0") :error) +(test (inaddr-str "0.0.0.0:0/0") :error) +(test (inaddr-str "0.0.0.") :error) +(test (inaddr-str "0.0..0") :error) +(test (inaddr-str "0..0.0") :error) +(test (inaddr-str ".0.0.0") :error) +(test (inaddr-str "0.0.0.0:") :error) + +(test (inaddr-str "0.0.0.0") + #S(sockaddr-in addr 0 port 0 prefix 32)) +(test (inaddr-str "1.2.3.4") + #S(sockaddr-in addr 16909060 port 0 prefix 32)) +(test (inaddr-str "255.255.255.255") + #S(sockaddr-in addr 4294967295 port 0 prefix 32)) + +(test (inaddr-str "0.0.0.0:0") + #S(sockaddr-in addr 0 port 0 prefix 32)) +(test (inaddr-str "1.2.3.4:5") + #S(sockaddr-in addr 16909060 port 5 prefix 32)) +(test (inaddr-str "255.255.255.255:65535") + #S(sockaddr-in addr 4294967295 port 65535 prefix 32)) + +(test (inaddr-str "0.0.0.0/0") + #S(sockaddr-in addr 0 port 0 prefix 0)) +(test (inaddr-str "1.2.3.4/8") + #S(sockaddr-in addr 16777216 port 0 prefix 8)) +(test (inaddr-str "255.255.255.255/24") + #S(sockaddr-in addr 4294967040 port 0 prefix 24)) + +(test (inaddr-str "0.0.0/0") + #S(sockaddr-in addr 0 port 0 prefix 0)) +(test (inaddr-str "0.0/0") + #S(sockaddr-in addr 0 port 0 prefix 0)) +(test (inaddr-str "0/0") + #S(sockaddr-in addr 0 port 0 prefix 0)) + +(test (inaddr-str "1.2.3/8") + #S(sockaddr-in addr 16777216 port 0 prefix 8)) +(test (inaddr-str "1.2/8") + #S(sockaddr-in addr 16777216 port 0 prefix 8)) +(test (inaddr-str "1/8") + #S(sockaddr-in addr 16777216 port 0 prefix 8)) + +(test (inaddr-str "0.0.0.0/0:1234") + #S(sockaddr-in addr 0 port 1234 prefix 0)) +(test (inaddr-str "1.2.3.4/8:1234") + #S(sockaddr-in addr 16777216 port 1234 prefix 8)) +(test (inaddr-str "255.255.255.255/24:1234") + #S(sockaddr-in addr 4294967040 port 1234 prefix 24)) + +(test (inaddr-str "0.0.0/0:1234") + #S(sockaddr-in addr 0 port 1234 prefix 0)) +(test (inaddr-str "0.0/0:1234") + #S(sockaddr-in addr 0 port 1234 prefix 0)) +(test (inaddr-str "0/0:1234") + #S(sockaddr-in addr 0 port 1234 prefix 0)) + +(test (inaddr-str "1.2.3/8:1234") + #S(sockaddr-in addr 16777216 port 1234 prefix 8)) +(test (inaddr-str "1.2/8:1234") + #S(sockaddr-in addr 16777216 port 1234 prefix 8)) +(test (inaddr-str "1/8:1234") + #S(sockaddr-in addr 16777216 port 1234 prefix 8)) diff --git a/tests/014/sockaddr-str.tl b/tests/014/sockaddr-str.tl new file mode 100644 index 00000000..183c1a02 --- /dev/null +++ b/tests/014/sockaddr-str.tl @@ -0,0 +1,49 @@ +(load "../common.tl") + +(mtest + (sockaddr-str "") :error + (sockaddr-str "1") :error + (sockaddr-str "x") :error + (sockaddr-str "1:2") :error + (sockaddr-str "[]:") :error) + +(mtest + (sockaddr-str "[::1]:-1") :error + (sockaddr-str "[::1]:65536") :error + (sockaddr-str "1.2.3.4:-1") :error + (sockaddr-str "1.2.3.4:65536") :error + (sockaddr-str "1:2/8") :error) + +(mtest + (sockaddr-str "/") #S(sockaddr-un canonname nil path "/") + (sockaddr-str "/abc") #S(sockaddr-un canonname nil path "/abc")) + +(mtest + (sockaddr-str "[::1]:2") #S(sockaddr-in6 addr 1 port 2) + (sockaddr-str "[::1/1]:2") #S(sockaddr-in6 addr 0 port 2 prefix 1)) + +(mtest + (sockaddr-str "::1") #S(sockaddr-in6 addr 1) + (sockaddr-str "::1/1") #S(sockaddr-in6 addr 0 prefix 1)) + +(mtest + (sockaddr-str "::ffff:1.2.3.4") #S(sockaddr-in6 addr 281470698652420) + (sockaddr-str "::ffff:1.2.3.4/96") #S(sockaddr-in6 addr 281470681743360 prefix 96)) + +(mtest + (sockaddr-str "1.2.3.4") #S(sockaddr-in addr 16909060) + (sockaddr-str "1.2.3.4/8") #S(sockaddr-in addr 16777216 prefix 8) + (sockaddr-str "1.2.3.4:16") #S(sockaddr-in addr 16909060 port 16) + (sockaddr-str "1.2.3.4/8:16") #S(sockaddr-in addr 16777216 prefix 8 port 16)) + +(mtest + (sockaddr-str "1/8") #S(sockaddr-in addr 16777216 prefix 8) + (sockaddr-str "1.2/8") #S(sockaddr-in addr 16777216 prefix 8) + (sockaddr-str "1/8:5") #S(sockaddr-in addr 16777216 prefix 8 port 5) + (sockaddr-str "1.2/8:5") #S(sockaddr-in addr 16777216 prefix 8 port 5)) + +(mtest + (sockaddr-str "1:2:3:4:5:6:7:8/127") + #S(sockaddr-in6 addr 5192455318486707404433266433261576 prefix 127) + (sockaddr-str "[1:2:3:4:5:6:7:8/127]:5") + #S(sockaddr-in6 addr 5192455318486707404433266433261576 prefix 127 port 5)) diff --git a/tests/014/socket-basic.expected b/tests/014/socket-basic.expected deleted file mode 100644 index e69de29b..00000000 --- a/tests/014/socket-basic.expected +++ /dev/null diff --git a/tests/014/socket-basic.tl b/tests/014/socket-basic.tl index efeed2d6..2e4d57a0 100644 --- a/tests/014/socket-basic.tl +++ b/tests/014/socket-basic.tl @@ -1,22 +1,25 @@ (load "../sock-common.tl") +(load "../common.tl") -(defvar socktype) +(defvar *socktype*) + +(defvarl %iters% (if (meql (os-symbol) :macos :bsd :openbsd) 2000 5000)) (defun client (addr) - (with-stream (cli-sock (open-socket af-inet socktype)) + (with-stream (cli-sock (open-socket af-inet *socktype*)) (sock-connect cli-sock addr) (put-string "5000" cli-sock) (sock-shutdown cli-sock) - (equal (read cli-sock) (range 1 5000)))) + (equal (read cli-sock) (range 1 %iters%)))) (defun server (svc-sock) (let* ((acc-sock (sock-accept svc-sock)) (query (read acc-sock))) - (print (range 1 5000) acc-sock) + (print (range 1 %iters%) acc-sock) (close-stream acc-sock))) -(defun test () - (let* ((svc-sock (open-socket af-inet socktype)) +(defun sock-test () + (let* ((svc-sock (open-socket af-inet *socktype*)) (svc-addr (bindfree svc-sock 1025 65535)) (child-pid (fork))) (cond @@ -26,6 +29,6 @@ (if (and (fboundp 'open-socket) (fboundp 'fork)) - (each ((socktype (list sock-dgram sock-stream))) - (unless (test) + (each ((*socktype* (list sock-dgram sock-stream))) + (unless (sock-test) (error "test failed")))) diff --git a/tests/014/socket-misc.tl b/tests/014/socket-misc.tl new file mode 100644 index 00000000..5f533529 --- /dev/null +++ b/tests/014/socket-misc.tl @@ -0,0 +1,20 @@ +(load "../sock-common") +(load "../common") + +(defmacro set-and-get (:env env place val) + (with-update-expander (getter setter) place env + ^(progn (,setter ,val) (,getter)))) + +(with-stream (s (open-socket af-inet (logior sock-dgram sock-nonblock))) + (test (sock-listen s) t) + (let* ((orig #S(sockaddr-in)) + (addr orig)) + (rotate addr (sock-peer s)) + (vtest (sock-peer s) orig))) + +(with-stream (s (open-socket af-inet sock-stream)) + (test (nzerop (set-and-get (sock-opt s sol-socket so-reuseaddr) 1)) t) + (test (set-and-get (sock-opt s sol-socket so-reuseaddr (ffi int)) 0) 0) + (whenlet ((addr (bindfree s 1025 65535))) + ;; sock-bind enables so-reuseaddr. + (test (nzerop (sock-opt s sol-socket so-reuseaddr)) t))) diff --git a/tests/014/str-addr.tl b/tests/014/str-addr.tl new file mode 100644 index 00000000..49bc844a --- /dev/null +++ b/tests/014/str-addr.tl @@ -0,0 +1,68 @@ +(load "../common.tl") + +(mtest + #S(sockaddr-un path "/foo").(str-addr) "/foo" + #S(sockaddr-un path nil).(str-addr) :error) + +(mtest + #S(sockaddr-in addr 0).(str-addr) "0.0.0.0" + #S(sockaddr-in addr #x01020304).(str-addr) "1.2.3.4" + #S(sockaddr-in addr #x01020304 prefix 8).(str-addr) "1.2.3.4/8" + #S(sockaddr-in addr #x01020304 prefix 16).(str-addr) "1.2.3.4/16" + #S(sockaddr-in addr #x01020304 prefix 24).(str-addr) "1.2.3.4/24" + #S(sockaddr-in addr #x01020304 prefix 31).(str-addr) "1.2.3.4/31" + #S(sockaddr-in addr #x01020304 prefix 32).(str-addr) "1.2.3.4" + #S(sockaddr-in addr #x01000000 prefix 8).(str-addr) "1/8" + #S(sockaddr-in addr #x01000000 prefix 16).(str-addr) "1/16" + #S(sockaddr-in addr #x01020000 prefix 16).(str-addr) "1.2/16" + #S(sockaddr-in addr #x01000000 prefix 24).(str-addr) "1/24" + #S(sockaddr-in addr #x01020000 prefix 24).(str-addr) "1.2/24" + #S(sockaddr-in addr #x01020300 prefix 24).(str-addr) "1.2.3/24" + #S(sockaddr-in addr #x01000000 prefix 31).(str-addr) "1/31" + #S(sockaddr-in addr 0 port 123).(str-addr) "0.0.0.0:123" + #S(sockaddr-in addr #x01020304 port 123).(str-addr) "1.2.3.4:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 8).(str-addr) "1.2.3.4/8:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 16).(str-addr) "1.2.3.4/16:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 24).(str-addr) "1.2.3.4/24:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 24).(str-addr) "1.2.3.4/24:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 31).(str-addr) "1.2.3.4/31:123" + #S(sockaddr-in addr #x01020304 port 123 prefix 32).(str-addr) "1.2.3.4:123" + #S(sockaddr-in addr #x01000000 port 123 prefix 8).(str-addr) "1/8:123" + #S(sockaddr-in addr #x01000000 port 123 prefix 16).(str-addr) "1/16:123" + #S(sockaddr-in addr #x01020000 port 123 prefix 16).(str-addr) "1.2/16:123" + #S(sockaddr-in addr #x01000000 port 123 prefix 24).(str-addr) "1/24:123" + #S(sockaddr-in addr #x01020000 port 123 prefix 24).(str-addr) "1.2/24:123" + #S(sockaddr-in addr #x01020300 port 123 prefix 24).(str-addr) "1.2.3/24:123" + #S(sockaddr-in addr #x01000000 port 123 prefix 31).(str-addr) "1/31:123") + +(mtest + #S(sockaddr-in6 addr 0).(str-addr) "::" + #S(sockaddr-in6 addr #x80000000000000000000000000000001).(str-addr) "8000::1" + #S(sockaddr-in6 addr #x00000000000000000000000000000001).(str-addr) "::1" + #S(sockaddr-in6 addr #x80000000000000000000000000000000).(str-addr) "8000::" + #S(sockaddr-in6 addr #x00008000000000000000000000000001).(str-addr) "0:8000::1" + #S(sockaddr-in6 addr #x00000000000000000000000000010000).(str-addr) "::1:0" + #S(sockaddr-in6 addr #x00008000000000000000000000010000).(str-addr) "0:8000::1:0" + #S(sockaddr-in6 addr #x000000000000abcd0000000000000000).(str-addr) "0:0:0:abcd::" + #S(sockaddr-in6 addr #x0000000000000000abcd000000000000).(str-addr) "::abcd:0:0:0" + #S(sockaddr-in6 addr #x11112222333344445555666677778888).(str-addr) "1111:2222:3333:4444:5555:6666:7777:8888" + #S(sockaddr-in6 addr #x01000200030004000500060007000800).(str-addr) "100:200:300:400:500:600:700:800" + #S(sockaddr-in6 addr #x00008000000000000000000000010000 port 0).(str-addr) "0:8000::1:0" + #S(sockaddr-in6 addr #x00008000000000000000000000010000 port 123).(str-addr) "[0:8000::1:0]:123" + #S(sockaddr-in6 addr #x00008000000000000000000000010000 prefix 128).(str-addr) "0:8000::1:0" + #S(sockaddr-in6 addr #x00008000000000000000000000010000 prefix 127).(str-addr) "0:8000::1:0/127" + #S(sockaddr-in6 addr #x00008000000000000000000000010000 port 123 prefix 127).(str-addr) "[0:8000::1:0/127]:123") + +(mtest + #S(sockaddr-in6 addr #xffff00000000).(str-addr) "::ffff:0.0.0.0" + #S(sockaddr-in6 addr #xffff00000000 prefix 24).(str-addr) "::ffff:0/24" + #S(sockaddr-in6 addr #xffff01000000 prefix 24).(str-addr) "::ffff:1/24" + #S(sockaddr-in6 addr #xffff01020000 prefix 24).(str-addr) "::ffff:1.2/24" + #S(sockaddr-in6 addr #xffff01020300 prefix 24).(str-addr) "::ffff:1.2.3/24" + #S(sockaddr-in6 addr #xffff01020304 prefix 24).(str-addr) "::ffff:1.2.3.4/24" + #S(sockaddr-in6 addr #xffff00000000 port 123 ).(str-addr) "[::ffff:0.0.0.0]:123" + #S(sockaddr-in6 addr #xffff00000000 port 123 prefix 24).(str-addr) "[::ffff:0/24]:123" + #S(sockaddr-in6 addr #xffff01000000 port 123 prefix 24).(str-addr) "[::ffff:1/24]:123" + #S(sockaddr-in6 addr #xffff01020000 port 123 prefix 24).(str-addr) "[::ffff:1.2/24]:123" + #S(sockaddr-in6 addr #xffff01020300 port 123 prefix 24).(str-addr) "[::ffff:1.2.3/24]:123" + #S(sockaddr-in6 addr #xffff01020304 port 123 prefix 24).(str-addr) "[::ffff:1.2.3.4/24]:123") |