Skip to content

Commit 3e8bb36

Browse files
committed
remove dep inet.af/netaddr in favor of stdlib
1 parent d397d91 commit 3e8bb36

4 files changed

Lines changed: 27 additions & 37 deletions

File tree

go.mod

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ require (
1717
github.com/scylladb/termtables v1.0.0
1818
github.com/spf13/cobra v1.10.2
1919
golang.org/x/sync v0.19.0
20-
inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a
2120
)
2221

2322
require (
@@ -38,8 +37,6 @@ require (
3837
github.com/prometheus/procfs v0.20.1 // indirect
3938
github.com/spf13/pflag v1.0.10 // indirect
4039
go.yaml.in/yaml/v2 v2.4.3 // indirect
41-
go4.org/intern v0.0.0-20230525184215-6c62f75575cb // indirect
42-
go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 // indirect
4340
golang.org/x/crypto v0.48.0 // indirect
4441
golang.org/x/sys v0.41.0 // indirect
4542
google.golang.org/protobuf v1.36.11 // indirect

go.sum

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm
102102
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
103103
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
104104
github.com/dnsimple/dnsimple-go v0.63.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg=
105-
github.com/dvyukov/go-fuzz v0.0.0-20210103155950-6a8e9d1f2415/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
106105
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
107106
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
108107
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
@@ -391,7 +390,6 @@ github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:
391390
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
392391
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
393392
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
394-
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
395393
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
396394
go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
397395
go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
@@ -409,13 +407,6 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
409407
go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0=
410408
go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8=
411409
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
412-
go4.org/intern v0.0.0-20211027215823-ae77deb06f29/go.mod h1:cS2ma+47FKrLPdXFpr7CuxiTW3eyJbWew4qx0qtQWDA=
413-
go4.org/intern v0.0.0-20230525184215-6c62f75575cb h1:ae7kzL5Cfdmcecbh22ll7lYP3iuUdnfnhiPcSaDgH/8=
414-
go4.org/intern v0.0.0-20230525184215-6c62f75575cb/go.mod h1:Ycrt6raEcnF5FTsLiLKkhBTO6DPX3RCUCUVnks3gFJU=
415-
go4.org/unsafe/assume-no-moving-gc v0.0.0-20211027215541-db492cf91b37/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E=
416-
go4.org/unsafe/assume-no-moving-gc v0.0.0-20230525183740-e7c30c78aeb2/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E=
417-
go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6 h1:lGdhQUN/cnWdSH3291CUuxSEqc+AsGTiDxPP3r2J0l4=
418-
go4.org/unsafe/assume-no-moving-gc v0.0.0-20231121144256-b99613f794b6/go.mod h1:FftLjUGFEDu5k8lt0ddY+HcrH/qU/0qk+H8j9/nTl3E=
419410
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
420411
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
421412
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -457,7 +448,6 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
457448
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
458449
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
459450
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
460-
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
461451
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
462452
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
463453
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -485,7 +475,6 @@ golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLL
485475
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
486476
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
487477
golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
488-
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
489478
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
490479
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
491480
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -497,7 +486,6 @@ golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJ
497486
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
498487
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
499488
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
500-
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
501489
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
502490
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
503491
golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -532,8 +520,6 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w
532520
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
533521
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
534522
golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
535-
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
536-
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
537523
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
538524
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
539525
golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
@@ -542,7 +528,6 @@ golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fq
542528
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
543529
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
544530
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
545-
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
546531
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
547532
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
548533
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -582,11 +567,9 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK
582567
golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
583568
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
584569
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
585-
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
586570
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
587571
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
588572
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
589-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
590573
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
591574
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
592575
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
@@ -670,8 +653,6 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
670653
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
671654
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
672655
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
673-
inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a h1:1XCVEdxrvL6c0TGOhecLuB7U9zYNdxZEjvOqJreKZiM=
674-
inet.af/netaddr v0.0.0-20230525184311-b8eac61e914a/go.mod h1:e83i32mAQOW1LAqEIweALsuK2Uw4mhQadA5r7b0Wobo=
675656
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
676657
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
677658
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=

pkg/erserver/ipfilter.go

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ import (
77
"errors"
88
"fmt"
99
"io"
10+
"net/netip"
1011
"os"
1112

1213
"github.com/function61/gokit/hcl2json"
1314
"github.com/function61/gokit/jsonfile"
1415
"github.com/function61/gokit/sliceutil"
15-
"inet.af/netaddr"
1616
)
1717

1818
type ipRule struct {
19-
ipPrefix netaddr.IPPrefix
19+
ipPrefix netip.Prefix
2020
allowedAppIds []string // if empty, means all apps are allowed
2121
}
2222

@@ -33,17 +33,17 @@ func ipAllowed(ipAndPortStr string, appToAccess string, rules []ipRule) (bool, s
3333
return true, ""
3434
}
3535

36-
ipAndPort, err := netaddr.ParseIPPort(ipAndPortStr)
36+
ipAndPort, err := netip.ParseAddrPort(ipAndPortStr)
3737
if err != nil {
3838
return false, "invalid IP: " + err.Error()
3939
}
4040

4141
// the port is not used for ACL (it's remote port anyway which is meaningless)
42-
return ipAllowedInternal(ipAndPort.IP(), appToAccess, rules)
42+
return ipAllowedInternal(ipAndPort.Addr(), appToAccess, rules)
4343
}
4444

4545
// do not use directly
46-
func ipAllowedInternal(ip netaddr.IP, appToAccess string, rules []ipRule) (bool, string) {
46+
func ipAllowedInternal(ip netip.Addr, appToAccess string, rules []ipRule) (bool, string) {
4747
if matchingRule := ruleForIP(ip, rules); matchingRule != nil {
4848
if matchingRule.AllowsApp(appToAccess) {
4949
return true, ""
@@ -56,7 +56,7 @@ func ipAllowedInternal(ip netaddr.IP, appToAccess string, rules []ipRule) (bool,
5656
return false, fmt.Sprintf("your IP (%s) is not allowed (implicit deny)", ip.String())
5757
}
5858

59-
func ruleForIP(ip netaddr.IP, rules []ipRule) *ipRule {
59+
func ruleForIP(ip netip.Addr, rules []ipRule) *ipRule {
6060
for _, rule := range rules {
6161
if rule.ipPrefix.Contains(ip) {
6262
return &rule
@@ -69,11 +69,11 @@ func ruleForIP(ip netaddr.IP, rules []ipRule) *ipRule {
6969
// factories
7070

7171
// funky signature to make sure we get at least one app (0 apps by accident would be catastrophic)
72-
func allowOnlyApps(prefix netaddr.IPPrefix, app1 string, appN ...string) ipRule {
72+
func allowOnlyApps(prefix netip.Prefix, app1 string, appN ...string) ipRule {
7373
return ipRule{prefix, append([]string{app1}, appN...)}
7474
}
7575

76-
func allowAllApps(prefix netaddr.IPPrefix) ipRule {
76+
func allowAllApps(prefix netip.Prefix) ipRule {
7777
return ipRule{prefix, nil}
7878
}
7979

@@ -112,11 +112,11 @@ func parseHclRules(content io.Reader) ([]ipRule, error) {
112112
rules := []ipRule{}
113113

114114
for _, allowAllItem := range conf.AllowAllApps {
115-
rules = append(rules, allowAllApps(netaddr.MustParseIPPrefix(allowAllItem.Prefix)))
115+
rules = append(rules, allowAllApps(mustParsePrefix(allowAllItem.Prefix)))
116116
}
117117

118118
for _, allowSpecified := range conf.AllowOnlyApps {
119-
rules = append(rules, allowOnlyApps(netaddr.MustParseIPPrefix(allowSpecified.Prefix), allowSpecified.Apps[0], allowSpecified.Apps[1:]...))
119+
rules = append(rules, allowOnlyApps(mustParsePrefix(allowSpecified.Prefix), allowSpecified.Apps[0], allowSpecified.Apps[1:]...))
120120
}
121121

122122
if len(rules) == 0 {
@@ -135,3 +135,12 @@ func unmarhsalHcl(content io.Reader, data interface{}) error {
135135

136136
return jsonfile.Unmarshal(asJSON, data, true)
137137
}
138+
139+
func mustParsePrefix(rawPrefix string) netip.Prefix {
140+
prefix, err := netip.ParsePrefix(rawPrefix)
141+
if err != nil {
142+
panic(err)
143+
}
144+
145+
return prefix
146+
}

pkg/erserver/ipfilter_test.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package erserver
22

33
import (
44
"fmt"
5+
"net/netip"
56
"strings"
67
"testing"
78

89
"github.com/function61/gokit/assert"
9-
"inet.af/netaddr"
1010
)
1111

1212
func TestNoRulesAllAllowed(t *testing.T) {
@@ -22,9 +22,12 @@ func TestInvalidIP(t *testing.T) {
2222
assert.Assert(t, allowed)
2323
assert.Assert(t, errStr == "")
2424

25-
allowed, errStr = ipAllowed(invalidIP, "anyapp", []ipRule{allowAllApps(netaddr.MustParseIPPrefix("0.0.0.0/0"))})
25+
allIpsPrefix, err := netip.ParsePrefix("0.0.0.0/0")
26+
assert.Ok(t, err)
27+
28+
allowed, errStr = ipAllowed(invalidIP, "anyapp", []ipRule{allowAllApps(allIpsPrefix)})
2629
assert.Assert(t, !allowed)
27-
assert.EqualString(t, errStr, `invalid IP: ParseIP("500.400.300.200.100"): IPv4 field has value >255`)
30+
assert.EqualString(t, errStr, `invalid IP: ParseAddr("500.400.300.200.100"): IPv4 field has value >255`)
2831
}
2932

3033
func TestIpFilter(t *testing.T) {
@@ -41,8 +44,8 @@ allow_specified {
4144
assert.Ok(t, err)
4245

4346
//nolint:gocritic // intentionally useless lambda, but useful as shorthand
44-
ip := func(ipStr string) netaddr.IP { // shorthand
45-
return netaddr.MustParseIP(ipStr)
47+
ip := func(ipStr string) netip.Addr { // shorthand
48+
return netip.MustParseAddr(ipStr)
4649
}
4750

4851
assert.EqualString(t, ruleForIP(ip("192.168.1.18"), rules).ipPrefix.String(), "192.168.1.0/24")

0 commit comments

Comments
 (0)