summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-04-08Merge branch 'master' into int-new-channelsJan Moskyto Matejka
2016-04-07Channelize: rt_notify arg conversion table -> channelJan Moskyto Matejka
2016-04-07Merge branch 'int-new-channels' of gitlab.labs.nic.cz:labs/bird into ↵Jan Moskyto Matejka
int-new-channels
2016-04-07Nest: Reset export route counter during graceful restartOndrej Zajicek (work)
Counter exp_routes is increased during initial route feed after GR recovery, so it has to start with zero, otherwise BIRD will end with double value in exp_routes.
2016-04-06IO: Avoid multiple event cycles in one loop cycle.Ondrej Zajicek (work)
Event cycle may took too much time and trigger next timer events, so avoid cycling between timer and event cycles inside the loop cycle.
2016-04-06IO: Replace RX priority heuristic with explicit markOndrej Zajicek (work)
In BIRD, RX has lower priority than TX with the exception of RX from control socket. The patch replaces heuristic based on socket type with explicit mark and uses it for both control socket and BGP session waiting to be established. This should avoid an issue when during heavy load, outgoing connection could connect (TX event), send open, but then failed to receive OPEN / establish in time, not sending notifications between and therefore got hold timer expired error from the neighbor immediately after it finally established the connection.
2016-04-06KRT: Fix route learn scan when route changedOndrej Zajicek (work)
When a kernel route changed, function krt_learn_scan() noticed that and replaced the route in internal kernel FIB, but after that, function krt_learn_prune() failed to propagate the new route to the nest, because it confused the new route with the (removed) old best route and decided that the best route did not changed. Wow, the original code (and the bug) is almost 17 years old.
2016-03-30IO/Poll: fix mistaken variable mergeJan Moskyto Matejka
The events variable is used in the short loop decision. The reasons are not much clear, keeping this to keep the former behaviour.
2016-03-23Birdlib: Modify lists to avoid problems with pointer aliasing rulesJan Moskyto Matejka
The old linked list implementation used some wild typecasts and required GCC option -fno-strict-aliasing to work properly. This patch fixes that. However, we still keep the option due to other potential problems. (Commited by Ondrej Santiago Zajicek)
2016-03-23Birdlib: Do cleanups after remove/freeOndrej Zajicek (work)
To avoid byzantine behavior in case of some errors, linked lists are cleared after rem_node() and resource headers are cleared after rfree().
2016-03-23OSPF: Fix bogus LSA ID collisions between received and originated LSAsOndrej Zajicek (work)
After restart, LSAs locally originated by the previous instance are received from neighbors. They are installed to LSA db and flushed. If export of a route triggers origination of a new external LSA before flush of the received one is complete, the check in ospf_originate_lsa() causes origination to fail (because en->nf is NULL for the old LSA and non-NULL for the new LSA). The patch fixes this by updating the en->nf for LSAs being flushed (as is already done for empty ones). Generally, en->nf field deserves some better description in the code. Thanks to Jigar Mehta for analyzing the problem.
2016-03-23Minor changes in documentationOndrej Zajicek (work)
2016-03-23OSPF: Fix reading from freed memoryOndrej Zajicek (work)
Thanks to Pavel Tvrdik for noticing it.
2016-03-22Merge remote-tracking branch 'origin/poll'Jan Moskyto Matejka
2016-03-18Unix: Substituted select -> poll also in congestion checkerJan Moskyto Matejka
It does strange things when even one fd larger than FD_SETSIZE is passed to select().
2016-03-17RIP: fix typo in configuration at rx length optPavel Tvrdík
2016-03-17BGP: Add documentaion for extended messagesPavel Tvrdík
2016-03-15Poll: Prevent the improbable case of EAGAIN after POLLINJan Moskyto Matejka
2016-03-11Unix: Rework of select-loop to poll-loopJan Moskyto Matejka
This should lift the limit of FD_SETSIZE and allow more than 1024 fd's. FD_SETSIZE limit doesn't matter now when creating new sockets.
2016-03-10cf_error(char *msg, ...) -> cf_error(const char *msg, ...)Pavel Tvrdík
2016-03-10nest/proto fix local_debug modePavel Tvrdík
2016-03-10Fix typoPavel Tvrdík
2016-02-25Merge branch 'master' of gitlab.labs.nic.cz:labs/birdJan Moskyto Matejka
2016-02-25OSPF: Multicast ability is irrelevant for stub interfacesOndrej Zajicek (work)
2016-02-25All the current pthread implementations are OK and working with us.Jan Moskyto Matejka
No more need to disable pthread for specific BSD's.
2016-02-19Hash: typecast error fixJan Moskyto Matejka
2016-02-16Filter: Implement last_nonaggregated operator on bgp_pathOndrej Zajicek (work)
2016-02-11Unix: Fix bug in syslog name handlingOndrej Zajicek (work)
Pointer to current_log_name has to be changed even if the name is the same, because the old one will be invalid/freed after reconfiguration.
2016-02-11BGP: Fix bug in incoming connection handlingOndrej Zajicek (work)
When a BGP session was established by an outgoing connection with Graceful Restart behavior negotiated, a pending incoming connection in OpenSent state, and another incoming connection was received, then the outgoing connection (and whole BGP session) was closed, but the old incoming connection was just overwritten by the new one. That later caused a crash when the hold timer from the old connection fired.
2016-02-10Updated RTA hashes to 32-bit values.Jan Moskyto Matejka
... and reworked the hashes a bit. Also added mem_hash function which just computes a hash of given memory block.
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-01Fixed sigsegv for missing proto->rt_notify hookJan Moskyto Matejka
If rt_notify is NULL, the export must always stay DOWN.
2016-02-01BSD: compilation error fixJan Moskyto Matejka
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-28Add 'GENERATE/ACCEPT FROM datetime TO datetime' to password optionsPavel Tvrdík
2016-01-27io.c: fix reads from uninitialized memoryPavel Tvrdík
2016-01-27RIP: Fix DBG outputPavel Tvrdík
2016-01-25RIPng: fixed misrejection of host routesJan Moskyto Matejka
2016-01-21BSD: fix no-return warningJan Moskyto Matejka
2016-01-21BSD: Explicitly dropping routes with mismatched AF's.Jan Moskyto Matejka
2016-01-21All the current pthread implementations are OK and working with us.Jan Moskyto Matejka
No more need to disable pthread for specific BSD's.
2016-01-21Add condition for max_pxlen by ROA grammarPavel Tvrdík
2016-01-21Use net_addr pointer for net_addr_roaXPavel Tvrdík
net_addr_roa6 is bigger than net_addr Thanks to Ondrej Zajicek for notice
2016-01-20Add forgotten semicolonPavel Tvrdík
2016-01-20Delete old ROA codePavel Tvrdík
2016-01-20Rewrite roa_check() for integrated BIRDPavel Tvrdík
Thanks to Ondrej Zajicek for his support with writing this code.
2016-01-20Add ROA_* constants values to grammar of configurationPavel Tvrdík
Add ROA_UNKNOWN, ROA_VALID and ROA_INVALID
2016-01-20Add ROA net_addr to grammarPavel Tvrdík
Example: protocol static { route 10.110.0.0/16 max 16 as 1000 blackhole; route 10.120.0.0/16 max 24 as 1000 blackhole; route 10.130.0.0/16 max 24 as 2000 blackhole; route 10.130.128.0/18 max 24 as 3000 blackhole; ... }
2016-01-20BSD integration fixesJan Moskyto Matejka
2016-01-14NET ROAx: add max_pxlen, fix formatPavel Tvrdík