From 6b12edc122a464939343e5063d557ad67a80b500 Mon Sep 17 00:00:00 2001 From: Gregory Kurtzer Date: Fri, 15 Oct 2021 21:37:03 -0700 Subject: [PATCH] Add ability to increment an IPv4 address --- internal/pkg/util/util.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/internal/pkg/util/util.go b/internal/pkg/util/util.go index a6ebc2c9..dda449e7 100644 --- a/internal/pkg/util/util.go +++ b/internal/pkg/util/util.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "math/rand" + "net" "os" "os/exec" "path" @@ -368,3 +369,16 @@ func SplitValidPaths(input, delim string) []string { return (ret) } + +func IncrementIPv4(start string, inc uint) string { + ip_start := net.ParseIP(start) + ipv4 := ip_start.To4() + v4_int := uint(ipv4[0])<<24 + uint(ipv4[1])<<16 + uint(ipv4[2])<<8 + uint(ipv4[3]) + v4_int += inc + v4_o3 := byte(v4_int & 0xFF) + v4_o2 := byte((v4_int >> 8) & 0xFF) + v4_o1 := byte((v4_int >> 16) & 0xFF) + v4_o0 := byte((v4_int >> 24) & 0xFF) + ipv4_new := net.IPv4(v4_o0, v4_o1, v4_o2, v4_o3) + return ipv4_new.String() +}