Commit graph

236 commits

Author SHA1 Message Date
Ondrej Zajicek
0c791f873a BGP graceful restart support.
Also significant core protocol state changes needed for that,
global graceful restart recovery state and kernel proto support
for recovery.
2014-03-20 14:07:12 +01:00
Ondrej Zajicek
5c200e0a4d Merge branch 'add-path' 2014-02-06 20:15:05 +01:00
Ondrej Zajicek
48e5f32db6 Many changes in I/O and OSPF sockets and packet handling.
I/O:
 - BSD: specify src addr on IP sockets by IP_HDRINCL
 - BSD: specify src addr on UDP sockets by IP_SENDSRCADDR
 - Linux: specify src addr on IP/UDP sockets by IP_PKTINFO
 - IPv6: specify src addr on IP/UDP sockets by IPV6_PKTINFO
 - Alternative SKF_BIND flag for binding to IP address
 - Allows IP/UDP sockets without tx_hook, on these
   sockets a packet is discarded when TX queue is full
 - Use consistently SOL_ for socket layer values.

OSPF:
 - Packet src addr is always explicitly set
 - Support for secondary addresses in BSD
 - Dynamic RX/TX buffers
 - Fixes some minor buffer overruns
 - Interface option 'tx length'
 - Names for vlink pseudoifaces (vlinkX)
 - Vlinks use separate socket for TX
 - Vlinks do not use fixed associated iface
 - Fixes TTL for direct unicast packets
 - Fixes DONTROUTE for OSPF sockets
 - Use ifa->ifname instead of ifa->iface->name
2014-02-06 17:46:01 +01:00
Ondrej Zajicek
e7d2ac4401 Finishes add-path.
Fixes some bugs and uses generic hash implementation.
2013-12-01 13:49:42 +01:00
Ondrej Zajicek
736e143fa5 Merge branch 'master' into add-path
Conflicts:

	filter/filter.c
	nest/proto.c
	nest/rt-table.c
	proto/bgp/bgp.h
	proto/bgp/config.Y
2013-11-23 11:50:34 +01:00
Ondrej Zajicek
41f8bf57c4 Changes identifiers to avoid use of reserved ones. 2013-11-22 21:59:43 +01:00
Ondrej Zajicek
0aeac9cb7f Merge commit 'origin/bfd' 2013-11-22 02:48:44 +01:00
Ondrej Zajicek
1ec522538f BFD protocol, ready for release.
Supports OSPF and BGP and also statically configured sessions.
2013-11-19 22:33:48 +01:00
Ondrej Zajicek
0e175f9f0f Fixes some BFD bugs and makes logging thread-safe. 2013-10-05 20:12:28 +02:00
Ondrej Zajicek
b655596d1d Simplifies val_in_range().
Also fixes missing type check for element ~ set.
2013-10-02 11:42:46 +02:00
Ondrej Zajicek
6a8d3f1c1f BFD work in progress.
Now it compiles and mostly works.
2013-09-16 23:57:40 +02:00
Ondrej Zajicek
bf139664aa Initial BFD commit, work in progress. 2013-09-10 12:09:36 +02:00
Ondrej Zajicek
70e212f913 Implements TTL security for OSPF and RIP.
Interfaces for OSPF and RIP could be configured to use (and request)
TTL 255 for traffic to direct neighbors.

Thanks to Simon Dickhoven for the original patch for RIPng.
2013-06-25 15:39:44 +02:00
Ondrej Zajicek
ef4a50be10 Better packet priority and traffic class handling.
Implements support for IPv6 traffic class, sets higher priority for OSPF
and RIP outgoing packets by default and allows to configure ToS/DS/TClass
IP header field and the local priority of outgoing packets.
2013-06-24 16:37:30 +02:00
Ondrej Zajicek
094d2bdb79 Implements ADD-PATH extension for BGP.
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-08-14 16:46:43 +02:00
Ondrej Zajicek
c4b76d7b19 Rename sk_new() to avoid name collision with OpenSSL. 2012-07-18 19:35:30 +02:00
Ondrej Zajicek
fc06fb6244 Implements RDNSS and DNSSL support for RAdv. 2012-07-07 14:26:42 +02:00
Ondrej Zajicek
d494df63ac Some minor fixes. 2012-04-27 00:04:51 +02:00
Ondrej Filip
cca970666a Small typo in programmer's documentation. 2012-04-22 14:03:07 +02:00
Ondrej Zajicek
af582c4811 Route Origin Authorization basics.
- ROA tables, which are used as a basic part for RPKI.
 - Commands for examining and modifying ROA tables.
 - Filter operators based on ROA tables consistent with RFC 6483.
