Statistics
| Branch: | Revision:

iof-bird-daemon / sysdep / unix / io.c @ 48e5f32d

History | View | Annotate | Download (37.7 KB)

# Date Author Comment
48e5f32d 02/06/2014 04:46 PM Ondrej Zajicek

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...

0aeac9cb 11/22/2013 01:48 AM Ondrej Zajicek

Merge commit 'origin/bfd'

8931425d 11/22/2013 01:12 AM Ondrej Zajicek

Fixes problem with RIP on multiple ifaces on BSD.

RIP sockets for multiple ifaces collided, because we cannot bind to
a specific iface on BSD. Workarounded by SO_REUSEPORT.

Thanks to Eugene M. Zheganin for the bugreport.

1ec52253 11/19/2013 09:33 PM Ondrej Zajicek

BFD protocol, ready for release.

Supports OSPF and BGP and also statically configured sessions.

0e175f9f 10/05/2013 06:12 PM Ondrej Zajicek

Fixes some BFD bugs and makes logging thread-safe.

6a8d3f1c 09/16/2013 09:57 PM Ondrej Zajicek

BFD work in progress.

Now it compiles and mostly works.

bf139664 09/10/2013 10:09 AM Ondrej Zajicek

Initial BFD commit, work in progress.

a0b176e3 07/24/2013 12:20 PM Ondrej Zajicek

Fixes header file name.

Thanks to Fritz Grimpen for the patch.

354496ac 07/11/2013 11:50 AM Ondrej Zajicek

Some fixes for TTL security.

70e212f9 06/25/2013 01:39 PM Ondrej Zajicek

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.

ef4a50be 06/24/2013 02:37 PM Ondrej Zajicek

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.

a92cf57d 12/26/2012 11:40 AM Ondrej Zajicek

Implements undo command and optional timeout for configuration

Several new configure command variants:

configure undo - undo last reconfiguration
configure timeout - configure with scheduled undo if not confirmed in timeout
configure confirm - confirm last configuration...

c4b76d7b 07/18/2012 05:35 PM Ondrej Zajicek

Rename sk_new() to avoid name collision with OpenSSL.

f1aceff5 04/30/2012 08:25 PM Ondrej Zajicek

Cleanup in sysdep KRT code, part 2.

Remove support for historic Linux kernels,
merge krt-iface, krt-set and krt-scan stub headers.

d7f469c1 01/09/2012 01:41 AM Ondrej Zajicek

Some minor fixes.

eb1451a3 01/08/2012 02:27 PM Ondrej Zajicek

Better support for link-local addresses in IO code.

b1b19433 08/16/2011 09:13 PM Ondrej Zajicek

The generalized TTL security mechanism (RFC 5082) support.

Thanks to Alexander V. Chernikov for the patch.

d0e9b36d 03/23/2011 04:15 PM Ondrej Zajicek

Added header file.

93e868c7 03/13/2011 10:33 AM Ondrej Zajicek

Implements Router Advertisement protocol.

f428631c 08/02/2010 11:12 PM Ondrej Zajicek

Ignore warning when BGP peer is unreachable.

9be9a264 07/12/2010 03:39 PM Ondrej Zajicek

Implements proper multihop BGP.

Also does some incompatible changes to config file syntax,
like removing 'via IP' from multihop option.

acb60628 06/02/2010 08:20 PM Ondrej Zajicek

Implements command that shows memory usage.

002b6423 05/21/2010 10:00 AM Ondrej Zajicek

Fixes bug on Linux 2.4.x - kernel sync does not work until restart of kernel protocol.

Which was, actually, a bug in timers - on older kernel, monotonic timer
is missing and the other implementation started with now == 0, which
collides with usage 0 as a special value in timer->expires field.

47597724 05/14/2010 02:54 PM Ondrej Zajicek

Handle EPIPE as a common connection close event.

607d9914 04/14/2010 01:35 PM Ondrej Zajicek

Fixes build on newer Linux systems.

dcc60494 04/14/2010 12:46 PM Ondrej Zajicek

Fixes IPv6 build on older systems.

646b24d9 04/08/2010 03:45 PM Ondrej Zajicek

Minor changes.

46a82e9c 04/03/2010 08:45 AM Ondrej Zajicek

Fixes missing header.

e7b09e4a 04/02/2010 02:11 PM Ondrej Zajicek

Use SO_BINDTODEVICE also in Linux/IPv6.

bed41728 04/02/2010 09:31 AM Ondrej Zajicek

Minor fixes to previous patches.

eb0f129f 03/26/2010 05:53 PM Ondrej Zajicek

Merge branch 'socket2' into new

97e46d28 03/17/2010 11:19 AM Ondrej Zajicek

Adds check for no protocol and some minor CLI fixes.

