Replaced the old ugly ipv6 compilation hack by a conditional in Modules.
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. */...
New hash functions according to benchmarks posted yesterday. (The IPv6version has not been benchmarked yet due to insufficient test data.)Now ipa_hash() returns a uniformely distributed 16-bit value.
Implemented deletion/insertion/asynchronous-walk lists.For example of their use, look at comments in lib/slists.h.
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.
Added function for shell-like pattern matching. Will be used formatching interface names in protocol-to-iface bindings.
Renamed `DEBUG' symbol to `DEBUGGING' to prevent collisions with tokennames and include files.
Removed prototype of rp_free() since this function has never existed.
Killed bug in processing of 'h' prefix. Patch taken from linux-2.1.129.
Implemented snprintf and similar functions. It took a lot of thinking,but the modifications were relatively simple and straightforward.
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.
WALK_LIST_DELSAFE now actually works (it really couldn't since it didn'treference list head at all).
Lists: unneccessary test killed, make code friendly to non-gcc.
Reversed buggy patch.
Removed format specification attributes for log() and debug() untilGCC is fixed to handle custom formats.
Added ipa_class_mask() which guesses netmask for classful addressing.For pure A/B/C class addresses it just returns the class netmask, forsubnets it tries to guess subnet mask. Please make sure the addressyou pass to this function is really a valid host address (i.e., call...
Adding MIN/MAX macros
Adding walk list which permits you to delete entries.
Oops, forgot '%m'...
Added local version of sprintf (bsprintf and bvsprintf) offering few newformat strings:
%I IP address %#I IP address in hexadecimal %1I IP address padded to full length %m strerror(errno)
ip_ntop() and ip_ntox() for IPv4.
Added function for converting of IP addresses to printable form.
Added ipa_xor() and ipa_in_net().
Added generic functions for unaligned data access.
Resource pools are now named.
DBG now calls debug() instead of sending it to log().
Added few socket declarations.
Staticized some variables and functions.
Added declarations of all our socket functions.
The library is now glued together from generic and OS-dependent partsby the `mergedirs' script. Few more IP address manipulation functionsand some fixes.
BIRD library: The story continues.
Complete resource manages and IP address handling.
Changed #include <x/y> to #include "x/y" for our local includes, so thatgcc -MM can be used to separate them from the system ones.
Added automatic generation of dependencies.
Added IP address manipulation macros, interface declarations and logging.
First look at data structures. More to come tomorrow...