| Branch: | Revision:

iof-bird-daemon / sysdep / unix @ f7fcb752

# Date Author Comment
f7fcb752 01/17/2000 11:17 AM Martin Mares

Reconfiguration for device protocol.

99278e10 01/16/2000 11:36 PM Martin Mares

Wording changes.

bf8558bc 01/16/2000 05:40 PM Martin Mares

Converted shutdown to a kind of reconfiguration, it's no more handled
as a exception in protocol state machines. Introduced a `shutdown'
CLI command. Killed few reconfiguration bugs.

50fe90ed 01/16/2000 04:44 PM Martin Mares

First attempt on dynamic reconfiguration. There are still lots of bugs
and problems to solve, but the hardest part works.

476e1084 12/16/1999 01:51 PM Martin Mares

Minor cleanups.

e693ddff 12/16/1999 01:23 PM Martin Mares

Handle cases when SIOCGIFINDEX is defined, but doesn't work (new glibc
with 2.0 kernels).

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.

f545d387 12/09/1999 06:54 PM Martin Mares

Added universal locking mechanism which will solve problems
with protocols wanting to use the same port on the same interface
during reconfiguration time.

How to use locks: In the if_notify hook, just order locks for the
interfaces you want to work with and do the real socket opening after the...

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

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

0da472d7 12/08/1999 02:16 PM Martin Mares

Except for special protocols (nowadays only the kernel syncer), don't
export host and link scope routes.

dc82daaa 12/08/1999 01:20 PM Martin Mares

- Path to control socket is selectable via command-line option.
- die() when control socket open failed.

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

Allow logging to stderr as well.

a0c37b45 12/06/1999 01:45 PM Martin Mares

Logging is now configurable. You can define multiple log outputs (to both
files and syslog) and assign lists of message categories to each of them.

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.

34350a52 12/06/1999 12:34 PM Martin Mares

Implemented echoing of log messages to CLI connections. Just try `echo all'.

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.

b9672a84 10/31/1999 03:43 PM Martin Mares

The CLI I/O functions work as desired.

7d3aab1c 10/29/1999 12:10 PM Martin Mares

First steps of the Command Line Interface: I/O routines.

b93abffa 10/29/1999 12:09 PM Martin Mares

Implemented unix-domain sockets.

ed608150 10/29/1999 09:44 AM Martin Mares

Added skeleton of the client. Does nothing, but at least compiles.

f782b72c 10/02/1999 11:06 AM Martin Mares

Failure to set socket TOS is not a fatal error.

f6519414 08/17/1999 08:47 PM Martin Mares

Added a function for generating 32-bit random numbers.

4532a89e 08/03/1999 07:37 PM Martin Mares

Taught Netlink how to behave in IPv6 world.

4f22c981 08/03/1999 07:36 PM Martin Mares

Support for IPv6 sockets. How nice one doesn't have to ifdef around
ten years of API evolution :-)

dce26783 08/03/1999 07:36 PM Martin Mares

Basic support for IPv6. The system-dependent part doesn't work yet,
but the core routines are there and seem to be working.

o  lib/ipv6.[ch] written
o Lexical analyser recognizes IPv6 addresses and when in IPv6
mode, treats pure IPv4 addresses as router IDs....
7de45ba4 08/03/1999 07:33 PM Martin Mares

Kernel route syncer supports multiple tables.

The changes are just too extensive for lazy me to list them
there, but see the comment at the top of sysdep/unix/krt.c.
The code got a bit more ifdeffy than I'd like, though.

Also fixed a bunch of FIXME's and added a couple of others. :)

92730354 08/03/1999 07:30 PM Martin Mares

Changes to interface handling on traditional Unices:

o  Aliases are interpreted as secondary addresses.
o When the system doesn't supply interface indices, generate
our ones.
913f7dc9 08/03/1999 07:29 PM Martin Mares

Added functions for parsing and formatting of dates.

bd7f1081 06/01/1999 03:31 PM Martin Mares

Grrr, the "obvious fix" to multicasting code from yesterday was
fundamentally wrong. Reversed.

