commit 3849ce4e25281d11537ebd0db5e2fa2a7c356b33
Author: Paul Jakma <paul@quagga.net>
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 <tomh@tomh.org>
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 <shemminger@vyatta.com>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <Joakim.Tjernlund@transmode.se>
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 <Joakim.Tjernlund@transmode.se>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <Joakim.Tjernlund@transmode.se>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <paul@quagga.net>
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 <Joakim.Tjernlund@transmode.se>
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 <Joakim.Tjernlund@transmode.se>
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 <paul@quagga.net>
Date:   Thu Jul 30 15:55:24 2009 +0100

    [bgpd] delete erroneous extra brace..

commit 66bed4f4f0235c1eb6edb0a2f6bd4aaf47e5a7f8
Author: Michael Lambert <lambert@psc.edu>
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 <paul@quagga.net>
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 <Joakim.Tjernlund@transmode.se>
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 <Joakim.Tjernlund@transmode.se>
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 <paul@quagga.net>
Date:   Tue Jul 28 18:10:55 2009 +0100

    bgpd/trivial: Fix indentation in previous

commit fc4dc59d08589a887ac33a70d946eb7905541f5f
Author: Steve Hill <quagga@cheesy.sackheads.org>
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 <quagga@cheesy.sackheads.org>
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 <paul.jakma@sun.com>
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 <b_tsiligiannis@silverton.gr>
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 <b_tsiligiannis@silverton.gr>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <shemminger@vyatta.com>
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 <paul@quagga.net>
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 <pilot@etcnet.org>
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 <thijs@debian.org>
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.