Skip to content

Commit 587f064

Browse files
committed
refact whitelist/allowlist: net.IP to net/netip
1 parent 6c6ff6d commit 587f064

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

pkg/parser/whitelist.go

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

33
import (
44
"fmt"
5-
"net"
5+
"net/netip"
66

77
"github.com/expr-lang/expr"
88
"github.com/expr-lang/expr/vm"
@@ -15,9 +15,9 @@ import (
1515
type Whitelist struct {
1616
Reason string `yaml:"reason,omitempty"`
1717
Ips []string `yaml:"ip,omitempty"`
18-
B_Ips []net.IP
18+
B_Ips []netip.Addr
1919
Cidrs []string `yaml:"cidr,omitempty"`
20-
B_Cidrs []*net.IPNet
20+
B_Cidrs []netip.Prefix
2121
Exprs []string `yaml:"expression,omitempty"`
2222
B_Exprs []*ExprWhitelist
2323
}
@@ -50,7 +50,7 @@ func (n *Node) CheckIPsWL(p *types.Event) bool {
5050
break
5151
}
5252
for _, v := range n.Whitelist.B_Ips {
53-
if v.Equal(src) {
53+
if v == src {
5454
n.Logger.Debugf("Event from [%s] is whitelisted by IP (%s), reason [%s]", src, v, n.Whitelist.Reason)
5555
isWhitelisted = true
5656
break
@@ -110,14 +110,17 @@ func (n *Node) CheckExprWL(cachedExprEnv map[string]interface{}, p *types.Event)
110110

111111
func (n *Node) CompileWLs() (bool, error) {
112112
for _, v := range n.Whitelist.Ips {
113-
n.Whitelist.B_Ips = append(n.Whitelist.B_Ips, net.ParseIP(v))
114-
n.Logger.Debugf("adding ip %s to whitelists", net.ParseIP(v))
113+
if addr, err := netip.ParseAddr(v); err == nil {
114+
n.Whitelist.B_Ips = append(n.Whitelist.B_Ips, addr)
115+
n.Logger.Debugf("adding ip %s to whitelists", addr)
116+
}
117+
// XXX: handle error?
115118
}
116119

117120
for _, v := range n.Whitelist.Cidrs {
118-
_, tnet, err := net.ParseCIDR(v)
121+
tnet, err := netip.ParsePrefix(v)
119122
if err != nil {
120-
return false, fmt.Errorf("unable to parse cidr whitelist '%s' : %v", v, err)
123+
return false, fmt.Errorf("parsing whitelist: %w", err)
121124
}
122125
n.Whitelist.B_Cidrs = append(n.Whitelist.B_Cidrs, tnet)
123126
n.Logger.Debugf("adding cidr %s to whitelists", tnet)

pkg/parser/whitelist_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func TestWhitelistCompile(t *testing.T) {
3838
"127.0.0.1/1000",
3939
},
4040
},
41-
expectedErr: "invalid CIDR address",
41+
expectedErr: `parsing whitelist: netip.ParsePrefix("127.0.0.1/1000"): prefix length out of range`,
4242
},
4343
{
4444
name: "Valid EXPR whitelist",

pkg/types/event.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package types
22

33
import (
4-
"net"
4+
"net/netip"
55
"strings"
66
"time"
77

@@ -117,17 +117,23 @@ func (e *Event) GetMeta(key string) string {
117117
return ""
118118
}
119119

120-
func (e *Event) ParseIPSources() []net.IP {
121-
var srcs []net.IP
120+
func (e *Event) ParseIPSources() []netip.Addr {
121+
var srcs []netip.Addr
122122

123123
switch e.Type {
124124
case LOG:
125-
if _, ok := e.Meta["source_ip"]; ok {
126-
srcs = append(srcs, net.ParseIP(e.Meta["source_ip"]))
125+
if val, ok := e.Meta["source_ip"]; ok {
126+
if addr, err := netip.ParseAddr(val); err == nil {
127+
srcs = append(srcs, addr)
128+
}
129+
// XXX handle error?
127130
}
128131
case OVFLW:
129132
for k := range e.Overflow.Sources {
130-
srcs = append(srcs, net.ParseIP(k))
133+
if addr, err := netip.ParseAddr(k); err == nil {
134+
srcs = append(srcs, addr)
135+
}
136+
// XXX handle error?
131137
}
132138
}
133139

0 commit comments

Comments
 (0)