- Adds check to deny config file with no specified protocol to prevent
loading of empty config file.
- Moves CLI init before config parse to receive immediate error message
when cannot open control socket....

54305181 03/11/2010 05:55 PM Ondrej Zajicek

Merge branch 'new' into socket2

ff2857b0 02/26/2010 09:55 AM Ondrej Zajicek

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...

e81b440f 02/21/2010 01:34 PM Ondrej Zajicek

Fix configure to enable warnings and fix most of them.

2af25a97 02/11/2010 10:12 AM Ondrej Zajicek

Fixes a crash caused by missing error hook on BGP listening socket.

Error happened when too many BGP connections arrived in one moment
(ECONNABORTED).

353729f5 02/11/2010 09:23 AM Ondrej Zajicek

Temporary OSPF commit - socket changes.

c37e7851 02/02/2010 11:19 PM Ondrej Zajicek

Makes date/time formats configurable.

861f223a 01/06/2010 10:20 PM Ondrej Zajicek

BSD compatibility fix.

cf31112f 01/03/2010 11:17 AM Ondrej Zajicek

Implements MRTdump feature.

4ac7c834 11/09/2009 10:22 PM Ondrej Zajicek

Use IPv6 checksums in OSPFv3.

3f22fa9e 11/09/2009 09:54 PM Ondrej Zajicek

Merge branch 'dev' into ospf3

ea89da38 10/11/2009 04:56 PM Ondrej Zajicek

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...

daeeb8e9 09/04/2009 09:24 AM Ondrej Zajicek

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.

f9c799a0 09/04/2009 09:06 AM Ondrej Zajicek

Temporary OSPFv3 development commit (changing multicast support).

061ab802 08/27/2009 04:25 PM Ondrej Zajicek

Temporary OSPFv3 development commit

2d785e8d 06/26/2009 11:33 AM Ondrej Zajicek

Fixes bug on TCP passive socket binding on BSD.

BGP on BSD was bound to random port. I am surprised that
nobody noticed it already.

1876e18d 06/25/2009 01:44 PM Ondrej Zajicek

Minor bugfix.

4323099d 06/19/2009 10:59 PM Ondrej Zajicek

Fixes bug in scheduling of callback by main loop.

If other side of a socket is sending data faster than
BIRD is processing, BIRD does not schedule any other
callbacks (events, timers, rx/tx callbacks).

789772ed 06/18/2009 05:20 PM Ondrej Zajicek

Implements option that changes BGP listening socket parametres.

2b70f074 05/04/2009 04:17 PM Ondrej Filip

Linux specific TCP-MD5 handling moved to sysdep/linux/sysio.h
FreeBSD coded added. BSD cannot set BGP passwords itself.
This has to be done by external command.

35164c50 12/12/2008 04:48 PM Ondrej Zajicek

rx_hook may be cleaned in some callback so we check it before
executing sk_read().

fd91ae33 11/05/2008 09:36 PM Ondrej Zajicek

Fix problem with local time changes.

1389f369 11/05/2008 08:39 PM Ondrej Zajicek

Fixes bugs in IPv6 code caused by recent commits.

a39b165e 11/01/2008 03:58 PM Ondrej Zajicek

Multihop BGP was completely broken, because listening socket has always
ttl 1.

a98fbf0f 10/26/2008 11:20 PM Ondrej Zajicek

Merge branch 'dev' into out

68fa95cf 10/26/2008 10:55 PM Ondrej Zajicek

Check of socket name length

d51aa281 10/26/2008 09:42 PM Ondrej Zajicek

Implementation of MD5 authentication of BGP sessions.

97c6fa02 08/25/2008 12:06 PM Ondrej Filip

