[vyatta-svn] xorp: Changes to 'icsi-cvsimport'

Tom Grennan tgrennan at suva.vyatta.com
Wed Dec 6 10:13:49 PST 2006


New branch 'icsi-cvsimport' available with the following commits:
commit d86ba2833df5c58c332d882f902b89842b7bec08
Author: pavlin <pavlin>
Date:   Wed Dec 6 17:26:56 2006 +0000

    Remove meningless "const" qualifier for the return type.
    
    Bug found by:	Hasso Tepper <hasso AT linux.ee>

commit 484f8135a9204a713149f1f819df9e0e9b1a35c1
Author: pavlin <pavlin>
Date:   Wed Dec 6 02:56:02 2006 +0000

    Add a CacheMods table between the Policy and Aggregation tables
    to reflect the code change in bgp/plumbing.cc rev. 1.98.

commit d17456011cfe029740c6f08548fa95e7bd7ece01
Author: pavlin <pavlin>
Date:   Wed Dec 6 02:53:23 2006 +0000

    Add a CacheTable after the PolicyTableSourceMatch policy table
    (before the AggregationTable).
    
    This modification is needed as an intermediate solution to solve
    the following problem.
    
    If a new peer comes up such that it is handled by DumpTable,
    and if a route is modified by the PolicyTableSourceMatch table, then
    an InternalMessage that is "changed" by the PolicyTableSourceMatch table
    might reach the BGPRouteFilter table. This table doesn't expect to see
    any InternalMessage that is "changed" (there are a number of asserts
    to prevent that), so BGP would coredump.
    Simply removing the asserts is not sufficient, because in some cases the
    BGPRouteFilter table memory management is not consistent with the
    PolicyTableSourceMatch memory management of the route.
    E.g., BGPRouteFilter<A>::drop_message() will unref the original route
    if it came modified.
    
    Adding the CacheTable after the PolicyTableSourceMatch policy table
    is used to smooth-out the "changed" InternalMessage(s) so the
    BGPRouteFilter table never sees an InternalMessage that is changed.
    
    All the BGP regression tests appear to pass with this modification.
    
    Approved by:	Atanu Ghosh

commit b65adfac67c95c368aca50cb631b0531d464c2f1
Author: atanu <atanu>
Date:   Wed Dec 6 01:34:35 2006 +0000

    The -3 argument is now linked to the OSPFv3 process.

commit 7132f5d9ab7c7cc67b499b3df3e2c057db6af512
Author: atanu <atanu>
Date:   Wed Dec 6 00:33:47 2006 +0000

    In the common packet encoder/decoder use the constants defined in
    Packet instead of hard coded numbers.

commit 5882f7b348a508505c2da0224ddb914d330352aa
Author: atanu <atanu>
Date:   Wed Dec 6 00:19:18 2006 +0000

    When transmitting an IPv6 packet add the checksum of the pseudo
    header.

commit b5fd34cd7c4b1879ba3e5aa0150e6f2585af09cd
Author: atanu <atanu>
Date:   Tue Dec 5 22:51:28 2006 +0000

    When verifying an IPv6 checksum there is no need to modify that packet
    as the checksum should equal zero.
    
    Requested by:	Pavlin

commit 01571e81edaf4aaa9b7be6212136aa015720376c
Author: atanu <atanu>
Date:   Tue Dec 5 19:58:40 2006 +0000

    Refactoring:
    1) Rename check_ipv6_pseudo_header_checksum to ipv6_checksum_verify.
    2) Add kdoc comments.

commit 0fb56b284de40654d357236a0772a0d4aeda5645
Author: pavlin <pavlin>
Date:   Mon Dec 4 23:00:45 2006 +0000

    If the protocol name in the "from" policy block is set, then
    save this name inside the Term class.

commit 98c8008d1f2f7002f0da9d9afd3a7121355fc288
Author: pavlin <pavlin>
Date:   Mon Dec 4 20:41:06 2006 +0000

    Added a clarification sentence for the previous commit.

commit 4763b9eb977698a86bbd9c21ec55b0dccaf6e076
Author: pavlin <pavlin>
Date:   Mon Dec 4 20:34:41 2006 +0000

    Add a release note for the new keywords that can be used to compare
    network prefixes: exact, longer, orlonger, shorter, orshorter, not.

commit 4e18618b230722dfbf9957e9b522682b042a55ea
Author: pavlin <pavlin>
Date:   Mon Dec 4 20:32:50 2006 +0000

    Add a paragraph describing the operators and keywords for comparing
    network prefixes.

commit dc2142daffa90650231eeb137dd667c720c55721
Author: atanu <atanu>
Date:   Sat Dec 2 02:12:26 2006 +0000

    For IPv6 include the pseudo header in the checksum computation for
    input packet. For the IPv6 case the checksum is verified earlier than
    in the IPv4 case which also has to deal with authentication.
    
    Move libproto/packet.hh from packet.hh into the files that need it.

commit 03a139c9d7669db06e23589f7fddede19e3f7dc7
Author: pavlin <pavlin>
Date:   Sat Dec 2 01:01:47 2006 +0000

    Change "struct Code" to "class Code" and use methods to access
    and modify its internals.
    
    Now it is easier with a clean API to track any modifications
    to a Code object.

commit 94dbee424bcca2fb0a2facc4700f231ec94b538f
Author: atanu <atanu>
Date:   Sat Dec 2 00:53:58 2006 +0000

    The checksum offset for OSPFv2 and OSPFv3 are the same, the comment
    implied the the checksum offset was only valid for OSPFv2.

commit dbdc53e2b114e0db37368253df4bef98ea3b2adf
Author: atanu <atanu>
Date:   Sat Dec 2 00:00:30 2006 +0000

    Replace all occurences of the exception BadPacket with
    InvalidPacket. InvalidPacket already existed in libxorp and was
    identical to BadPacket.

commit d6f767de22cfac211d0f377e1f0e35fa4393ef80
Author: atanu <atanu>
Date:   Fri Dec 1 23:10:13 2006 +0000

    Remove the IP checksum routine that is no longer used.

commit 080bd3987030cb415d6f01fafae9f1402ce39321
Author: atanu <atanu>
Date:   Fri Dec 1 23:02:22 2006 +0000

    Switch to using the inet checksum routine in libproto.
    
    Correct the printf when an incorrect checksum is received.

commit a643f565ed8ee1e23ef1cc976fa60e9eb3c9ec82
Author: atanu <atanu>
Date:   Fri Dec 1 22:38:28 2006 +0000

    Set the instance ID for OSPFv3.

commit eb2b06b9721ca6321f31c03f269d015f94018bee
Author: atanu <atanu>
Date:   Fri Dec 1 03:41:04 2006 +0000

    The nexthop resolver tracks the state of nexthops; whether a
    nexthop resolves and the IGP distance if it does. In order to track
    the state of the nexthop BGP registers interest in nexthops with the
    RIB. As routes can be added or removed from the RIB the state of a
    nexthop can change, when it does the RIB does one of two things:
    1) It can send a route_info_invalid XRL on receipt of which BGP will
    re-register interest with the RIB.
    2) If only the IGP distance changed then the RIB can send a
    route_info_changed with the new IGP distance.
    
    When interest in a nexthop is registered rather then send back
    resolvability and metric information for a single address, a subnet is
    returned. This subnet has two prefixes associated with it the real
    prefix that belongs to the original route and the prefix that is
    actually covered.
    
    The nexthop resolver was assuming that the route_info_changed was
    receiving the real prefix information rather than the covered prefix,
    hence an assert was being hit as the prefix was not in the table.
    
    To trigger the problem:
    1) Install a static route 0.0.0.0/0 works well.
    2) Introduce a BGP route that does not cover the nexthop, which will
    cause a new range to be registered with BGP.
    3) Introduce a BGP route which exactly matches the current
    registration, causing a route_info_changed XRL to be sent to BGP. Note
    BGP routes are all installed with a metric of 0, hence the metric change.
    
    For example:
    static default route: 0.0.0.0/0
    nexthop: 10.0.0.1
    route1:  10.1.0.0/20
    route2:  10.0.0.0/16
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=649
    Bug found by:	Justin Fletcher

commit 3dd70730b213f5daf89da03e513b9659963523c6
Author: pavlin <pavlin>
Date:   Fri Dec 1 02:24:29 2006 +0000

    Fix some of the kdoc comments.

commit c3ab1119bd2f595b4c4a9e23bc92bf577e3540d8
Author: pavlin <pavlin>
Date:   Fri Dec 1 02:21:53 2006 +0000

    * Minor refactoring of the list of included header files.
    * Editorial nits.

commit 0951c5ffbe1e6eb4066cbc31cf97638331ba0e57
Author: atanu <atanu>
Date:   Fri Dec 1 02:10:53 2006 +0000

    An empty list of configuration functions is allowed, however, the
    debugging line was attempting to print the first element of a
    potentially empty list.

commit c5b9887c8a5b7eb4e97c4a3688d3da210032801b
Author: zec <zec>
Date:   Thu Nov 30 18:31:15 2006 +0000

    Remove unnecessary definitions / rules for YY_IPNET_* operators in
    policy/backend since those are always converted to the standard
    YY_EQ etc. operators by the policy manager.
    
    Regenerate the policy parsers.

commit 9fce1bc27a1c9236a8796008b0c0fc2d520e6fb9
Author: pavlin <pavlin>
Date:   Wed Nov 29 08:21:28 2006 +0000

    * Add new function kernel_adjust_sockaddr_in6_send() that can
      be used to set the scope ID for sockaddr_in6 structure.
    
    * Use the above function to adjust the destination address
      when using sendmsg() to transmit data packets on raw sockets.
    
      This fixes an IPv6 transmission problem discovered with
      FreeBSD-6.2-RC1.
    
    * Rename kernel_ipv6_adjust() and kernel_ipvx_adjust() to
      kernel_adjust_ipv6_recv() and kernel_adjust_ipvx_recv()
      respectively.
    
    Bug found by:	"A.H.T" <ahthamrin AT gmail.com>

commit 736ff427bceac64a0341d8c73093ea90128302da
Author: pavlin <pavlin>
Date:   Wed Nov 29 08:13:37 2006 +0000

    Bug fix when calculating the scope ID for sockaddr_in6:
    use ntohl() instead of ntohs() for 32-bit integers.

commit d662cc5ee91fe97f0d9484f97e32f5ed385434b3
Author: atanu <atanu>
Date:   Thu Nov 23 01:55:21 2006 +0000

    The peer manager extracts the interface ID and passes it the peer for
    OSPFv3.

commit a40becb44b2663cc43effa3ceea89eb162128f9a
Author: atanu <atanu>
Date:   Thu Nov 23 01:53:34 2006 +0000

    Comment out logging defines, that were commited by accident.

commit 4e7ed12fb20ff8205e3bb19cc2125e0f64fecdaa
Author: atanu <atanu>
Date:   Thu Nov 23 01:25:31 2006 +0000

    Add code to extract the interface ID from the interface manager, all
    add support to the debug code to invent an interface ID.

commit 61c9c6d73a045d7385e700346c431f1e647063dd
Author: atanu <atanu>
Date:   Thu Nov 23 00:29:09 2006 +0000

    Remove code that allowed the interface ID to by the set user, the
    interface ID should be extracted from the interface manager/system.

commit 8f283bb4b5bd8ff2a74aea804a16e313cdd2cc3e
Author: atanu <atanu>
Date:   Thu Nov 23 00:11:23 2006 +0000

    Add an instance ID required for OSPFv3.

commit 5282e1b4e70a4629e14e677621f8749ffc5f21d6
Author: atanu <atanu>
Date:   Thu Nov 23 00:05:41 2006 +0000

    Initialise the router ID in the constructor, being initialised was not
    causing a problem.

commit 9acd4965cacbaef150c5e9f4d893d45faec1dba1
Author: atanu <atanu>
Date:   Thu Nov 23 00:03:13 2006 +0000

    Instance IDs are only relevant to OSPFv3, add an ASSERT in the get and
    set methods to stop them being called from OSPFv2.

commit 789b656b7ae214081d957afeb5258e291b7edd86
Author: pavlin <pavlin>
Date:   Wed Nov 22 01:19:11 2006 +0000

    Add the "exact/longer/orlonger/shorter/orshorter/not" operators
    to the "network6" policy statements (to match the "network4"
    statements).

commit b149a473b1c20fe6ffc7a648af4f8976b401253e
Author: zec <zec>
Date:   Wed Nov 22 01:13:48 2006 +0000

    Regenerate.

commit 08fd5f6bea89649578ce2d766af4b01e5ae1d0ab
Author: zec <zec>
Date:   Wed Nov 22 01:07:53 2006 +0000

    Introduce aliases for network4 comparison operators in policy, as
    suggested by Pavlin:
    
    "network4 exact 10.0.0.0/8"     SAME AS "network4 == 10.0.0.0/8"
    "network4 longer 10.0.0.0/8"    SAME AS "network4 < 10.0.0.0/8"
    "network4 orlonger 10.0.0.0/8"  SAME AS "network4 <= 10.0.0.0/8"
    "network4 shorter 10.0.0.0/8"   SAME AS "network4 > 10.0.0.0/8"
    "network4 orshorter 10.0.0.0/8" SAME AS "network4 >= 10.0.0.0/8"
    "network4 not 10.0.0.0/8"       SAME AS "network4 != 10.0.0.0/8"

commit 43a1ccc595cd0e6346938f9542c0898c519df652
Author: pavlin <pavlin>
Date:   Tue Nov 21 23:28:44 2006 +0000

    Fix the examples for adding/deleting part of the configuration so
    they are closer to reality: add/delete interface addresses
    instead of add/delete vif per interface.
    
    Bug found by:	Carsten Otto <c-otto AT gmx.de>

commit 88c92626ea114782eb32ccb59f93708d6d965a75
Author: pavlin <pavlin>
Date:   Fri Nov 17 23:07:21 2006 +0000

    * Rename field _semantic_proto to _semantic_protocol
    
    * Rename method current_protocol() to semantic_protocol() to
      reflect better its purpose.
    
      Note that there is already a field named _current_protocol,
      so it was very confusing to have a method called current_protocol()
      returning a field named _semantic_proto.

commit 0133049b96c03a8d979af32ff5d2b62f6d81d795
Author: pavlin <pavlin>
Date:   Thu Nov 16 01:43:36 2006 +0000

    Added a build note for Debian regarding the C preprocessor.

commit 157019991396b1c179082ac124a759ed30a3ab34
Author: pavlin <pavlin>
Date:   Tue Nov 14 21:29:08 2006 +0000

    Added a PIM-SM release note about not including the IP Router Alert
    anymore.

commit 48fa50d702f90615d783ff9464d531f066abd180
Author: pavlin <pavlin>
Date:   Tue Nov 14 21:05:45 2006 +0000

    According to newer revisions of the PIM-SM spec (RFC 4601 and
    draft-ietf-pim-sm-bsr-09.txt,.ps), the PIM-SM control messages
    don't include the IP Router Alert option.
    
    This fixes Bugzilla entry #668.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=668

commit 552637dafa02834dbc1be134541254f32e55a03d
Author: pavlin <pavlin>
Date:   Tue Nov 14 03:22:10 2006 +0000

    Add specialized implementations for network addresses comparison
    operators: <, <=, >, >=.
    
    The default IPv[4,6]Net comparison operators are not appropriate,
    because A < B might return true even if A is not a subset of B
    (as long as A is numerically smaller than B).
    
    This fixes Bugzilla entry #679.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=679

commit 1cc81296223905d150cc2580c9389b3fe9925580
Author: pavlin <pavlin>
Date:   Sun Nov 12 23:52:05 2006 +0000

    Remove a note about compiling XORP with the Intel compiler.
    Now the Intel compilation doesn't require the GCC runtime.
    
    This completes the fix for Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit 3a86fcb44a3ad00d5f716424b80f2ad63f7aad9e
