commit 0998342b5f79b2441d4beade4bb8ac304de86741 Author: Denis Ovsienko Date: Mon Sep 26 18:50:06 2011 +0400 release: 0.99.19 commit abc7ef44ca05493500865ce81f7b84f5c4eb6594 Author: Denis Ovsienko 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 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 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 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 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 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 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 Date: Sat Aug 20 20:58:15 2011 +0400 ospf6d: move named constants to ospf6d.h commit d91f35bc90ec4e5c8513cd7ac1f6fd00c5113c27 Author: Denis Ovsienko 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 Date: Mon Jun 27 17:24:21 2011 +0200 fix typo commit fe0a1a45c31f4ce8c15041cd213de4b6ac9f76a1 Author: Greg Troxel Date: Tue Jun 28 15:05:05 2011 -0400 Omit --opaque-lsa from build (now default). commit d42306d98fa327eb0ea6094cc6d6ae9202a07475 Author: Dmitrij Tejblum 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 Date: Tue May 11 10:17:53 2010 +0200 Fix ip_len byte order in DragonFly's raw socket