kurahaupo 1622548011 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 = *[!:0-9a-f]* ]] kurahaupo 1622548312 forget kurahaupo 1622548316 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 = *[!:0-9a-fA-F]* && $1 != *[!:0][!:][!:][!:][!:]* ]] kurahaupo 1622548997 forget kurahaupo 1622549000 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 = *[!:[:xdigit:]]* && $1 != *[!:0][!:][!:][!:][!:]* ]] kurahaupo 1622549104 forget kurahaupo 1622549110 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 != *[!:[:xdigit:]]* && $1 != *[!:0][!:][!:][!:][!:]* ]] kurahaupo 1622552183 forget kurahaupo 1622552221 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 != *[!:[:xdigit:]]* && $1 != *[!:0][!:][!:][!:][!:]* && ( $1 = *::* || $1 = *:*:*:*:*:*:*:* ) ]] kurahaupo 1622553870 forget kurahaupo 1622553873 learn [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 != *[!:[:xdigit:]]* && $1 != *[!:0][!:][!:][!:][!:]* && ( $1 = *::* || ( $1 = *:*:*:*:*:*:*:* && :$1: != *::* ) ) ]] kurahaupo 1622554414 forget kurahaupo 1622554414 learn is_ipv6() { [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 != *[!:[:xdigit:]]* && $1 != *[!:0][!:][!:][!:][!:]* ]] && if [[ $1 = *:*:*:*:*:*:*:* ]] ; then [[ :$1: != *::* ) ) ]] ; else [[ $1 = *::* ]] ; fi ; } kurahaupo 1622554843 forget kurahaupo 1622554843 learn is_ipv6() { [[ $1 = *:*:* && $1 != *:*:*:*:*:*:*:*:* && $1 != *:::* && $1 != *::*::* && $1 != *[!:[:xdigit:]]* && $1 != *[!:][!:][!:][!:][!:]* && :$1 != *:0[!:]* ]] && if [[ $1 = *:*:*:*:*:*:*:* ]] ; then [[ :$1: != *::* ]] ; else [[ $1 = *::* ]] ; fi ; } kurahaupo 1622556418 forget kurahaupo 1622556419 learn is_ipv6() { [[ $1 != *[!:[:xdigit:]]* && $1 != *[!:][!:][!:][!:][!:]* && :$1 != *:0[!:]* && :$1: != *:[:0][:0]:* && $1 = *:*:* ]] && case $1 in *:*:*:*:*:*:*:*:* | *:::* | *::*::*) ! :;; *:*:*:*:*:*:*:*) [[ :$1: != *::* && :$1: != *:0:0:* ]] ;; *:*:*:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:0:*::* && :$1: != *:0:0:0:0:* ]] ;; *:*:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:0:* ]] ;; *:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:*::* && :$1: != kurahaupo 1622557212 forget kurahaupo 1622557213 learn is_ipv6() { [[ $1 != *[!:[:xdigit:]]* && $1 != *[!:][!:][!:][!:][!:]* && :$1 != *:0[!:]* && :$1: != *:[:0][:0]:* && $1 = *:*:* ]] && case $1 in *:*:*:*:*:*:*:*:* | *:::* | *::*::*) ! :;; *:*:*:*:*:*:*:*) [[ :$1: != *::* && :$1: != *:0:0:* ]] ;; *:*:*:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:*::* && :$1: != *:0:0:0:* ]] ;; *:*:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:0:* ]] ;; *:*:*:*:*) [[ $1 = *::* && :$1: != *:0:0:0:0:* ]] ;; *:*:*) [ kurahaupo 1622562493 forget kurahaupo 1622562493 learn is_ipv6() { false; } # more likely than not to be correct kurahaupo 1622585844 forget kurahaupo 1622585845 learn rfc5952() case :$1: in :*@(:*:*:*:*:*:*:*:|:::|::*::|[!:[:xdigit:]]|[!:][!:][!:][!:][!:])*:|*:@(0[!:]|[:0][:0]:)*) ! : ;; :*:*:*:*:*:*:*:*:) [[ :$1: != @(:*:*::*:*:|*:0:0:*) ]] ;; !(:*::*:)|*:0:0:0:@(0|*:):*) ! : ;; :*:*:*:*:*:*:*:) [[ :$1: != *:0:0:@(0|*:):* ]] ; esac