Author: pavlin <pavlin>
Date:   Sun Nov 12 23:37:37 2006 +0000

    Const-ify container iterators where necessary.
    
    The changes are the patch from Comment #2 Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit 8f61e971959f656ca50d72e0fa988176299b6228
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:48:26 2006 +0000

    De-constify an iterator that is used for non-const purpose.
    
    This probably fixes Issue (4) from Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit b38d4f222bc9f9e25067afbc024527f4438c5ade
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:45:17 2006 +0000

    Const-ify Set iterators for const variables.
    
    This probably fixes Issue (3) from Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit 44b1d9f80e0701ba7bb7830878251096bc04bb14
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:42:36 2006 +0000

    [Hopefully I will get it right the third time]
    
    The commit before the previous one probably fixes Issue (2)
    from Bugzilla entry #682 (not Issue (1) or Issue (3)).
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit b1d7793b1e2c367ea07bb440325ce57ff511d135
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:38:51 2006 +0000

    [Forced commit to correct the message from the previous commit]
     * The previous commit probably fixes Issue (3) from Bugzilla entry #682,
       not Issue (1).
    
     * Minor nits.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit b0dcb03f942c8c0173c74908d9ac7680b4e65511
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:35:54 2006 +0000

    Const-ify Set iterators inside const methods.
    
    This probably fixes Issue (1) from Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit 4c9a42cf5882f64637bd3a4184d240fba52e5a62
Author: pavlin <pavlin>
Date:   Sun Nov 12 00:02:18 2006 +0000

    Use a different operator for the const and non-const purpose.
    
    This probably fixes Issue (5) from Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit 989cf995d100f910600c488664271894167bec51
Author: pavlin <pavlin>
Date:   Sat Nov 11 21:41:42 2006 +0000

    Add missing #include "libxorp/xorp.h".
    
    This probably fixes Issue (1) from Bugzilla entry #682.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=682

commit c83cf48360dec22a6b3f04cc93aeaa61d34c9ffb
Author: pavlin <pavlin>
Date:   Sat Nov 11 16:08:35 2006 +0000

    * Updated the release note for the Intel C/C++ compiler.
    
      This modification comes from a patch from Comment #23 Bugzilla entry #673.
    
    * Minor edit for the PYTHON_BUILD related release note.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit f00e53fd253fb49457dba78e6fd1a7c03f18c91b
Author: pavlin <pavlin>
Date:   Sat Nov 11 16:06:49 2006 +0000

    Added a build note for the Intel C/C++ compiler.
    
    This modification comes from a patch from Comment #23 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasso Tepper <hasso AT estpak.ee>

commit 53c659c1be69653e143dae1a75084f9e484f7623
Author: pavlin <pavlin>
Date:   Sat Nov 11 16:05:34 2006 +0000

    Added the -Werror compiler flag for the Intel C/C++ compiler.
    
    This modification comes from a patch from Comment #23 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit dd0b8533670a7ca18ff3ed8b67020e2cf4108607
Author: pavlin <pavlin>
Date:   Sat Nov 11 03:34:55 2006 +0000

    XORP now builds on Linux Debian-3.1 (sarge).

commit d774c6063b976e21aba72f9afbbcd4e5d77492b4
Author: pavlin <pavlin>
Date:   Sat Nov 11 03:34:34 2006 +0000

    Add build notes for Linux Debian-3.1 (sarge).

commit 8410a6318a706e4832f03aea19df32cc547441a4
Author: pavlin <pavlin>
Date:   Fri Nov 10 23:03:01 2006 +0000

    Fix the implementation of TimerNode::expire() so it will invoke
    properly the callback for custom timers.
    
    This fixes Bugzilla entry #675.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=675

commit dc1e357cec777f22e2afd39427ab392aa0d6d866
Author: pavlin <pavlin>
Date:   Fri Nov 10 20:31:49 2006 +0000

    Modify the TestPeer::sendit() error handling to match the original
    logic: there is no error as long as q.len is 0.
    
    This is needed to preserve the original logic that considers
    the case of a peer resetting immediately the TCP
    connection not an error.
    
    This fixes the issue from Comment #19 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit c4dbc52796b5750be064d3fa02211d39c26bea36
Author: pavlin <pavlin>
Date:   Fri Nov 10 04:17:49 2006 +0000

    If a route is filtered by an import policy, then propagate the
    "not winner" route flag back to the original route.
    
    This fixes Bugzilla entry #676.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=676

commit 10bf8ed81bc3e4d1916b41c47398404cde154133
Author: pavlin <pavlin>
Date:   Fri Nov 10 01:38:29 2006 +0000

    * Bug fix when following a pointer that might be NULL.
      This fixes Bugzilla entry #672.
    
    * Free memory only if the pointer is not NULL.
    
    * Add few XLOG_ASSERT() checks.
    
    * Add a TODO comment about a statement that probably needs to be fixed.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=672

commit 2290f018f0302d689f3be8677f8345ee4fc761f2
Author: pavlin <pavlin>
Date:   Thu Nov 9 07:33:51 2006 +0000

    Refactor the error handling mechanism inside TestPeer::sendit()
    by eliminating suspicious "case -1" for size_t variable.
    
    This fixes the issue from Comment #17 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 8b31e89fc772f3438153766ed6acc8f3cc8c40e3
Author: pavlin <pavlin>
Date:   Thu Nov 9 01:22:08 2006 +0000

    Fix a typo introduced with the previous commit:
    xorp_openssh_found -> xorp_openssl_found

commit 2d764dc67482072ed812b8bb338bab4deafd0cc3
Author: pavlin <pavlin>
Date:   Thu Nov 9 01:12:30 2006 +0000

    Fix the mechanism for testing for OpenSSL installation so it prints
    a better error message if OpenSSL is not found.

commit 63c01ba51a0baa1c28a11b450b917bdb42a9c3c2
Author: pavlin <pavlin>
Date:   Wed Nov 8 20:05:36 2006 +0000

    Remove meaningless cast type "const" type qualifier when
    using const_cast<>.
    
    This fixes Issue (4) from Comment #14 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 8c558b722c18ef0fb489f075fd15fb30f2521c91
Author: pavlin <pavlin>
Date:   Wed Nov 8 20:02:48 2006 +0000

    Refactor the code inside AttributeManager<A>::add_attribute_list()
    so there is a return statement at the end.
    
    This fixes Issue (3) from Comment #14 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit d331a263bd3c4635f9c6bd9e01e75abdfa46b28e
Author: pavlin <pavlin>
Date:   Wed Nov 8 19:49:49 2006 +0000

    Change the type of the variables used to store variions telnet-related
    constants from "char" to uint8_t".
    
    This fixes Issue (2) from Comment #14 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasson Tepper <hasso at linux.ee>

commit be6f2e7eae094c0726bfd8f44d8818fec9bb9122
Author: pavlin <pavlin>
Date:   Wed Nov 8 19:43:43 2006 +0000

    Add missing MRIB_LOOKUP_BITTEST related fixes.
    
    This completes the fix for Issue (1) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasson Tepper <hasso at linux.ee>

commit bd0e368a204c7d72ad01ec18c7d5119b41932d37
Author: pavlin <pavlin>
Date:   Wed Nov 8 15:43:18 2006 +0000

    Reorder the template class instations.
    
    This fixes Issue (5) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 4492d7916ea26a597264ae613bc0f8d8d635ee1c
Author: pavlin <pavlin>
Date:   Wed Nov 8 15:42:13 2006 +0000

    Remove the const_ref_ptr operator, because it seems unused/unneeded,
    and because it creates some confusion when used for implicit casting.
    
    This fixes Issue (2) from the original report and Comment #5
    in Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit a1b752a2dc8e307f5cc5b2293750f447bea529af
Author: pavlin <pavlin>
Date:   Wed Nov 8 15:28:48 2006 +0000

    Update the documentation to include the new LOG_LEVEL_MIN.

commit 72792b887f399c74e7eff7b392086e4d3bd0bae9
Author: pavlin <pavlin>
Date:   Wed Nov 8 15:27:45 2006 +0000

    Add verbose level XLOG_LEVEL_MIN and use it in loops when we have
    to perform an operation for all verbose levels.
    
    This hopefully will finally fix Issue (3) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit d64beadb8002ab5de05098d5ec359b690de0f378
Author: pavlin <pavlin>
Date:   Tue Nov 7 22:10:42 2006 +0000

    Change the protection level of Heap::Heap_Key and Heap::heap_entry
    from private to protected.
    
    This fixes Issue (4) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 8da2c8f87e52896c3b5c3e76004753aec8376ea2
Author: pavlin <pavlin>
Date:   Tue Nov 7 22:07:44 2006 +0000

    Fix the type of the argument for xlog_enable() and xlog_disable().
    
    This fixes Issue (3) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit e379a5407e58e4e8e83224f423828da656fcff64
Author: pavlin <pavlin>
Date:   Tue Nov 7 22:04:18 2006 +0000

    Remove unnecessary '\' escape character.
    
    This fixes Issue (2) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 4069ab36bc308f6fa6d97f654351104f6e9aa376
Author: pavlin <pavlin>
Date:   Tue Nov 7 21:53:17 2006 +0000

    Fix the MRIB_LOOKUP_BITTEST definition.
    
    This fixes Issue (1) from Comment #4 Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 8b69aa46e1227be5290688f6a803668d0d4cd094
Author: pavlin <pavlin>
Date:   Tue Nov 7 18:55:38 2006 +0000

    Remove meaningless "const" qualifiers.
    
    This fixes the issues described in Bugzilla entry #673, Comment #3.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit 408a5ba58cff3ed00352207fd8c6bfc475fa408d
Author: pavlin <pavlin>
Date:   Tue Nov 7 06:44:43 2006 +0000

    Pre-allocate the RunCommandBase::_done_timer timer.

commit c3f9d3e9098ce842e7d2cc4304b4d84ba8dcbf97
Author: pavlin <pavlin>
Date:   Tue Nov 7 06:26:14 2006 +0000

    XORP now can be cross-compiled for sparc64.

commit 5439fe6ebe70ef01bb5db5aebb95a5fd95078ab4
Author: pavlin <pavlin>
Date:   Tue Nov 7 06:20:19 2006 +0000

    Added information about cross-compiling for sparc64.

commit 928433ba4d87aa24179f97d12268daa61cfdc83f
Author: pavlin <pavlin>
Date:   Tue Nov 7 05:11:38 2006 +0000

    Added a release node regarding compiling XORP with the Intel compiler.

commit 293bdf48ec430defff583d65061483613c10faac
Author: pavlin <pavlin>
Date:   Tue Nov 7 03:04:21 2006 +0000

    Merge the cross-compilation instructions for different CPUs so it is
    easier to follow them.

commit a573011238d1392c910f3330189a37ec407327cd
Author: pavlin <pavlin>
Date:   Tue Nov 7 01:58:27 2006 +0000

    Fix the typedef enum declaration of EntryType.
    
    This fixes issue (5) described in Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit d456de1c7726e64a35b08fa32520f9bc48282dcc
Author: pavlin <pavlin>
Date:   Tue Nov 7 01:57:12 2006 +0000

    Fix the definition of PIM_HELLO_LAN_PRUNE_DELAY_TBIT and
    PIM_ASSERT_RPT_BIT.
    
    Eventually, this fixes issue (4) described in Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit dc4d8687b2f2839744daadef29ad7f5a985c6480
Author: pavlin <pavlin>
Date:   Tue Nov 7 00:46:51 2006 +0000

    Fix the type of RedistJob::_attempts, because it is suppose to be a
    counter instead of a bool.
    
    Bug found by the Intel C++ compiler.
    This fixes issue (3) described in Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 7d5887b8ce82ccc20165ef2d7531bcbd7d121c4a
Author: pavlin <pavlin>
Date:   Tue Nov 7 00:41:30 2006 +0000

    Remove meaningless "const" qualifiers.
    
    This fixes issue (1) described in Bugzilla entry #673.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=673

commit 51af471dd695f323e6a18e9f2e7995b6c028f15d
Author: pavlin <pavlin>
Date:   Mon Nov 6 23:51:10 2006 +0000

    Add a note about the usage of network4 and prefix-length4
    policy statements.
    
    This clariries the original issue raised by Bugzilla entry #669.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=669

commit d30e4fdb14734bb4de7d9b99a55488893b098db3
Author: pavlin <pavlin>
Date:   Mon Nov 6 23:05:28 2006 +0000

    Add a release note that the "elements" policy statement has been
    deprecated and is replaced by the "network" statement.

commit a54dff780098600fefc29de306ff98452282b12a
Author: pavlin <pavlin>
Date:   Mon Nov 6 23:04:07 2006 +0000

    Update the documentation to reflect the fact that the "elements"
    policy statement for configuring sets of networks has been deprecated.
    
    The new mechanism is a number of "network <net>" statements
    (one per network).

commit 4c34d897cb9cdd544ab5ff76b830726bfaf76020
Author: pavlin <pavlin>
Date:   Mon Nov 6 21:50:55 2006 +0000

    Deprecate the "elements" policy statements for configuring sets of
    network routes:
    
          policy {
              network4-list foo {
                  elements: "1.2.0.0/16,3.4.0.0/16"
              }
              network6-list bar {
                  elements: "2222::/64,3333::/64"
              }
          }
    
    The new replacement statement is "network" and can be used to
    specify one element per line:
    
          policy {
              network4-list foo {
                  network 1.2.0.0/16
                  network 3.4.0.0/16
              }
              network6-list bar {
                  network 2222::/64
                  network 3333::/64
              }
          }
    
    This fixes the remaining issue with Bugzilla entry #579.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=579

commit 4c9eff14886b2e8f0bd22660a798ce4f5034cee0
Author: pavlin <pavlin>
Date:   Mon Nov 6 21:04:15 2006 +0000

    Remove replicated "/usr" in the list of directories to search
    for OpenSSL installation.

commit b235629c33c360f8df70d199df7c4ed71a5582aa
Author: pavlin <pavlin>
Date:   Mon Nov 6 19:48:40 2006 +0000

    Add missing IPv4 and IPv6 template instantiation for the following
    template classes: RouteEntry, InternalRouteEntry and Adv.

commit 61828dcdc8a48c2fdec18025aa78ce59822e7579
Author: pavlin <pavlin>
Date:   Mon Nov 6 19:33:38 2006 +0000

    Apply a work-around for a compilation issue with the Intel C/C++
    compiler.
    
    It appears that the original code has some template-related deduction
    problem. E.g., see the following URLs for description and alternative
    work-around for a similar problem:
    
    http://www.velocityreviews.com/forums/t286095-template-function-as-argument-to-another-template-function.html
    
    http://www.cpptalk.net/1-vt22985.html?start=0
    
    This fixes another issue described in Bugzilla entry #670,
    Comment #6.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=670

commit 44923afff3efa178ed3aaba7353b8c3b704fb74b
Author: pavlin <pavlin>
Date:   Mon Nov 6 07:08:48 2006 +0000

    Add initial support for using the Intel C/C++ compiler.
    
    This fixes Bugzilla entry #671.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=671
    Submitted by:	Hasso Tepper <hasso AT linux.ee>

commit c1156ee0ee321eae8e20c1f600d2ebda699f15d8
Author: pavlin <pavlin>
Date:   Fri Nov 3 23:32:24 2006 +0000

    Introduce a new configuration variable ADDR_PREFIX0 instead of
    hard-coding the prefix length value.

commit 48872578e2ae990fcdb550904324ae90fb791423
Author: pavlin <pavlin>
Date:   Fri Nov 3 23:11:34 2006 +0000

    Remove redundant ptr_fun() wrappers.
    This fixes some of the compilation issues described in
    Bugzilla entry #670.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=670

commit 9fa3e8277f1ce44045b2f5046d26e72a42a29052
Author: pavlin <pavlin>
Date:   Fri Nov 3 01:55:19 2006 +0000

    Potential bug fix: rename a variable to avoid name clash confusion.

commit 291f513babd1ccc0ce6aae1947d8d550a1999579
Author: pavlin <pavlin>
Date:   Fri Nov 3 01:16:01 2006 +0000

    * XORP now builds on OpenBSD-4.0.
    * Fix a release note for Release-1.2: the new OpenBSD platform
      at that time was OpenBSD-3.8, not OpenBSD-2.8.

commit 97f7c987f9c029ab17ab0299bff158873f03f235
Author: pavlin <pavlin>
Date:   Fri Nov 3 01:14:14 2006 +0000

    XORP now builds on OpenBSD-4.0.

