Comments (4)
This code actually does not remove ALL networks.
_, all, _ := net.ParseCIDR("0.0.0.0/0")
ll, _ := trie.CoveredNetworks(*all)
for i := 0; i < len(ll); i++ {
trie.Remove(ll[i].Network())
}
For example, if we first insert 192.168.1.0/24
and 192.168.1.1/32
, then try to remove "all networks" by code snippet above, the trie will still leave 192.168.1.1/32
.
The reason is that the CoveredNetworks function only return one network 192.168.1.0/24
in the case above. The Remove operation is implemented as just removing the node but if any child exists then the child will leave.
Test on playground
from cidranger.
@danmia Thanks for posting the tests to show the memory leak, and sorry I only got to investigating now, I have provided the fix and incorporated your test in the unit test suite.
from cidranger.
I will leave the PR unmerged for some time, to give you a chance to independently verify that the memory leak upon removal is addressed, thanks!
from cidranger.
Thanks for looking into it! It looks good in my local tests. This is super useful. Thanks again!
from cidranger.
Related Issues (19)
- how do i install the library? HOT 2
- Thread safe? HOT 1
- ip route get HOT 2
- out of memory error when adding many random ip nets HOT 2
- Duplicates are not maintained HOT 2
- I am looking for a range to CIDR function code So I can use this library HOT 1
- Missing the size of the Ranger HOT 1
- Add interface variable to Ranger interface to store along with inserted networks.
- sum.golang.org tag error HOT 3
- Trying to insert next IP (/32 subnet) causes index out of range HOT 3
- Releasing problem : v1.0.0 differs between Github and pkg.go.dev HOT 3
- Key-value database with search by cidr
- Finding exact ip from /32 subnet causes index out of range HOT 2
- Custom RangerEntry with Overlapping Networks HOT 8
- trie.go:insert - fix proposal for Ipv4\Ipv6 in same trie
- Custom Ranger Insert/Remove Hooks HOT 1
- Slow performance populating tree HOT 11
- Iterating over the cidrs HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cidranger.