commit 3849ce4e25281d11537ebd0db5e2fa2a7c356b33 Author: Paul Jakma Date: Fri Aug 28 19:16:31 2009 +0100 release: 0.99.15 * configure.ac: Bump to 0.99.15 commit aabbb1ae358a3fd9af011cddc1a67dfa0b3df2d2 Author: Tom Henderson Date: Fri Aug 28 15:10:00 2009 +0100 ospf6d: bug #529, fix endianness problem in earlier commit * ospf6_lsa.c: (ospf6_lsa_age_current) arithmetical compares make no sense in non-host order.. commit d1c21cabdbeeb4d12049f39579c602686eb94927 Author: Stephen Hemminger Date: Tue Aug 25 10:18:15 2009 -0700 bgpd: fix md5 set on listen sockets * bgp_network.c: (bgp_md5_set) Missing piece from earlier listener change did not get ported from Vyatta code into upstream. The list listener_sockets changed from (int *) to (struct bgp_listener *). commit c4cf095e95ae66c1a7b87bca95e61e50fec746ee Author: Paul Jakma Date: Sat Aug 8 20:41:39 2009 +0100 lib/trivial: str2prefix checks return of inet_pton in fragile way * prefix.c: (str2prefix_ipv6) inet_pton succesful return is presumed to be 1, rather than the "not zero" the man page describes - seemed fragile. commit fab7f89dcfe77cf06806e7f8a33314d3b4857a69 Author: Paul Jakma Date: Thu Aug 6 12:12:12 2009 +0100 zebra: Add an example config file for testzebra * testrib.conf: Example config file for testzebra commit 302d53f791031c15590f59944313381dfb4200c6 Author: Paul Jakma Date: Thu Aug 6 11:48:48 2009 +0100 zebra: test_main.c should be a bit more helpful about its usage * test_main.c: If required arguments are missing, say that. commit 3e4ee9591aa2d84f01ae478afd273ac55add0a1c Author: Paul Jakma Date: Thu Aug 6 12:08:50 2009 +0100 lib: if_lookup_by_name should be more robust to null argument * if.c: (if_lookup_by_name) shouldn't crash just cause we got a NULL name commit 27f5dc8120e1c6902e29d86cf0d77b82cf3848c0 Author: Joakim Tjernlund Date: Sat Aug 22 14:57:54 2009 +0200 ospfd: Make sure priority is respected. * ospf_ism.c (ospf_dr_eligible_routers) should test for priority > 0 instead of != 0 as ospf_nbr_new () initially sets prio to -1 commit 5d8de93a84b2afc4202d3284eb9e57672e2551b3 Author: Joakim Tjernlund Date: Fri Aug 7 13:48:15 2009 +0200 ospfd: Tighten up the connected check for redistribution * ospf_zebra.c: (ospf_distribute_check_connected) check to make filter out routes matching connected routes was matching against OSPF networks, which can be far more general than the actual connected interfaces. Fix. commit 065de90380c88d9fcc116627f714bed9984c2723 Author: Stephen Hemminger Date: Fri Aug 7 11:13:49 2009 -0700 all: check return value from daemon() call * */*main.c: (main) Current versions of Gcc warn if the return value for daemon() is not checked. So add a simple test and exit on failure. commit 5bd5881838c22e075c3d0c245a8952a55e9dca38 Author: Stephen Hemminger Date: Thu Aug 6 21:05:47 2009 -0700 bgp: missing pieces from listener patch * bgp_network.c: (bgp_accept) The code in current git will crash as part of the revised listener code is missing. The new listener thread code passes a pointer to a bgp_listener structure, not the bgp pointer. The old code always got a NULL for bgp pointer, so that is now hard coded. commit 62bed38d2f2c7317b5c97285d9fb935c5fe681e1 Author: Stephen Hemminger Date: Thu Aug 6 21:07:23 2009 -0700 bgp: compiler warning fix * bgp_filter.h: Gcc complains the function prototype is not correct because the function argument is using old K&R style. commit 3106a03215f5f09c2c0d427fa706fff52ef3cb37 Author: Stephen Hemminger Date: Thu Aug 6 12:58:05 2009 -0700 ospfd: fix performance problem with redistribute delete Doing redistribute delete with full BGP table was taking 30 minutes, this drops it down to less than a second. * ospf_lsa.c: (ospf_lsa_maxage) When flushing lots of entries the performance is terrible because it looks up each LSA entry through ospf_lsa_maxage_exist before deleting causing O(N^2) performance. Use a new OSPF_LSA_MAXAGE flag instead of scan - and maintain it. (ospf_lsa_maxage_exist) removed (ospf_lsa_maxage_delete) maintain OSPF_LSA_MAXAGE flag commit 5996e0df2eb325445114517209cd24f37d91774a Author: Joakim Tjernlund Date: Mon Jul 27 12:42:35 2009 +0200 ospfd: Make sure route table is recalculated. In some cases ospfd does not recalc the route table. This happens when ospfd receives an old LSA which will trigger recalc but the this recalc will fail because all interfaces isn't up yet. Next LSA that is originated matches the old one so no recalc will be performed. This problem has been observed when there are only 2 ppp I/Fs in an area, both go down at the same time, then they come up again with a few seconds apart. * ospf_lsa.c: (ospf_{router,network}_lsa_install) avoid a needless scheduling of SPF. (ospf_lsa_different) fix bug in LSA comparison that would lead to the described failure to schedule SPF. commit 11637435b2d74702296b0522500d03b0395554a2 Author: Paul Jakma Date: Tue Aug 11 12:25:42 2009 +0100 ospfd: Make "Packet ... received on wrong link" conditional on debug * ospf_packet.c: make this message conditional on 'debug ospf event', as it be easily triggered with, e.g., multiple subnets sharing same physical network. E.g, see bug #532. commit 9d878775ff5c05afea522b60f014b88822d19e1b Author: Paul Jakma Date: Wed Aug 5 16:25:16 2009 +0100 bgpd: Fix mistakes in applying 'allow inbound connections to non-default view' * bgpd.c: (peer_lookup_with_open) Bodged application of previous patch meant the second loop around bgp->peer wasn't included in the loop around bm->bgp as it was supposed to be. Fix.. commit 5372510d109d87b94d6094d095dd4e0e02eaf32a Author: Paul Jakma Date: Mon Aug 3 16:34:16 2009 +0100 ospfd: neuter some compiler warnings * ospf_lsa.c: (link_info_set) Use %zd for size_t - C99 is old enough now. Lots of similar warnings all over the code. (ospf_lsa_translated_nssa_compare) Unused func - delete. commit 4ca15d4a658dca9663b7dea2475edfe6814ef847 Author: Paul Jakma Date: Mon Aug 3 15:16:41 2009 +0100 ospfd: update some comments * ospf_{spf,lsa}.c: remove out of date comment; add comment on some non-obvious code; Make note of a possible scaling problem. commit a8ba847ff96b41e06770d4987b15707890ed5807 Author: Joakim Tjernlund Date: Mon Jul 27 12:42:34 2009 +0200 ospfd: Change struct ospf_path *oi to ifindex. * global: In struct ospf_path, change struct ospf_interface *oi to int ifindex. It is unsafe to reference *oi as an ospf interface can be deleted under your feet. Use a weak reference instead. commit bd5403778b0d96258730050e4526c7c72903e60b Author: Joakim Tjernlund Date: Mon Jul 27 12:42:31 2009 +0200 ospfd: Discriminate better when selecting links between vertices in SPF * ospf_spf.c: (ospf_get_next_link) One must check the vertex type, Router or Network, to select type link to match against. Link type 1 has neighbour router ID in link_id and link type 2 has IP address of DR. Since router id may have same value as an existing IP address one risks matching a router ID against a DR. commit 4a5f432fa07f33da5ad05d18e4ba81d57b44af8e Author: Paul Jakma Date: Thu Jul 30 15:55:24 2009 +0100 [bgpd] delete erroneous extra brace.. commit 66bed4f4f0235c1eb6edb0a2f6bd4aaf47e5a7f8 Author: Michael Lambert Date: Tue Jul 28 11:26:14 2009 -0400 bgpd: Workaround for invalid MBGP next hop * bgp_attr.c: (bgp_mp_reach_parse) There are some interoperability issues for MBGP (particularly IPv4 multicast NLRI) between different implementations. In order to get some next hops to install correctly in the BGP tables, it appears to be necessary to copy the multiprotocol next hop into the base next hop field. This is related to differences in RFC 2283 and RFC 2858. commit 3de4277ba9b25ff03710d7c004bf708accffd5c7 Author: Paul Jakma Date: Tue Jul 28 16:04:35 2009 +0100 [doc] Update HACKING * HACKING: Update to reflect git stripping []'s, and to allow for more discretion to avoid redundancy in commit messages. commit 05cf46badbad99b76c4e974c7306c14494d1000e Author: Joakim Tjernlund Date: Mon Jul 27 12:42:30 2009 +0200 ospfd: Make ospf_if_lookup_recv_if() find the right unnumbered i/f This function will return the interface for the first matching remote address for PtP i/f's. That won't work for multiple unnumbered i/f's as these may all have the same address. Pass in the struct interface pointer, ifp, to find the correct set of oi's to search in. This also reduces the size of the search list, making it faster. * ospfd/ospf_interface.c: Add struct interface * param to ospf_if_lookup_recv_if() to select the right list to search in. * ospfd/ospf_interface.h: ditto. * ospfd/ospf_packet.c: Pass new ifp argument to ospf_if_lookup_recv_if() commit f0f63841582ed97362619a53fb711747f09d961b Author: Joakim Tjernlund Date: Mon Jul 27 12:42:29 2009 +0200 ospfd: export ospf_if_table_lookup() and use it in ospf_network_run_interface() Makes it possible to run OSPF on multiple PtP interfaces with the same remote address. * ospfd/ospf_interface.c: Export ospf_if_table_lookup(). * ospfd/ospf_interface.h: ditto. * ospfd/ospfd.c: (ospf_network_run_interface) Use ospf_if_table_lookup() to determine whether OSPF is already configured for a subnet and interface. commit 2158ad2359a370dd349f4543a2d5d535bb5a8770 Author: Paul Jakma Date: Tue Jul 28 18:10:55 2009 +0100 bgpd/trivial: Fix indentation in previous commit fc4dc59d08589a887ac33a70d946eb7905541f5f Author: Steve Hill Date: Tue Jul 28 17:54:35 2009 +0100 bgpd: Allow inbound connections to non-default view * bgpd.c: (peer_lookup) Search through all BGP instances for matches, not just the default instance, if no specific instance is given. (peer_lookup_with_open) same. commit 3117b5c47df044f8b2197fff60641075394fdce5 Author: Steve Hill Date: Tue Jul 28 17:50:00 2009 +0100 bgpd: fd leak in bgpd * bgp_fsm.c: I have found an fd leak in bgpd that is caused by the 'new' Clearing state. I've been seeing it from hold timer failures, but it can also be triggered by other things. When Hold_Timer_expired fires in Established state, a notify is sent and BGP_Stop event queued. The fsm then transitions into Clearing state. That is the problem; When the BGP_Stop event is serviced, the state table says to ignore it while in Clearing. Thus bgp_stop is not called and the fd leaks. Previously the peer would be in Idle state, which correctly handles the BGP_Stop event. Fix by making bgp_stop safe to call from Clearing state, without losing ClearingCompleted events, and then ensuring it is called prior to transition from Clearing->Idle. commit cb9e0ceec988a059dd2269ebc54722c01afb7cca Author: Paul Jakma Date: Sun Apr 20 00:31:57 2008 +0100 [zebra] Fix crash in test_zebra * kernel_null.c: we're pretending to add an address, so set IFC_REAL. If this isn't done, calling into the 'got address from kernel' half of zebra will implicitly-withdraw the ifc, which could cause a crash in test_zebra.c. commit 736d440845c8c0cfdb56b86254887bab5fc7f3f5 Author: Vasilis Tsiligiannis Date: Mon Jul 20 01:59:10 2009 +0300 bgpd: Delete AS_CONFED_SEQUENCE when prepending an AS_SEQUENCE type segment AS_CONFED_SEQUENCE segment should always be deleted when prepending (e.g. with a route-map) an AS_SEQUENCE segment to an AS path. Otherwise, AS_CONFED_SEQUENCE will not be deleted later when updating EBGP peers (since it is not the leftmost segment) and will leak outside the confederation. commit ca87e1d37b3c30648e9bacb476a3c89729512f6d Author: Vasilis Tsiligiannis Date: Mon Jul 20 01:28:35 2009 +0300 bgpd: Implement BGP confederation error handling (RFC5065, Par. 5) This patch implements BGP confederation error handling in Quagga as described in RFC5065, paragraph 5. * bgp_aspath.c: (aspath_confed_check, aspath_left_confed_check) new functions * bgp_attr.c: (bgp_attr_aspath_check) apply previous and NOTIFY if there's a problem. commit 30d205909c5a81cc306b161c16abff0fd7f566a7 Author: Stephen Hemminger Date: Tue Jul 28 11:58:51 2009 +0100 [global] interface flags format warnings */*: ifp->flags is 64 bit unsigned which can not be handled by %l on 32 bit architectures - requires %ll and the appropriate cast. commit d023aec49f70156d2ed894a8fba65bcfa221ff02 Author: Stephen Hemminger Date: Tue Jul 21 16:27:21 2009 -0700 bgpd: start listener on first instance Start BGP listener only after first instance is started. This helps the security if BGP is not used but daemon is started. It also addresses some issues like MD5 not working on listener unless IPV6 configured (because listener was not in list); as well as compiler warnings. * bgp_network.c: (bgp_listener) listen socket creation consolidated here (bgp_socket) Use bgp_listener * bgpd.c: (bgp_get) call bgp_socket on creation of first struct bgp. (bgp_init) remove bgp_socket call. * memtypes.c: Add MTYPE_BGP_LISTENER commit 03621955d8ab0ea30024bd8fc83afda8e48db712 Author: Stephen Hemminger Date: Tue Jul 21 16:27:20 2009 -0700 bgpd: peer action table static/const bgpd.c: (various tables) only used in one place and are immutable. commit 78b31d5cf511c400d7f09158a3d8863f1bf63c2a Author: Stephen Hemminger Date: Tue Jul 21 16:27:26 2009 -0700 ripd: set IP TOS for control socket * ripd.c: (rip_create_socket) RIP packets should go out with Type Of Service (DSCP) set to Internet control (like OSPF and BGP). commit 9a1a331d63ae9db1912a1edb48c5c176454562f8 Author: Paul Jakma Date: Mon Jul 27 12:27:55 2009 +0100 [bgpd] Restore ability of 'neighbor ... update-source' to take interface name * bgp_vty.c: (BGP_UPDATE_SOURCE_STR) Restore ability to accept arbitrary interface names for the 'neighbor ... update-source' command - shouldn't have been deleted. (BGP_UPDATE_SOURCE_STR) Add help for same. commit 97be79f9d38b07214d5ad9b437e1a852c594a985 Author: Denis Ovsienko Date: Fri Jul 24 20:45:31 2009 +0400 [zebra] do not touch socket before pidfile locking Move zserv socket creation code into zebra_zserv_socket_init() and call it only after pidfile lock has been acquired exclusively. This keeps subsequent zebra daemons from deleting the working socket of an already running process (bug #403). commit 5b40b1b57e1fad1caf579e032adf4e111128e486 Author: Thijs Kinkhorst Date: Tue Jul 21 19:24:29 2009 +0400 [doc] zebra.8 via Christian Hammers (#531) The man page for zebra(8) mentions as port number to connect to 2602, but it's acutally 2601 (as shown in /etc/services). 2602 belongs to ripd. Attached patch fixes this typo.