Posted to tcl by mjanssen at Wed Jul 27 20:33:34 GMT 2011view pretty

%proc ip6parts {address} {
    
    # returns parts as a list or the empty list if address is not ipv6
    set parts [split $address :]
    if {[llength $parts] != 8} {return {}}
    foreach part $parts {
       if {[regexp {^[[:xdigit:]]{1,4}$} $part]==0} {return {}}
    }
    return $parts
}
% ip6parts 2607:f098:10ff:0:1:45:ee:1
2607 f098 10ff 0 1 45 ee 1
% ip6parts 2607:f098:10ff:0:1:45:ee:2
2607 f098 10ff 0 1 45 ee 2
% ip6parts 2607:f098:10ff:0:1:45:ee:x
%