aboutsummaryrefslogtreecommitdiff
path: root/conf.d
diff options
context:
space:
mode:
Diffstat (limited to 'conf.d')
-rw-r--r--conf.d/00netutil.fish34
1 files changed, 31 insertions, 3 deletions
diff --git a/conf.d/00netutil.fish b/conf.d/00netutil.fish
index 9f7c15f..3712314 100644
--- a/conf.d/00netutil.fish
+++ b/conf.d/00netutil.fish
@@ -1,11 +1,39 @@
+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
-set -l i '4'
+if test -z "$ipv4addr"
+ return
+end
+
+set -l index '4'
set -l rquad '' '' '' ''
for item in (string split --right --max 3 . $ipv4addr)
- set rquad[$i] $item
- set i (math $i-1)
+ set rquad[$index] $item
+ set index (math $index-1)
end
echo "$rquad[1].$rquad[2].$rquad[3].$rquad[4]"