2012-03-18 17:32:30 +01:00
Ondrej Zajicek
53ffbff39f Implements support for link-local addresses in BGP.
Thanks Matthias Schiffer for the original patch.
2012-01-08 15:31:34 +01:00
Ondrej Zajicek
eb1451a3a0 Better support for link-local addresses in IO code. 2012-01-08 15:27:04 +01:00
Ondrej Zajicek
a03ede6493 Fixes a tricky bug in route filtering.
Route attributes was used after rta was freed during copy-on-write in
filter code. This causes some random crashes, esp. with multipath
routes.
2012-01-03 00:42:25 +01:00
Ondrej Zajicek
bf6d91dc4e Use undefined scope for undefined IPv6 addresses. 2011-09-24 11:06:42 +02:00
Ondrej Zajicek
b1b1943360 The generalized TTL security mechanism (RFC 5082) support.
Thanks to Alexander V. Chernikov for the patch.
2011-08-16 23:13:05 +02:00
Ondrej Zajicek
93e868c730 Implements Router Advertisement protocol. 2011-03-13 11:33:50 +01:00
Ondrej Zajicek
d5356072ac Fixes a bug in LSA update of large LSAs. 2010-11-04 17:22:43 +01:00
Ondrej Zajicek
0d1b3c4c0e Changes print-like filter commands to use a log instead of a stderr.
And extends the log subsystem to better handle that.
2010-09-20 13:01:01 +02:00
Ondrej Zajicek
dcc71a7fb7 Supports unique local unicast addresses. 2010-08-12 10:22:40 +02:00
Ondrej Zajicek
acb60628f5 Implements command that shows memory usage. 2010-06-02 22:20:40 +02:00
Ondrej Zajicek
ba32170657 Better support for /31 networks. 2010-04-28 00:39:57 +02:00
Ondrej Zajicek
c1b51598d4 Implements changes in checksum alg suggested by Joakim Tjernlund. 2010-04-25 19:13:49 +02:00
Ondrej Zajicek
54305181f6 Merge branch 'new' into socket2 2010-03-11 18:55:59 +01:00
Ondrej Zajicek
ff2857b03d Many changes in (mainly) kernel syncers.
- BSD kernel syncer is now self-conscious and can learn alien routes
- important bugfix in BSD kernel syncer (crash after protocol restart)
- many minor changes and bugfixes in kernel syncers and neighbor cache
- direct protocol does not generate host and link local routes
- min_scope check is removed, all routes have SCOPE_UNIVERSE by default
- also fixes some remaining compiler warnings
2010-02-26 10:55:58 +01:00
Ondrej Zajicek
e81b440f68 Fix configure to enable warnings and fix most of them. 2010-02-21 14:34:53 +01:00
Ondrej Zajicek
a2ea1bac60 Moves errno.h include. 2010-02-11 21:19:20 +01:00
Ondrej Zajicek
353729f513 Temporary OSPF commit - socket changes. 2010-02-11 10:23:35 +01:00
Ondrej Zajicek
0741e68750 Socket table update. 2010-01-08 10:21:51 +01:00
Ondrej Zajicek
cf31112f0d Implements MRTdump feature. 2010-01-03 12:17:52 +01:00
Ondrej Zajicek
4ac7c8341c Use IPv6 checksums in OSPFv3. 2009-11-09 23:22:53 +01:00
Ondrej Zajicek
3f22fa9e74 Merge branch 'dev' into ospf3 2009-11-09 22:54:39 +01:00
Ondrej Zajicek
ea89da381f Workaround for stupid callback scheduler.
There is no reak callback scheduler and previous behavior causes
bad things during hard congestion (like BGP hold timeouts).

