[ B{ 0 0 0 0 0 0 0 0 0 127 0 0 0 0 0 1 } ]
[ "::127.0.0.1" T{ inet6 } inet-pton ] unit-test
+[ B{ 0 2 0 0 0 0 0 9 0 127 0 0 0 0 0 1 } ]
+[ "2::9:127.0.0.1" T{ inet6 } inet-pton ] unit-test
+
[ "2001:6f8:37a:5:0:0:0:1" ]
[ "2001:6f8:37a:5::1" T{ inet6 } [ inet-pton ] [ inet-ntop ] bi ] unit-test
ERROR: bad-ipv4-embedded-prefix obj ;
-: ensure-zero-prefix ( seq -- seq )
- dup [ hex> ] map
- [ { f 0 } swap member? ] all? [ bad-ipv4-embedded-prefix ] unless ;
+: parse-ipv6-component ( seq -- seq' )
+ [ dup hex> [ nip ] [ bad-ipv6-component ] if* ] { } map-as ;
: parse-inet6 ( string -- seq )
[ f ] [
":" split CHAR: . over last member? [
unclip-last
- [ ensure-zero-prefix drop ] [ parse-inet4 ] bi*
+ [ parse-ipv6-component ] [ parse-inet4 ] bi* append
] [
- [
- dup hex> [ nip ] [ bad-ipv6-component ] if*
- ] { } map-as
+ parse-ipv6-component
] if
] if-empty ;