commit 16c5fae564e17ee078fb91b119499ffac35cfe6e
Author: pavlin <pavlin>
Date:   Wed Nov 1 02:34:57 2006 +0000

    Fix a coredump problem during the xorp_rtrmgr shutdown if a statement
    list like network4-list is used.
    
    The issue was that a Dependancy instance (Configuration::_sets) was
    used (by a reference) after it has been destroyed.
    
    The solution is to clear the Configuration::_policies before the
    Configuration::_sets goes out of scope.
    Otherwise, the _policies destructor might try to use a reference
    to _sets after _sets has been destroyed.

commit c209f421bc07a1fc5f4d7944595df5239788af7d
Author: pavlin <pavlin>
Date:   Wed Nov 1 00:27:08 2006 +0000

    Bug fix in the implementation of Configuration::add_to_set(()
    and delete_from_set().

commit 9758c3463d9fd87ddb1e8c275457928b091b34a8
Author: pavlin <pavlin>
Date:   Tue Oct 31 22:23:53 2006 +0000

    Modify the default policy method BGPVarRW<A>::read_neighbor()
    to return the neighbor IP address instead of the BGP ID.
    
    Approved by:	Atanu Ghosh

commit 2f32d4db55ea68e88bff7314bafb708a78d7f790
Author: pavlin <pavlin>
Date:   Tue Oct 31 05:26:26 2006 +0000

    Add a mechanism to add or delete a single element to/from a set.
    
    Currently the mechanism is unused, but would be used to handle
    the policy "list" element handling issue as described in
    Bugzilla entry #579.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=579

commit 9c760e659eac2ae7dd19d31c9e3802eef62c0e61
Author: pavlin <pavlin>
Date:   Fri Oct 27 23:30:46 2006 +0000

    Bug fix related to the initialization of PolicyTableExport.
    
    Explicitly call PolicyTableExport::init_varrw() inside the
    PolicyTableExport constructor, because the virtual
    PolicyTable::init_varrw() in the base PolicyTable class won't be
    overwritten by PolicyTableExport::init_varrw() when called inside the
    PolicyTable constructor.
    
    Also, for clarity, explicitly call the local virtual init_varrw()
    inside the PolicyTable constructor.
    
    In C++ (unlike Java), if the constructor of a base class calls a
    virtual function, the override is never called.
    See the following references for details:
    
    * "C++ FAQs, Second Edition" by Marshall Cline et al,
       pp 283, FAQ 20.13 "When the constructor of a base class calls a
       virtual function, why isn't the override called?"
    
    * http://www.artima.com/cppsource/nevercall.html
      Never Call Virtual Functions during Construction or Destruction
      An Excerpt from Effective C++, Third Edition
      by Scott Meyers
    
    This fixes Bugzilla entry #610.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=610

commit 14d21d968c2d55b130d17759fe417c1794f1df58
Author: pavlin <pavlin>
Date:   Fri Oct 27 23:16:20 2006 +0000

    Use the help of a non-virtual BGPVarRW::read_neighbor_base_cb()
    to create a callback wrapper that calls the virtual
    BGPVarRW::read_neighbor().
    
    Note that the original code appears to behave as intended (verified
    with gcc-4.1.1 on Gentoo 2006.1), but seems to be a bit too obscure
    (and a potential source for future problems).

commit d20fd4fd20815569efbd34c3b2c2fcb6ebf46154
Author: pavlin <pavlin>
Date:   Fri Oct 27 23:05:33 2006 +0000

    Few changes as a safeguard against potential memory leak (in case the
    code is refactored or used in slightly different way).
    
    * Initialize PolicyTable<A>::_varrw to NULL inside the
      PolicyTable constructor.
    
    * Delete the old _varrw inside PolicyTable<A>::init_varrw() before
      allocating and assigning a new BGPVarRW instance to it.

commit 707f6a4f379cf4734fb64684e50e1efd5dc9347c
Author: atanu <atanu>
Date:   Fri Oct 27 09:27:14 2006 +0000

    The export policy filter's constructor should be passed the neigbours
    IP address not its BGP ID.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=610

commit 1ad3837cdebf61fd275c03d90de1f3513373a8a9
Author: atanu <atanu>
Date:   Fri Oct 27 07:24:12 2006 +0000

    The copy method now copies the IPvX addresses.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=610

commit 313035af62385e8469a3f7c8f5be8a93b2a30e43
Author: atanu <atanu>
Date:   Fri Oct 27 07:17:19 2006 +0000

    New methods that provide the peer address as an IPv4 or IPv6 address
    required by the policy code when retrieving neighbour information.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=610

commit 31a56410a1135461ef80d1049e28044ee44da3b0
Author: atanu <atanu>
Date:   Fri Oct 27 07:14:20 2006 +0000

    Store the local address and the peer address in an IPvX, it is also
    still stored as a string. The policy code could potentially access the
    peer address per route so it is stored in a convenient form to stop
    repeated unnecessary conversions.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=610

commit 5953bf19102bfcef76734f8026953345c78aa35c
Author: pavlin <pavlin>
Date:   Fri Oct 27 04:56:18 2006 +0000

    XORP now builds on Linux Fedora Core6.

commit 18acaca48bc6fb7a31d58e87934330b9e7be6c32
Author: pavlin <pavlin>
Date:   Fri Oct 27 01:14:02 2006 +0000

    Conditionally include <linux/types.h>. This fixes a compilation
    error for Fedora Core 6.

commit a624bb6620e3aab9beaf3edd66db084a098cddb2
Author: pavlin <pavlin>
Date:   Thu Oct 26 09:00:27 2006 +0000

    Add a release note regarding cross-compiling for MIPS (Broadcom for
    Linksys WRT54G).

commit eb22ac80dc4b9b0751183ee2eb7134a175514fc8
Author: pavlin <pavlin>
Date:   Thu Oct 26 08:58:39 2006 +0000

    Add cross-compilation notes for MIPS (Broadcom for Linksys WRT54G).

commit dbf579f9d891f8309b0aa928e9ae7e8156ef1bd9
Author: pavlin <pavlin>
Date:   Wed Oct 25 01:55:18 2006 +0000

    Precompute the RunCommandBase::done() callback when called inside
    RunCommandBase::wait_status_changed() (called itself by the SIGCHLD
    signal handler).
    
    Thus we avoid any interaction with the system (such as memory allocation)
    while processing the signal handler.
    
    This might fix some blocking issues on Linux (Gentoo 2006.1) observed
    occasionally when running test_run_command inside the XORP tinderbox
    with "env MALLOC_CHECK_=2".

commit 7f818b781e3c7591ab4447556a8c2c782b6536cb
Author: pavlin <pavlin>
Date:   Tue Oct 24 22:35:58 2006 +0000

    If there is an error when deleting a forwarding entry, then
    check the reason for the error and eventually ignore it.
    
    For example, if the outgoing interface was taken down earlier, then
    most likely the kernel has removed the matching forwarding
    entries on its own. Hence, check whether all of the following
    is true:
      - the error code matches
      - the outgoing interface is down
    
    If all conditions are true, then ignore the error and consider
    the deletion was success.
    Note that we could add to the following list the check whether
    the forwarding entry is not in the kernel, but this is probably
    an overkill.

commit 0a5f6624485fcb814b2b49665ab36357e3078909
Author: pavlin <pavlin>
Date:   Tue Oct 24 22:35:33 2006 +0000

    * If there is an error when deleting a forwarding entry, then
      check the reason for the error and eventually ignore it.
    
      For example, if the outgoing interface was taken down earlier, then
      most likely the kernel has removed the matching forwarding
      entries on its own. Hence, check whether all of the following
      is true:
        - the error code matches
        - the outgoing interface is down
    
      If all conditions are true, then ignore the error and consider
      the deletion was success.
      Note that we could add to the following list the check whether
      the forwarding entry is not in the kernel, but this is probably
      an overkill.
    
    * Return-by-reference the last errno when calling
      NlmUtils::check_netlink_request()

commit 4c2a5861492d8351a81c4fe1780d39124ccf5182
Author: pavlin <pavlin>
Date:   Mon Oct 23 18:20:28 2006 +0000

    Bug fix: don't install redundant host-specific (/32 or /128) entries
    for the other side of a point-to-point interface if the netmask for
    the the interface covers the host-specific entry.
    
    Bug found by:	Michael Larson <mike AT vyatta.com>

commit c0a7c30a6efe84ff392b82b4df9cc847775b623d
Author: pavlin <pavlin>
Date:   Fri Oct 20 02:03:05 2006 +0000

    Reorder the execution inside
    Mld6igmpVif::mld6igmp_query_version_consistency_check()
    such that the string manipulation is performed only
    when there is an error.

commit e1fdd3bce895c86d2ffec7bd34674fd782eac19d
Author: pavlin <pavlin>
Date:   Fri Oct 20 00:08:35 2006 +0000

    Bug fix when writing the Router Alert value to a raw IPv4 header.

commit aa7070b2cdd553ad167ef3e532a167b0f9d682c1
Author: atanu <atanu>
Date:   Thu Oct 19 19:34:46 2006 +0000

    The -3 argument now connected the the OSPFv3 process.

commit 29fb82c0d74e9c6587e0e5af83539212203744a2
Author: atanu <atanu>
Date:   Thu Oct 19 19:21:28 2006 +0000

    Interface address is IPv6 not IPv4.

commit 2bf56aed5dc10f7c8062cf2915beb9a923f72d5e
Author: atanu <atanu>
Date:   Thu Oct 19 18:47:02 2006 +0000

    Enable get_status for OSPFv3.

commit feeb6f5b78787d1799b6ced31a497751c62786d1
Author: pavlin <pavlin>
Date:   Thu Oct 19 18:45:29 2006 +0000

    * Add AM_PATH_PYTHON() as a better mechaism to perform Python-related
      checks.
      For now this addition is commented-out, because it doesn't work
      as needed for automake-1.5 (the default version used by XORP).
      It should be enabled after we move to a more recent version of
      automake (e.g., 1.9).
    
      This change, when enabled, will fix Bugzilla entry #600.
    
    * Minor cleanup.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=600

commit 11e5014156d38bc63a446393b49da0df8753165b
Author: atanu <atanu>
Date:   Thu Oct 19 18:27:11 2006 +0000

    Remove all traces of authentication, this is now performed by the IP
    layer directly if OSPFv3, replace IPv4 with IPv6 where appropriate.

commit a7ca2d4eca6158b7e25e3b5a866fe9ad9758459a
Author: pavlin <pavlin>
Date:   Thu Oct 19 06:46:54 2006 +0000

    XORP now can be cross-compiled for IA-64.

commit 1b68863e7af943d207c74b1647355fdf635cd1f8
Author: pavlin <pavlin>
Date:   Thu Oct 19 06:42:50 2006 +0000

    Added instructions how to cross-compile for IA-64.

commit 3246b44b505be6f3454c064d170b9e99fd852c4b
Author: pavlin <pavlin>
Date:   Thu Oct 19 05:35:20 2006 +0000

    Bug fix when testing the absolute name of the libgcc library:
    use the $CC variable instead of the hard-coded "gcc".

commit d3e6bf02b00baf7cb149707149f3e13648d1a1f8
Author: pavlin <pavlin>
Date:   Thu Oct 19 02:14:11 2006 +0000

    Renamed the internal Makefile PY_BUILD to PYTHON_BUILD.

commit 3f0680d28e451c9cbb4db255b7a8d1a013d495fb
Author: pavlin <pavlin>
Date:   Thu Oct 19 00:19:45 2006 +0000

    A nit: "XScale" -> "XScale processor"

commit 9656a6d9e9fec95856d99ded12e5163072c5ae15
Author: pavlin <pavlin>
Date:   Thu Oct 19 00:18:43 2006 +0000

    Added a release note that XORP can be cross-compiled for XScale.

commit 537a15816743a7ba3bdc602cc381f396452e9287
Author: pavlin <pavlin>
Date:   Thu Oct 19 00:16:00 2006 +0000

    Added instructions how to cross-compile XORP for XScale processor.

commit e2c15d9c8798d9556099c25d59c1341c59d16ab4
Author: pavlin <pavlin>
Date:   Wed Oct 18 22:57:03 2006 +0000

    Add explicit casting for the XrlAtom() argument: uint8_t -> uint32_t

commit b5b83d608b1aaeece7a35ba3f141c25135fcd601
Author: pavlin <pavlin>
Date:   Wed Oct 18 17:02:11 2006 +0000

    Move the IPv4-related forwarding-entries{} block to its right place.

commit 2fdb383254daa0bd824493a284aae79fb27d1dbe
Author: atanu <atanu>
Date:   Tue Oct 17 23:49:16 2006 +0000

    OSPFv3 XRL support for:
    delete_peer
    set_peer_state
    add_neighbour
    remove_neighbour
    create_virtual_link
    delete_virtual_link
    transit_area_virtual_link
    set_interface_cost
    set_retransmit_interval
    set_inftransdelay
    set_router_priority
    set_hello_interval
    set_router_dead_interval
    set_passive
    originate_default_route
    stub_default_cost
    summaries
    area_range_add
    area_range_delete
    area_range_change_state
    trace
    get_lsa
    get_area_list
    get_neighbour_list
    get_neighbour_info

commit 5cd7d00c008f1387e86e54f605510b7d8fee375f
Author: pavlin <pavlin>
Date:   Tue Oct 17 22:26:07 2006 +0000

    Addition of new FEA configuration statements to retain XORP
    unicast forwarding entries on startup or shutdown:
    
    fea {
        unicast-forwarding4 {
            forwarding-entries {
                retain-on-startup: false
                retain-on-shutdown: false
            }
        }
        unicast-forwarding6 {
            forwarding-entries {
                retain-on-startup: false
                retain-on-shutdown: false
            }
        }
    }
    
    The default value for each statement is false.
    Note that those statements prevent the FEA itself from deleting
    the forwarding entries and does not prevent the RIB or any of the
    unicast routing protocols from deleting the entries on shutdown.
    
    This change partially fixes Bugzilla entry #665 and is needed
    for implementing graceful restarting capabilities for the unicast
    routing protocols.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=665

commit 0daced4e7a02c9873ebb45be1d3de1d152e498ea
Author: atanu <atanu>
Date:   Tue Oct 17 00:06:08 2006 +0000

    OSPFv3 XRL support for create_peer.

commit 630bf488269727ed81d963a12a720203f5e9d8bb
Author: pavlin <pavlin>
Date:   Mon Oct 16 20:03:47 2006 +0000

    Print the expected network mask in hex if a Hello packet is received
    with mismatched network mask,
    
    Approved by:	Atanu Ghosh

commit 43b231996286b8e0a91a37a0adc497db6b6c5f3a
Author: atanu <atanu>
Date:   Mon Oct 16 09:15:34 2006 +0000

    A new test packet_decode_bad2V3 with data in packet3.data that is
    based on packet1.data with the bogus fields in the Network-LSA and
    Router-LSA corrected. The only bogus field is the number of LSAs.

commit 13e4a65140fe2a901e5a1b49ea781440431c03a3
Author: atanu <atanu>
Date:   Mon Oct 16 08:41:29 2006 +0000

    A new test packet_decode_bad2V2 with data in packet2.data that is
    based on packet1.data with the bogus fields in the Network-LSA
    corrected.

commit a2201cb8e5f12ca83dcbcc6ef295151a85126732
Author: atanu <atanu>
Date:   Mon Oct 16 07:21:04 2006 +0000

    The attached router was missing from the intrepretation of this packet.

commit 9f893f93b5e3a8cfaa8a2e8f625f7fb8b308e414
Author: atanu <atanu>
Date:   Mon Oct 16 06:50:04 2006 +0000

    The length field in LSAs was not being correctly validated, a length of
    0 or 1 caused OSPF to crash.
    
    It is verified that the LSA length field falls within the packet. It
    is also verified that that packet is large enough to contain an LSA of
    the type being decoded.
    
    The missing check was that the length field in the LSA was not too
    small, this should not have been a problem as the decoding routine
    would eventually have detected the length mismatch. The problem was
    that before decoding of an LSA is started its checksum is verified
    using the length of the LSA contained in the LSA, the length has two
    subtracted from it before being passed to the verification
    routine. The verification routine expects an unsigned length (1 - 2)
    gives a buffer length of 4294967295 (0xffffffff), which eventually
    causes a crash.
    
    The length field in the packet is now checked to make sure that it
    meets the minimum LSA size requirement for the LSA being decoded.
    
    The offending packet from the trace that was provided is in
    packet1.data and a test has been added to test_packet:
    $ ./test_packet -v -t packet_decode_bad1V2
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=664
    Bug found by:	Mu Security (security AT musecurity.com)

commit 8e9c0a304c455cf3bbbc61ba47e695787d548316
Author: pavlin <pavlin>
Date:   Sun Oct 15 09:16:59 2006 +0000

    * Reverse the previous commit:
      WIN32_FIND_DATA -> WIN32_FIND_DATAA
    
    * Use FindNextFileA() instead of FindNextFile() to fix the original
      compilation error.

commit 24894cea24e1d37439df530b03d3b057e7ec4bcf
Author: atanu <atanu>
Date:   Sat Oct 14 18:07:38 2006 +0000

    The create_peer method had two redundant arguments removed
    interface_prefix and mtu, forgot to remove then in the test programs.

commit 7b66b5561164f16882eceda0ea57aed0bb97a2b1
Author: pavlin <pavlin>
Date:   Sat Oct 14 01:07:14 2006 +0000

    Bug fix related to sending raw packets that has been introduced
    by recent changes to the FEA.
    
    Practically, this bug affects only OSPF.

commit 6b7a37bd3f7a077b43dee45f2b130d041ad68bb7
Author: atanu <atanu>
Date:   Fri Oct 13 21:17:27 2006 +0000

    OSPFv3 XRL support for change_area_router and destroy_area_router.

commit 8089f557ff4221439e87a97d54846619dc3a117c
Author: pavlin <pavlin>
Date:   Fri Oct 13 20:48:16 2006 +0000

    Propagate and print a better error message if adding a CLI
    command fails.

commit b22cfafad5e8b8eabb310178d7ac214d9f6752b0
Author: atanu <atanu>
Date:   Fri Oct 13 20:26:51 2006 +0000

    OSPF requires the prefix length and the MTU of the interface on which
    it running. This information is gathered directly from the FEA, but
    was previously passed in from the configuration file. The create_peer
    XRL was being passed these (prefix_len and mtu) arguments that were
    not being used, they have now been removed.

commit aff1ed6b426f1d84ea3a3a1df517e081af2efb7c
Author: atanu <atanu>
Date:   Fri Oct 13 19:43:24 2006 +0000

    OSPFv3 XRL support for create_area_router.

commit e17ad8938baa2e769b973efee2ca975b11fc2338
Author: pavlin <pavlin>
Date:   Fri Oct 13 06:24:08 2006 +0000

    * Added new XRLs ifmgr/0.1/restore_original_mac and
      ifmgr/0.1/restore_original_mtu that can be used to restore respectively
      the original MAC and MTU on an interface (as seen on startup).
    
    * If the MAC or MTU on an interface is deleted from the XORP
      configuration, then use the above new XRLs to restore the original
      values.
    
    This fixes Bugzilla entry #645.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=645

commit 5d5d6531f840f40a01665ced9968779d95d59d3c
Author: pavlin <pavlin>
Date:   Fri Oct 13 06:19:17 2006 +0000

    Added new method IfConfig::original_config() for obtaining a reference
    to the original interface tree (as seen on startup).

commit 0550b79ee2d9f168a99e392d18fb18276f08dc63
Author: pavlin <pavlin>
Date:   Fri Oct 13 04:32:40 2006 +0000

    Compilation fixes for OpenBSD: add missing XORP_UINT_CAST() castings.

commit 2b1542e480c953fb0d82bb75c24dec46b24e466d
Author: pavlin <pavlin>
Date:   Fri Oct 13 04:10:53 2006 +0000

    Compilation fix for Windows: fix the type for variable "find_data":
    
    WIN32_FIND_DATAA -> WIN32_FIND_DATA

commit 1532d2c1fe57d9d0bd4135d3539d2b987a304b36
Author: pavlin <pavlin>
Date:   Fri Oct 13 03:44:11 2006 +0000

    Compilation fix for Windows.

commit 3724b7b5929b1b94160037bc44755825d6e3ac13
Author: pavlin <pavlin>
Date:   Fri Oct 13 02:00:40 2006 +0000

    Fix the BGP Peer OIDs.
    
    It appears that Net-SNMP has a (semantic) bug when using ASN_IPADDRESS
    values as an index in a table.
    E.g., ASN_IPADDRESS values in general are suppose to be stored in
    network order, but it appears they have to be stored in host order
    if are to be used as an index in a table.
    
    See the following URL for a related discussion (within UDP context);
    http://groups.google.com/group/mailing.unix.net-snmp-coders/browse_thread/thread/24bc2c2aed8663bc/e8837358d13f0de6
    
    This fixes Bugzilla entry #662.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=662

commit c099cf91b8feccbfda46a6a6844eb32fa1880065
Author: pavlin <pavlin>
Date:   Fri Oct 13 01:02:30 2006 +0000

    Rename:
    HAVE_NETSNMP_ASN_IPADDRESS_HOST_ORDER ->
    HAVE_NETSNMP_ASN_IPADDRESS_IN_HOST_ORDER

commit 7e7572068d20b268be38804c3cb4a48e02e4c51b
Author: pavlin <pavlin>
Date:   Fri Oct 13 00:41:47 2006 +0000

    If the net-snmp version is earlier than 5.2, then define
    HAVE_NETSNMP_ASN_IPADDRESS_HOST_ORDER.
    
    Apparently, older version returned ASN_IPADDRESS values in host
    order (e.g., when obtained by parse_oid_indexes() or
    parse_one_oid_index()).

commit 3bef521c507b6528505631b0edec12c6a889f76b
Author: pavlin <pavlin>
Date:   Fri Oct 13 00:21:08 2006 +0000

    Keep the following IPv4 addresses in network order:
     - bgp4PathAttrTable_context.bgp4PathAttrPeer
     - bgp4PathAttrTable_context.bgp4PathAttrIpAddrPrefix

commit 2ebce729f7816402b8ff9b112ee46b5243276288
Author: atanu <atanu>
Date:   Thu Oct 12 23:31:11 2006 +0000

    Add ospfv3.tp.

commit e621ea066b4d6be424e9672f775b987e7a31a3cb
Author: atanu <atanu>
Date:   Thu Oct 12 23:12:03 2006 +0000

    OSPFv3 XRL support for set_router_id and set_ip_router_alert.

commit ca9c03ae49997aee5df68bb74d1cb46e1fff1a6c
Author: atanu <atanu>
Date:   Thu Oct 12 20:22:06 2006 +0000

    Add source files related to test_routing_interactive.

commit 434273a70d77684cd0340b9991521e112f08f639
Author: atanu <atanu>
Date:   Thu Oct 12 20:20:36 2006 +0000

    Add test to test the test_routing_interactive program.

commit 2b6cfce5adbd5d19582180cba15638fee5c0ce71
Author: atanu <atanu>
Date:   Thu Oct 12 20:19:05 2006 +0000

    A start at a program to interactively test the routing computations.

commit 8b981484fd574d00cae8069d091b3a5c15dfd0a8
Author: atanu <atanu>
Date:   Thu Oct 12 20:11:19 2006 +0000

    Move the number and word manipulation routines into a separate file.

commit c4f139e924a31e1c9c2f91c76a0399a756244ba8
Author: atanu <atanu>
Date:   Thu Oct 12 19:41:29 2006 +0000

    The OSPFv3 implementation was designed to handle the case of IPv4
    addresses as well as IPv6 addresses, comment out the IPv4 data
    structures (they can be revived if OSPFv3 for IPv4 is ever
    standardised).

commit 3e545bbff55ec332ced4c705125b28fc0ce907e1
Author: pavlin <pavlin>
Date:   Thu Oct 12 06:13:04 2006 +0000

    Remove an assert inside RouteDB<A>::delete_rib_route() if the
    route to delete is not found.
    
    This method is called indirectly when redist4/0.1/delete_route
    XRL is received. Hence, strictly speaking a bogus XRL might
    trigger the assert and crash RIP.
    
    By eliminiating the assert, now RIP is more robust against
    such XRLs.
    
    This fixes Bugzilla entry #647.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=647
    Submitted by:	Mike Larson <mike AT vyatta.com>

commit 12655d4a119fd5b8562a3039eb5edfba543d37ab
Author: pavlin <pavlin>
Date:   Thu Oct 12 01:24:36 2006 +0000

    * Include "libxorp/xorp.h" instead of "config.h" (according to the
      new rule in the coding style guide.
    
    * Refactor the lists of included header files:
      - Remove files that don't need to be included (e.g., because they
        are included by "libxorp/xorp.h").
      - Reorder some of the included files.
      Note: this refactoring has been applied only to those files that
      have been affected by the "config.h" -> "libxorp/xorp.h" replacement.

commit 062802f93ebe2249bd2173de7a3426edbfeab1a7
Author: atanu <atanu>
Date:   Thu Oct 12 00:41:53 2006 +0000

    Hold a router ID as an IPv4 not an int.

commit 74e91e5ee4277015ea1687ef05729ff36e1f768a
Author: atanu <atanu>
Date:   Thu Oct 12 00:39:41 2006 +0000

    Temporarily comment out the sending of XRLs, they don't all exist yet.

commit 976c49dcba2191a2befa98a85ed70e16d0f6fc7a
Author: atanu <atanu>
Date:   Thu Oct 12 00:08:37 2006 +0000

    ospf4 -> ospf6
    ospfv2 -> ospfv3

commit b9b1c7947f80d7c4337eb63735eefd70af2917b8
Author: atanu <atanu>
Date:   Thu Oct 12 00:04:24 2006 +0000

    Copy of ospfv2.tp, start of ospfv3.tp.

commit 8f611bec2ba1e2edaa7b526c250a5ad55496b3c4
Author: pavlin <pavlin>
Date:   Wed Oct 11 23:15:27 2006 +0000

    * Add missing XORP copyright header
    
    * Replace #include "config.h" with #include "libxorp/xorp.h"

commit f4da0bdc66eb97c4f7173489c534d8c903bcb27e
Author: pavlin <pavlin>
Date:   Wed Oct 11 18:52:42 2006 +0000

    Slight change in the coding style: the first included header file
    should be "libxorp/xorp.h" instead of "config.h".
    The former defines or includes a number of other useful features
    so it is practically mandatory for all XORP source code.
    
    Approved by:	Atanu Ghosh

commit 7233087df912605f16ff573cd73547fe14abed51
Author: pavlin <pavlin>
Date:   Wed Oct 11 06:53:56 2006 +0000

    * All local fields in the IPNet class are now "private" instead of
      "protected".
       This change is needed to protect those fields from being directly
       manipulated externally. Any such external manipulation might
       result in inconsistent combination of address and prefix length.
    
    * Adapt the rest of XORP to the above change.

commit 810bcf2b04ca9f04a255f3dcbc5643fd7abb6d29
Author: pavlin <pavlin>
Date:   Tue Oct 10 23:23:23 2006 +0000

    Added a release note for SNMP.

commit 28b7881c9dd335c958354ba305fbfec14004136c
Author: pavlin <pavlin>
Date:   Tue Oct 10 23:17:13 2006 +0000

    If the net-snmp version is >= 5.2, then the logfile argument
    is "-Lf <file>", otherwise it is "-l <file>".
    
    This fixes Bugzilla entry #660.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=660

commit b9b825fa2d373519e5f3708f6847afcf12b92596
Author: atanu <atanu>
Date:   Tue Oct 10 22:33:42 2006 +0000

    If BGP peer sends an update message with a bad next hop then the hold
    timer is not restarted. The hold timer is now restarted before
    checking the state of the nexthop.
    
    Submitted by:	Justin Fletcher AT vyatta.com

commit 0d2660d9db4a3dfdbf4c614fc9a13c82b49e05cc
Author: pavlin <pavlin>
Date:   Tue Oct 10 20:02:20 2006 +0000

    Use XorpShellBase pointer instead of XorpShell as an argument
    to SlaveConfigTree::save_phase4() and SlaveConfigTree::save_phase5().
    
    Submitted by:	 Marat Nepomnyashy <marat AT vyatta.com>

commit 7ca9a2a749ef172d11231a5b3b1bd5daf9af2127
Author: pavlin <pavlin>
Date:   Mon Oct 9 07:51:16 2006 +0000

    Fix byte ordering when asserting the values of the following fields:
     - bgp4PathAttrTable_context_s.bgp4PathAttrPeer
     - bgp4PathAttrTable_context_s.bgp4PathAttrIpAddrPrefix

commit 8e12e1b86312d2f955a13ee6db3510073a5fa535
Author: pavlin <pavlin>
Date:   Mon Oct 9 07:14:07 2006 +0000

    Compilation fix for Windows-specific code.

commit 805ab0f37b7a23384acc73ccbe8e5f2436152cee
Author: pavlin <pavlin>
Date:   Fri Oct 6 23:01:30 2006 +0000

    Add release notes for MFEA, IGMP/MLD and PIM-SM.

commit d31d1e43216e026e2c91660a38bb8fb422874b2e
Author: pavlin <pavlin>
Date:   Fri Oct 6 22:58:58 2006 +0000

    Fix a bug related to managing the IP addresses for the multicast
    related modules.
    
    When updating the set of interfaces/vifs and their addresses,
    first add/update new and existing entries (interfaces/vifs/addresses),
    and after that delete obsolete entries.
    
    This fixes an issue when atomically changing the IP address of a router
    would set an interface DOWN if the (single) old address is deleted
    before adding the new address.

commit a1934dba20958817e5f82d08b5e59253320a3cbf
Author: pavlin <pavlin>
Date:   Fri Oct 6 20:55:20 2006 +0000

    * Fix the mechanism for transmitting IPv4 packets, so now we can
      transmit packets on Linux even if the source address doesn't belong
      to the router. The problem with Linux is the following.
    
      In case of Linux IP_HDRINCL IP packets are not fragmented and
      are limited to the interface MTU. The raw(7) Linux manual is wrong
      by saying it is a limitation only in Linux 2.2. It is a limitation
      in 2.4 and 2.6 and there is no indication this is going to be fixed
      in the future.
      Hence, in case of Linux we do the following:
        - If the IP packet fits in the MTU, then send the packet using
          IP_HDRINCL option.
        - Otherwise, if the IP source address belongs to the outgoing
          interface, then use various socket options to specify some of
          the IP header options.
        - Otherwise, use IP_HDRINCL and fragment the IP packet in user
          space before transmitting it. Note that in this case we need
          to manage the ip_id field in the IP header.
    
      The reasoning behind the above logic is: (1) If the IP source
      address doesn't belong to one of the router's IP addresses, then
      we must use IP_HDRINCL; (2) We want to avoid as much as possible
      user-level IP packet fragmentation, because managing the ip_id
      field in user space does not guarantee the same ip_id is reused
      by the kernel as well (for the same tuple of <src, dest, protocol>).
    
      Note that in case of all other OS-es we always use the IP_HDRINCL
      option to transmit the packets.
    
    * Remove extra buffers for sending and receiving raw packets.
      This reduces the run-time memory usage by 128KB.
    
    * Declare the IPv4 router alert option as static, and compute its
      value on startup.
    
    * Minor cleanup.

commit 8190490f08d214014f3b7d8e01ed1f4ac0dccd2b
Author: pavlin <pavlin>
Date:   Fri Oct 6 20:33:25 2006 +0000

    Added a new flag do_checksum to IpHeader4::fragment().
    This flag can be used to disable the computation of the IP checksum
    for the fragments (e.g., in case when we want to offload the checksum
    computation to the kernel).

commit 8d13b2008572cbc3ac0a07cac0e46a467ff615e0
Author: pavlin <pavlin>
Date:   Wed Oct 4 18:33:51 2006 +0000

    * Move the transmission of raw packets to a new method:
      ProtoComm::proto_socket_transmit() and RawSocket::proto_socket_transmit()
      respectively.
    
    * Minor cleanup of the Windows-specific code in the above two methods.

commit b585a2e2eb3365c10228ee040b584b95a788bc64
Author: pavlin <pavlin>
Date:   Wed Oct 4 00:59:38 2006 +0000

    Refactor some of the code to use IpHeader4/IpHeader4Writer and
    IpHeader6/IpHeader6Writer classes when dealing with IPv4/IPv6
    headers instead of the system defined "struct ip" and "struct ip6_hdr".
    
    The new implementation is slightly cleaner and should work across
    all OS-es.

commit 470446af2b567afcbe4383608a7d776485ab0901
Author: pavlin <pavlin>
Date:   Wed Oct 4 00:15:29 2006 +0000

    Refactor the PimVif::pim_register_send() implementation to use the
    new IpHeader4::fragment() method to fragment the PIM Registers
    rather than doing the fragmentation inline.

commit a751c21cba8dfc672eb9b91edb373148072cb842
Author: pavlin <pavlin>
Date:   Tue Oct 3 23:51:55 2006 +0000

    Implemented a new method IpHeader4::fragment() that can be used
    for fragmenting IPv4 packets.
    The implementation is based on existing code inside
    pim/pim_proto_register.cc method PimVif::pim_register_send().

commit b66b3a58299e91134505e7cec89916d4b09b0429
Author: pavlin <pavlin>
Date:   Tue Oct 3 00:32:43 2006 +0000

    Fix BGPUpdateAttrib::copy_out() to handle properly default
    routes (i.e., when the prefix length is 0).

commit 83e456e723df75b53070f1be6328eef723f325d5
Author: atanu <atanu>
Date:   Mon Oct 2 21:34:57 2006 +0000

    When reading in the NLRI or withdrawn routes part of an update message
    mask out any irrelevant bits of the update.

commit e33d5ed487c4a552a4c1b5ee3654507b6d318f81
Author: atanu <atanu>
Date:   Mon Oct 2 21:26:54 2006 +0000

    When a client such as the xorpsh registers with the router manager,
    eventually it will be sent the current configuration. The sending back
    of the configuation is scheduled on a timer callback and the callback was
    handed the user ID and a pointer to the internal UserInstance data
    structure. If in the intervening period the client de-registers when
    the callback fires the UserInstance data pointer is invalid, to stop
    this problem the callback it now given the name of the client which is
    looked up in the internal database. The problem was seen when using
    the xorpsh in this form: "xorpsh -c 'show bgp peers'", the xorpsh was
    exiting before the callback fired.

commit 036bfbda89af75167ce4e6cfe9fd5c3db1a08508
Author: pavlin <pavlin>
Date:   Mon Oct 2 19:29:57 2006 +0000

    Added NetBSD-3.0.1 to the list of OS-es that XORP can be built on.

commit 25597435768e0002efad61cb9e7267d4ac96fead
Author: pavlin <pavlin>
Date:   Mon Oct 2 18:04:18 2006 +0000

    Reverse the previous work-around for DragonFlyBSD-1.6 where we
    conditionally don't include <netinet/if_ether.h>.
    
    The problem with DragonFlyBSD-1.6 file /usr/include/machine/atomic.h
    is also triggered when we include <net/if_var.h>, and this file is
    included in number of places by the FEA, so there is no clean work-around
    for that problem.
    
    Instead, the users should patch the problematic
    /usr/include/machine/atomic.h as specified in the BUILD_NOTES by
    applying the following patch:
    
    http://www.dragonflybsd.org/cvsweb/src/sys/i386/include/atomic.h.diff?r1=1.20.2.1&r2=1.20.2.2
    
    Note that the problem has been fixed in the DragonFlyBSD source tree
    so eventually it will appear in the next release.

commit 4708d4f15d5e13e1778243f158299b39a03b367b
Author: pavlin <pavlin>
Date:   Mon Oct 2 17:56:10 2006 +0000

    Add build notes for DragonFlyBSD-1.6.

commit 002273653857d97a1ee4c4f056f928d5c3c56073
Author: pavlin <pavlin>
Date:   Sun Oct 1 07:10:09 2006 +0000

    Conditionally don't include <netinet/if_ether.h> for DragonFlyBSD-1.6.
    We need to do this as a work-around, because on that platform header
    file <machine/atomic.h> (indirectly included by <netinet/if_ether.h>)
    is not C++ safe.
    
    We can exclude <netinet/if_ether.h>, because we don't really need it
    on DragonFlyBSD-1.6.
    
    This work-around fixes a compilation error for DragonFlyBSD-1.6.

commit a8eec118d27dfc412afc063fc860e41548b00d7d
Author: pavlin <pavlin>
Date:   Sun Oct 1 06:39:27 2006 +0000

    Use C instead of C++ to check for headers where 'struct ether_addr'
    is typically defined.
    
    It is preferable to use C instead of C++, because in DragonFlyBSD-1.6
    file <machine/atomic.h> (indirectly included by <netinet/if_ether.h>)
    is not C++ safe.
    
    This work-around fixes a compilation error for DragonFlyBSD-1.6.

commit 493a0697f6ef85cd0fe70f81634b057ca55c6e39
Author: pavlin <pavlin>
Date:   Sun Oct 1 06:31:27 2006 +0000

    Replace an unitentional call to AC_LANG_SAVE with AC_CACHE_SAVE.

commit 7056b1c31906db38e7198d147895560bced44d04
Author: pavlin <pavlin>
Date:   Sun Oct 1 06:14:32 2006 +0000

    Don't use "string::clear()" method to reset a string, because
    the gcc-2.9x compiler doesn't like it. Instead, explicitly assign the
    string to "" to reset it.
    
    This fixes a gcc-2.9x compilation error.

commit 18b49506d66f9bb0687ffbd1ee279796e6a51f1f
Author: zec <zec>
Date:   Fri Sep 29 23:01:00 2006 +0000

    Improve XrlAtom handling by avoiding unnecessary checking on
    _atom_name field for correctness, most notably during copy
    operations.
    
    This change yields up to 20% improvements in our synthetic
    IPC tests, and roughly 6% reduction in time necessary to
    synchronize a current full feed BGP peering.

commit 80998cf031a06422e83f80b1556611ece2540848
Author: pavlin <pavlin>
Date:   Thu Sep 28 21:55:55 2006 +0000

    * Started a new section "Performance optimization".
      Currently, this section is incomplete.
    
    * Added an example for PentiumPro-related compiler optimizations
      (from Marko Zec).

commit 86e4901379005a2a4e2e61608c5e4ead66cd440d
Author: zec <zec>
Date:   Thu Sep 28 15:52:26 2006 +0000

    Connect test10 to the list of regular tests, since the bug it was
    triggering has been just fixed by Atanu in rev. 1.15 of
    bgp/update_attrib.cc.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=640

commit bfccdb054e322c389a689c1517847a10b6adf1e9
Author: atanu <atanu>
Date:   Thu Sep 28 15:19:45 2006 +0000

    The network layer reachability information in a BGP update packet is
    coded as one or more 2-tuples, the first is the length in bits and the
    second is the IP prefix itself. The default route 0.0.0.0/0 has a zero
    in the length part of the tuple and no prefix.
    
    The BGPUpdateAttrib class which is responsible for parsing an NLRI
    was unconditionally reading the prefix byte and shifting it left 24
    bits. BGP receiving a default route could end up with an NLRI of the
    form 42.0.0.0/0, this is obviously illegal and should not be possible,
    however, the BGPUpdateAttrib class inherits from IPv4Net and directly
    writes to its member variables bypassing any sanity checking. The
    member variable of IPv4Net should be made private to prevent this
    problem in the future, see <http://www.xorp.org/bugzilla/show_bug.cgi?id=654>.
    
    This problem was first seen when BGP received a default route and an
    assert was hit in the ref trie code due to the illegal nature of the
    prefix and prefix length.
    
    A test function test_announce_packet2 has also been added.

commit 40993447420d8dc0664230105edd0a13d75bd96d
Author: pavlin <pavlin>
Date:   Fri Sep 22 19:14:51 2006 +0000

    Fix a "Memory fault" bug when trying to save the configuration to a
    directory that is not writable.
    
    This fixes Bugzilla entry #650.
    
    Bugzilla URL:	http://www.xorp.org/bugzilla/show_bug.cgi?id=650
    Submitted by:	Michal Derkacz <michal AT Lnet.pl>

commit 9129d176b336da72b696ff3ca1e1fd844bc08415
Author: mjh <mjh>
Date:   Fri Sep 22 07:12:54 2006 +0000

    Fix bugs in policy route pushing, where the old and new routes would
    share a parent pointer causing their policy filters to be overwritten
    and the wrong filters run.

commit a64acd80bd8fdc2e06cbc707dd918a8026c32661
Author: mjh <mjh>
Date:   Fri Sep 22 07:11:55 2006 +0000

    Add some more diagnostics - this can later be removed if the code proves stable.

commit 0fb4c71c38e90252b2d5aca6b1faa5f55377b8cc
Author: mjh <mjh>
Date:   Fri Sep 22 07:11:17 2006 +0000

    Extend test to illustrate policy route pushing bug.

commit 061b548109b5a75354eff7b6552862b70a884357
Author: mjh <mjh>
Date:   Thu Sep 21 19:59:48 2006 +0000

    Remove a bogus assert that would probably cause a crash if the import
    filter dropped a route.

commit 38cf810f2eb6c7a6e6c85e12e16fc4bad5e8d600
Author: mjh <mjh>
Date:   Wed Sep 20 22:10:50 2006 +0000

    Yet more debugging information.

commit a7bb32db2999a6ec2fbcf3af0bbb4b7fcf88c6ca
Author: mjh <mjh>
Date:   Tue Sep 19 22:09:37 2006 +0000

    Make sure that PolicyTableSourceMatch's DumpIterator knows which peerings have which DeletionTables running.

commit 49bf2d74dd5c036641138eedadafd64d52edde9f
Author: mjh <mjh>
Date:   Sun Sep 17 16:17:25 2006 +0000

    gather more statistics for debugging

commit f21bfa6502168cd8ecdfe6c389ee01ff1bc225aa
Author: mjh <mjh>
Date:   Sun Sep 17 15:58:28 2006 +0000

    Add new more complex tests for route dumping.  Found no bugs.

commit 7a5c776d5031d03fed11a21a12ddcceb530990d6
Author: pavlin <pavlin>
Date:   Fri Sep 15 18:49:25 2006 +0000

    Added instructions how to increase the maximum amount of socket
    option memory buffer (on Linux) if the number of interfaces is
    notably large (e.g., on the order of 150).
    
    Bug found by:	"Ramu k" <ramu.avula AT gmail.com>

commit 2814058458d7802643cab4fca72675512c409b7a
Author: atanu <atanu>
Date:   Tue Sep 12 22:56:40 2006 +0000

    Remove Control-L characters which were stopping the files being
    included from latex.
    
    Added a XORP header.

commit f43a2887de5be92e4025518970333553f50d7724
Author: pavlin <pavlin>
Date:   Tue Sep 12 18:18:33 2006 +0000

    Added /usr/local/ssl to the list of directories searched for openssl
    installation.

commit 3bc2edc6f67adf13fa86e647e780c8cb1caf4c97
Author: pavlin <pavlin>
Date:   Tue Sep 12 08:58:42 2006 +0000

    Fix a typo: "libxorp/utils.h" -> "libxorp/utils.hh"

commit 80f7cb519a8316869ab611de25eae563938eed4b
Author: bms <bms>
Date:   Tue Sep 12 08:24:20 2006 +0000

    Update comments so as to explain the complexity behind this
    class and how it evolved.

commit c5b7c084e53a1be956df489b6c8f7f0a513fdfc2
Author: pavlin <pavlin>
Date:   Tue Sep 12 07:34:28 2006 +0000

    Add missing #include "libxorp/utils.h"

commit ff5d0f3fa99b7bc00e648968a8c9722b60518531
Author: pavlin <pavlin>
Date:   Tue Sep 12 07:30:00 2006 +0000

    Add "UNUSED(cmsg_data)" compilation guard in case cmsg_data
    is not used (e.g., for Windows).

commit bef797fe859d9328846187fe1607df2bcd8adcfb
Author: pavlin <pavlin>
Date:   Mon Sep 11 21:39:21 2006 +0000

    Reverse-back the previous commit, because we don't need anymore
    to explicitly specify the task prority and weight (if they have the
    default values).

commit 7f11b014380abe4058986b687e2c557c04a20b75
Author: pavlin <pavlin>
Date:   Mon Sep 11 21:36:48 2006 +0000

    Add default values for the priority and the weight when
    adding a new task to the eventloop.

commit b4ba88ee30955bfe338928c4544dc28c919b9afe
Author: bms <bms>
Date:   Mon Sep 11 20:51:56 2006 +0000

    Fix compile on Windows Server 2003.
    With this change, test_asyncio runs to completion with
    Mark's scheduler changes.

commit 90f8d3c6a0292c74a5eaff5c49e2238fd87dbf3e
Author: pavlin <pavlin>
Date:   Mon Sep 11 17:50:50 2006 +0000

    Use the one-time task mechanism to schedule the Windows I/O tasks
    instead of a zero-time timer.
    
    Submitted by:	Bruce M. Simpson

commit 3b8e6ccae3c828ce7feffc2a0b686b1b5d378622
Author: pavlin <pavlin>
Date:   Mon Sep 11 17:42:05 2006 +0000

    Add/enable the mechanism to schedule a task that will be executed only
    once:
    
    EventLoop::new_oneoff_task(const OneoffTaskCallback& cb, int priority,
    int weight);
    
    The OneoffTaskCallback has void return type, unlike the
    RepeatedTaskCallback that has bool return type.
    
    Requested by:	Bruce M. Simpson

commit e6c6cfabda017ea7d1154427e82e34edb49d3e8e
Author: pavlin <pavlin>
Date:   Fri Sep 8 23:55:51 2006 +0000

    Update the copyright year, because it should be starting with 2006
    when the file was created first.

commit 02c1406f65acd120c20bb2a07cefa8dd08fce39f
Author: mjh <mjh>
Date:   Fri Sep 8 22:55:24 2006 +0000

    (Hopefully) fix policy route dumping bug that has been causing xorp12 to crash.
    
    Patch also includes a new test suite that illustrates the bug.

commit 75e2c679ba3c087adb534791194e116d0bca0d82
Author: mjh <mjh>
Date:   Fri Sep 8 18:45:58 2006 +0000

    Add an isolation test for policy.
    
    This was supposed to reveal what was going wrong with the recent
    xorp12 crashes, but in fact it reveals that policy seems to be working
    OK.  Still, it's good to have the test anyway.

commit 90a429313513f3fb2fb0471446340cc19823ef2a
Author: mjh <mjh>
Date:   Fri Sep 8 18:44:34 2006 +0000

    Move policy framework to use XorpReasonedException to allow the
    standard XORP exception handling framework to print out what happened
    where.  Greatly eases debugging of code that uses policy.

commit aece864df8903ad002c7939bba153de4fb12a696
Author: pavlin <pavlin>
Date:   Fri Sep 8 15:42:34 2006 +0000

    Add a FEA-related release note.

commit 0603934b06c4f526d427a01d8a224bcb5ada1e06
Author: pavlin <pavlin>
Date:   Fri Sep 8 15:32:02 2006 +0000

    * Pull in advance the current interface configuration in the beginning
      of the transaction processing
      (XrlInterfaceManager::commit_transaction()), in case it is needed by
      some of the transaction operations.
    
    * Use the already pulled interface configuration (instead of pulling
      the configuration on-the-fly) inside the processing of the
      ConfigureInterfaceFromSystem operation dispatch.
    
      This fixes a performance issue when configuring a large number of
      interfaces/VLANs (e.g, 100) each of them with "default-system-config"
      configuration statement.
    
    Note that after the above fix, the time to process an interface-based
    transaction is still O(N), hence eventually the transaction processing
    might still timeout for a (much) larger number of configured interfaces.
    The solution for the O(N) processing time is to remove the
    "start_commit/end_commit" %modinfo methods inside the
    etc/templates/interfaces.tp rtrmgr template file, and use similar
    transaction mechanism only inside the "interfaces/interface"
    configuration node.
    
    Bug found by:	"Ramu k" <ramu.avula AT gmail.com>

commit 92e71ade98bc5bc0e6744ff1bf6792edc2ee6ab9
Author: mjh <mjh>
Date:   Thu Sep 7 08:45:27 2006 +0000

    Apply previous fix to the other place it was needed.
    Bug found by:	Atanu

commit f2f3e340e2f14552af6f3cae6cb54741fa3e2056
Author: mjh <mjh>
Date:   Thu Sep 7 08:10:10 2006 +0000

    Fix bug in queue running code, where after the head of the queue was a
    replace operation, we'd always free up queue entries in pairs, even if
    the rest of the queue were not replace operations.

commit ec505bca7b191f2f84f6efc063854512484727af
Author: pavlin <pavlin>
Date:   Wed Aug 30 21:23:36 2006 +0000

    Fix the mechanism inside RtmUtils::get_sock_mask_len() for
    calculating the network mask length for an IPv6 mask address.
    
    Note that sometimes the "struct sockaddr *" pointer might not
    contain the whole mask (i.e., the octets with zero at the end).
    Hence, we need to copy the mask to a "sockaddr_in6" storage that
    has been zeroed in advance, and then calculate the network mask.
    This solution is derived from the FreeBSD-6.1 route(8) source code
    (inside file route.c, function routename()).
    
    Bug found by:	"A.H.T" <ahthamrin at gmail.com>

commit ee9d6c65dac0db033326fa66ab515a3eb2773cbf
Author: pavlin <pavlin>
Date:   Wed Aug 30 16:46:08 2006 +0000

    Conditionally define some of the netlink-related macros that are not
    defined properly and might generate alignment-related compilation
    warning on some architectures (e.g, ARM/XScale) if we use
    "-Wcast-align" compilation flag.
    
    The redefined macros are:
    NLMSG_NEXT, RTA_NEXT, IFA_RTA, IFLA_RTA, RTM_RTA.
    
    The local version of each macro has the prefix "XORP_" in front of
    the name.

commit ca1996e1e1b8bc2d7d73f806f247048106230a82
Author: pavlin <pavlin>
Date:   Wed Aug 30 16:07:18 2006 +0000

    Add configure-time check whether the build environment has broken
    netlink-related macros: NLMSG_NEXT, RTA_NEXT, IFA_RTA, IFLA_RTA,
    RTM_RTA.
    
    Some of the netlink related macros are not defined properly and might
    generate alignment-related compilation warning on some architectures
    (e.g, ARM/XScale) if we use "-Wcast-align" compilation flag:
    
    "warning: cast increases required alignment of target type"
    
    We test for that warning and define a flag for each of the macros that
    might need to be redefined.

commit d0b97c4f0ca64e1e3722e6fd453ed6745e01effb
Author: pavlin <pavlin>
Date:   Wed Aug 30 08:26:42 2006 +0000

    Use AlignData::payload_by_offset() method as appropriate where the
    pre-computed offset is known to point to memory that is aligned.

commit db0624fa93e97a8447e761949c96c22c90004120
Author: pavlin <pavlin>
Date:   Wed Aug 30 08:11:46 2006 +0000

    Use AlignClass to solve buffer data alignment issue when processing
    data received from the RTM.

commit d264a285156df3e1c22e41c40ab2b6c256507b5e
Author: pavlin <pavlin>
Date:   Wed Aug 30 08:10:46 2006 +0000

    Use AlignData::payload_by_offset() method as appropriate where the
    pre-computed offset is known to point to memory that is aligned.

commit 50e4e6f6a8d6173ad642486f550c59824809398f
Author: pavlin <pavlin>
Date:   Wed Aug 30 08:06:20 2006 +0000

    Use an intermediate void pointer to store a pointer to sa_size offset.
    The sa_size offset is aligned, hence we can use a void pointer.
    
    This fixes an alignment-related compilation error.

commit a5fbb916c40e11b192045f2487dafd9151288494
Author: pavlin <pavlin>
Date:   Wed Aug 30 08:00:30 2006 +0000

    Fix a compilation error related to data alignment.

commit 54a1d36ca546520eafe97a60c2f970cf5e4e7ff4
Author: pavlin <pavlin>
Date:   Wed Aug 30 07:46:30 2006 +0000

    Add a new method AlignData::payload_by_offset() that can be used to
    get aligned payload by given offset.
    
    Note that the given offset itself is suppose to point to
    aligned location.

commit b24ae581e25be29242da2b14d438b2e0eaa77325
Author: pavlin <pavlin>
Date:   Wed Aug 30 07:14:28 2006 +0000

    Use AlignClass to solve buffer data alignment issue when processing
    routing socket data received from the kernel.

commit 575b4dd7855ef49734373b19c29232ff72211794
Author: pavlin <pavlin>
Date:   Wed Aug 30 06:43:54 2006 +0000

    Use AlignClass to solve buffer data alignment issue when processing
    netlink or routing socket data received from the kernel.

commit d9c50f907558f4e4cc368dc1358f72d65d051a2c
Author: pavlin <pavlin>
Date:   Wed Aug 30 06:37:39 2006 +0000

    Add a new template class AlignData for aligning buffer data with a
    particular data type.
    
    The technically correct solution is to allocate (using malloc())
    new buffer and copy the original data to it. By definition, the
    malloc()-ed data is aligned, and therefore it can be casted to the
    desired type.
    
    The more efficient solution (but probably technically incorrect),
    is to assume that the first byte of "vector<uint8_t>" buffer is aligned
    similar to malloc()-ed data, and therefore it can be casted to the
    desired type without creating a copy of it.
    
    The desired behavior can be chosen by setting the
    AlignData::_data_is_copied constant to true or false.
    Note that the constant is predefined for all AlignData instances.
    If necessary, the constant can become a variable that can have
    different value for each AlignData instance.

commit 15cab6b254a2abc275e1b472fbd524b5ac74695f
Author: pavlin <pavlin>
Date:   Wed Aug 30 00:39:43 2006 +0000

    * Modify parse_buffer_ifreq() to use a single "vector<uint8_t>" buffer
      argument to pass the data instead of using two arguments: buffer
      pointer and buffer size.
    
    * Rename variable buf_bytes to buffer_bytes

commit 264426d0e2a070cd5ff9af3dd5b33a2caf87f59a
Author: pavlin <pavlin>
Date:   Tue Aug 29 23:56:12 2006 +0000

    Bug fix:  shrink _cache_data to contain only the data copied to it.

commit ff6f0dce03ae46c74259e5d69bed7667b949be52
Author: pavlin <pavlin>
Date:   Tue Aug 29 23:14:07 2006 +0000

    Fix compilation errors for Linux that were introduced with the
    previous commit.

commit 01621f96654f0e9002cd7473de418dc6375090ae
Author: pavlin <pavlin>
Date:   Tue Aug 29 22:42:18 2006 +0000

    Use "vector<uint8_t>" buffer instead of two variables: "uint8_t *"
    pointer and buffer size to pass around the data that is read from
    the kernel.

commit 891e00b737411e10851b3e481f07181d51020cb9
Author: pavlin <pavlin>
Date:   Tue Aug 29 03:03:46 2006 +0000

    Copy the "struct ifreq" data to local copy before processing it.
    
    This fixes an alignment compilation issue.

commit be17e206841fafabbb43101b8ff951c43ff286b0
Author: pavlin <pavlin>
Date:   Tue Aug 29 00:28:48 2006 +0000

    * Use "rta_align_data" void pointer to point to data that is
      RTA_ALIGN()-ed.
    
      This fixes an alignment compilation issue.
    
    * Replace reinterpret_cast with static_cast where appropriate.

commit a426530c651a9d3460bbc4bea525c5b94d9e881f
Author: pavlin <pavlin>
Date:   Mon Aug 28 23:38:43 2006 +0000

    use a void pointer for the NLMSG_DATA() payload, because NLMSG_DATA()
    itself returns aligned value that is also a void pointer.
    
    This fixes an alignment-related compilation error.

commit 4e8f6b519f7e48959cc28fa88e4184c1a1667e15
Author: pavlin <pavlin>
Date:   Mon Aug 28 23:20:26 2006 +0000

    Create a local copy the following structures before accessing their
    fields: "igmpmsg", "mrt6msg", "pim".
    
    This fixes some alignment-related compilation issues.
    
    One possible alternative would be to use new classes
    (say, IgmpmsgHeader) that use the extract_xx() mechanism to extract
    each field from the corresponding offset (e.g., see the IpHeader4
    implementation inside "libproto/packet.hh").
    Such solution is probably an overkill, and it might be even slower
    compared to the memcpy() mechanism.

commit aaa942877ae84d09204767fd7e856d147624dd96
Author: pavlin <pavlin>
Date:   Mon Aug 28 02:53:17 2006 +0000

    Use a void pointer for the CMSG_DATA() payload, because CMSG_DATA()
    itself returns aligned value.
    
    This fixes an alignment compilation issue.

commit 3b3352e0ec77d1eba4dc4824a2ce0d79dbb3f91b
Author: pavlin <pavlin>
Date:   Sun Aug 27 10:38:09 2006 +0000

    Conditionally include  <linux/types.h> only if HAVE_LINUX_TYPES_H
    (instead of HOST_OS_LINUX) is defined at configure-time.

commit 253c54f75b98aaed7a54dc65365978d01e72e94d
Author: pavlin <pavlin>
Date:   Sun Aug 27 07:34:47 2006 +0000

    Fix a cast alignment issue.

commit 3ece4f3a246b67011d34da85dc8eacc7bf061543
Author: pavlin <pavlin>
Date:   Sun Aug 27 07:11:25 2006 +0000

    Fix a cast alignment issue.

commit 5a34bb68057f2fcce2bc92393a83dc972c2a0556
Author: pavlin <pavlin>
Date:   Fri Aug 25 21:14:57 2006 +0000

    Update one of the entries:
    The RTM_SETLINK Linux kernel bug (the IFLA_ADDRESS handling) has been
    fixed in linux-2.6.17.11.

commit 308d9ca491a4f5f0d9aab937f0fa817bb263edad
Author: pavlin <pavlin>
Date:   Fri Aug 25 20:49:15 2006 +0000

    Add a note that either the "xorpsh" binary has to be in the execution
    path, or it should be replaced with "/path/to/xorpsh".
    
    Bug found by:	Chatree Chalothorn <s8066410 AT kmitl.ac.th>

commit 5856ee068d860a52396154c4ea3f1b887ab606b8
Author: pavlin <pavlin>
Date:   Fri Aug 25 02:15:05 2006 +0000

    Add missing "const uint8_t *" casting to the buffer used by
    extract_host_int().

commit 92a071a8be3d0daaad532f033ef60c82b8845ebc
Author: pavlin <pavlin>
Date:   Fri Aug 25 01:29:43 2006 +0000

    Use extract_host_int() and embed_host_int() to read/write int
    value to a buffer (in host order).
    
    We need to use those methods instead of (int *) casting to avoid
    byte alignment issues.

commit 6793ff0609d449a23c275e508bc4e494862ca1e4
Author: pavlin <pavlin>
Date:   Fri Aug 25 01:15:33 2006 +0000

    Add functions extract_host_int() and embed_host_int() to extract/embed
    int value in host order.
    
    Those are needed when processing IPv6 cmsghdr ancillary data objects.

commit ce4036b1ed1cffb7f508647cccdc9813be37ae16
Author: pavlin <pavlin>
Date:   Fri Aug 25 01:04:21 2006 +0000

    Replace the usage of (struct ip *) and (struct ip6_hdr *) overlay with
    IpHeader4 and IpHeader6 based mechanism:
    
    * Use IpHeader4 and IpHeader6 to access IPv4 and IPv6 header fields.
    * Use IpHeader4Writer to write IPv4 header fields.

commit 41689c1eaed15838736541633f69e287d7d071d5
Author: pavlin <pavlin>
Date:   Thu Aug 24 19:00:59 2006 +0000

    Update some of the comments related to raw sockets.

commit 65a75e451f9234d78dd89b6e25fc6459e2638bc9
Author: pavlin <pavlin>
Date:   Thu Aug 24 18:57:27 2006 +0000

    * Add new methods IpHeader4::ip_len_host() and
      IpHeader4Writer::set_ip_len_host() that can be used to extract and
      embed the ip_len field that is stored in host order.
    
      The reason we need those methods is because on some platforms
      the raw IPv4 packets received from the kernel have the ip_len
      field stored in host order (e.g., FreeBSD and NetBSD, older versions
      of OpenBSD and probably DragonFlyBSD).
    
    * Fix some of the kdoc comments.

commit 59516feb3ec6051ed92df47060c14a8949def649
Author: pavlin <pavlin>
Date:   Thu Aug 24 18:36:53 2006 +0000

    Add new functions that can be used to extract and embed integers
    to a buffer by preserving the byte ordering in host order:
    extract_host_8, embed_host_8, extract_host_16, embed_host_16,
    extract_host_32, embed_host_32.
    
    Note that we don't define extract_host_24() and embed_host_24(),
    because 3 octets of data might occupy either 3 or 4 octets (depending
    on the byte ordering). Hence, extract_host_32() and embed_host_32()
    should be used instead.

commit cbe18d4debee20b31c18e6eeeab109ebe10ca107
Author: pavlin <pavlin>
Date:   Wed Aug 23 17:35:17 2006 +0000

    Modify test_rawsock4.cc to use the existing inet_checksum()
    checksum implementation from "libproto/checksum.[h,c]" instead
    of using a local copy.

commit 0f0b7775ee26d52a94d940c40b8891be8d9c0374
Author: pavlin <pavlin>
Date:   Wed Aug 23 17:30:04 2006 +0000

    Minor edits.

commit 01efd11030045c9afd743d62b995ae98b395c3e6
Author: pavlin <pavlin>
Date:   Wed Aug 23 08:24:42 2006 +0000

    Add an errata FEA entry related to modifying MAC addresses using
    the RTM_SETLINK netlink mechanism.

commit f337a373a5acebff3886bb61179968b1c4c14aba
Author: pavlin <pavlin>
Date:   Wed Aug 23 08:15:16 2006 +0000

    Reverse the previous commit.
    When setting the MAC address using the RTM_SETLINK netlink mechanism,
    the attribute payload indeed is suppose to be a MAC address (only).
    
    The Linux kernel (at least version 2.6.17.10) indeed had a bug which
    required the MAC address to be encapsulated inside "struct sockaddr".
    See the following email thread for details:
    http://www.spinics.net/lists/kernel/msg498873.html
    
    The Linux kernel has been fixed, and the fix will be available
    with kernel 2.6.18 (if not earlier).
    
    In the mean time, the simplest work-around to have the FEA working
    with kernels that aren't fixed is to replace "#ifdef RTM_SETLINK"
    with "#if 0" inside IfConfigSetNetlink::set_interface_mac_address().

commit 17bbf6042c67a0526039c6090a728af79e777860
Author: pavlin <pavlin>
Date:   Wed Aug 23 07:10:32 2006 +0000

    Use IpHeader4 class to manipulate the IPv4 header instead of
    using "struct ip" casting.
    
    This fixes alignment compilation error for some architectures.

commit be4673d8f8ea85c055f9edaadb7625fcf36af9e0
Author: pavlin <pavlin>
Date:   Wed Aug 23 07:05:40 2006 +0000

    Add method data() to class IpHeader4, IpHeader4Writer, IpHeader6,
    IpHeader6Writer to access the buffer data.

commit 14ce86888863de5bc4941b2d82089bc39941c5fb
Author: pavlin <pavlin>
Date:   Wed Aug 23 06:14:09 2006 +0000

    Add test_packet to the list of files ignored by CVS.

commit b5e9968abfe95a35dbbb52496845b5ba6c9f229e
Author: pavlin <pavlin>
Date:   Wed Aug 23 06:13:45 2006 +0000

    Add test_packet.cc test program for testing various classes, etc
    defined inside libproto/packet.hh.

commit 87ea6e62fa7d32953680bf188c0bf53b309d507c
Author: pavlin <pavlin>
Date:   Wed Aug 23 06:11:42 2006 +0000

    * Add classes IpHeader4 and IpHeader4Writer to reading and writing
      IPv4 header (stored in a data buffer).
    
    * Add classes IpHeader6 and IpHeader6Writer to reading and writing
      IPv6 header (stored in a data buffer).

commit b971c88da6566dca3029126f1dd59d1c14697b82
Author: pavlin <pavlin>
Date:   Wed Aug 23 06:09:17 2006 +0000

    * Fix a comment.
    * Minor nits.

commit 21d4e02f4fb10fe076a09b7a2bb4ab15e0ba6538
Author: atanu <atanu>
Date:   Tue Aug 22 23:46:01 2006 +0000

    Remove a confusing comment in delete_route() that was copied from
    add_route().
    
    Bug found by:	Yi Wang

commit a43e58c0544881d6b219637343fb00136a305adc
Author: pavlin <pavlin>
Date:   Mon Aug 21 19:38:17 2006 +0000

    Fix a bug in case the TERM environmental variable is not set.
    
    Submitted by:	Michael Larson <mike AT vyatta.com>

commit f13c35cad4e97b73559c04eb287e865b3a0c3817
Author: pavlin <pavlin>
Date:   Sun Aug 20 06:19:27 2006 +0000

    Refactor the implementation of the following classes such that we
    don't use each of them as an overlay with a data buffer:
    RipPacketHeader, PacketRouteEntry, PlaintextPacketRouteEntry4,
    MD5PacketRouteEntry4, MD5PacketTrailer
    
    Instead, we use a constructor that initializes internal pointers
    (for each field) to point to the appropriate position in the data
    buffer.
    
    This change fixes some pointer casting issues.

commit 60d80609cd98ca3293e74f0b1e958ddb38c6fee6
Author: pavlin <pavlin>
Date:   Fri Aug 18 23:29:47 2006 +0000

    Add release notes for FEA/MFEA and FIB2MRIB.

commit 90168162e76f7441f76293e03b8eb83b64ee2c04
Author: pavlin <pavlin>
Date:   Fri Aug 18 23:24:10 2006 +0000

    Fix the mechanism for obtaining the interface name (toward the
    destination) for a routing entry in case the RTAX_IFP info is not
    available, but the if_index (rtm->rtm_index) is available.

commit 2c6a0121aad515b588ba833df4ff634d82abdae9
Author: pavlin <pavlin>
Date:   Fri Aug 18 22:26:23 2006 +0000

    Update the kernel_ipv6_adjust() implementation to reflect the fact
    that IPv6 interface-local multicast addresses also need adjustment
    (as per KAME).

commit b42359e2e5be1eed3daee3678dea7e2dd7f97f01
Author: pavlin <pavlin>
Date:   Fri Aug 18 22:22:30 2006 +0000

    Add a mechanism to set (when possible) the sockaddr_in6.sin6_scope_id
    field when copying IPv6 or IPvX address to sockaddr_in6 structure.
    
    In case of KAME the local interface index (also the link-local
    scope_id) is encoded in the third and fourth octet of an IPv6
    address (for link-local unicast/multicast addresses or
    interface-local multicast addresses only).

commit 70ca4bb6b36ece1cecd00b4b6b0794180e6f4a46
Author: pavlin <pavlin>
Date:   Fri Aug 18 22:14:48 2006 +0000

    * Rename "node-local" multicast addresses to "interface-local"
      as per RFC-3513.
    
    * Keep the original IPv{4,6,X}::is_nodelocal_multicast() method
      (for backward compatibility).

commit c53518b99284f8083d25cab5f6908821a4a6288f
Author: pavlin <pavlin>
Date:   Fri Aug 18 22:12:21 2006 +0000

    Add test_task to the list of files ignored by CVS.

commit add699e5c355e674a112576c21e254d60c936b29
Author: pavlin <pavlin>
Date:   Fri Aug 18 18:04:32 2006 +0000

    Add a check whether struct sockaddr_in6 has field sin6_scope_id

commit bb91e73b8ea793b021ab67a5d90288cea6e57f79
Author: pavlin <pavlin>
Date:   Fri Aug 18 07:39:50 2006 +0000

    * Rename MD5PacketTrailer field _data to _auth_data
    * Rename MD5PacketTrailer methods data() and data_bytes() to
      auth_data() and auth_data_bytes()

commit 53736f9aa2ad6a5d96caee1a02b82899082e8488
Author: pavlin <pavlin>
Date:   Fri Aug 18 05:49:13 2006 +0000

    Add a note that the net-snmp code itself should be compiled with
    the -DNETSNMP_NO_INLINE +compilation flag defined.
    
    Submitted by:	Michael Larson <mike AT vyatta.com>

commit 783650324ebc40f4ecca2ca48ab471b1c708c656
Author: pavlin <pavlin>
Date:   Fri Aug 18 05:23:16 2006 +0000

    * Fix the logic when deciding that "add_route" from the FEA
      is actually "replace_route".
    
    * Fix the Fib2mribNode::update_route() method in case the next-hop
      router is one of my own addresses.
      If the next-hop router address is one of my own addresses, and if it
      belongs to the subnet of two or more diferent interfaces (e.g., in case
      of IPv6 link-local addresses), the the interface/vif information
      was not updated properly.
    
    Bug found by:	"A.H.T" <ahthamrin AT gmail.com>

commit abf22fa4101ba429d24fda0813b7faf47068d077
Author: pavlin <pavlin>
Date:   Fri Aug 18 04:18:28 2006 +0000

    Add methods IfMgrIfTree::is_my_addr() to find if an address belongs
    to one of the interfaces.

commit 3ab3915d0395b22ac0b81eef1b891490c7ba2d62
Author: pavlin <pavlin>
Date:   Fri Aug 18 01:50:30 2006 +0000

    * Add constant SIZE and method size() to each of the classes related
      to the RIP/RIPng packet format.
    
    * Use the above constant and method as appropriate instead of
      sizeof() when calculating the size of each field in the RIP/RIPng
      packet format.

commit 11ca054585a840278124bd11eac669d4017d3bae
Author: mjh <mjh>
Date:   Thu Aug 17 23:04:18 2006 +0000

    correct erroneous log message

commit bbb95685a26e56c2c7e8fce37d022860b2dc228d
Author: pavlin <pavlin>
Date:   Thu Aug 17 22:46:17 2006 +0000

    Add a temporary debugging code to  print any errors and catch any
    exceptions when scheduling a timer inside
    RunCommandBase::wait_status_changed().
    This debugging code is needed to track occasional xorpsh coredumps
    (and probably related recursive malloc() issue).

commit 57da6debf866304d7466c0c4fc645b198fbb2321
Author: mjh <mjh>
Date:   Thu Aug 17 17:40:54 2006 +0000

    Add historical logging to RibIn too.  Mostly this is so we can see
    which events are caused by the IGP nexthop changing.

commit 90fac88c8a8d5e2815eb2b5b410b396b5cb650db
Author: mjh <mjh>
Date:   Thu Aug 17 17:21:52 2006 +0000

    Add audit trail capability to FanoutTable and CacheTable - we log the
    last 100 interesting events and dump them during a crash dump.  This
    is an attempt to provide a recent history to discover what caused an
    event to occur.

commit ff70566b1ce8444fa200180ef788aad2fdbb6186
Author: pavlin <pavlin>
Date:   Wed Aug 16 23:08:06 2006 +0000

    Remove the local implementation of packX/unpackX tools to write/read
    integers in host/network order.
    
    Instead, use the existing embed_XX() and extract_XX() mechanisms
    from "libproto/packet.hh"

commit 4c3189a37ce314a2ddc67ccc34c05bcd84203b85
Author: pavlin <pavlin>
Date:   Wed Aug 16 22:47:47 2006 +0000

    Add test_stcppf to the list of test programs.

commit ffb9c6129f4db734a574987ed7f402ce777fe609
Author: pavlin <pavlin>
Date:   Wed Aug 16 22:45:51 2006 +0000

    Re-generate the autogenerated files (Makefile.in and friends)
    with the autoconf/automake versions listed in xorp/README.

commit 097b6995620919a601d46066650b49eeac1e0374
Author: pavlin <pavlin>
Date:   Wed Aug 16 22:43:09 2006 +0000

    Add test_stcppf to the list of files ignored by CVS.

commit 3e9c7bebbc904ec0b6d706012e93ea69a86d0038
Author: pavlin <pavlin>
Date:   Wed Aug 16 22:41:58 2006 +0000

    Fix the STCPPacketHeader test so it can compile
    (so far it wasn't listed inside Makefile.am).

commit 5d163934f49037529aec897a98e485891beaf5d9
Author: pavlin <pavlin>
Date:   Wed Aug 16 22:10:50 2006 +0000

    Refactor the STCPPacketHeader implementation such that we don't
    use it as an overlay with a data buffer.
    Instead, we use a constructor that initializes internal pointers
    (for each field) to point to the appropriate position in the data
    buffer.
    
    This change fixes some pointer casting issues.
    
    Approved by:	Atanu Ghosh

commit ed11615b5113b1c1a2d73db856a26531e17a329a
Author: atanu <atanu>
Date:   Wed Aug 16 22:10:13 2006 +0000

    Change references to "localhost" to "127.0.0.1", on some operating
    systems "localhost" resolves to the IPv4 "127.0.0.1" on others it
    resolves to IPv6 "::1". Both "127.0.0.1" and "::1" are acceptable
    resolutions of "localhost" but it seems on MacOS 10.4.7 (intel) the
    resolution is not consistent, causing the regression tests to fail.
    
    Requested by:	Mark Handley

commit ea13db3b3a548d0d030cea86262e43a457d7f0f7
Author: mjh <mjh>
Date:   Wed Aug 16 21:41:38 2006 +0000

    Add extra sanity check.

commit 568f2fee8ad88e664cd84805fe3a450bbc3a6e6c
Author: pavlin <pavlin>
Date:   Wed Aug 16 18:46:30 2006 +0000

    Use the more appropriate STCPPacketHeader::header_size() instead
    of sizeof(STCPPacketHeader) to calculate the size of STCP XRL header.

commit 87912976fc2bae2c097d857a1ffff9efdf73dfb9
Author: pavlin <pavlin>
Date:   Wed Aug 16 18:45:24 2006 +0000

    * Add constant STCPPacketHeader::SIZE and static method
      STCPPacketHeader::header_size() that returns the size of the
      STCP XRL header.
    
    * Use the more appropriate STCPPacketHeader::header_size() instead
      of sizeof(STCPPacketHeader) to calculate the size of STCP XRL header.

commit ebde5b16c9fe25be024424a61745f6fd83c13a21
Author: pavlin <pavlin>
Date:   Wed Aug 16 18:09:28 2006 +0000

    * Remove unused STCPPacketHeader() constructor.
    
    * Minor cleanup.

commit d5d81b6dcfe8e12f5e820f919c99c85839a592c4
Author: pavlin <pavlin>
Date:   Wed Aug 16 06:36:03 2006 +0000

    Remove unused field XrlPFSTCPSender::_sph

commit 35e970266329020e28457b3d6ec60faff7713ff4
Author: pavlin <pavlin>
Date:   Wed Aug 16 01:15:04 2006 +0000

    * Add a missing check that the prefix length is zero for routing
      table request entry (see RFC 2080, Section 2.4.1 Request Messages)
    
    * Eliminate a problematic uint8_t -> uint32_t pointer casting.

commit ab2e39d2f8a2295a4d5040fac6dab43024f279e9
Author: pavlin <pavlin>
Date:   Wed Aug 16 00:09:26 2006 +0000

    Minor edits: spaces, etc.

commit ee84228834cf2a6ddb4412ce30c2147d03005b59
Author: pavlin <pavlin>
Date:   Wed Aug 16 00:08:56 2006 +0000

    Update the name of the header file guard:
    __CRASH_DUMP_HH__ -> __BGP_CRASH_DUMP_HH__

commit 819c5cf4ba1c72cdd6bc9d653e535f402b4b65c3
Author: pavlin <pavlin>
Date:   Tue Aug 15 23:15:30 2006 +0000

    Fix the test cases so they work for both little and big endian
    architectures.

commit 6fe89c05508e7c8fc42e67e0775fe305dab50847
Author: pavlin <pavlin>
Date:   Tue Aug 15 23:14:10 2006 +0000

    Update the kdoc comments.

commit 8f7e58bc5d8d8960926cd608159e1c527cd39423
Author: pavlin <pavlin>
Date:   Tue Aug 15 23:13:22 2006 +0000

    Add test_checksum to the list of files ignored by CVS.

commit 1d07d5c4ad5a6fa67f6bba07903f0ee04edfc8ce
Author: mjh <mjh>
Date:   Tue Aug 15 23:04:40 2006 +0000

    New files for BGP crash dump framework.

commit 28195dddb36ff44c1d5bea03e3206a207fdbc5c9
Author: mjh <mjh>
Date:   Tue Aug 15 23:03:51 2006 +0000

    Add a crash dump framework to BGP.  If BGP encounters an inconsistency
    in CacheTable that would cause an assertion failure, it will now dump
    all its routiing tables, deletion tables, cache tables, and fanout
    table queue to a dump file before exiting.  Hopefully this will make
    debugging some subtle failures a little simpler.

commit 622cfa741cd84f9d78b97730c7454b749b35da3d
Author: mjh <mjh>
Date:   Tue Aug 15 08:39:31 2006 +0000

    Correct reference output for scheduler changes
    Bugzilla URL:
    Bug found by:
    Submitted by:
    Requested by:
    Reviewed by:
    Approved by:
    Obtained from:

commit 2d3c93e17dcce213d171edef12cdae1dc6367e9e
Author: pavlin <pavlin>
Date:   Tue Aug 15 04:38:08 2006 +0000

    Add missing "libxorp/xorp.h" include, and refactor the list of
    the included header files.

commit c5120ba67cad37476d2ef1c4d3eccdf5ac5da641
Author: pavlin <pavlin>
Date:   Tue Aug 15 04:31:14 2006 +0000

    Fix an alignment compilation problem.

commit 8ac0f33198d98dd8cc790c5b5b0fff62b115580c
Author: pavlin <pavlin>
Date:   Tue Aug 15 02:36:54 2006 +0000

    * Remove the mrt/inet_cksum.[h,c] implementation, because it is
      not needed anymore.
    
    * Modify all code that used mrt/inet_cksum.[h,c] to use the new
      libproto/checksum.[h,c] checksum implementation.
    
    Note that the new implementation doesn't have the byte alignment
    issue of the old implementation.

commit d34f202f1c4a7490ed93d3a2d594fd4f9fda1ce0
Author: atanu <atanu>
Date:   Tue Aug 15 01:39:57 2006 +0000

    Remember to switch to using the checksum routine in libproto.

commit c73b95bdf7a417bedd71890cec824c243bb3f330
Author: pavlin <pavlin>
Date:   Tue Aug 15 01:10:51 2006 +0000

    * Add a common placeholder for checksum implementations.
      Currently, the only implemented checksum is the Internet Protocol
      family header checksum.
    
    * Add test cases for the Internet Protocol family header checksum.

commit ee0b367d390f16311e3da76930af7dbfef00fd3e
Author: pavlin <pavlin>
Date:   Mon Aug 14 22:37:11 2006 +0000

    Use XLOG_WARNING() instead of fprintf(stderr) to print a warning
    if the event processing is behind schedule.
    
    Requested by:	Atanu Ghosh

commit 338fe63994b10a102f3dc137739b83da63250664
Author: pavlin <pavlin>
Date:   Mon Aug 14 21:02:03 2006 +0000

    Update the test_dump.reference file to match the sequence of
    events after the rewrite of the XORP scheduler.
    
    Submitted by:	Mark Handley

commit f3bdc23284cc8802c857bffd456a9b85c0e5cc70
Author: pavlin <pavlin>
Date:   Sat Aug 12 08:32:27 2006 +0000

    Add a missing type declaration for variable "result".

commit 90fb40dfd83fa5923da1fa20c35a22e44b7b100e
Author: pavlin <pavlin>
Date:   Sat Aug 12 08:25:58 2006 +0000

    Include "libxorp/task.hh" instead of the non-existing
    "libxorp/priority.hh".

commit 2e8cec06efc5aa96dbaa5f8047f88d698e9c913c
Author: pavlin <pavlin>
Date:   Sat Aug 12 01:08:17 2006 +0000

    Update the copyright year:
    "2001-2006" -> "2006"
    
    Eventually, those templates will be used for new files created in the
    current year, hence the previous years don't apply.

commit 52d6695d0f748a77f25f3381d60173b596faf668
Author: pavlin <pavlin>
Date:   Sat Aug 12 01:05:02 2006 +0000

    * Update the script to make it easier to update copyright
      messages for a single year like "(c) 2006".
    
    * Update the script so it is ready for the next year (2007).

commit b783adc7e713793dbd9b74387c3415eba80288de
Author: pavlin <pavlin>
Date:   Sat Aug 12 00:49:12 2006 +0000

    Reverse back the copyright message to the original year when the
    files were added:
    2001-2006 -> 2006
    
    Requested by:	Mark Handley

commit fda5f5b6687804d3bd722cc468d681f6f521daa1
Author: pavlin <pavlin>
Date:   Sat Aug 12 00:36:51 2006 +0000

    Remove duplicated file entries.

commit 9b1b3479a556c027cef7bd5a4537aa37caf3e73b
Author: pavlin <pavlin>
Date:   Sat Aug 12 00:34:00 2006 +0000

    Minor cleanup.

commit 6bfe0ee1b6728ed2da23ac6d1fcddd7876752858
Author: pavlin <pavlin>
Date:   Sat Aug 12 00:32:25 2006 +0000

    Replace calls to "EventLoop::timers_pending()" with
    "EventLoop::events_pending()"

commit 877b03287726f67aab408a5274ebc439f60a764f
Author: pavlin <pavlin>
Date:   Fri Aug 11 22:20:03 2006 +0000

    Minor cleanup.

commit ba95b7c22120b0d23d3ec706f4fa286db3634ccd
Author: pavlin <pavlin>
Date:   Fri Aug 11 22:12:43 2006 +0000

    Misc cleanup.

commit 2ccc01ea9dbf8b10fd16cc542032d83b76a6e834
Author: pavlin <pavlin>
Date:   Fri Aug 11 18:07:19 2006 +0000

    Cleanup the Round-robin queue implementation:
     - Rename RoundRobin to RoundRobinQueue
     - Rename RoundRobinBase to RoundRobinObjBase
     - Move the implementation of RoundRobinObjBase::link() and unlink()
       to RoundRobinQueue::link_object() and unlink_object()
     - Remove the "friend" association between RoundRobinQueue and
       RoundRobinObjBase
     - Rename TaskList::find_roundrobin() to find_round_robin()
     - Various nits

commit ee63b0daa49e9548c7b1e97e2aa3c647b2a412f3
Author: pavlin <pavlin>
Date:   Fri Aug 11 05:59:05 2006 +0000

    * Move the priority defined levels and weights for XORP tasks
      to class XorpTask.
    
    * Rename those levels with more systematic names.

commit 600922517eb74f6aecb828ffe287b4ab5d4544e8
Author: pavlin <pavlin>
Date:   Fri Aug 11 01:17:46 2006 +0000

    Remove extra qualification 'XorpTask::' on member 'XorpTask'.

commit a1b9d7989b6be6a54e40ef6a4399da27102a6419
Author: pavlin <pavlin>
Date:   Fri Aug 11 01:09:49 2006 +0000

    * Add a fix related to the roundrobin.cc -> round_robin.cc renaming.
    * Remove duplicated file entry.

commit a8e2ce63dadbbe122d1a1cc998bac3a283fef7d4
Author: pavlin <pavlin>
Date:   Fri Aug 11 01:04:19 2006 +0000

    Rename "libxorp/roundrobin.hh" and "libxorp/roundrobin.cc" to
    "libxorp/round_robin.hh" and "libxorp/round_robin.cc" respectively.
    
    Note that the original files are copied internally inside CVS,
    so the CVS history is not lost.

commit f56dd8bb4935e131abd03cf8d6a0b28113576554
Author: pavlin <pavlin>
Date:   Fri Aug 11 00:57:38 2006 +0000

    Add a priority scheduler to XORP.
    
    [Below is the original (slightly modified) description from the
    author: Mark Handley.
    In the future, the priority scheduler will be described in details
    in some of the XORP documents.]
    
    Old Scheduler:
       Each time eventloop:run() is called:
       1. Process all selectors that are not blocked.
       2. Process all timers that have expired.
    
    The problem with this is that when a process becomes overloaded, it
    has no way to prioritise important tasks (like keepalives to the
    finder) over unimportant stuff like background garbage collection.
    Thus with BGP, if you have too many peers the finder sometimes
    declares BGP dead.   Also there's a real possibility of processing
    input faster than output, resulting in unbounded temporary queues.
    
    So, in the new scheduler, there is a new XorpTask class, which is
    intended to get background tasks that don't need to happen at specific
    times off the TimerList (so they won't interfere with proper timers).
    There is also priority levels for timers, selectors, and tasks.
    Finally, there are scheduling weights for tasks, so some tasks can
    be processed more frequently that other tasks at the same priority
    level.  Basically tasks at each priority level are procesed using
    Weighted Round Robin scheduling.  In the long run, selectors should
    probably use WRR too, but currently they don't.  Timers obviously
    don't have weights - this wouldn't make any sense - they just go off
    at the relevant time.
    
    So, each time eventloop::run() is called, only one event will be processed.
    
    The timers, selectors, and tasks are polled to find the highest
    priority runnable event from each category (timer, selector, or task).
    If more than one category has the same highest priority, then only
    one event is run;  a timer, or if no timers runnable at that priority,
    then a selector, or if no selectors runnable at that priority then a
    task.
    
    Note that a high priority selector or task can starve lower priority
    selectors, tasks and timers if it's always runnable.  Anything higher
    that default priority should only be used with care, and only then for
    events that are bounded in number.
    
    Zero-second timers should now NOT be used - a XorpTask should be used
    instead. They are still present in the code in quite a few places, but
    they should be discouraged as they can starve selectors.
    
    Normally the default priority should be used for timers.  If timers of
    different priorities are mixed, they won't necessarily go off in time
    order - a high priority timer can go off before an earlier low
    priority timer if the process is heavily loaded.
    
    The aim to make the defaults sensible, so almost all existing code
    can run unchanged. However, BGP has been to use non-default
    priorities for many tasks to improve its overload behaviour.
    
    XRL Keepalive timers have a very high priority to ensure they always
    happen.  No other event has such a high priority by default.
    
    AsyncFileWriters have a slightly higher than default priority by
    default.  This is because getting output out of a process generally
    frees up temporary state, so it's usually better to write before
    reading.  The default priority can be overwritten of course.
    
    In the end, it should be possible to get much improved robustness by
    careful use of priorities and weights.  Though, it might take a
    while to tune things properly.
    
    Submitted by:	Mark Handley

commit ae5c90190cebb1b21eebbfc0dae6929fefa14d90
Author: pavlin <pavlin>
Date:   Thu Aug 10 23:14:40 2006 +0000

    Remove "struct fixed_header" and use the extract_xx() mechanism
    to extract info about the BGP common header.
    
    This fixes some byte alighnment issues.
    
    Approved by:	Atanu Ghosh

commit aa2f7c0f160d212eb1d4ac0d2c49360985a5b8a5
Author: mjh <mjh>
Date:   Thu Aug 10 22:11:22 2006 +0000

    New XorpTask class to be used in place of zero-second timers

commit a3999173f0022f4355bb3dc6216e226918c8f7c1
Author: mjh <mjh>
Date:   Thu Aug 10 22:07:27 2006 +0000

    New files to implement a task list, in place of using zero second timers.

commit 8ae62eb73821f36212aec0c599463891ffc7fb9c
Author: mjh <mjh>
Date:   Thu Aug 10 22:05:40 2006 +0000

    New files to be used by priority scheduler.

commit 5dd4afa9184634bbed1852e007e401770db61763
Author: pavlin <pavlin>
Date:   Thu Aug 10 21:07:11 2006 +0000

    * Move various BGP packet related constants to class BGPPacket.
    
    * Add new constants MARKER_OFFSET, LENGTH_OFFSET and TYPE_OFFSET,
      that can be used to access the corresponding fields inside
      the common BGP header.
      Those constants are not used (yet).
    
    Approved by:	Atanu Ghosh

commit e0407abbba38f5586aa5ea9e1785876928b1b503
Author: pavlin <pavlin>
Date:   Thu Aug 10 18:39:53 2006 +0000

    Remove SOCKET_BUFFER_SIZE, because it is not needed anymore.

commit cc747a909929b4f58036ecd7ed6b91e599938775
Author: pavlin <pavlin>
Date:   Thu Aug 10 18:35:22 2006 +0000

    Use sockaddr_storage instead of a uint8_t buffer to store
    sockaddr address.

commit 1402fe517509f91d3b70cf31f332ec5ccef19107
Author: pavlin <pavlin>
Date:   Thu Aug 10 09:50:50 2006 +0000

    Use extract_xx() and embed_xx() to extract/embed integers from/to
    a buffer with data in network order.

commit 04ed1e10efa53ebc7be3039fdf25bedcac5ba119
Author: pavlin <pavlin>
Date:   Thu Aug 10 09:37:27 2006 +0000

    Use extract_16() and extract_32() to extract integers from
    a buffer with data in network order.

commit 242d93dfd29d260ff20f1018db14139f50fa0770
Author: pavlin <pavlin>
Date:   Thu Aug 10 09:10:25 2006 +0000

    Remove the local embed_xx() and extract_xx() functions.
    Instead, include the new "libproto/packet.hh" header file that contains
    those functions.

commit b9cc0ad74892af1105b07e480d9aaa7d061d3607
Author: pavlin <pavlin>
Date:   Thu Aug 10 09:02:45 2006 +0000

    Add new file packet.hh that contains functions to extract or embed
    integers (stored in network order) from/to a buffer.
    
    [ Implementation copied from ospf/packet.hh ]

commit 4f4b7914a4276ca56d1cb397e51175bc8a3d9335
Author: pavlin <pavlin>
Date:   Thu Aug 10 08:32:26 2006 +0000

    * Don't use (const uint32_t *) casting for an uint8_t array, because
      it might be misaligned in memory and therefore the code might coredump
      on architectures that expect the integers to be aligned in memory.
    
    * Fix hardcoded numbers:
      16 -> sizeof(_hash)

commit 67728a4d32a1d55d8b7c04a009229743dfa158d2
Author: pavlin <pavlin>
Date:   Thu Aug 10 05:16:13 2006 +0000

    Fix the handling of IPv6 extention headers.
    
    The type of each header (as transmitted inside the XRL) is suppose
    to be extention header protocol number (e.g., IPPROTO_ROUTING for
    Routing Header), but the message type as set into the kernel
    is suppose to be a socket option value (e.g., IPV6_RTHDR for
    Routing Header).

commit da5eaf8215eb12aa16a33698dad1dddab63148ff
Author: pavlin <pavlin>
Date:   Wed Aug 9 16:16:02 2006 +0000

    Use sockaddr_storage instead of a char array buffer to store
    sockaddr-like information.
    
    Approved by:	Atanu Ghosh

commit 03ca93d0322f9e2856a2d644cac815481e622c64
Author: pavlin <pavlin>
Date:   Wed Aug 9 16:06:22 2006 +0000

    Use the "$LD" environmental variable instead of the hard-coded
    "ld" to specify the linker.
    
    This is needed to fix cross-compilation issues.

commit aab2388a55e71a6e5f549cd49f82214b7923c1bc
Author: pavlin <pavlin>
Date:   Wed Aug 9 15:57:53 2006 +0000

    Refactor the list with the include headers.

commit 46869ffc039d1ffcfae1e5101d789614aa0ecfea
Author: pavlin <pavlin>
Date:   Wed Aug 9 06:43:37 2006 +0000

    Use IN_BADCLASS() instead of IN_EXPERIMENTAL(), because
    the definition of IN_EXPERIMENTAL() is broken in Linux's <netinet/in.h>
    (it covers all addresses that start with 0xe0000000, which includes
    multicast as well).

commit d896729c751353a94ebe7d257d309691a927b1ea
Author: pavlin <pavlin>
Date:   Tue Aug 8 23:53:26 2006 +0000

    Add a guard against corrupting the SelectorList::_descriptor_count
    if we try to remove more than once the same IO event (on the same
    file descriptor).
    
    Bug found by:	Marat Nepomnyashy <marat AT vyatta.com>

commit b87d695151915dc4826c315f0a4cbb7401234c14
Author: pavlin <pavlin>
Date:   Tue Aug 8 23:17:49 2006 +0000

    Add release notes related to static routes and policy.

commit b9b80b98b808ca016ec4f70a8613ffc18033c0c7
Author: pavlin <pavlin>
Date:   Tue Aug 8 23:11:10 2006 +0000

    * Update the policy match conditions for static routes and add
      a table with the details.
    
    * Add a table for the RIP/RIPng policy matching conditions,
      and a table for the RIP/RIPng policy actions.

commit 86f12bb220ed40091a79b9d37f00ee07ad66dcfd
Author: pavlin <pavlin>
Date:   Tue Aug 8 22:30:34 2006 +0000

    * Add "nexthop4" and "nexthop6" as matching conditions in the "from"
      block.
    
    * Add missing "network6" variable.
    
    Bug found by:	Cristian KLEIN <cristi AT net.utcluj.ro>

commit d0167188d6304e5649bf54de5fcfba0f1549b766
Author: pavlin <pavlin>
Date:   Tue Aug 8 22:25:21 2006 +0000

    Fix variable names:
    
    prefix4-length -> prefix-length4
    prefix6-length -> prefix-length6

commit ce88e09a0822038ac0adc2014ac782bf942a17c7
Author: pavlin <pavlin>
Date:   Tue Aug 8 22:15:16 2006 +0000

    Fix a policy related example: "action" -> "then"

commit 01c4011a09887df8d2ad8091e7bc253b4d513456
Author: pavlin <pavlin>
Date:   Tue Aug 8 20:12:31 2006 +0000

    Fix the access type of the network4 RIP policy variable.
    OLD: rw (Read-Write)
    NEW: r  (Read only)
    
    Note that the access type for the corresponding RIPng policy variable
    is correct.

commit ca6b0e3201db07e821fd13d2230e7ccc67f5b0b6
Author: pavlin <pavlin>
Date:   Tue Aug 8 02:01:06 2006 +0000

    Fix the setting of MAC addresses using the RTM_SETLINK netlink mechanism,
    because the attribute payload is suppose to be a MAC address contained
    inside "struct sockaddr".
    
    Note that the Linux kernel (at least version 2.6.17) has an API bug:
    the attribute payload is suppose to be a MAC address contained inside
    "struct sockaddr", but rta_len only is suppose to be ETH_ALEN.
    See the modified code for details about the location of the bug
    inside the kernel.
    
    Submitted by:	"Rick Balocca" <rbalocca AT vyatta.com>

commit eb8cb441add4125001916040c178d126776f76d7
Author: pavlin <pavlin>
Date:   Sat Aug 5 16:58:30 2006 +0000

    Conditionally define IN_EXPERIMENTAL() for Windows.

commit e6d613d0ce8ad91e5be69bf54c7368d372f1d66d
Author: pavlin <pavlin>
Date:   Fri Aug 4 23:25:52 2006 +0000

    Reimplement IPNet<IPv4>::is_unicast() by explicitly checking whether
    a prefix belongs to Class A, Class B or Class C.
    
    This implementation is cleaner and faster compared to the previous
    implementation that was testing whether the prefix doesn't overlap
    with the multicast or the experimental Class E address range.

commit c29406d69b6e8d6f76720b85f3e710fa7bcedad7
Author: pavlin <pavlin>
Date:   Fri Aug 4 23:21:16 2006 +0000

    Kdoc nits: "Class-{A,B,C}" -> "Class {A,B,C}"

commit c1c61e82c50c5bacab5db6953fcb85e39d023324
Author: pavlin <pavlin>
Date:   Fri Aug 4 23:19:51 2006 +0000

    * Add methods to test whether an IPv4 prefix address belongs to Class A
      or Class B or Class C.
    
    * Add related methods and constants to calculate the Class A, B, C
      base address and prefix length.
    
    * Add the relevant test cases to test_ipv4net.cc and test_ipvxnet.cc

commit 3d4b6d188083317095ec81fc78ee9e762446d243
Author: pavlin <pavlin>
Date:   Fri Aug 4 22:51:18 2006 +0000

    Refactor/extend the tests inside test_ipv6_address_type() to match
    the corresponding tests inside test_ipv4.cc and test_ipvx.cc.

commit a55ce661a79e7ddecaaa92cf1fa1f0e5dbb0fcc1
Author: pavlin <pavlin>
Date:   Fri Aug 4