Smart callback scheduler is still missing, but main loop was
changed such that it first processes all tx callbacks (which
are fast enough) (but max 4* per socket) + rx callbacks for CLI,
and in the second phase it processes one rx callback per
socket up to four sockets (as rx callback can be slow when
there are too many protocols, because route redistribution
is done synchronously inside rx callback). If there is event
callback ready, second phase is skipped in 90% of iterations
(to speed up CLI during congestion).
2009-10-11 18:56:16 +02:00
Ondrej Zajicek
46eb80d5d5 Fixes headers for uintptr_t (and build on NetBSD). 2009-09-17 17:52:36 +02:00
Ondrej Zajicek
be86240662 Temporary OSPFv3 development commit.
Finally, it is working.
2009-09-08 13:45:02 +02:00
Ondrej Zajicek
daeeb8e982 Clear memory allocated by ralloc().
This also fixes bug that timer->recurrent was not cleared
in tm_new() and unexpected recurrence of startup timer
in BGP confused state machine and caused crash.
2009-09-04 11:24:08 +02:00
Ondrej Zajicek
f9c799a00e Temporary OSPFv3 development commit (changing multicast support). 2009-09-04 11:06:51 +02:00
Ondrej Zajicek
061ab802a6 Temporary OSPFv3 development commit 2009-08-27 18:25:46 +02:00
Ondrej Zajicek
b49e6f5a65 Temporary OSPFv3 development commit 2009-08-25 16:42:14 +02:00
Ondrej Zajicek
54d70d3ebb Fixes compiler warning in OFFSETOF(). 2009-07-23 22:21:17 +02:00
Ondrej Zajicek
2f6483cd31 Adds %R printf directive for Router ID. 2009-07-23 16:06:25 +02:00
Ondrej Zajicek
d1abbeacfb Fixes memory alignment problems on Sparc64.
Not quite standard construction, i should add
some autoconf macro.

Not tested yet.
2009-07-06 19:07:01 +02:00
Ondrej Zajicek
789772ed45 Implements option that changes BGP listening socket parametres. 2009-06-18 19:20:07 +02:00
Ondrej Zajicek
1b3b3e34ec Minor bugfixes. 2009-06-18 14:32:44 +02:00
Ondrej Zajicek
3d15dcdb1c Changes OSPF to generate stub networks for non-primary addresses.
Also does some reorganization in RT LSA announcement.
2009-06-10 23:45:08 +02:00
Ondrej Zajicek
c60cdd8c39 Cleanup changes 2009-03-31 21:17:00 +02:00
Ondrej Zajicek
b1a597e0c3 Reimplementation of prefix sets.
Prefix sets were broken beyond any repair and have to be reimplemented.
They are reimplemented using a trie with bitmasks in nodes.
There is also change in the interpretation of minus prefix pattern,
but the old interpretation was already inconsistent with
the documentation and broken.

There is also some bugfixes in filter code related to set variables.
2009-03-31 12:55:57 +02:00
Ondrej Zajicek
cb53039271 Rate limit for most abundant log messages 2009-02-26 14:23:54 +01:00
Ondrej Zajicek
02a9eeeb85 Slist update 2009-01-12 14:40:21 +01:00
Ondrej Zajicek
083c43e22e fixes some 64-bit related bugs.
Filter code used 'aux' integer field of 'symbol' struct to store ptr
to next symbol and both 'aux2' and 'def' fields for value.
Changed to just 'def' for value and 'aux2' for ptr to next symbol.
Also another minor bugfix.
2008-12-25 11:55:27 +01:00
Ondrej Zajicek
b933281ed5 Fixes nasty bug in event processing.
WALK_LIST_DELSAFE (in ev_run_list) is not safe with regard
to deletion of next node. When some events are rescheduled
during event execution, it may lead to deletion of next
node and some events are skipped. Such skipped nodes remain
in temporary list on stack and the last of them contains
'next' pointer to stack area. When this event is later
scheduled, it damages stack area trying to remove it from
the list, which leads to random crashes with funny
backtraces :-) .
2008-12-18 23:26:08 +01:00
Ondrej Zajicek
a39b165e45 Multihop BGP was completely broken, because listening socket has always
ttl 1.
2008-11-01 16:58:40 +01:00
Ondrej Zajicek
d51aa28190 Implementation of MD5 authentication of BGP sessions. 2008-10-26 22:42:39 +01:00
Martin Mares
057021df0d Fix behavior of ipa_opposite().
It was giving wrong results on /30 networks.
2008-08-25 11:19:49 +00:00
Martin Mares
9831e5916f Staticized lots of local functions. 2004-06-05 09:58:23 +00:00
Martin Mares
2f6de49f8c Better prototypes. 2004-06-05 09:57:49 +00:00
Martin Mares
fab37e8197 One more in the library. 2004-06-05 09:27:02 +00:00
Martin Mares
e98bc2ea9b Renamed log() to log_msg(), but still keeping the old name as a macro.
This is done to avoid clashes with gcc-3.3 which has built-in logarithms :)
2004-06-05 09:05:12 +00:00
Martin Mares
5da8f82feb A better comment. 2004-06-05 09:01:12 +00:00
Ondrej Filip
e7ef86a58c OSPF is ready for changing MTU. 2004-06-04 18:51:29 +00:00
Ondrej Filip
7fdd338c36 ALIGN -> BIRD_ALIGN 2004-06-01 10:28:25 +00:00
Martin Mares
38a608c55a Rewritten the I/O loop. All socket operations are now safe, meaning that
you can delete the socket from anywhere in the hooks and nothing should break.
Also, the receive/transmit buffers are now regular xmalloc()'ed buffers,
not separate resources which would need shuffling around between pools.

