Better fix for ipv6

db4
Doug Coleman 2010-01-24 15:57:06 -06:00
parent ef5baa5b67
commit af96673458
2 changed files with 7 additions and 7 deletions

View File

@ -52,6 +52,9 @@ io.streams.string ;
[ 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

View File

@ -120,19 +120,16 @@ ERROR: bad-ipv6-component obj ;
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 ;