MCPcopy
hub / github.com/lxc/incus / Example_parseIPRange

Function Example_parseIPRange

internal/server/network/network_utils_test.go:11–91  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

9)
10
11func Example_parseIPRange() {
12 _, allowedv4NetworkA, _ := net.ParseCIDR("192.168.1.0/24")
13 _, allowedv4NetworkB, _ := net.ParseCIDR("192.168.0.0/16")
14 _, allowedv6NetworkA, _ := net.ParseCIDR("fd22:c952:653e:3df6::/64")
15 _, allowedv6NetworkB, _ := net.ParseCIDR("fd22:c952:653e::/48")
16
17 ipRanges := []string{
18 // Ranges within allowedv4NetworkA.
19 "192.168.1.1-192.168.1.255",
20 "0.0.0.1-192.168.1.255",
21 "0.0.0.1-0.0.0.255",
22 // Ranges outsde of allowedv4NetworkA but within allowedv4NetworkB.
23 "192.168.0.1-192.168.0.255",
24 "192.168.0.0-192.168.0.0",
25 "0.0.2.0-0.0.2.255",
26 // Invalid IP ranges.
27 "0.0.0.0.1-192.168.1.255",
28 "192.0.0.1-192.0.0.255",
29 "0.0.0.1-1.0.0.255",
30 "0.0.2.1-0.0.0.255",
31 // Ranges within allowedv6NetworkA.
32 "fd22:c952:653e:3df6::1-fd22:c952:653e:3df6::FFFF",
33 "::1-::FFFF",
34 // Ranges outsde of allowedv6NetworkA but within allowedv6NetworkB.
35 "fd22:c952:653e:FFFF::1-fd22:c952:653e:FFFF::FFFF",
36 "::AAAA:FFFF:FFFF:FFFF:1-::AAAA:FFFF:FFFF:FFFF:FFFF",
37 }
38
39 fmt.Println("With allowed networks")
40 for _, ipRange := range ipRanges {
41 parsedRange, err := parseIPRange(ipRange, allowedv4NetworkA, allowedv4NetworkB, allowedv6NetworkA, allowedv6NetworkB)
42 if err != nil {
43 fmt.Printf("Err: %v\n", err)
44 continue
45 }
46
47 fmt.Printf("Start: %s, End: %s\n", parsedRange.Start.String(), parsedRange.End.String())
48 }
49
50 fmt.Println("Without allowed networks")
51 for _, ipRange := range ipRanges {
52 parsedRange, err := parseIPRange(ipRange)
53 if err != nil {
54 fmt.Printf("Err: %v\n", err)
55 continue
56 }
57
58 fmt.Printf("Start: %s, End: %s\n", parsedRange.Start.String(), parsedRange.End.String())
59 }
60
61 // Output: With allowed networks
62 // Start: 192.168.1.1, End: 192.168.1.255
63 // Start: 192.168.1.1, End: 192.168.1.255
64 // Start: 192.168.1.1, End: 192.168.1.255
65 // Start: 192.168.0.1, End: 192.168.0.255
66 // Start: 192.168.0.0, End: 192.168.0.0
67 // Start: 192.168.2.0, End: 192.168.2.255
68 // Err: Start IP "0.0.0.0.1" is invalid

Callers

nothing calls this directly

Calls 2

parseIPRangeFunction · 0.85
StringMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…