aboutsummaryrefslogtreecommitdiffstats
path: root/radix-trie.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* radix-trie: fix add() when no poolnodes existThomas Gschwantner2019-12-111-0/+5
|
* radix-trie: implement ipp_removepool_v{4,6}Thomas Gschwantner2019-12-111-6/+103
|
* radix-trie: fix issues related to shadow-/countingThomas Gschwantner2019-12-111-106/+144
| | | | | | | | | | | Previously it was possible that pools would not be correctly shadowed and/or the left or right counters were not updated properly. To fix that, every node now has flags indicating what type of node it is, and if it's shadowed. Furthermore, We determine if a poolnode needs to be (un)shadowed by walking the trie now. remove_node() now also only modifies the left right counters if the target node was actually found.
* radix-trie: fix bug where /64 pools would overflowThomas Gschwantner2019-12-111-10/+8
|
* radix-trie: allow full use of the v4 address spaceThomas Gschwantner2019-12-111-2/+2
|
* Rename struct ip_pool to be more descriptiveThomas Gschwantner2019-12-111-60/+60
|
* Initialize pools from routes via netlinkThomas Gschwantner2019-08-171-0/+12
|
* radix-trie: implement pool shadowingThomas Gschwantner2019-08-021-24/+58
| | | | | | | | | | | | | | Pools are created from routes which can overlap. Consider the following: ip route add 192.168.4.0/28 ip route add 192.168.4.0/24 sleep 3600 ip route del 192.168.4.0/24 Here, the pool created from the first route is being shadowed by the pool from the second route. However, since the second pool is later removed again we cannot simply combine them. So instead this commit shadows them, to avoid them being double counted.
* Move counting logic from lease.c to radix-trie.cThomas Gschwantner2019-07-181-41/+51
|
* Implement lease expirationThomas Gschwantner2019-07-181-3/+45
|
* radix-trie: inline find_node() into ipp_addpool()Thomas Gschwantner2019-07-161-16/+8
| | | | | The way find_node() was written to suit ipp_addpool() means it's not really generic and rather confusing, so we inline it instead.
* Fix use-after-free and memory leak in ipp_free()Thomas Gschwantner2019-06-141-14/+11
|
* radix-trie: implement ipp_addrnd_* and relatedThomas Gschwantner2019-06-021-55/+304
|
* radix-trie: allow both ipv4 and ipv6 debug outputThomas Gschwantner2019-06-021-10/+27
|
* radix-trie: fix fls/fls64Thomas Gschwantner2019-06-021-6/+6
|
* radix-trie: remove bits arg from radix_insert_v4/6Thomas Gschwantner2019-06-021-4/+4
|
* Implement a radix-trie for storing ip=pubkeyThomas Gschwantner2019-02-251-0/+330