function valid_ipv4 --description "Validate IPv4 address" -a ipv4addr if test -z "$ipv4addr" return 1 end if not string match -rq '^([0-9]{1,3}\.){3}[0-9]{1,3}$' -- $ipv4addr return 1 end for quadpart in (string split . -- $ipv4addr) if not string match -rq '^(0|[1-9][0-9]{0,2})$' -- $quadpart return 1 end if test $quadpart -gt 255; or test $quadpart -lt 0 return 1 end end return 0 end function reverse_ipv4 --description "Print reverse IPv4 address" -a ipv4addr if test -z "$ipv4addr" return end set -l index '4' set -l rquad '' '' '' '' for item in (string split --right --max 3 . $ipv4addr) set rquad[$index] $item set index (math $index-1) end echo "$rquad[1].$rquad[2].$rquad[3].$rquad[4]" end