sk_close() is gone, use rfree() instead.
2004-05-31 21:48:19 +00:00
Martin Mares
206f59dfa8 Added UNUSED. 2004-05-31 21:02:09 +00:00
Martin Mares
2cc37815ae Added rmove() (by Andreas, tweaked by me). 2004-05-31 18:47:19 +00:00
Ondrej Filip
1bd897dd33 Changed of comments. 2004-05-31 17:27:21 +00:00
Ondrej Filip
7dbd4fd332 alloca.h added 2004-05-31 17:13:58 +00:00
Ondrej Filip
0e6eef620d Use #include "alloca.h" 2004-05-31 17:07:05 +00:00
Ondrej Filip
012279f395 Some include added. 2004-05-31 13:59:03 +00:00
Ondrej Filip
d93fb7e6b9 #ifndef ALIGN - it is defined on *BSD 2004-05-31 13:58:38 +00:00
Martin Mares
47f18ac39a ABS should be a macro. 2002-11-13 08:47:19 +00:00
Martin Mares
30b773041c IP address formatting now uses the same rules as formatting of strings
with two exceptions:

   o  Any non-zero field width is automatically replaced by standard
      IP address width. This hides dependences on IPv4/IPv6.
   o  %#I generates hexadecimal form of the address.

Therefore |%I| generates unpadded format, |%1I| full size flush-right,
and |%-1I| full size flush-left format.
2001-08-19 11:11:44 +00:00
Martin Mares
27e993fb4e Fixed duplicity in log category numbering.
Thanks to Zheng Yuan for spotting this.
2001-02-20 09:49:19 +00:00
Martin Mares
0766e962e9 Bug fix from Zheng Yuan <zyuan1@cig.mot.com>. 2001-01-17 08:32:28 +00:00
Martin Mares
a2d01907c5 Added an explanatory comment. 2001-01-15 09:24:16 +00:00
Martin Mares
725270cb1d Fixes for the programmer's manual. 2000-06-08 12:37:21 +00:00
Martin Mares
58f7d004fd Fixes to the progdoc. 2000-06-07 13:25:53 +00:00
Martin Mares
2e9b24211a Spelling fixes to progdoc. 2000-06-07 12:29:08 +00:00
Ondrej Filip
3df89cefc1 #define SIZE_OF_IP_HEADER 2000-06-07 01:18:36 +00:00
Martin Mares
525fa2c1f0 Documented sockets, events and timers. 2000-06-05 12:19:12 +00:00
Martin Mares
5cc1e1f805 Documented memory resources. 2000-06-05 11:41:41 +00:00
Martin Mares
7722938d63 Added library progdocs. 2000-06-04 18:34:39 +00:00
Martin Mares
38cf78a97a Added the introduction chapter of progdoc. 2000-05-31 13:30:58 +00:00
Martin Mares
fcb5f4a725 Updated all the Doc files to new format. 2000-05-31 11:30:18 +00:00
Martin Mares
cfa6ab0593 Added ipa_absolutize() which converts link-scope addresses to global scope
ones according to prefix assigned to the corresponding interface.
2000-05-30 22:47:33 +00:00
Martin Mares
be77b6890c Poisoning: take there... 2000-05-16 15:02:33 +00:00
Martin Mares
e2f4f27564 Oops, the poison was too deadly... 2000-05-16 13:53:44 +00:00
Martin Mares
b8e60d3562 Added poisoning of free'd objects when we're debugging. 2000-05-16 13:51:31 +00:00
Martin Mares
758458be05 Unified parsing of prefixes.
Had to rename `prefix' in filters to `fprefix'.
2000-05-13 11:17:49 +00:00
Martin Mares
c976342828 Implemented debugging function rlookup() which you can call from gdb
to see what resource does the address given as a parameter belong to.
2000-05-08 22:33:38 +00:00
Martin Mares
ab1129c1bd Added skeleton Doc files for the whole developer's documentation. 2000-05-05 17:17:42 +00:00
Martin Mares
2a149b18cc Unused variables in IPv6 code. 2000-05-04 20:38:44 +00:00