Commit graph

350 commits

Author SHA1 Message Date
Martin Mares ec8b579e9c Recognize site scope for IPv4 addresses (prefixes reserved for private
networks).

Removed old #ifndef logic which was used to avoid IPv4/IPv6 clashes
before conditionals in Modules lists were introduced.
1999-04-27 16:03:17 +00:00
Martin Mares 2f5d154466 Added ipa_compare as requested. 1999-04-12 20:26:06 +00:00
Martin Mares 5a99ade413 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.
1999-04-12 14:57:46 +00:00
Martin Mares 7976a574b6 ip_pton: Avoid modification of the string we're converting. 1999-04-06 21:31:03 +00:00
Martin Mares 5bc512aa3a Clarify resource dumps and include them in the main debugging dump. 1999-03-29 20:14:33 +00:00
Martin Mares f5c687f791 Added lp_flush() which flushes contents of a linear pool, leaving all the
memory available for subsequent allocations from the same pool. Both flushing
and re-using the memory costs just few instructions.
1999-03-29 19:35:47 +00:00
Martin Mares f54801ffed Moved all system-dependent #include's containing endianity conversion
functions to sysdep header endian.h.
1999-03-29 19:14:43 +00:00
Martin Mares 6134024815 #define NULL if not defined by system includes. 1999-03-29 19:13:36 +00:00
Martin Mares 7a2105becd 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'
checks by default.

Also introduced mb_allocz() for cleared mb_alloc().
1999-03-04 11:36:26 +00:00
Martin Mares b4b3b39e20 Added SK_MAGIC type sockets for internal use by system dependent code,
especially for netlink communication.
1999-03-01 22:30:33 +00:00
Martin Mares 67bd949a52 Real implementation of protocol state machines. Delayed startup/shutdown
should work now. Initial feeding of protocols by interfaces/routes is
done from the event queue to prevent unwanted recursion.
1999-02-11 22:59:06 +00:00
Martin Mares 3b15402fd4 Grrr, forgot to commit the event routines themselves :| 1999-02-11 22:18:36 +00:00
Martin Mares e8f73195fa 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
global event list handled by the following functions:

	ev_schedule	Schedule event to be called at the next event
			scheduling point. If the event was already
			scheduled, it's just re-linked to the end of the list.
	ev_postpone	Postpone an already scheduled event, so that it
			won't get called. Postponed events can be scheduled
			again by ev_schedule().

You can also create custom event lists to build your own synchronization
primitives. Just use:

	ev_init_list	to initialize an event list
	ev_enqueue	to schedule event on specified event list
	ev_postpone	works as well for custom lists
	ev_run_list	to run all events on your custom list
	ev_run		to run a specific event and dequeue it
1999-02-11 21:18:26 +00:00
Martin Mares c4c63eecc3 Added several parentheses to MIN/MAX macros. 1999-02-05 21:29:19 +00:00
Martin Mares 294c182eb1 Replaced the old ugly ipv6 compilation hack by a conditional in Modules. 1999-01-23 21:08:59 +00:00
Martin Mares 98e87c8628 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. */
#define L_FATAL "\006"   /* Fatal errors */
#define L_TRACE "\002"   /* Protocol tracing */
#define L_INFO "\003"    /* Informational messages */
#define L_REMOTE "\004"  /* Remote protocol errors */
#define L_WARN "\004"    /* Local warnings */
#define L_ERR "\005"     /* Local errors */
#define L_AUTH "\006"    /* Authorization failed etc. */
#define L_FATAL "\007"   /* Fatal errors */
#define L_BUG "\010"     /* BIRD bugs */

Introduced bug() which is like die(), but with level L_BUG. Protocols
should _never_ call die() as it should be used only during initialization
and on irrecoverable catastrophic events like out of memory.

Also introduced ASSERT() which behaves like normal assert(), but it calls
bug() when assertion fails. When !defined(DEBUGGING), it gets ignored.
1998-12-20 14:24:35 +00:00
Martin Mares a6f250f5c6 New hash functions according to benchmarks posted yesterday. (The IPv6
version has not been benchmarked yet due to insufficient test data.)
Now ipa_hash() returns a uniformely distributed 16-bit value.
1998-12-20 13:57:49 +00:00
Martin Mares a05406e69c Implemented deletion/insertion/asynchronous-walk lists.
For example of their use, look at comments in lib/slists.h.
1998-12-20 13:56:27 +00:00
Martin Mares b35d72ac66 Name cleanups as suggested by Pavel:
- cfg_strcpy() -> cfg_strdup()
- mempool -> linpool, mp_* -> lp_*  [to avoid confusion with memblock, mb_*]