c7208da0 05/31/1999 08:28 PM Martin Mares

Fix potential multicasting bug.

bb027be1 05/31/1999 06:55 PM Martin Mares

Added extra argument to rt_update hook which contains a pointer to the
temporary attribute list.

1c3c9dce 05/21/1999 02:29 PM Martin Mares

Removed one unused structure field.

4f1a6d27 05/17/1999 08:16 PM Martin Mares

Kill remaining master_table relics in KRT code.

Make all protocols pass routing table to rte_update and rte_discard.

9a158361 05/06/1999 09:38 PM Martin Mares

I rewrote the interface handling code, so that it supports multiple
addresses per interface (needed for example for IPv6 support).

Visible changes:

o struct iface now contains a list of all interface addresses (represented
by struct ifa), iface->addr points to the primary address (if any)....

4c5e5e3a 04/14/1999 12:29 PM Martin Mares

Multicasts once again: When using SO_BINDTODEVICE, don't specify IP address
of the interface.

1b50a1e4 04/14/1999 11:39 AM Martin Mares

Next attempt to get SO_BINDTODEVICE work :)

36154beb 04/14/1999 11:21 AM Martin Mares

Use SO_BINDTODEVICE if we're using old multicast API (i.e., struct ip_mreq
and not ip_mreqn). This should get multicasts on unnumbered PtP links work.

01bd7759 04/12/1999 06:07 PM Martin Mares

Ignore alias interfaces (some day, we will treat them as pure secondary
interface addresses).

08e2d625 04/12/1999 06:01 PM Martin Mares

Removed TOS support. This simplifies many things a lot.

61fb537c 04/12/1999 03:27 PM Martin Mares

Use `struct ip_mreqn' instead of `struct ip_mreq' for multicast
operations on 2.1/2.2 kernels. This allows passing of real interface
indexes instead of referencing interfaces by their IP addresses which
fails badly in presence of unnumbered interfaces.

Unfortunately, this structure is not visible with glibc 2.0 as it provides...

5a99ade4 04/12/1999 02:57 PM Martin Mares

Fixed a couple of bugs in handling of multicast sockets.

See comments in lib/socket.h for a detailed guide on how to use them.

49ed70b4 04/07/1999 02:25 PM Martin Mares

Portability fixes.

c10421d3 04/03/1999 01:05 PM Martin Mares

More changes to the kernel syncer.

