commit 0998342b5f79b2441d4beade4bb8ac304de86741
Author: Denis Ovsienko <[email protected]>
Date:   Mon Sep 26 18:50:06 2011 +0400

   release: 0.99.19

commit abc7ef44ca05493500865ce81f7b84f5c4eb6594
Author: Denis Ovsienko <[email protected]>
Date:   Mon Sep 26 13:18:51 2011 +0400

   ospf6d: CVE-2011-3323 (fortify packet reception)

   This vulnerability (CERT-FI #514840) was reported by CROSS project.

   ospf6d processes IPv6 prefix structures in incoming packets without
   verifying that the declared prefix length is valid. This leads to a
   crash
   caused by out of bounds memory access.

   * ospf6_abr.h: new macros for size/alignment validation
   * ospf6_asbr.h: idem
   * ospf6_intra.h: idem
   * ospf6_lsa.h: idem
   * ospf6_message.h: idem
   * ospf6_proto.h: idem
   * ospf6_message.c
     * ospf6_packet_minlen: helper array for ospf6_packet_examin()
     * ospf6_lsa_minlen: helper array for ospf6_lsa_examin()
     * ospf6_hello_recv(): do not call ospf6_header_examin(), let upper
       layer verify the input data
     * ospf6_dbdesc_recv(): idem
     * ospf6_lsreq_recv(): idem
     * ospf6_lsupdate_recv(): idem
     * ospf6_lsack_recv(): idem
     * ospf6_prefixes_examin(): new function, implements A.4.1
     * ospf6_lsa_examin(): new function, implements A.4
     * ospf6_lsaseq_examin(): new function, an interface to above
     * ospf6_packet_examin(): new function, implements A.3
     * ospf6_rxpacket_examin(): new function, replaces
       ospf6_header_examin()
     * ospf6_header_examin(): sayonara
     * ospf6_receive(): perform passive interface check earliest possible,
       employ ospf6_rxpacket_examin()

commit 09395e2a0e93b2cf4258cb1de91887948796bb68
Author: Denis Ovsienko <[email protected]>
Date:   Mon Sep 26 13:18:36 2011 +0400

   ospf6d: CVE-2011-3324 (DD LSA assertion)

   This vulnerability (CERT-FI #514839) was reported by CROSS project.

   When Database Description LSA header list contains trailing zero octets,
   ospf6d tries to process this data as an LSA header. This triggers an
   assertion in the code and ospf6d shuts down.

   * ospf6_lsa.c
     * ospf6_lsa_is_changed(): handle header-only argument(s)
       appropriately, do not treat LSA length underrun as a fatal error.

commit 717750433839762d23a5f8d88fe0b4d57c8d490a
Author: Denis Ovsienko <[email protected]>
Date:   Mon Sep 26 13:18:02 2011 +0400

   ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)

   This vulnerability (CERT-FI #514838) was reported by CROSS project.

   The error is reproducible only when ospfd debugging is enabled:
     * debug ospf packet all
     * debug ospf zebra
   When incoming packet header type field is set to 0x0a, ospfd will crash.

   * ospf_packet.c
     * ospf_verify_header(): add type field check
     * ospf_read(): perform input checks early

commit 61ab0301606053192f45c188bc48afc837518770
Author: Denis Ovsienko <[email protected]>
Date:   Mon Sep 26 13:17:52 2011 +0400

   ospfd: CVE-2011-3325 part 1 (OSPF header underrun)

   This vulnerability (CERT-FI #514838) was reported by CROSS project.

   When only 14 first bytes of a Hello packet is delivered, ospfd crashes.

   * ospf_packet.c
     * ospf_read(): add size check

commit 6b161fc12a15aba8824c84d1eb38e529aaf70769
Author: CROSS <[email protected]>
Date:   Mon Sep 26 13:17:21 2011 +0400

   ospfd: CVE-2011-3326 (uknown LSA type segfault)

   This vulnerability (CERT-FI #514837) was reported by CROSS project.
   They have also suggested a fix to the problem, which was found
   acceptable.

   Quagga ospfd does not seem to handle unknown LSA types in a Link State
   Update message correctly. If LSA type is something else than one
   supported
   by Quagga, the default handling of unknown types leads to an error.

   * ospf_flood.c
     * ospf_flood(): check return value of ospf_lsa_install()

commit 94431dbc753171b48b5c6806af97fd690813b00a
Author: CROSS <[email protected]>
Date:   Mon Sep 26 13:17:05 2011 +0400

   bgpd: CVE-2011-3327 (ext. comm. buffer overflow)

   This vulnerability (CERT-FI #513254) was reported by CROSS project.
   They have also suggested a fix to the problem, which was found
   acceptable.

   The problem occurs when bgpd receives an UPDATE message containing
   255 unknown AS_PATH attributes in Path Attribute Extended Communities.
   This causes a buffer overlow in bgpd.

   * bgp_ecommunity.c
     * ecommunity_ecom2str(): perform size check earlier

commit a0bf59bcac8b40c3f83e7f2e7f65087ece6acfc7
Author: Denis Ovsienko <[email protected]>
Date:   Sat Aug 20 23:12:00 2011 +0400

   ospf6d: add missing include

   Two extern declarations in ospf6_abr.h are based on struct ospf6_route,
   which may not be available at the time ospf6_abr.h is included. This may
   lead to warnings after including ospf6_abr.h just for the structures
   defined in it.

commit ef95122eb214f80700fc79b4a95686eadfea859b
Author: Denis Ovsienko <[email protected]>
Date:   Sat Aug 20 20:58:15 2011 +0400

   ospf6d: move named constants to ospf6d.h

commit d91f35bc90ec4e5c8513cd7ac1f6fd00c5113c27
Author: Denis Ovsienko <[email protected]>
Date:   Fri Aug 19 22:24:27 2011 +0400

   ospf6d: justify some ABR debug code

   * ospf6_abr.c
     * ospf6_abr_examin_summary(): only fill "buf" when it is used

commit 7e924e11a965fc1053a16945ace10c9bd1d868f8
Author: Roman Hoog Antink <[email protected]>
Date:   Mon Jun 27 17:24:21 2011 +0200

   fix typo

commit fe0a1a45c31f4ce8c15041cd213de4b6ac9f76a1
Author: Greg Troxel <[email protected]>
Date:   Tue Jun 28 15:05:05 2011 -0400

   Omit --opaque-lsa from build (now default).

commit d42306d98fa327eb0ea6094cc6d6ae9202a07475
Author: Dmitrij Tejblum <[email protected]>
Date:   Fri Apr 22 19:27:54 2011 +0400

   ospf6d: copy "mtu-ignore" option from ospfd

   "mtu-ignore" is an option ospfd used to mimic from the vendor's
   implementation, now ospf6d will also implement it.

   * ospf6_interface.h: extend ospf6_interface structure by one flag
   * ospf6_interface.c: (ipv6_ospf6_mtu_ignore, no_ipv6_ospf6_mtu_ignore):
     new declarations; (ospf6_interface_create): show initial value for
     consistency; (ospf6_interface_show): print flag status
   * ospf6_message.c: (ospf6_dbdesc_recv): consider interface-specific flag
     when checking MTU

commit 8dd1a8daae0b15065d54c46f82d44d21aa7a2320
Author: Paul Jakma <[email protected]>
Date:   Mon Apr 11 16:33:20 2011 +0100

   zebra: trivial warning fix

   * zebra_routemap.c: (route_set_src) get rid of the dummy family variable.

commit fdbc8e77c88f751924299d0bc752371d5cc31116
Author: Paul Jakma <[email protected]>
Date:   Mon Apr 11 16:31:43 2011 +0100

   bgpd: trivial format / warning fixes

   * bgp_aspath.c: (assegments_parse) just bail early if length doesn't match
     and fix the formatting.
   * bgp_network.c: add include needed for set_nonblocking
   * bgp_packet.c: formatting

commit 072990e22e66ed9a15261b70658dc4a8801975b5
Author: Paul Jakma <[email protected]>
Date:   Mon Apr 11 16:28:16 2011 +0100

   ospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change

   * ospf_apiserver.{c,h}: (ospf_apiserver_lsa_refresher) refreshers must now
     return the refreshed LSA.
   * ospf_te.{c,h}: (ospf_mpls_te_lsa_refresh) ditto
   * ospf_api.c: trivial compiler warning fix

commit 57c4f4f45b7a3c327f274272afe43893e10008e1
Author: Ingo Flaschberger <[email protected]>
Date:   Mon Apr 4 11:17:45 2011 +0100

   ospf6d: fix crash if zebra_interface_state_read can't find interface

   * ospf6_zebra.c: (ospf6_zebra_if_state_update) zebra_interface_state_read
     may return NULL, if it can't find an interface, deal with it.

commit 597de5a01a59759db05e00b0a1d4e0b158cf2c9e
Author: Paul Jakma <[email protected]>
Date:   Mon Apr 4 10:39:15 2011 +0100

   ospf6d: fix crash if zebra_interface_state_read can't find interface

   * ospf6_zebra.c: (ospf6_zebra_if_state_update) zebra_interface_state_read
     may return NULL, if it can't find an interface, deal with it.

commit 604a9b43dd68a087ca5a4ac2cae19eb17591ba5f
Author: Michael Lambert <[email protected]>
Date:   Mon Sep 13 11:48:11 2010 -0400

   bgpd: fix memory leak when deleting a community

   * bgp_routemap.c: (route_set_community_delete) When deleting a
     community in a route-map the old community was being orphaned.  Like
     the description of the same code in route_set_community, this is a
     hack, not a true fix.

commit 4a2035fd71990848017237838fe11bc1aeb41641
Author: Paul Jakma <[email protected]>
Date:   Fri Apr 1 15:58:27 2011 +0100

   Revert "bgpd: "Intern" communities in route maps"

   This reverts commit 2c9fd7e07283b8904ef20030c9dadb032e999b12.

commit 7015b8a24965ce144296a791be816dc9bbeb477a
Author: Paul Jakma <[email protected]>
Date:   Wed Mar 30 14:30:20 2011 +0100

   doc: Add dependency for quagga.pdf make target

   * doc/Makefile.am: pdf target needs to depend on all the input files.

commit 31d0f1b3c64903d56a47caebf887067d222c7cd6
Author: Paul Jakma <[email protected]>
Date:   Tue Mar 29 14:18:49 2011 +0100

   bgpd: Fix merge error in jhash commit

   * bgp_attr.c: (attrhash_key_make) 98e30f should have changed jhash2 to jhash.

     These kinds of merge errors would be reduced and life would be easier if
     people would submit fully-formed fixes that could be chucked directly into
     git-am.

commit f5a4827db60545309d0ee378b85acac56cf7837a
Author: Stephen Hemminger <[email protected]>
Date:   Thu Mar 24 17:30:21 2011 +0000

   bgpd: refine the setting up of GTSM

   * bgpd.h: Add error code for setting GTSM on iBGP
   * bgpd.c: (peer_ttl_security_hops_set) use previous error code and signal
     incompatibility of GTSM+iBGP to vty.
     Consider the session state when setting GTSM, and reset Open/Active peers
     to let them pick up new TTL from start.

commit 0d51c7ef830c3930bb0d7207d93f26bcb8cee455
Author: Greg Troxel <[email protected]>
Date:   Thu Mar 24 10:19:43 2011 -0400

   build: treat opaque-lsa default correctly for ospfapi

   In deciding whether to default ospfapi to on or off, use the same rule
   for opaque-lsa as earlier: != no rather than = yes, so that not having
   set it implies yes.

commit d876bdf4a84f40ac3f9bec8d5040858b3725db3e
Author: Stephen Hemminger <[email protected]>
Date:   Thu Aug 5 10:26:27 2010 -0700

   lib: Add support for IPv6 ttl security

   * sockunion.c: (sockopt_minttl) Add IPv6 support for min hop count.
     The kernel support is Linux kernel 2.6.35 or later.

commit 89b6d1f8e2759cc38bc768067abe3a296d93f454
Author: Stephen Hemminger <[email protected]>
Date:   Thu Mar 24 10:51:59 2011 +0000

   bgpd: Cleanups & fixes for minttl / GTSM

   * bgp_vty.c: (peer_ebgp_multihop_{un,}set_vty) tail-call cleanup.
     ({no_,}neighbor_ttl_security) ditto.
   * bgpd.c: (peer_ttl_security_hops_set) Peer group checks and TTL set only
     need to be done on transition.
   * sockunion.c: (sockopt_minttl) remove always-on debug and improve readability.

commit fa411a212b55bba650d68fd0456686f3e47b7395
Author: Nick Hilliard <[email protected]>
Date:   Wed Mar 23 15:33:17 2011 +0000

   bgpd: RFC 5082 Generalized TTL Security Mechanism support

   * bgpd: Add support for RFC 5082 GTSM, which allows the TTL field to be used
     to verify that incoming packets have been sent from neighbours no more
     than X IP hops away. In other words, this allows packets that were sent from
     further away (i.e. not by the neighbour with known distance, and so possibly
     a miscreant) to be filtered out.
   * lib/sockunion.{c,h}: (sockopt_minttl) new function, to set a minimum TTL
     using the IP_MINTTL socket opt.
   * bgpd.h: (BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK) define for command
     error for minttl.
     (struct peer) add a config variable, to store the configured minttl.
     (peer_ttl_security_hops_{set,unset}) configuration handlers
   * bgpd.c: (peer_group_get) init gtsm_hops
     (peer_ebgp_multihop_{un,}set) check for conflicts with GTSM. Multihop and
     GTSM can't both be active for a peer at the same time.
     (peer_ttl_security_hops_set) set minttl, taking care to avoid conflicts with
     ebgp_multihop.
     (bgp_config_write_peer) write out minttl as "neighbor .. ttl-security hops X".
   * bgp_vty.c: (bgp_vty_return) message for
     BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK
     (peer_ebgp_multihop_{un,}set_vty)
   * bgp_network.c: (bgp_accept) set minttl on accepted sockets if appropriate.
     (bgp_connect) ditto for outbound.

commit 3bde17f1af635c9ca19df0b3516cb8ad0376e6d3
Author: Paul Jakma <[email protected]>
Date:   Wed Mar 23 10:30:30 2011 +0000

   bgpd: Fix compile failure if IPv6 build was disabled.

   * bgp_route.c: ({no_,}ipv6_bgp_network_ttl_cmd) depends on ipv6_bgp_network
     which is HAVE_IPV6, so these should be too.
     (bgp_route_init) and the installs should be similarly ifdefed

commit fc95186c30884c96543aecfc56cfe5b08774525b
Author: Christian Hammers <[email protected]>
Date:   Wed Mar 23 13:07:55 2011 +0300

   lib: fix more format warnings (#637)

   The following patch was also neccessary to compile.

   * command.c: (config_logmsg_cmd) use "%s" format spec
   * if.c: (connected_log) ditto

commit 98e30f5db6dea65a5d6a176065cd0b60eb7bb001
Author: Stephen Hemminger <[email protected]>
Date:   Tue Mar 22 16:14:57 2011 +0000

   bgpd: attribute jhash call should use a standard interface to in6_addr data

   * bgp_attr.c; (attrhash_key_make) s6_addr is only member of in6_addr
     guaranteed to be available - s6_addr32 isn't. Fix to be more portable, and
     thus allow compilation on BSD again.

commit d71ea65270408a45e4bec036671ec73b24b994b4
Author: Paul Jakma <[email protected]>
Date:   Tue Mar 22 15:23:55 2011 +0000

   ospfd: Compile fix for opaque support

   * ospfd: Refresher logic cleanup broke OSPF opaque, which does its own thing
     with regard to refresher logic and which also, in the protocol, requires
     implementations to keep state of which OI an LSA is received on (rather
     than providing information in the LSA to allow it to be looked up - as
     other LSAs requiring such assocation were careful to do).
   * ospf_lsa.h: (struct ospf_interface) Add back the pointer to oi, but only
     for type-9 now.
   * ospf_nsm.c: (ospf_db_summary_add) check the oi actually exists first -
     doesn't obviate the need for opaque to ensure oi pointers get cleaned up
     when ospf_interfaces disappear.
   * ospf_opaque.{c,h}: (ospf_opaque_functab,ospf_opaque_lsa_refresh) Refresher
     LSA functions now need to return the LSA to the general refresh logic,
     to indicate whether the LSA was refreshed.

commit 36de261b57eab7a7539fb6527a1f02f3898cbafd
Author: Paul Jakma <[email protected]>
Date:   Tue Mar 22 10:18:05 2011 +0000

   build: change sense of opaque-{lsa,te} enable args to enable by default

   * configure.ac: (AC_ARG_ENABLE({ospf-te,opaque-lsa})) reverse the sense to
     --disable
     (enable_{opaque_lsa,ospf_te}) treat as enabled unless explicitly disabled.

commit eac5702d06ee574e9e155c4e60c251e525dc4149
Author: Stephen Hemminger <[email protected]>
Date:   Thu Aug 5 10:26:25 2010 -0700

   bgpd: enable TCP corking

   * bgp_packet.c: (bgp_write) On BGP write, use TCP_CORK to provide hints to
     kernel about TCP buffering.  This will cause BGP packets to occur in
     bigger chunks (full size MTU), improving performance and getting rid of
     one of the problems reported in the UNH BGP conformance test.

commit 58192df7746231fbc82e248b5ddfc7cab95ab1e7
Author: Stephen Hemminger <[email protected]>
Date:   Thu Aug 5 10:26:24 2010 -0700

   lib: add TCP_CORK wrapper

   * sockunion.{c,h}: (sockopt_cork) wrapper for TCP_CORK socket option for
     those platforms that provide it.  For other platforms, it is just a nop.

commit 35398589cf1293956dfefb5096aa5284c72a696f
Author: Stephen Hemminger <[email protected]>
Date:   Thu Aug 5 10:26:23 2010 -0700

   bgpd: leave peer socket in non-blocking mode (mostly)

   * bgpd: Rather than toggling socket in/out of non-block mode, just leave it
     in nonblocking mode.

     One exception is in bgp_notify which only happens just before close.

commit 2c9fd7e07283b8904ef20030c9dadb032e999b12
Author: Michael Lambert <[email protected]>
Date:   Sat Jul 24 12:44:07 2010 -0400

   bgpd: "Intern" communities in route maps

   * bgp_community.[ch]: (community_lookup) New helper function to look
     up a community list in the hash table.

   * bgp_routemap.c: A new community structure was being allocated for
     every BGP update which matched a route map which set a community.
     This behavior led to rapid growth in the memory consumed by bgpd.
     Adding the communities to the hash table addresses the memory
     growth, but may introduce a problem in modifying or deleting the
     'set community' statement in the route map.

commit 95cbbd2ace2f88019a7a54e67b4b12aaeda177f7
Author: Michael Lambert <[email protected]>
Date:   Fri Jul 23 14:43:04 2010 -0400

   bgpd: New show commands for improved view and address family support

   Many show commands do not have support for multiple views and do not
   treat different address families uniformly.  The following changes add
   a number of commands with support for views and rationalized treatment
   of IPv4 v IPv6 and unicast v multicast (such as in JUNOS, IOS XR and
   more recent versions of IOS).

   * bgp_route.c: (bgp_show_community) Inserted a new second argument (the
     name of the view) and the code to look up that name in the BGP structure.
     The NULL argument in the call to bgp_show (indicating the default view)
     was replaced by the specified view.  The existing calls to
     bgp_show_community had a NULL second argument inserted to make clear
     that they refer to the default view.

     (top level) Added new functions via the DEFUN and/or ALIAS macros (and
     the associated command table entries) to add the commands

       show bgp ipv4 (unicast|multicast)
       show bgp ipv4 (unicast|multicast) A.B.C.D
       show bgp ipv4 (unicast|multicast) A.B.C.D/M
       show bgp ipv6 (unicast|multicast)
       show bgp ipv6 (unicast|multicast) X:X::X:X
       show bgp ipv6 (unicast|multicast) X:X::X:X/M

         These show either the full BGP table or the specified route or
         prefix for the given address family.

       show bgp view WORD (ipv4|ipv6) (unicast|multicast) community
       show bgp view WORD (ipv4|ipv6) (unicast|multicast) community \
               (AA:NN|local-AS|no-advertise|no-export){1,4}

         For the specified view and address family, these show entries
         matching any community or the specified communit(y)(ies).

       show bgp view WORD (ipv4|ipv6) (unicast|multicast) neighbors \
               (A.B.C.D|X:X::X:X) (advertised-routes|received-routes)

         For the specified view and address family, show the routes
         advertised to or received from the given BGP neighbor.

       show bgp [view WORD] ipv4 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X)
       show bgp [view WORD] ipv4 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X) A.B.C.D
       show bgp [view WORD] ipv4 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X) A.B.C.D/M
       show bgp [view WORD] ipv6 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X)
       show bgp [view WORD] ipv6 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X) X:X::X:X
       show bgp [view WORD] ipv6 (unicast|multicast) \
               rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M

         For the specifed (optional) view and address family, show either
         the full BGP table or the specified route or prefix for the given
         route server client peer.

   * bgp_vty.c: (top level) Added new functions via the DEFUN and/or ALIAS
     macros (and the associated command table entries) to add the commands

       show bgp [view WORD] (ipv4|ipv6) (unicast|multicast) summary
       show bgp [view WORD] (ipv4|ipv6) (unicast|multicast) rsclient summary

         For the specified (optional) view and address family, display
         either the normal summary table for BGP peers, or the route server
         client table showing the import and export policies.

commit b881c7074bb698aeb1b099175b325734fc6e44d2
Author: Paul Jakma <[email protected]>
Date:   Tue Nov 23 16:35:42 2010 +0000

   bgpd: Implement revised error handling for partial optional/trans. attributes

   * BGP error handling generally boils down to "reset session". This was fine
     when all BGP speakers pretty much understood all BGP messages. However
     the increasing deployment of new attribute types has shown this approach
     to cause problems, in particular where a new attribute type is "tunneled"
     over some speakers which do not understand it, and then arrives at a speaker
     which does but considers it malformed (e.g. corruption along the way, or
     because of early implementation bugs/interop issues).

     To mitigate this drafts before the IDR (likely to be adopted) propose to
     treat errors in partial (i.e.  not understood by neighbour), optional
     transitive attributes, when received from eBGP peers, as withdrawing only
     the NLRIs in the affected UPDATE, rather than causing the entire session
     to be reset.  See:

      http://tools.ietf.org/html/draft-scudder-idr-optional-transitive

   * bgp_aspath.c: (assegments_parse) Replace the "NULL means valid, 0-length
     OR an error" return value with an error code - instead taking
     pointer to result structure as arg.
     (aspath_parse) adjust to suit previous change, but here NULL really
     does mean error in the external interface.
   * bgp_attr.h (bgp_attr_parse) use an explictly typed and enumerated
     value to indicate return result.
     (bgp_attr_unintern_sub) cleans up just the members of an attr, but not the
     attr itself, for benefit of those who use a stack-local attr.
   * bgp_attr.c: (bgp_attr_unintern_sub) split out from bgp_attr_unintern
     (bgp_attr_unintern) as previous.
     (bgp_attr_malformed) helper function to centralise decisions on how to
     handle errors in attributes.
     (bgp_attr_{aspathlimit,origin,etc..}) Use bgp_attr_malformed.
     (bgp_attr_aspathlimit) Subcode for error specifc to this attr should be
     BGP_NOTIFY_UPDATE_OPT_ATTR_ERR.
     (bgp_attr_as4_path) be more rigorous about checks, ala bgp_attr_as_path.
     (bgp_attr_parse) Adjust to deal with the additional error level that
     bgp_attr_ parsers can raise, and also similarly return appropriate
     error back up to (bgp_update_receive). Try to avoid leaking as4_path.
   * bgp_packet.c: (bgp_update_receive) Adjust to deal with BGP_ATTR_PARSE_WITHDRAW
     error level from bgp_attr_parse, which should lead to a withdraw, by
     making the attribute parameter in call to (bgp_nlri_parse) conditional
     on the error, so the update case morphs also into a withdraw.
     Use bgp_attr_unintern_sub from above, instead of doing this itself.
     Fix error case returns which were not calling bgp_attr_unintern_sub
     and probably leaking memory.
   * tests/aspath_test.c: Fix to work for null return with bad segments

commit c112af27ed8f158ecece0d73ce2016c166076c00
Author: Paul Jakma <[email protected]>
Date:   Sat Nov 27 11:49:09 2010 +0000

   tools/multiple-bgpd.sh: set some community attributes to help test them

commit f6f434b2822c453f898552537180a812538bd19e
Author: Paul Jakma <[email protected]>
Date:   Tue Nov 23 21:28:03 2010 +0000

   bgpd: Try fix extcommunity resource allocation probs, particularly with 'set extcom..'

   * Extended communities has some kind of resource allocation problem which
     causes a double-free if the 'set extcommunity ...' command is used.
     Try fix by properly interning extcommunities.

     Also, more generally, make unintern functions take a double pointer
     so they can NULL out callers references - a usefully defensive programming
     pattern for functions which make refs invalid.

     Sadly, this patch doesn't fix the problem entirely - crashes still
     occur on session clear.

   * bgp_ecommunity.h: (ecommunity_{free,unintern}) take double pointer
     args.
   * bgp_community.h: (community_unintern) ditto
   * bgp_attr.h: (bgp_attr_intern) ditto
   * bgp_aspath.h: (bgp_aspath.h) ditto
   * (general) update all callers of above
   * bgp_routemap.c: (route_set_ecommunity_{rt,soo}) intern the new extcom added
     to the attr, and unintern any old one.
     (route_set_ecommunity_{rt,soo}_compile) intern the extcom to be used
     for the route-map set.
     (route_set_ecommunity_*_free) unintern to match, instead of free
     (route_set_ecommunity_soo) Do as _rt does and don't just leak
     any pre-existing community, add to it (is additive right though?)

commit 50ef565e4e689ba653b9709be4d28a01f6cca885
Author: Paul Jakma <[email protected]>
Date:   Sat Nov 27 23:14:02 2010 +0000

   tests: Extend aspath_test.c with cases for invalid segments & attributes

   * aspath_test.c: Add more test cases. In particular ones to cover the
     last invalid-segment problem. Also add ability to specify aspath attribute
     headers and test them somewhat.

     NB: It's obvious this test has not been run for a year by anyone, despite
     2 non-trivial commits to bgpd aspath code.

commit ab005298526f4b14126cae1a6461ad3d700af29c
Author: Paul Jakma <[email protected]>
Date:   Sat Nov 27 22:48:34 2010 +0000

   bgpd: Rollback some of the changes made for invalid AS_PATH segment fix

   Some of the changes made in commit cddb8112b80fa9867156c637d63e6e79eeac67bb
   don't work particularly well for other changes that need to be made to
   address BGP attribute error handling problems. In particular, returning
   a pointer from complex attribute data parsing functions will not suffice
   to express the require range of return status conditions.

   * bgp_aspath.c: (assegments_parse) Rollback to a more minimal set of
     changes to fix the original problem.
     (aspath_parse) Slightly needless pushing around of code, and taking
     2 parameters to say whether ot use 2 or 4 byte encoding seems unnecessary.
   * bgp_attr.c: (bgp_attr_as{,4}path) Rollback, in preparation for BGP
     attribute error handling update.

commit 0150c9c969cfbacb28fa9e05c8bf7f65448d9914
Author: David BÉRARD <[email protected]>
Date:   Tue May 11 10:17:53 2010 +0200

   Fix ip_len byte order in DragonFly's raw socket