Previous patch reverted. :-(

030e3a79 08/25/2008 11:57 AM Ondrej Filip

Buffer overflow fix.

c025b852 02/14/2005 11:15 PM Ondrej Filip

Real write is only in sk_maybe_write. Previous change partially reverted.
Thank you MJ.

7c49f715 02/14/2005 09:28 PM Ondrej Filip

Added s->err_hook wrapper that empties socket.

0d3effcf 02/12/2005 10:27 PM Ondrej Filip

Time added in password management.

09e4117c 06/18/2004 12:54 PM Ondrej Filip

sk_write bugfix for BSD.

41c8976e 06/06/2004 05:05 PM Ondrej Filip

Test old instance of BIRD.

4da25acb 06/05/2004 08:56 AM Martin Mares

Cleaned up sk_reallocate() and friends.
Also, removed the `if (s)' test, because I believe that as the whole
socket interface doesn't accent NULL pointers, sk_reallocate() shouldn't
be the only exception.

e7ef86a5 06/04/2004 06:51 PM Ondrej Filip

OSPF is ready for changing MTU.

7d72aadb 06/03/2004 08:18 AM Ondrej Filip

CONFIG_SKIP_MC_BIND added.
BSD hates it, Linux needs it.

b613b992 06/01/2004 10:32 AM Ondrej Filip

#ifdef CONFIG_UNIX_DONTROUTE added.

38a608c5 05/31/2004 09:48 PM Martin Mares

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....

b1a1faba 05/31/2004 01:25 PM Ondrej Filip

*BSD port added. (Tested on FreeBSD and NetBSD)

01b776e1 03/06/2001 01:40 PM Martin Mares

Fixed <time.h> vs. <sys/time.h> problems.

0b3bf4b1 06/09/2000 07:30 AM Martin Mares

Use SUN_LEN() for length of UNIX domain addresses. This should fix problems
with connection to clients on libc5 machines.

58f7d004 06/07/2000 01:25 PM Martin Mares

Fixes to the progdoc.

2e9b2421 06/07/2000 12:29 PM Martin Mares

Spelling fixes to progdoc.

525fa2c1 06/05/2000 12:19 PM Martin Mares

Documented sockets, events and timers.

10304bed 06/05/2000 11:46 AM Martin Mares

Split random number functions off io.c, so that they can be documented
separately.

b594ad23 06/01/2000 03:13 PM Martin Mares

tm_format_reltime() works with both past and future timestamps.

c304392e 05/08/2000 12:37 PM Martin Mares

Some less socket error messages.

9cbf43eb 05/08/2000 12:09 PM Martin Mares

Don't report refused connections.

93a786cb 05/04/2000 08:30 PM Martin Mares

Removed a lot of unused variables.

Please try compiling your code with --enable-warnings to see them. (The
unused parameter warnings are usually bogus, the unused variable ones
are very useful, but gcc is unable to control them separately.)

f75e3bbc 04/27/2000 10:35 PM Martin Mares

Fixed a couple of nasty CLI bugs which were triggered on long or multi-part
outputs. It took a whole evening to hunt them down, but now the CLI seems
to work fine.

Now I run three BGP connections with several thousand routes!

e1ddd993 04/26/2000 01:26 PM Martin Mares

Changed handling of incoming connections, so that we can send data
from the send hook without worrying about existence of socket buffers.

Also, don't forget to copy peer addresses.

0cadd5f5 04/26/2000 12:33 PM Martin Mares

Removed several FIXME's.

00c0c18a 04/25/2000 11:07 PM Martin Mares

Allow sk_close(NULL).

f380aa60 04/20/2000 11:05 PM Martin Mares

IPv6 compiles with glibc 2.1.

a37410cb 03/31/2000 11:33 PM Martin Mares

Use bsprintf() instead of sprintf().

221135d6 03/31/2000 11:30 PM Martin Mares

Include "lib/string.h" instead of <string.h>. It should give us bzero()
and other non-portable functions on all systems.

320f4173 03/30/2000 10:43 AM Martin Mares

Defined sk_close() which closes the socket safely even if called from
socket hook. Replaces the SK_DELETED hack.

Squashed a couple of bugs in handling of TCP sockets.

1cf716f0 03/20/2000 09:49 PM Martin Mares

Handle EINPROGRESS properly.

Set IP_DONTROUTE sockopt only if sk->ttl == 1.

f098e072 03/12/2000 10:53 PM Martin Mares

Fixed a bunch of FIXME's by removing them :)

7a88832e 03/12/2000 10:43 PM Martin Mares

Added tm_format_datetime().

a2867cd9 12/16/1999 01:14 PM Martin Mares

Better order of includes.

set_inaddr() moved to sysio.h.

67ece6df 12/16/1999 01:06 PM Martin Mares

Tried to clean up multicast handling. Now we don't try to guess
multicast abilities depending on definedness of symbols and use hard-wired
system-dependent configuration defines instead.

Please test whereever you can.

30bc402e 12/08/1999 03:12 PM Martin Mares

Temporary work-arounds for multicast problems. Needs further investigation.

f78056fb 12/06/1999 01:51 PM Martin Mares

Allow logging to stderr as well.

a9c986f9 12/06/1999 01:43 PM Martin Mares

Added tracked_fopen() which is a fopen registered in resource database.
Will be used for log files.

afa8937a 12/01/1999 11:59 AM Martin Mares

Added tm_format_reltime() for formatting of relative time quantities.

487d1afa 11/30/1999 02:01 PM Martin Mares

Moved TIME_INFINITY to timer.h, so that it's publicly available.

30770df2 11/17/1999 12:04 PM Martin Mares

If the main event queue is not empty, call select() with zero timeout, so
that the events are ran again after the FD's are checked. This allows us
to schedule I/O checks between processing of user commands.