Anyway, it might be better to stop ranting about names and do some *real* work.
1998-12-06 11:59:18 +00:00
Martin Mares dee929d868 Added function for shell-like pattern matching. Will be used for
matching interface names in protocol-to-iface bindings.
1998-11-29 14:47:24 +00:00
Martin Mares 0cf86f0fc3 Renamed DEBUG' symbol to DEBUGGING' to prevent collisions with token
names and include files.
1998-11-29 14:38:34 +00:00
Martin Mares dfeef5d8bb Implemented ip_pton() 1998-11-27 19:29:27 +00:00
Martin Mares a3afae585a Removed prototype of rp_free() since this function has never existed. 1998-11-27 19:29:00 +00:00
Martin Mares 4254dc45e7 Killed bug in processing of 'h' prefix. Patch taken from linux-2.1.129. 1998-11-21 10:25:34 +00:00
Martin Mares 53a416d376 Implemented snprintf and similar functions. It took a lot of thinking,
but the modifications were relatively simple and straightforward.
1998-11-16 21:40:35 +00:00
Martin Mares ab3a76a382 Added ipa_from_u32 and ipa_from_u32 for use in the kernel sync code (IPv4 only).
Don't ever think of using it in routing protocols.
1998-10-18 22:22:28 +00:00
Martin Mares d92882be9b WALK_LIST_DELSAFE now actually works (it really couldn't since it didn't
reference list head at all).
1998-10-17 11:02:39 +00:00
Pavel Machek cf3934c569 Lists: unneccessary test killed, make code friendly to non-gcc. 1998-10-14 13:27:53 +00:00
Pavel Machek a872b0f7da Reversed buggy patch. 1998-07-20 20:05:40 +00:00
Martin Mares 1be52eea57 Removed format specification attributes for log() and debug() until
GCC is fixed to handle custom formats.
1998-07-10 08:39:34 +00:00
Martin Mares 786d0bb9e7 Added ipa_class_mask() which guesses netmask for classful addressing.
For pure A/B/C class addresses it just returns the class netmask, for
subnets it tries to guess subnet mask. Please make sure the address
you pass to this function is really a valid host address (i.e., call
ipa_validate() first).
1998-07-10 08:38:29 +00:00
Pavel Machek cf3527e2f4 Adding MIN()/MAX() macros 1998-07-09 19:36:05 +00:00
Pavel Machek aea2dcabdc Adding walk list which permits you to delete entries. 1998-07-09 19:35:23 +00:00
Martin Mares d997534f65 Oops, forgot '%m'... 1998-06-17 14:34:13 +00:00
Martin Mares ecacdfa434 Added local version of sprintf (bsprintf and bvsprintf) offering few new
format strings:

	%I	IP address
	%#I	IP address in hexadecimal
	%1I	IP address padded to full length
	%m	strerror(errno)
1998-06-17 14:31:36 +00:00
Martin Mares 97d858c590 ip_ntop() and ip_ntox() for IPv4. 1998-06-17 14:28:46 +00:00
Martin Mares 6b5e06abb5 Added function for converting of IP addresses to printable form. 1998-06-17 14:26:30 +00:00
Martin Mares 0fe3b28b68 Added ipa_xor() and ipa_in_net(). 1998-06-01 21:36:58 +00:00
Martin Mares b1487ee909 Added generic functions for unaligned data access. 1998-05-26 21:38:06 +00:00
Martin Mares ed68a5c6a4 Resource pools are now named. 1998-05-26 21:37:37 +00:00
Martin Mares d5417b379f Added ipa_opposite(). 1998-05-26 21:36:48 +00:00
Martin Mares 5222c46ceb DBG now calls debug() instead of sending it to log(). 1998-05-26 21:36:17 +00:00
Martin Mares d804db0dab Added few socket declarations. 1998-05-24 15:00:48 +00:00
Martin Mares d4bc8dc000 Staticized some variables and functions. 1998-05-24 14:46:20 +00:00
Martin Mares 480effedac Added declarations of all our socket functions. 1998-05-24 09:19:26 +00:00
Martin Mares 25697773b5 The library is now glued together from generic and OS-dependent parts
by the `mergedirs' script. Few more IP address manipulation functions
and some fixes.
1998-05-15 07:56:13 +00:00
Martin Mares 18c8241a91 BIRD library: The story continues.
Complete resource manages and IP address handling.
1998-05-03 16:43:39 +00:00
Martin Mares 1feea03e74 Changed #include <x/y> to #include "x/y" for our local includes, so that
gcc -MM can be used to separate them from the system ones.

Added automatic generation of dependencies.
1998-04-28 14:39:34 +00:00
Martin Mares c40e05a0df Added IP address manipulation macros, interface declarations and logging. 1998-04-23 14:01:15 +00:00
Martin Mares 58ef912c6b First look at data structures. More to come tomorrow... 1998-04-22 12:58:34 +00:00