o Now compatible with filtering.
o Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS
systems (on the others it's impossible to get it semantically correct).
o Learning now stores all of its routes in a separate fib and selects...

fe662dfd 04/02/1999 01:38 PM Martin Mares

Fixed `too many interfaces' cases.

0498d92f 04/02/1999 11:45 AM Pavel Machek

Believe it or not, printf()'s does not work too much without this one.

8cda9cdb 04/01/1999 07:23 PM Martin Mares

Argh, the fix was wrong.

e4241f24 04/01/1999 03:35 PM Martin Mares

Portability fixes.

abae6e9c 04/01/1999 03:33 PM Martin Mares

First few FreeBSD portability fixes.

5bc512aa 03/29/1999 08:14 PM Martin Mares

Clarify resource dumps and include them in the main debugging dump.

3f2a21fd 03/29/1999 08:14 PM Martin Mares

Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems.

f54801ff 03/29/1999 07:14 PM Martin Mares

Moved all system-dependent #include's containing endianity conversion
functions to sysdep header endian.h.

7e5f5ffd 03/26/1999 09:44 PM Martin Mares

Moved to a much more systematic way of configuring kernel protocols.

o  Nothing is configured automatically. You need to specify
the kernel syncer in config file in order to get it started.
o Syncing has been split to route syncer (protocol "Kernel") and...
111213f0 03/04/1999 07:00 PM Martin Mares

Fixed processing of !krt_capable() routes. Converted device route decisions
to the krt_capable mechanism as well.

e16155ae 03/04/1999 06:36 PM Martin Mares

KRT: Implemented asynchronous route / interface state notifications
(via Netlink). Tweaked kernel synchronization rules a bit. Discovered
locking bug in kernel Netlink :-)

Future plans: Hunt all the bugs and solve all the FIXME's.

7a2105be 03/04/1999 11:36 AM Martin Mares

Use dmalloc instead of EFence when available (dmalloc has lot of improvements
over EFence and also hopefully smaller memory overhead, but sadly it's non-free
for commercial use).

If the DMALLOC_OPTIONS environment variable is not set, switch on `reasonable'...

53b7a298 03/03/1999 08:55 PM Martin Mares

Fix several things I broke today.

2d140452 03/03/1999 07:49 PM Martin Mares

Rewrote the kernel syncer. The old layering was horrible.

The new kernel syncer is cleanly split between generic UNIX module
and OS dependent submodules:

-  krt.c (the generic part)
- krt-iface (low-level functions for interface handling)
- krt-scan (low-level functions for routing table scanning)...
e35ef181 03/02/1999 06:36 PM Martin Mares

o The if_change_too_big_p change was too high-spirited. Fixed.
o Introduced if_find_by_index()
o Recognizing two types of interface updates: full update (starting with
if_start_update(), ending with if_end_update(), guaranteed to see
all existing interfaces) and a partial update (only if_update(),...

bcbd8cc3 03/02/1999 05:28 PM Martin Mares

Interface logic changes:

o Introduced IF_LINK_UP flag corresponding to real link state.
o Allowed addressless interfaces.
o IF_UP is now automatically calculated and set iff the interface
is administratively up, has link up and has an IP address assigned....

b4b3b39e 03/01/1999 10:30 PM Martin Mares

Added SK_MAGIC type sockets for internal use by system dependent code,
especially for netlink communication.

025d14cd 03/01/1999 07:05 PM Martin Mares

Use traditional Unix route/iface interface only when CONFIG_NETLINK
is not defined. Also moved declarations of Unix iface logic to krt.h.

013a9b91 02/13/1999 08:46 PM Martin Mares

When shutting down, remove all routes (except for RTS_INHERIT and RTS_DEVICE
routes) from kernel routing tables unless the "persist" switch is set.

0a2e9d9f 02/13/1999 08:19 PM Martin Mares

Moved sanity check of protocol state during annoucements to rte_announce.

f4aabcee 02/13/1999 08:15 PM Martin Mares

Perform gracious shutdown upon receipt of SIGTERM. Finally we can
test the whole protocol shutdown code... :)

4c9dd1e4 02/13/1999 07:43 PM Martin Mares

Synchronize signals to the main select/event/timer loop.

Parse command line options.

4e9498cb 02/13/1999 06:42 PM Martin Mares

config->router_id works again.

14dea0ed 02/11/1999 10:51 PM Martin Mares

Run the event queue before writing SIGUSR dumps.

e8f73195 02/11/1999 09:18 PM Martin Mares

Added simple event scheduling system to avoid recursive calling
of various callbacks.

Events are just another resource type objects (thus automatically freed
and unlinked when the protocol using them shuts down). Each event can
be linked in at most one event list. For most purposes, just use the...

10d807d0 02/05/1999 09:38 PM Martin Mares

Synced kernel interface to new interface.

31b3e1bb 02/05/1999 09:37 PM Martin Mares

Implemented new configuration/reconfiguration interface and defined protocol
state machines. Full explanation will follow soon.

ca3d562b 01/15/1999 06:13 PM Pavel Machek

filters_init() renamed to filters_postconfig().

b9d70dc8 01/15/1999 04:49 PM Pavel Machek

Filters, second try. This time they have their own directory.

41183888 01/15/1999 02:40 PM Pavel Machek

Properly initialize filters. Also bumped version to 0.0.0 as it
actually does something.

08c69a77 12/20/1998 02:27 PM Martin Mares

die() -> bug() where appropriate.

98e87c86 12/20/1998 02:24 PM Martin Mares

Finer grained logging levels:

#define L_DEBUG "\001" /* Debugging messages /
#define L_INFO "\002" /
Informational messages /
#define L_WARN "\003" /
Warnings /
#define L_ERR "\004" /
Errors /
#define L_AUTH "\005" /
Authorization failed etc. */...

8e66a0eb 12/08/1998 06:37 PM Martin Mares

Hopefully finished kernel syncer (krt) rewrite:

o  Interface syncing is now a part of krt and it can have configurable
parameters. Actually, the only one is scan rate now :)
o Kernel routing table syncing is now synchronized with interface
syncing (we need the most recent version of the interface list...
f39e4713 12/08/1998 04:20 PM Martin Mares

Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterday
and does things "the right way". Few things are still missing (device
routes etc.), I'll add them later in the evening.

12df4d90 12/07/1998 10:15 AM Martin Mares

KRF_* flags moved to krt.h as they are internal to kernel syncer,
fib->pad0,pad1 renamed to x0,x1 and in case of struct net x0 is reserved
for kernel syncing as well.

980ffedb 12/06/1998 05:40 PM Martin Mares

Kernel syncer is now configurable. It will probably need some more
options, but at least basic tuning is possible now.

c74c0e3c 11/27/1998 09:09 PM Martin Mares

First attempt at protocol configuration (now done only for RIP).

70591fa0 11/27/1998 07:37 PM Martin Mares

Compile and use the new configuration code by default.

9158ca99 11/16/1998 09:41 PM Martin Mares

Complain loudly if the logging buffer would overflow.

7d832907 10/19/1998 06:13 PM Martin Mares

Generate router_id automatically if possible (standard "smallest of local
regular interface addresses" rule).

Protocols should NOT rely on router_id existence -- when router ID is not
available, the router_id variable is set to zero and protocols requiring...

08045252 10/19/1998 05:52 PM Martin Mares

Basic kernel routing table syncing implemented. Learning of routes installed
by other programs or the kernel itself is not supported yet, but it's not
needed for development of other protocols.

567e6c62 10/19/1998 05:48 PM Martin Mares

This is exactly what Linux ifconfig does and seems to be the preferred way.

4cf45766 10/19/1998 05:47 PM Martin Mares

Exporting fill_in_sockaddr() for use by other unix-dependent code.

7e7790c6 10/18/1998 12:50 PM Martin Mares

Since almost every UNIX system requires different techniques for reading
the kernel routing table as opposed to modifying it which is approximately
the same on non-netlink systems, I've split the kernel routing table
routines to read and write parts. To be implemented later ;-)

0432c017 10/18/1998 11:53 AM Martin Mares

Split protocol init to building of protocol list and real protocol init.
Added kernel route table syncer skeleton.

47b79306 10/17/1998 11:05 AM Martin Mares

Solve chicken-and-egg problems with protocol startup. We now queue all inactive
protocols and don't send route/interface updates to them and when they come up,
we resend the whole route/interface tables privately.

Removed the "scan interface list after protocol start" work-around.

93f1c532 10/14/1998 01:38 PM Martin Mares

Moved scanning of interfaces, so that they get initialized after all
routing protocol instances.

c93214d4 10/13/1998 07:57 PM Martin Mares

o There are cases when SIOCGIFINDEX is defined, but it doesn't work. When
this happens, don't reject the whole interface, just mark it as index 0.
o Removed Pavel's comment about EFAULT and SIGSEGV. EFAULT is a valid return
code for cases where the buffer is too small....

fdf33cde 10/13/1998 02:59 PM Pavel Machek

Strange, on atrey ioctl() does not fill structure, and bird segfaults
on it. Now we "only" die().

c25e90ef 07/15/1998 07:42 PM Martin Mares

Added comment explaining `now'.

28a9a189 07/10/1998 08:32 AM Martin Mares

Replaced remaining references of clock_t by bird_clock_t.

86b00230 07/09/1998 07:37 PM Pavel Machek

Making SIGUSR1 dump also all protocols.

9556f225 06/17/1998 02:33 PM Martin Mares

debug() and log() use the new printf. Feel free to use new formatting
sequences for all output.

5331da6a 06/04/1998 08:27 PM Martin Mares

Fixed processing of timers.