Skip to content

Commit 8046e37

Browse files
committed
Add helper function for mapping IP
1 parent b4d8464 commit 8046e37

File tree

1 file changed

+9
-12
lines changed

1 file changed

+9
-12
lines changed

traverse.go

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,8 @@ func (r *Reader) NetworksWithin(prefix netip.Prefix, options ...NetworksOption)
122122
for {
123123
if node.pointer == r.Metadata.NodeCount {
124124
if n.includeEmptyNetworks {
125-
ip := node.ip
126-
if isInIPv4Subtree(ip) {
127-
ip = v6ToV4(ip)
128-
}
129-
130125
ok := yield(Result{
131-
ip: ip,
126+
ip: mappedIP(ip),
132127
offset: notFound,
133128
prefixLen: uint8(node.bit),
134129
})
@@ -146,15 +141,10 @@ func (r *Reader) NetworksWithin(prefix netip.Prefix, options ...NetworksOption)
146141
}
147142

148143
if node.pointer > r.Metadata.NodeCount {
149-
ip := node.ip
150-
if isInIPv4Subtree(ip) {
151-
ip = v6ToV4(ip)
152-
}
153-
154144
offset, err := r.resolveDataPointer(node.pointer)
155145
ok := yield(Result{
156146
decoder: r.decoder,
157-
ip: ip,
147+
ip: mappedIP(ip),
158148
offset: uint(offset),
159149
prefixLen: uint8(node.bit),
160150
err: err,
@@ -202,6 +192,13 @@ func (r *Reader) NetworksWithin(prefix netip.Prefix, options ...NetworksOption)
202192

203193
var ipv4SubtreeBoundary = netip.MustParseAddr("::255.255.255.255").Next()
204194

195+
func mappedIP(ip netip.Addr) netip.Addr {
196+
if isInIPv4Subtree(ip) {
197+
return v6ToV4(ip)
198+
}
199+
return ip
200+
}
201+
205202
// isInIPv4Subtree returns true if the IP is in the database's IPv4 subtree.
206203
func isInIPv4Subtree(ip netip.Addr) bool {
207204
return ip.Is4() || ip.Less(ipv4SubtreeBoundary)

0 commit comments

Comments
 (0)