Skip to content

Commit c7be044

Browse files
authored
Merge branch 'master' into claude/find-and-fix-potential-bugs
2 parents aee3a20 + 087ef8e commit c7be044

2 files changed

Lines changed: 56 additions & 40 deletions

File tree

lib/container.go

Lines changed: 52 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -89,38 +89,46 @@ func (c *container) Add(entry *Entry, opts ...IgnoreIPOption) error {
8989
}
9090
switch ignoreIPType {
9191
case IPv4:
92-
if !val.hasIPv6Builder() {
93-
val.ipv6Builder = new(netipx.IPSetBuilder)
92+
if ipv6set != nil {
93+
if !val.hasIPv6Builder() {
94+
val.ipv6Builder = new(netipx.IPSetBuilder)
95+
}
96+
val.ipv6Builder.AddSet(ipv6set)
97+
val.ipv6Set = nil
9498
}
95-
val.ipv6Builder.AddSet(ipv6set)
96-
val.resetIPv6Set()
9799
case IPv6:
98-
if !val.hasIPv4Builder() {
99-
val.ipv4Builder = new(netipx.IPSetBuilder)
100+
if ipv4set != nil {
101+
if !val.hasIPv4Builder() {
102+
val.ipv4Builder = new(netipx.IPSetBuilder)
103+
}
104+
val.ipv4Builder.AddSet(ipv4set)
105+
val.ipv4Set = nil
100106
}
101-
val.ipv4Builder.AddSet(ipv4set)
102-
val.resetIPv4Set()
103107
default:
104-
if !val.hasIPv4Builder() {
105-
val.ipv4Builder = new(netipx.IPSetBuilder)
108+
if ipv4set != nil {
109+
if !val.hasIPv4Builder() {
110+
val.ipv4Builder = new(netipx.IPSetBuilder)
111+
}
112+
val.ipv4Builder.AddSet(ipv4set)
113+
val.ipv4Set = nil
106114
}
107-
if !val.hasIPv6Builder() {
108-
val.ipv6Builder = new(netipx.IPSetBuilder)
115+
if ipv6set != nil {
116+
if !val.hasIPv6Builder() {
117+
val.ipv6Builder = new(netipx.IPSetBuilder)
118+
}
119+
val.ipv6Builder.AddSet(ipv6set)
120+
val.ipv6Set = nil
109121
}
110-
val.ipv4Builder.AddSet(ipv4set)
111-
val.ipv6Builder.AddSet(ipv6set)
112-
val.resetIPv4Set()
113-
val.resetIPv6Set()
114122
}
115123

116124
case false:
117125
switch ignoreIPType {
118126
case IPv4:
119127
entry.ipv4Builder = nil
120-
entry.resetIPv4Set()
128+
entry.ipv4Set = nil
121129
case IPv6:
122130
entry.ipv6Builder = nil
123-
entry.resetIPv6Set()
131+
entry.ipv6Set = nil
124132
}
125133
c.entries[name] = entry
126134
}
@@ -161,38 +169,46 @@ func (c *container) Remove(entry *Entry, rCase CaseRemove, opts ...IgnoreIPOptio
161169

162170
switch ignoreIPType {
163171
case IPv4:
164-
if !val.hasIPv6Builder() {
165-
val.ipv6Builder = new(netipx.IPSetBuilder)
172+
if ipv6set != nil {
173+
if !val.hasIPv6Builder() {
174+
val.ipv6Builder = new(netipx.IPSetBuilder)
175+
}
176+
val.ipv6Builder.RemoveSet(ipv6set)
177+
val.ipv6Set = nil
166178
}
167-
val.ipv6Builder.RemoveSet(ipv6set)
168-
val.resetIPv6Set()
169179
case IPv6:
170-
if !val.hasIPv4Builder() {
171-
val.ipv4Builder = new(netipx.IPSetBuilder)
180+
if ipv4set != nil {
181+
if !val.hasIPv4Builder() {
182+
val.ipv4Builder = new(netipx.IPSetBuilder)
183+
}
184+
val.ipv4Builder.RemoveSet(ipv4set)
185+
val.ipv4Set = nil
172186
}
173-
val.ipv4Builder.RemoveSet(ipv4set)
174-
val.resetIPv4Set()
175187
default:
176-
if !val.hasIPv4Builder() {
177-
val.ipv4Builder = new(netipx.IPSetBuilder)
188+
if ipv4set != nil {
189+
if !val.hasIPv4Builder() {
190+
val.ipv4Builder = new(netipx.IPSetBuilder)
191+
}
192+
val.ipv4Builder.RemoveSet(ipv4set)
193+
val.ipv4Set = nil
178194
}
179-
if !val.hasIPv6Builder() {
180-
val.ipv6Builder = new(netipx.IPSetBuilder)
195+
if ipv6set != nil {
196+
if !val.hasIPv6Builder() {
197+
val.ipv6Builder = new(netipx.IPSetBuilder)
198+
}
199+
val.ipv6Builder.RemoveSet(ipv6set)
200+
val.ipv6Set = nil
181201
}
182-
val.ipv4Builder.RemoveSet(ipv4set)
183-
val.ipv6Builder.RemoveSet(ipv6set)
184-
val.resetIPv4Set()
185-
val.resetIPv6Set()
186202
}
187203

188204
case CaseRemoveEntry:
189205
switch ignoreIPType {
190206
case IPv4:
191207
val.ipv6Builder = nil
192-
val.resetIPv6Set()
208+
val.ipv6Set = nil
193209
case IPv6:
194210
val.ipv4Builder = nil
195-
val.resetIPv4Set()
211+
val.ipv4Set = nil
196212
default:
197213
delete(c.entries, name)
198214
}

lib/entry.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -265,13 +265,13 @@ func (e *Entry) add(prefix *netip.Prefix, ipType IPType) error {
265265
e.ipv4Builder = new(netipx.IPSetBuilder)
266266
}
267267
e.ipv4Builder.AddPrefix(*prefix)
268-
e.resetIPv4Set()
268+
e.ipv4Set = nil
269269
case IPv6:
270270
if !e.hasIPv6Builder() {
271271
e.ipv6Builder = new(netipx.IPSetBuilder)
272272
}
273273
e.ipv6Builder.AddPrefix(*prefix)
274-
e.resetIPv6Set()
274+
e.ipv6Set = nil
275275
default:
276276
return ErrInvalidIPType
277277
}
@@ -284,12 +284,12 @@ func (e *Entry) remove(prefix *netip.Prefix, ipType IPType) error {
284284
case IPv4:
285285
if e.hasIPv4Builder() {
286286
e.ipv4Builder.RemovePrefix(*prefix)
287-
e.resetIPv4Set()
287+
e.ipv4Set = nil
288288
}
289289
case IPv6:
290290
if e.hasIPv6Builder() {
291291
e.ipv6Builder.RemovePrefix(*prefix)
292-
e.resetIPv6Set()
292+
e.ipv6Set = nil
293293
}
294294
default:
295295
return ErrInvalidIPType

0 commit comments

Comments
 (0)