Age | Commit message (Collapse) | Author | |
---|---|---|---|
2000-05-02 | IPv6 address classification fixes. | Martin Mares | |
2000-04-27 | Event handlers no longer return re-queue flag. Instead of using it, just | Martin Mares | |
call ev_schedule() on the same handler which should work perfectly now. | |||
2000-04-12 | Introduced `ARRAY_SIZE' macro to replace all the sizeof(a)/sizeof(*a) ↵ | Martin Mares | |
constructs. | |||
2000-03-31 | Removal of useless includes continues... | Martin Mares | |
2000-03-31 | Use bsprintf() instead of sprintf(). | Martin Mares | |
2000-03-31 | Include "lib/string.h" instead of <string.h>. It should give us bzero() | Martin Mares | |
and other non-portable functions on all systems. | |||
2000-03-30 | Defined sk_close() which closes the socket safely even if called from | Martin Mares | |
socket hook. Replaces the SK_DELETED hack. Squashed a couple of bugs in handling of TCP sockets. | |||
2000-03-29 | Avoid conflicts with libraries defining their own xmalloc by defining | Martin Mares | |
xmalloc to bird_xmalloc internally. | |||
2000-03-21 | Wrote real version of unaligned data access functions (needed for BGP). | Martin Mares | |
2000-03-12 | Use do { } while(0) instead of empty DBG if not debugging. | Martin Mares | |
2000-03-07 | DBG calls debug() if defined(LOCAL_DEBUG) || defined(GLOBAL_DEBUG). | Martin Mares | |
2000-03-05 | Implemented real slab allocator. If you suspect it from being buggy, | Martin Mares | |
just #define FAKE_SLAB at the top of lib/slab.c to bypass it. | |||
2000-03-01 | Changed comments regarding hash function. | Martin Mares | |
2000-03-01 | IP_PREC_INTERNET_CONTROL for IPv6 (see the comment). | Martin Mares | |
2000-01-16 | No more problems when events get scheduled during event processing. | Martin Mares | |
1999-12-16 | ipv6_compare() accepts non-lvalue arguments as well. This makes filters | Martin Mares | |
compile with IPv6. | |||
1999-12-06 | Logging is now configurable. You can define multiple log outputs (to both | Martin Mares | |
files and syslog) and assign lists of message categories to each of them. | |||
1999-11-25 | Added ip_scope_text() for translating of scopes to strings. | Martin Mares | |
1999-11-17 | ev_run() now returns whether the event has been requeued or not. | Martin Mares | |
ev_run_list() now returns number of events which remain in the list. | |||
1999-10-29 | Implemented unix-domain sockets. | Martin Mares | |
1999-10-29 | Events now return a value. If it's non-zero, the event is re-queued | Martin Mares | |
for processing in next event cycle. This can be used to prevent background actions (hint: user commands) from hogging the CPU for too long time. | |||
1999-10-29 | Simplify handling of free chunks. | Martin Mares | |
1999-10-12 | Changed syntax of ip_class_mask, the old one was stupid. | Martin Mares | |
1999-10-02 | Don't forget to free large blocks. | Martin Mares | |
1999-08-17 | Added a function for generating 32-bit random numbers. | Martin Mares | |
1999-08-03 | Support for IPv6 sockets. How nice one doesn't have to ifdef around | Martin Mares | |
ten years of API evolution :-) | |||
1999-08-03 | Basic support for IPv6. The system-dependent part doesn't work yet, | Martin Mares | |
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. o Router ID must be configured manually on IPv6 systems. o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. o Fixed few places where ipa_(hton|ntoh) was called as a function returning converted address. | |||
1999-08-03 | Added macros for walking lists backwards. | Martin Mares | |
1999-08-03 | Faster checksum function. | Martin Mares | |
1999-06-01 | Defined IP_PREC_INTERNET_CONTROL and made all (well, both :)) protocols | Martin Mares | |
use it when creating sockets. | |||
1999-05-31 | Added sk_send_buffer_empty(). | Martin Mares | |
1999-05-24 | Small bug in ipv4_skip_header. | Ondrej Filip | |
1999-05-14 | Added ip_skip_header() and modified OSPF to use it. | Martin Mares | |
1999-05-10 | Added packet checksumming code. Watch the comments for an explanation. | Martin Mares | |
1999-04-27 | Recognize site scope for IPv4 addresses (prefixes reserved for private | Martin Mares | |
networks). Removed old #ifndef logic which was used to avoid IPv4/IPv6 clashes before conditionals in Modules lists were introduced. | |||
1999-04-12 | Added ipa_compare as requested. | Martin Mares | |
1999-04-12 | Fixed a couple of bugs in handling of multicast sockets. | Martin Mares | |
See comments in lib/socket.h for a detailed guide on how to use them. | |||
1999-04-06 | ip_pton: Avoid modification of the string we're converting. | Martin Mares | |
1999-03-29 | Clarify resource dumps and include them in the main debugging dump. | Martin Mares | |
1999-03-29 | Added lp_flush() which flushes contents of a linear pool, leaving all the | Martin Mares | |
memory available for subsequent allocations from the same pool. Both flushing and re-using the memory costs just few instructions. | |||
1999-03-29 | Moved all system-dependent #include's containing endianity conversion | Martin Mares | |
functions to sysdep header endian.h. | |||
1999-03-29 | #define NULL if not defined by system includes. | Martin Mares | |
1999-03-04 | Use dmalloc instead of EFence when available (dmalloc has lot of improvements | Martin Mares | |
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-01 | Added SK_MAGIC type sockets for internal use by system dependent code, | Martin Mares | |
especially for netlink communication. | |||
1999-02-11 | Real implementation of protocol state machines. Delayed startup/shutdown | Martin Mares | |
should work now. Initial feeding of protocols by interfaces/routes is done from the event queue to prevent unwanted recursion. | |||
1999-02-11 | Grrr, forgot to commit the event routines themselves :| | Martin Mares | |
1999-02-11 | Added simple event scheduling system to avoid recursive calling | Martin Mares | |
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-05 | Added several parentheses to MIN/MAX macros. | Martin Mares | |
1999-01-23 | Replaced the old ugly ipv6 compilation hack by a conditional in Modules. | Martin Mares | |
1998-12-20 | Finer grained logging levels: | Martin Mares | |
#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. |