summaryrefslogtreecommitdiff
path: root/nest/rt-table.c
AgeCommit message (Collapse)Author
2016-02-08Fix closing flushed channelPavel Tvrdík
Fix reading from freed memory. Free at: channel_set_state(c, CS_DOWN) Read at: WALK_LIST2_DELSAFE(c, n, x, tab->channels, table_node) ==00:00:00:00.261 24718== ==00:00:09:31.755 24718== Invalid read of size 8 ==00:00:09:31.755 24718== at 0x4061BA: rt_prune_table (rt-table.c:1688) ==00:00:09:31.755 24718== by 0x405D5E: rt_event (rt-table.c:1559) ==00:00:09:31.755 24718== by 0x45D089: ev_run (event.c:85) ==00:00:09:31.755 24718== by 0x45D158: ev_run_list (event.c:142) ==00:00:09:31.755 24718== by 0x462814: io_loop (io.c:2412) ==00:00:09:31.755 24718== by 0x468712: main (main.c:833) ==00:00:09:31.755 24718== Address 0x5601538 is 136 bytes inside a block of size 304 free'd ==00:00:09:31.755 24718== at 0x4C29D2A: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==00:00:09:31.755 24718== by 0x46FF3E: rfree (resource.c:166) ==00:00:09:31.755 24718== by 0x470309: mb_free (resource.c:415) ==00:00:09:31.755 24718== by 0x406A6B: rt_unlock_table (rt-table.c:1921) ==00:00:09:31.755 24718== by 0x40DAE3: channel_do_down (proto.c:297) ==00:00:09:31.755 24718== by 0x40DD46: channel_set_state (proto.c:359) ==00:00:09:31.755 24718== by 0x4061AD: rt_prune_table (rt-table.c:1692) ==00:00:09:31.755 24718== by 0x405D5E: rt_event (rt-table.c:1559) ==00:00:09:31.755 24718== by 0x45D089: ev_run (event.c:85) ==00:00:09:31.755 24718== by 0x45D158: ev_run_list (event.c:142) ==00:00:09:31.755 24718== by 0x462814: io_loop (io.c:2412) ==00:00:09:31.755 24718== by 0x468712: main (main.c:833) ==00:00:09:31.755 24718== Block was alloc'd at ==00:00:09:31.755 24718== at 0x4C28C10: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==00:00:09:31.755 24718== by 0x470FBC: bird_xmalloc (xmalloc.c:29) ==00:00:09:31.755 24718== by 0x4701E6: mb_alloc (resource.c:339) ==00:00:09:31.755 24718== by 0x406C29: rt_commit (rt-table.c:1977) ==00:00:09:31.755 24718== by 0x45C36D: config_do_commit (conf.c:269) ==00:00:09:31.755 24718== by 0x45C545: config_commit (conf.c:361) ==00:00:09:31.755 24718== by 0x4686F9: main (main.c:822) ==00:00:09:31.755 24718==
2016-02-01Channels - explicit links between protocols and tablesOndrej Zajicek (work)
The patch adds support for channels, structures connecting protocols and tables and handling most interactions between them. The documentation is missing yet.
2016-01-20Rewrite roa_check() for integrated BIRDPavel Tvrdík
Thanks to Ondrej Zajicek for his support with writing this code.
2016-01-07Fix check in net_route() in debug modePavel Tvrdík
2016-01-07Add NET ROA4/6 structuresPavel Tvrdík
2015-12-24Follow-up work on integrationOndrej Zajicek (work)
2015-12-21Modify FIB_WALK() and FIB_ITERATE() to work with new FIB codeOndrej Zajicek (work)
Returned user data pointers have offset relative to fib_node.
2015-12-20Integrated address print lengthsJan Moskyto Matejka
Minor changes by Ondrej Santiago Zajicek
2015-12-19Stop perusing f_prefix for non-prefix-set usesJan Moskyto Matejka
Multiple changes by Ondrej Santiago Zajicek
2015-12-19Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AFJan Moskyto Matejka
Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listen on v6, without setting the V6ONLY flag to catch both v4 and v6 traffic. Squashing and minor changes by Ondrej Santiago Zajicek
2015-11-25Merge branch 'master' into int-newOndrej Zajicek (work)
2015-11-24Merge branch 'master' into rip-newOndrej Zajicek (work)
2015-11-09Nest: Fixes bug in missing cleanup during table removalOndrej Zajicek (work)
When a table is removed during reconfiguration, a reference was not cleared in the old configuration, which breaks undo.
2015-11-09Conf: Fixes bug in symbol lookup during reconfigurationOndrej Zajicek (work)
Symbol lookup by cf_find_symbol() not only did the lookup but also added new void symbols allocated from cfg_mem linpool, which gets broken when lookups are done outside of config parsing, which may lead to crashes during reconfiguration. The patch separates lookup-only cf_find_symbol() and config-modifying cf_get_symbol(), while the later is called only during parsing. Also new_config and cfg_mem global variables are NULLed outside of parsing.
2015-11-05Initial commit on integrated BIRDOndrej Zajicek (work)
New data types net_addr and variants (in lib/net.h) describing network addresses (prefix/pxlen). Modifications of FIB structures to handle these data types and changing everything to use these data types instead of prefix/pxlen pairs where possible. The commit is WiP, some protocols are not yet updated (BGP, Kernel), and the code contains some temporary scaffolding. Comments are welcome.
2015-10-05Major RIP redesignOndrej Zajicek (work)
The new RIP implementation fixes plenty of old bugs and also adds support for many new features: ECMP support, link state support, BFD support, configurable split horizon and more. Most options are now per-interface.
2015-06-08BGP multipath supportOndrej Zajicek
Kernel option 'merge paths' allows to merge routes exported to kernel protocol (currently BGP and static routes) to multipath routes.
2015-06-08Fixes subtle bug in temporary attribute handlingOndrej Zajicek
In some cases, export filter accessed attributes of a different route.
2015-06-08Fixes bug in pipe feeding when filtered routes are kept in tableOndrej Zajicek
2015-06-08unsigned [int] -> uintPavel Tvrdík
2015-05-17Simplify flushing processOndrej Zajicek
Related to changes from previous patch.
2015-05-16Fix minor issue in pipe route propagationOndrej Zajicek
In some circumstances during reconfiguration, routes propagated by pipes to other tables may hang there even after the primary routes are removed. There is already a workaround for this issue in the code which removes these stale routes by flush process when source protocols are shut down. This patch is a cleaner fix and allows to simplify the flush process
2015-02-21Allows user data attached to f_trie_node structure.Ondrej Zajicek
Thanks to Alexander Chernikov for the patch.
2014-11-08Fixes error message in 'show route' cmd.Ondrej Zajicek
Message 'Network not in table' was not reported if a network node without any routes was found in a routing table.
2014-10-02Implements show route noexport option.Ondrej Zajicek
Shows routes that would be exported to the protocol but are rejected by the export filter.
2014-10-02Implements token bucket filter for rate limiting.Ondrej Zajicek
2014-04-28Fixes 'show route export' w.r.t. protocols with different RA_* types.Ondrej Zajicek
2014-03-23Documentation (and minor fixes) for BGP graceful restart.Ondrej Zajicek
2014-03-20BGP graceful restart support.Ondrej Zajicek
Also significant core protocol state changes needed for that, global graceful restart recovery state and kernel proto support for recovery.
2013-11-23Merge branch 'master' into add-pathOndrej Zajicek
Conflicts: filter/filter.c nest/proto.c nest/rt-table.c proto/bgp/bgp.h proto/bgp/config.Y
2013-11-22Adds rate limiting to some log messages.Ondrej Zajicek
2013-07-24Fixes bug in protocol flushing and rtable pruning.Ondrej Zajicek
When route was propagated to another rtable through a pipe and then the pipe was reconfigured softly in such a way that any subsequent route updates are filtered, then the source protocol shutdown didn't clean up the route in the second rtable which caused stale routes and potential crashes.
2013-06-13Fixes problems with kernel routes multiple routing tables.Ondrej Zajicek
Temporary dummy routes created by a kernel protocol during routing table scan get mixed with real routes propagated from another kernel protocol through a pipe.
2013-02-25Default rounting table for 'show route export/preexport/protocol' is the one ↵Ondrej Filip
related to a respective protocol.
2013-02-08Implements router advertisements activated by received routes.Ondrej Zajicek
The RAdv protocol could be configured to change its behavior based on availability of routes, e.g., do not announce router lifetime when a default route is not available.
2013-01-10Separate import and receive limits.Ondrej Zajicek
They have different behavior w.r.t. filtered routes that are kept.
2012-11-16Fixes route tracing w.r.t. kept filtered routes.Ondrej Zajicek
2012-11-15Changes 'rejected' to 'filtered' in one of the last patches.Ondrej Zajicek
2012-11-10Allows rejected routes to be kept and examined.Ondrej Zajicek
When 'import keep rejected' protocol option is activated, routes rejected by the import filter are kept in the routing table, but they are hidden and not propagated to other protocols. It is possible to examine them using 'show route rejected'.
2012-08-14Implements ADD-PATH extension for BGP.Ondrej Zajicek
Allows to send and receive multiple routes for one network by one BGP session. Also contains necessary core changes to support this (routing tables accepting several routes for one network from one protocol). It needs some more cleanup before merging to the master branch.
2012-07-20Allows to redefine master table.Ondrej Zajicek
2012-07-16Merge branch 'rt-accepted'Ondrej Zajicek
Conflicts: nest/config.Y nest/rt-table.c proto/bgp/bgp.c
2012-07-16Finalize RA_ACCEPTED handling.Ondrej Zajicek
2012-05-11Minor cleanups.Ondrej Zajicek
2012-05-11Fixes a bug in RA_ACCEPTED handling.Ondrej Zajicek
2012-04-28Some fixes in route export limits.Ondrej Zajicek
2012-04-27Some minor fixes.Ondrej Zajicek
2012-04-24Implements generalized export limits.Ondrej Zajicek
And also fixes some minor bugs in limits.
2012-04-21Fixes in generalized import limits.Ondrej Zajicek
2012-04-15Implements generalized import hooks.Ondrej Zajicek
Thanks to Alexander V. Chernikov for the original patch.