]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
12 years agoisisd: add Google's changes to IS-IS
Josh Bailey [Sat, 24 Mar 2012 15:35:20 +0000 (08:35 -0700)]
isisd: add Google's changes to IS-IS

12 years agozebra: tweak deletion of routes without nexthop addr
Subbaiah Venkata [Wed, 28 Mar 2012 02:21:29 +0000 (19:21 -0700)]
zebra: tweak deletion of routes without nexthop addr

  * zebra/zserv.c

    - zread_ipv4_delete(): Pass a null 'gate' parameter to
      rib_delete_ipv4() if the route being deleted does not specify a
      next hop IP address. We were previously passing a pointer to a
      cleared out IP address.

    - zread_ipv4_add(): Fix indentation.

From: Subbaiah Venkata <svenkata@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
12 years agozebra: read multipath routes and hw addr from netlink
Josh Bailey [Thu, 22 Mar 2012 08:09:21 +0000 (01:09 -0700)]
zebra: read multipath routes and hw addr from netlink

  * zebra/rt_netlink.c:

    - Pick up the hardware address of an interface when we receive a
      netlink link change message. Extract code for parsing the
      link-layer hardware address into a new function so we can reuse
      it.

    - netlink_routing_table(): Update to handle multipath routes.

    - netlink_route_change(): Update to handle multipath routes. Fix
      problem where the metric was not being read out.

  * zebra/zebra_rib.[ch]: Extern nexthop_ipv4_ifindex_add() -- it is
    now called from the netlink code.

From: Josh Bailey <joshb@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
12 years agolib: add stream_set_endp()
Subbaiah Venkata [Sat, 24 Mar 2012 20:10:19 +0000 (13:10 -0700)]
lib: add stream_set_endp()

  * lib/stream.[ch]:

    - Add stream_set_endp(). This can be used to trim data (for
      example, padding) at the end of a stream.

    - Fix swapped 'getp' and 'endp' parameters in STREAM_WARN_OFFSETS.

From: Subbaiah Venkata <svenkata@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
12 years agolib: add support for keyed-hashing with MD5
Josh Bailey [Wed, 21 Mar 2012 17:22:19 +0000 (10:22 -0700)]
lib: add support for keyed-hashing with MD5

  * lib/md5.[ch] Add implementation of HMAC-MD5 from RFC 2104.

From: Josh Bailey <joshb@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
12 years agolib: Tweaks to linked list macros
Josh Bailey [Wed, 21 Mar 2012 17:00:07 +0000 (10:00 -0700)]
lib: Tweaks to linked list macros

  * lib/linklist.h

    - Change the listnextnode, listhead and listtail macros so that
      they allow the list pointer to be NULL.

    - Modify the ALL_LIST_ELEMENTS* macros such that they clear the
      data pointer at the beginning and end of the loop.

From: Josh Bailey <joshb@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoMerge remote-tracking branch 'polymorf/master'
Greg Troxel [Wed, 13 Jul 2011 17:20:06 +0000 (13:20 -0400)]
Merge remote-tracking branch 'polymorf/master'

13 years agofix typo
Roman Hoog Antink [Mon, 27 Jun 2011 15:24:21 +0000 (17:24 +0200)]
fix typo

13 years agoOmit --opaque-lsa from build (now default).
Greg Troxel [Tue, 28 Jun 2011 19:05:05 +0000 (15:05 -0400)]
Omit --opaque-lsa from build (now default).

13 years agoospf6d: copy "mtu-ignore" option from ospfd
Dmitrij Tejblum [Fri, 22 Apr 2011 15:27:54 +0000 (19:27 +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

13 years agozebra: trivial warning fix
Paul Jakma [Mon, 11 Apr 2011 15:33:20 +0000 (16:33 +0100)]
zebra: trivial warning fix

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

13 years agobgpd: trivial format / warning fixes
Paul Jakma [Mon, 11 Apr 2011 15:31:43 +0000 (16:31 +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

13 years agoospf: Fix OSPF API and ospf-te LSA refreshers to match recent API change
Paul Jakma [Mon, 11 Apr 2011 15:28:16 +0000 (16:28 +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

13 years agoFix authorship of previous ospf6d commit
Paul Jakma [Mon, 4 Apr 2011 10:18:39 +0000 (11:18 +0100)]
Fix authorship of previous ospf6d commit

13 years agoospf6d: fix crash if zebra_interface_state_read can't find interface
Ingo Flaschberger [Mon, 4 Apr 2011 10:17:45 +0000 (11:17 +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.

13 years agoospf6d: fix crash if zebra_interface_state_read can't find interface
Paul Jakma [Mon, 4 Apr 2011 09:39:15 +0000 (10:39 +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.

13 years agobgpd: fix memory leak when deleting a community
Michael Lambert [Mon, 13 Sep 2010 15:48:11 +0000 (11:48 -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.

13 years agoRevert "bgpd: "Intern" communities in route maps"
Paul Jakma [Fri, 1 Apr 2011 14:58:27 +0000 (15:58 +0100)]
Revert "bgpd: "Intern" communities in route maps"

This reverts commit 2c9fd7e07283b8904ef20030c9dadb032e999b12.

13 years agodoc: Add dependency for quagga.pdf make target
Paul Jakma [Wed, 30 Mar 2011 13:30:20 +0000 (14:30 +0100)]
doc: Add dependency for quagga.pdf make target

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

13 years agoMerge remote-tracking branch 'remotes/quagga/master'
Paul Jakma [Tue, 29 Mar 2011 13:25:56 +0000 (14:25 +0100)]
Merge remote-tracking branch 'remotes/quagga/master'

13 years agobgpd: Fix merge error in jhash commit
Paul Jakma [Tue, 29 Mar 2011 13:18:49 +0000 (14:18 +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.

13 years agobgpd: refine the setting up of GTSM
Stephen Hemminger [Thu, 24 Mar 2011 17:30:21 +0000 (17:30 +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.

13 years agobuild: treat opaque-lsa default correctly for ospfapi
Greg Troxel [Thu, 24 Mar 2011 14:19:43 +0000 (10:19 -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.

13 years agolib: Add support for IPv6 ttl security
Stephen Hemminger [Thu, 5 Aug 2010 17:26:27 +0000 (10:26 -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.

13 years agobgpd: Cleanups & fixes for minttl / GTSM
Stephen Hemminger [Thu, 24 Mar 2011 10:51:59 +0000 (10:51 +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.

13 years agobgpd: RFC 5082 Generalized TTL Security Mechanism support
Nick Hilliard [Wed, 23 Mar 2011 15:33:17 +0000 (15:33 +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.

13 years agoMerge branch 'master' of ssh://code.quagga.net/var/git/quagga
Paul Jakma [Wed, 23 Mar 2011 10:38:45 +0000 (10:38 +0000)]
Merge branch 'master' of ssh://code.quagga.net/var/git/quagga

13 years agobgpd: Fix compile failure if IPv6 build was disabled.
Paul Jakma [Wed, 23 Mar 2011 10:30:30 +0000 (10:30 +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

13 years agolib: fix more format warnings (#637)
Christian Hammers [Wed, 23 Mar 2011 10:07:55 +0000 (13:07 +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

13 years agobgpd: attribute jhash call should use a standard interface to in6_addr data
Stephen Hemminger [Tue, 22 Mar 2011 16:14:57 +0000 (16:14 +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.

13 years agoospfd: Compile fix for opaque support
Paul Jakma [Tue, 22 Mar 2011 15:23:55 +0000 (15:23 +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.

13 years agobuild: change sense of opaque-{lsa,te} enable args to enable by default
Paul Jakma [Tue, 22 Mar 2011 10:18:05 +0000 (10:18 +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.

13 years agobgpd: enable TCP corking
Stephen Hemminger [Thu, 5 Aug 2010 17:26:25 +0000 (10:26 -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.

13 years agolib: add TCP_CORK wrapper
Stephen Hemminger [Thu, 5 Aug 2010 17:26:24 +0000 (10:26 -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.

13 years agobgpd: leave peer socket in non-blocking mode (mostly)
Stephen Hemminger [Thu, 5 Aug 2010 17:26:23 +0000 (10:26 -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.

13 years agobgpd: "Intern" communities in route maps
Michael Lambert [Sat, 24 Jul 2010 16:44:07 +0000 (12:44 -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.

13 years agobgpd: New show commands for improved view and address family support
Michael Lambert [Fri, 23 Jul 2010 18:43:04 +0000 (14:43 -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.

13 years agorelease: 0.99.18
Paul Jakma [Mon, 21 Mar 2011 14:56:00 +0000 (14:56 +0000)]
release: 0.99.18

* configure.ac: Bump to 0.99.18

13 years agobgpd: Remove AS Path limit/TTL functionality
Paul Jakma [Sun, 5 Dec 2010 20:28:02 +0000 (20:28 +0000)]
bgpd: Remove AS Path limit/TTL functionality

* draft-ietf-idr-as-pathlimit doesn't seem to have gone anywhere, and its
  author does not think it will make progress in IDR. Remove all support
  introduced for it, but leave stubs for the commands to avoid breaking
  any configurations.

  Basically reverts cecab5e9725792e60a5e4b473e238a14cd85815d.

13 years agobgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error
Paul Jakma [Sun, 5 Dec 2010 17:17:26 +0000 (17:17 +0000)]
bgpd/security: CVE-2010-1674 Fix crash due to extended-community parser error

* bgp_attr.c: (bgp_attr_ext_communities) Certain extended-community attrs
  can leave attr->flag indicating ext-community is present, even though no
  extended-community object has been attached to the attr structure.  Thus a
  null-pointer dereference can occur later.
  (bgp_attr_community) No bug fixed here, but tidy up flow so it has same
  form as previous.

  Problem and fix thanks to anonymous reporter.

13 years agoospf6d: Extend the "[no] debug ospf6 route" vty commands
Tom Goff [Wed, 10 Nov 2010 21:02:11 +0000 (13:02 -0800)]
ospf6d: Extend the "[no] debug ospf6 route" vty commands

* ospf6_route.c ([no_]debug_ospf6_route) Include memory as a debug
  option.  This allows ospf6 route memory debugging to be enabled or
  disabled interactively or from a config file.

13 years agoospf6d: Route locking (memory) cleanup
Tom Goff [Wed, 10 Nov 2010 21:03:02 +0000 (13:03 -0800)]
ospf6d: Route locking (memory) cleanup

* ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even
  when there's no next route.  This is consistent with how
  ospf6_route_next() behaves.

* ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last
  route considered is always unlocked.  This is needed when the for
  loop terminates because ospf6_route_is_prefix() returns zero.

13 years agoospf6d: Have ospf6d cleanup when it terminates normally
Tom Goff [Wed, 10 Nov 2010 21:01:41 +0000 (13:01 -0800)]
ospf6d: Have ospf6d cleanup when it terminates normally

A clean exit makes it easier to use memory debuggers.

* ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map
  cleanup.
* ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa
  handler vector.
* ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to
  gracefully exit.
* ospf6_message.c: (ospf6_message_terminate) Add a function that frees
  the send and receive buffers.
* ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function.
  Disable ospf6 before freeing everything.

13 years agoospf6d: Remove obsolete code
Tom Goff [Wed, 10 Nov 2010 21:03:23 +0000 (13:03 -0800)]
ospf6d: Remove obsolete code

* ospf6_area.c: (ospf6_area_delete) Get rid of unused code that refers
    to a nonexistent function and structure member.

13 years agoospf6d: Fix memory allocation issues in SPF
Tom Goff [Wed, 10 Nov 2010 21:02:38 +0000 (13:02 -0800)]
ospf6d: Fix memory allocation issues in SPF

* ospf6_area.c: Call ospf6_spf_table_finish() before deleting the spf
    table.  This ensures that the associated ospf6_vertex structures
    are also freed.
* ospf6_spf.c: Only allocate a priority queue when a spf calculation
    is actually performed.  Also defer calling ospf6_spf_table_finish().

13 years agolib: zlog should clean up its memory
Tom Goff [Wed, 10 Nov 2010 21:01:17 +0000 (13:01 -0800)]
lib: zlog should clean up its memory

* log.c: (closezlog) Also free the dynamically allocated filename when
    a log is closed.

13 years agolib: Add a function to delete all interfaces
Tom Goff [Wed, 10 Nov 2010 21:00:54 +0000 (13:00 -0800)]
lib: Add a function to delete all interfaces

if.c: (if_terminate) This adds a cleanup function that can be called
    when a daemon exits, similar to vty_terminate().

13 years agobgpd: use Jenkins hash for BGP transit, cluster and attr hashes
Stephen Hemminger [Fri, 27 Aug 2010 21:12:54 +0000 (14:12 -0700)]
bgpd: use Jenkins hash for BGP transit, cluster and attr hashes

* bgp_attr.c: I observed while doing some debugging that even for simple
  tests there was a lot of hash collisions for BGP attributes.  Switch to
  using Jhash rather than additive hashing.  Probably overkill, but the
  function is fast and available.

  ({attrhash,cluster,transit}_hask_key_make) convert to Jenkins hash,
  instead of additive hash.

13 years agolib: Better hashing of string values using Bernstein hash
Stephen Hemminger [Fri, 27 Aug 2010 21:11:14 +0000 (14:11 -0700)]
lib: Better hashing of string values using Bernstein hash

* hash.{h,c}: (string_hash_make) Hash optimised for strings, current
  implementation using Bernstein hash, which offers a good compromise
  between distribution and performance.
* distribute.c: (distribute_hash_make) use previous instead of additive
  string hash.
* if_rmap.c: (if_rmap_hash_make) ditto

13 years agobgpd: Remove extra lock on interior table node
Barry Friedman [Thu, 3 Feb 2011 22:02:53 +0000 (14:02 -0800)]
bgpd: Remove extra lock on interior table node

If the radix tree creates an extra interior node in bgp_node_get(),
it locks the interior node even though this node is not returned to
the caller, so it may never be unlocked. The lock prevents this node
from being deleted.

* bgpd/bgp_table.c: (bgp_node_get) Remove lock on interior node which
  prevents proper node deletion

13 years agobgpd: Fix display of unsigned attributes
Wataru Tanitsu [Fri, 10 Sep 2010 16:47:56 +0000 (09:47 -0700)]
bgpd: Fix display of unsigned attributes

* bgp_route.c: (route_vty_out*) The local prefix, metric and weight values
  are all stored as uint32_t.  Change the format to %u so that large values
  are not displayed as negative integers.

13 years agobgpd: fix use of free memory by update_rsclient
Stephen Hemminger [Thu, 5 Aug 2010 17:26:31 +0000 (10:26 -0700)]
bgpd: fix use of free memory by update_rsclient

* bgp_route.c: (bgp_static_update_rsclient) BGP sometimes crashes when
  removing route server client because of use after free.

  The code to update rsclient created a local static copy of bgp attributes
  but neglected to handle the extra information pointer.  The extra
  information was getting freed by bgp_attr_unintern() and reused later when
  the copy was passed to bgp_attr_intern().

  The fix is to use the attr_dup function to create a copy of the extra
  information, then clean it up.

13 years agobgpd: unlock node on aggregate error
Robert Bays [Thu, 5 Aug 2010 17:26:29 +0000 (10:26 -0700)]
bgpd: unlock node on aggregate error

* bgp_route.c: (bgp_aggregate_set) make sure to unlock BGP node if failure

13 years agobgpd: fix errors in aggregate address command
Robert Bays [Thu, 5 Aug 2010 17:26:28 +0000 (10:26 -0700)]
bgpd: fix errors in aggregate address command

* bgpd: (bgp_aggregate_{set,unset,delete}) This fixes locking and other
  issues with aggregate set/unset command

13 years agobgpd: use XCALLOC to allocate bgpd damp array
Stephen Hemminger [Thu, 5 Aug 2010 17:26:30 +0000 (10:26 -0700)]
bgpd: use XCALLOC to allocate bgpd damp array

* bgpd: (bgp_damp_parameter_set) The BGP reuse_index is not initialized
  properly.  This would cause sporadic crash when disabling dampening.  Use
  XCALLOC correctly and the right size array is initialized and no memset is
  needed.

13 years agobgpd: fix bgp_node locking issues
Chris Caputo [Tue, 27 Jul 2010 16:28:55 +0000 (16:28 +0000)]
bgpd: fix bgp_node locking issues

* bgpd: Connected table locks were being locked but not unlocked, such that
  eventually a lock would exceed 2^31 and become negative, thus triggering
  an assert later on.
* bgp_main.c: (bgp_exit) delete connected elements along with ifp's.
* bgp_nexthop.c: (bgp_nexthop_lookup{,_ipv6}) add missing unlocks
  (bgp_multiaccess_check_v4) ditto
  (bgp_connected_{add,delete}) Use a distinct memtype for bgp_connected_ref.
  (bgp_scan_finish) reset the nexthop cache to clean it up when bgpd exits
* bgp_route.c: fix missing bgp_node unlocks
* lib/memtype.c: (memory_list_bgp) add MTYPE_BGP_CONN
* testing: has been tested for almost 2 months now.

13 years agolib: Fix accounting of memory
Chris Hall [Fri, 23 Jul 2010 18:27:11 +0000 (11:27 -0700)]
lib: Fix accounting of memory

* lib/memory.c: (zrealloc) If is called with NULL pointer then it should
  increment allocations because it behaves the same as zmalloc.

  (zfree) is called with NULL pointer, it does nothing therefore allocation
  count should not change.

13 years agoMerge paul/ospfd/201012-review ospfd and lib/ fixes and performance improvements
Paul Jakma [Sun, 20 Mar 2011 22:08:02 +0000 (22:08 +0000)]
Merge paul/ospfd/201012-review ospfd and lib/ fixes and performance improvements

13 years agodoc: fix "ipv6 address" interface command syntax (#608)
Denis Ovsienko [Fri, 18 Mar 2011 17:20:53 +0000 (20:20 +0300)]
doc: fix "ipv6 address" interface command syntax (#608)

13 years agobgpd: improve "monotonic" uptime correction
John Kemp [Fri, 18 Mar 2011 14:52:18 +0000 (17:52 +0300)]
bgpd: improve "monotonic" uptime correction

Older versions of Quagga/Zebra would output a value in MRT table
dump files for "uptime" aka "ORIGINATED" that was a WALL clock
value.  Given that uptime is now internally a bgp_clock MONOTONIC
value, the output in the MRT files is showing up as monotonic.

Note: time of MRT dump is still recorded correctly as a
time() based value, so we haven't lost that value.

Proposal is to correct the uptime output on the vty and in the
MRT files to again display something more akin to WALL time.

* bgp_dump.c: (bgp_dump_routes_func) add conditional correction
* bgp_route.c: (route_vty_out_detail) make correction conditional, move
  variable declaration to beginning of the function

13 years agoripngd: copy debug statements fix from ripd
Stephen Hemminger [Sat, 12 Mar 2011 22:14:08 +0000 (01:14 +0300)]
ripngd: copy debug statements fix from ripd

Doesn't ripng needs same fix as ripd.

13 years agoripd: resolve debug statements issue (bug 442)
Andrew J. Schorr [Thu, 24 Feb 2011 10:52:14 +0000 (13:52 +0300)]
ripd: resolve debug statements issue (bug 442)

...A nasty bug, if you forgot to disable debugging, stored the config
and reboot your machine - if you really depend on ripd, then the machine
will not fully come back on the network, because ripd fails.

13 years agobgpd: VTY string fixes for debug commands
David Ward [Mon, 17 Jan 2011 07:58:52 +0000 (10:58 +0300)]
bgpd: VTY string fixes for debug commands

* bgpd/bgp_debug.c: fix VTY strings for BGP debug commands to match
  correct syntax

13 years agobgpd: fix handling of "Unsupported Capability"
Dmitrij Tejblum [Fri, 14 Jan 2011 15:27:05 +0000 (18:27 +0300)]
bgpd: fix handling of "Unsupported Capability"

* bgp_packet.c: (bgp_notify_receive) justify the difference between
BGP_NOTIFY_OPEN_UNSUP_PARAM and BGP_NOTIFY_OPEN_UNSUP_CAPBL cases, as
it is explained in RFC5492, page 3, paragraph 1.

"Unsupported Capability" error does not mean, that the peer doesn't
support capabilities advertisement -- quite the opposite (if the peer
would not support capabilities advertisement, the code would be
"Unsupported Optional Parameter"). Thus there is no reason to mark
the peer as one non-supporting capabilities advertisement.

Example: suppose the peer is in fact IPv6-only, but we didn't configure
anything address-family specific for it. Then, the peer would refuse
the session with "Unsupported Capability" code. If we internally set
the peer as non-supporting capabilities advertisement after that, we
will not be able to establish the session with it ever, even with a
fixed configuration -- IPv6-only BGP session cannot be established
without capabilities.

In practice an edge case would be seen as the same IPv6 peer working
with its "neighbor" block read from bgpd.conf, but not working, when
slowly input in "conf t" mode.

13 years agoospf6d: fix crash in SPF calculation
Dmitrij Tejblum [Thu, 13 Jan 2011 15:25:40 +0000 (18:25 +0300)]
ospf6d: fix crash in SPF calculation

* ospf6_spf.c: Don't replace a node with another node with a lower
  number of hops, instead get them from the queue in the correct
  order. (Actually, the replacement crashed the ospf6d daemon
  rather than worked.)

13 years agoospfd: Remove oi field from LSA, have network_lsa_refresh look up when needed
Paul Jakma [Thu, 15 Apr 2010 07:11:51 +0000 (08:11 +0100)]
ospfd: Remove oi field from LSA, have network_lsa_refresh look up when needed

* ospf_lsa.h: (struct ospf_lsa) remove oi pointer
* ospf_lsa.c: (ospf_network_lsa_refresh) instead of keeping a pointer, just
  lookup the oi when it's needed. This decouples network LSA from oi lifetime
  and avoids having to invalidate pointers in LSAs when an oi changes,
  simplifying the code.

13 years agoospfd: potential fix for router-id change assert on refresh cleanup patch
Paul Jakma [Wed, 14 Apr 2010 09:32:12 +0000 (10:32 +0100)]
ospfd: potential fix for router-id change assert on refresh cleanup patch

* ospf_lsa.c: (various) unregister LSAs from refresher before flushing.

13 years agoospfd: Fix maxage/flush to not try flood twice, remember maxages for longer
Paul Jakma [Sun, 24 Jan 2010 23:36:20 +0000 (23:36 +0000)]
ospfd: Fix maxage/flush to not try flood twice, remember maxages for longer

2006-05-30 Paul Jakma <paul.jakma@sun.com>

* (general) Fix confusion around MaxAge-ing and problem with
  high-latency networks. Analysis and suggested fixes by
  Phillip Spagnolo, in [quagga-dev 4132], on which this commit
  expands slightly.
* ospf_flood.{c,h}: (ospf_lsa_flush) new function.
  Scope-general form of existing flush functions, essentially
  the dormant ospf_maxage_flood() but without the ambiguity of
  whether it is responsible for flooding.
* ospf_lsa.c: (ospf_lsa_maxage) Role minimised to simply setup
  LSA on the Maxage list and schedule removal - no more.
  ospf_lsa_flush* being the primary way to kick-off flushes
  of LSAs.
  Don't hardcode the remover-timer value, which was too
  short for very high-latency networks.
  (ospf_maxage_lsa_remover) Just do what needs to be done to
  remove maxage LSAs from the maxage list, remove the call
  to ospf_flood_through().
  Don't hardcode remove-timer value.
  (ospf_lsa_{install,flush_schedule}) ospf_lsa_flush is the correct
  entrypoint to flushing maxaged LSAs.
  (lsa_header_set) Use a define for the initial age, useful for
  testing.
* ospf_opaque.c: (ospf_opaque_lsa_refresh) ditto.
  (ospf_opaque_lsa_flush_schedule) ditto.
* ospfd.h: ({struct ospf,ospf_new}) Add maxage_delay parameter,
  interval to wait before running the maxage_remover. Supply a
  suitable default.
  Add a define for OSPF_LSA_INITIAL_AGE, see lsa_header_set().

13 years agoospfd: Unify router and network LSA refresh logic with general refresher
Paul Jakma [Sun, 24 Jan 2010 22:42:13 +0000 (22:42 +0000)]
ospfd: Unify router and network LSA refresh logic with general refresher

* (general) Get rid of the router and network LSA specific refresh timers
  and make the general refresher do this instead. Get rid of the twiddling
  of timers for router/network LSA that was spread across the code.

  This lays the foundations for future, general LSA refresh improvements,
  such as making sequence rollover work, and having generic LSA delays.

* ospfd.h: (struct ospf) Bye bye to the router-lsa update timer thread
  pointer.
  (struct ospf_area) and to the router-lsa refresh timer.
* ospf_interface.h: Remove the network_lsa_self timer thread pointer
* ospf_lsa.h: (struct ospf_lsa) oi field should always be there, for benefit
  of type-2/network LSA processing.
  (ospf_{router,network}_lsa_{update_timer,timer_add}) no timers for these
  more
  (ospf_{router,network}_lsa_update) more generic functions to indicate that some
  router/network LSAs need updating
  (ospf_router_lsa_update_area) update router lsa in a particular area alone.
  (ospf_{summary,summary_asbr,network}_lsa_refresh) replaced by the general
  ospf_lsa_refresh function.
  (ospf_lsa_refresh) general LSA refresh function

13 years agoospfd: Remember network LSA sequence numbers across up/downs of an interface
Paul Jakma [Tue, 13 Oct 2009 15:13:13 +0000 (16:13 +0100)]
ospfd: Remember network LSA sequence numbers across up/downs of an interface

* ospf_interface.h: (struct ospf_if_params) add field for saved network LSA
  seqnum
* ospf_interfa.c: (ospf_new_if_params) init network_lsa_seqnum field to
  initial seqnum - doesnt matter though.
* ospf_lsa.c: (ospf_network_lsa_new) check for any saved sequence number,
  and use if it exists.  Save the result back. This should help avoid needless
  round of LSUpdate/LSRequests when a neighbour has to tell the originator
  "uhm, i have something newer than that already".
* ospf_vty.c: (show_ip_ospf_interface_sub) Show the saved network LSA seqnum

13 years agoospfd: Prioritise hellos for sending by queueing to head of output buffer
Paul Jakma [Fri, 8 Jan 2010 17:11:15 +0000 (17:11 +0000)]
ospfd: Prioritise hellos for sending by queueing to head of output buffer

* It's possible for the packet output buffer to be filled up with a long
  series of non-Hello packets in between Hellos packets, such that the
  router's neighbours don't receive the Hello packet in time, even though
  the hello-timer ran at about the right time. Fix this by prioritising
  Hello packets, letting them skip the queue and go ahead of any packets
  already on the queue.

  This problem can occur when there are lots of LSAs and slow links.

* ospf_packet.h: (ospf_hello_send_sub) not used outside of ospf_packet.c
* ospf_packet.c: (ospf_fifo_push_head) add packet to head of fifo (so its
  no longer really a fifo, but hey)
  (ospf_packet_add_top) add packet to top of the packet output queue.
  (ospf_hello_send_sub) Put Hello's at the top of the packet output queue.
  make it take in_addr_t parameter, so that this
  ospf_hello_send can re-use this code too.
  (ospf_hello_send) consolidate code by using ospf_hello_send_sub
  (ospf_poll_send,ospf_hello_reply_timer) adjust for ospf_hello_send_sub.

13 years agoospfd: Reset neighbour inactivity timer for any packet arrival
Paul Jakma [Thu, 7 Jan 2010 06:12:53 +0000 (06:12 +0000)]
ospfd: Reset neighbour inactivity timer for any packet arrival

* The hello protocol monitors connectivity in 2 different ways:

  a) local -> remote
  b) remote -> local

  Connectivity is required in both directions (2-way) for adjacencies to
  form.

  The first requires a round-trip to detect, and is done by advertising
  which other hosts a router knows about in its hello messages.  This allows
  a host to detect which other routers are and are not receiving its
  message.  If a remote neighbour delists the local router, then the local
  router raises a "1-Way Received" event.

  The latter is straight-forward, and is detected by setting a timer for the
  neighbour. If another Hello packet is not received within this time then
  the neighbour is dead, and a separate "Inactive" event is raised.

  These are 2 different and relatively independent measures.

  Knowing that we can optimise the 2nd, remote->local measure and reset
  the timer when /any/ packet arrives from that neighbour. For any packet
  is as good as a Hello packet. This can help in marginal situations, where
  the number of protocol messages that must be sent sometimes can exceed
  the capacity of the network to transmit the messages within the configured
  dead-time. I.e. an OSPF network with lots of LSAs, slow links and/or
  slow hosts (e.g. O(10k) LSAs, O(100kbit) links, embedded CPUs, and O(10s)
  dead-times).

  This optimisation allows an OSPF network to run closer to this margin,
  and/or allows networks to perhaps better cope with rare periods of
  exceptional load, where otherwise they would not.

  It's fully compatible with plain OSPF implementations and doesn't
  prejudice dead-neighbour detection.

* ospf_nsm.h: Rename HelloReceived event to PacketReceived.
* ospf_nsm.c: (nsm_hello_received) -> nsm_packet_received
* ospf_packet.c: Schedule PacketReceived whenever a valid message is
  received.

13 years agoospfd: the maxage_lsa_remover should check whether it needs to yield the cpu
Paul Jakma [Sat, 9 Jan 2010 14:11:02 +0000 (14:11 +0000)]
ospfd: the maxage_lsa_remover should check whether it needs to yield the cpu

13 years agoospfd: Fix various route_unlock discrepencies
Paul Jakma [Tue, 13 Apr 2010 21:43:34 +0000 (22:43 +0100)]
ospfd: Fix various route_unlock discrepencies

* ospf_ase.c: (ospf_ase_calculate_route) Fix compiler warning about eval
  needing brackets.
  (various) add defensive asserts.
* ospf_lsdb.c: (ospf_lsdb_add) add missing node unlock if same lsa already
  was indexed.
  (ospf_lsdb_delete) check it's actually the same as specified lsa before
  deleting
  (ospf_lsdb_lookup_by_id_next) fix another corner case - no result =>
  don't go on.

13 years agoospfd: fix lsa_refresh_walker unlock before use bug
Paul Jakma [Tue, 13 Apr 2010 21:33:54 +0000 (22:33 +0100)]
ospfd: fix lsa_refresh_walker unlock before use bug

* ospf_lsa.c: (ospf_lsa_refresh_walker) fix an "unlock before use" bug
  (various) add asserts for lsa refcounting.

13 years agoospfd: interface code should leave network_lsa_self alone
Paul Jakma [Sun, 24 Jan 2010 21:34:54 +0000 (21:34 +0000)]
ospfd: interface code should leave  network_lsa_self alone

* ospf_interface.c: (ospf_if_{new,cleanup}) don't touch the network_lsa_self,
  ISM and NSM take care of cleaning it up if needs be + we want to keep
  network_lsa_self around when possible for the the seqnum.

  This shouldn't really make much difference though, particularly as we have
  a separate sequence number memory mechanism.

13 years agoospfd: OSPF_MIN_LS_ARRIVAL compare should be >= to match ospf_flood
Paul Jakma [Mon, 11 Jan 2010 16:22:12 +0000 (16:22 +0000)]
ospfd: OSPF_MIN_LS_ARRIVAL compare should be >= to match ospf_flood

* ospf_packet.c: (ospf_ls_upd) the corresponding test on the arrival side
  in (ospf_flood) is <, so this should be >=, not >, purely for consistency.

  There is no practical effect here though.

13 years agoospfd: ospf_if_free can leave dangling references on ISM events - cancel them
Paul Jakma [Thu, 15 Apr 2010 10:39:05 +0000 (11:39 +0100)]
ospfd: ospf_if_free can leave dangling references on ISM events - cancel them

* ospf_interface.c: (ospf_if_free) events with dangling pointers left
  scheduled can be seriously bad for ospfd's health. Cancel the event.

13 years agoospfd: Lower level of some common messages from info to debug
Paul Jakma [Mon, 6 Dec 2010 12:21:52 +0000 (12:21 +0000)]
ospfd: Lower level of some common messages from info to debug

* ospf_{ism,network}.c: Certain oft-repeated but trivial messages should be
  debug log level, not info, to avoid spamming 'terminal monitor'

13 years agolib: Fix bug in prefix trie lookup
Paul Jakma [Tue, 13 Apr 2010 21:42:33 +0000 (22:42 +0100)]
lib: Fix bug in prefix trie lookup

* lib/table.c: (route_node_match) fix overshoot that was causing this
  function to go 1 bit too far and thus reading past end of prefix.
  (route_node_lookup) be defensive - don't assume others will clean up
  leaves when removing info.

13 years agolib: prefix.c nano-optimisation
Paul Jakma [Sun, 24 Jan 2010 21:41:02 +0000 (21:41 +0000)]
lib: prefix.c nano-optimisation

* lib/prefix.c: (prefix_match) nano-optimisation, let it return early
  without copying pointers.

13 years agolib: Make workqueue more conservative about ramping up
Paul Jakma [Mon, 11 Jan 2010 13:55:01 +0000 (13:55 +0000)]
lib: Make workqueue more conservative about ramping up

* workqueue.c: (work_queue_run) Err more on the side of keeping granularity
  down, by being more conservative about increasing it.
  Also, fix mispelling.

13 years agolib: Add a command to clear the thread CPU history data
Paul Jakma [Sat, 9 Jan 2010 16:15:00 +0000 (16:15 +0000)]
lib: Add a command to clear the thread CPU history data

* (general) this can be useful when investigating thread latency problems,
  when you don't want to have to restart a daemon between tests.
* thread.c: (cpu_record_(hash_)clear) wipe the stored thread cpu history
  data, according to the filter, similar to the vty print code.
  (clear_thread_cpu_cmd) new command to clear data.
* thread.h: export new command
* command.c: install it

13 years agolib: Thread scheduler should be fair and not let events starve I/O and timers
Paul Jakma [Mon, 11 Jan 2010 16:33:07 +0000 (16:33 +0000)]
lib: Thread scheduler should be fair and not let events starve I/O and timers

* thread.c: (thread_fetch) the current scheduler will service events
  indefinitely, ignoring I/O and timers, so long as there are events.
  In other words, events can crowd out I/O and timers.  In theory this
  shouldn't be a huge problem as events are generated only by timers
  and I/O, however in practice it means normal-load behaviour is not as
  useful a predictor of high-load behaviour as it should be.

  Fix this by considering all the kinds of threads, in every run of the
  scheduler.  For any given run, we prioritise events, however across
  runs the scheduler should be fair.

  This has been observed to give more stable inter-packet times in
  testing of ospfd (i.e.  lower std-dev).

 (thread_process) new heler to queue all the given threads onto the ready
 list

13 years agolib: thread history funcname shouldn't be constant, it's freed
Paul Jakma [Mon, 11 Jan 2010 16:30:45 +0000 (16:30 +0000)]
lib: thread history funcname shouldn't be constant, it's freed

* thread.h: (struct cpu_thread_history.funcname) malloc gets called on this
  so it should not be const
* thread.c: (cpu_record_print) cast the (const char *) to (char *), this
  function knows what it's doing (free wont be called on it).

13 years agobgpd: Simplify process queue init
Paul Jakma [Fri, 8 Jan 2010 14:05:32 +0000 (14:05 +0000)]
bgpd: Simplify process queue init

* bgp_route.c: (bgp_process_queue_init) rsclient wasn't getting all the
  same things initialised as the main queue. Simplify to make it more robust.

13 years agobgpd: fix community-list error message spelling
Denis Ovsienko [Wed, 8 Dec 2010 15:51:37 +0000 (18:51 +0300)]
bgpd: fix community-list error message spelling

* bgp_vty.c: (community_list_perror, show_ip_community_list_arg,
  show_ip_extcommunity_list_arg) fix spelling

13 years agoinfrastructure: Express preference for published git repos
Greg Troxel [Wed, 3 Nov 2010 11:37:23 +0000 (07:37 -0400)]
infrastructure: Express preference for published git repos

* HACKING: Express notion that a published git repository is
  preferred.  Fold request for commit message into patch section.
  Express desire for comments in code explaining correctness of
  post-commit state, and for commit message to explain correctness of
  the change.

13 years agoinfrastructure: Whitespace cleanup.
Greg Troxel [Wed, 3 Nov 2010 11:22:00 +0000 (07:22 -0400)]
infrastructure: Whitespace cleanup.

HACKING: Whitespace changes only.

13 years agoinfrastructure: Clarify commit message format.
Greg Troxel [Wed, 3 Nov 2010 11:20:38 +0000 (07:20 -0400)]
infrastructure: Clarify commit message format.

Note 54/72 line length rules, and that this is intended to play nice
with "git log --oneline".

13 years agoAdjust description of tomhenderson repo.
Greg Troxel [Wed, 3 Nov 2010 11:16:32 +0000 (07:16 -0400)]
Adjust description of tomhenderson repo.

Tom's repo is now a clone of the official repo and has an mttr branch
off of 0.99.17.

14 years agobgpd: fix printed value of last-update timestamp
Vladimir L Ivanov [Thu, 21 Oct 2010 10:59:54 +0000 (14:59 +0400)]
bgpd: fix printed value of last-update timestamp

* bgp_route.c: (route_vty_out_detail) calculate time value
    in a way, which works regardless of monotonic clock
    being used or not

14 years agozclient: fix router-id calculation for IPv6 (#595)
Dmitry Tejblum [Mon, 18 Oct 2010 15:05:39 +0000 (19:05 +0400)]
zclient: fix router-id calculation for IPv6 (#595)

If router-id is not specified in ospf6d.conf, ospf6d will get it from
the zebra daemon. But ospf6d originates Link LSAs before the router-id
is returned by zebra, thus this router's Link LSAs will be flooded
with AdvRouter set to 0.

* zclient.c: zclient_start(): send ZEBRA_INTERFACE_ADD message after
  ZEBRA_ROUTER_ID_ADD, not before

14 years agobgpd, lib: adopt afi_t and safi_t in several places
Michael Lambert [Thu, 22 Jul 2010 17:20:55 +0000 (13:20 -0400)]
bgpd, lib: adopt afi_t and safi_t in several places

* bgpd/bgp_attr.c, bgpd/bgp_open.h, bgpd/bgp_route.c, lib/prefix.c,
  lib/prefix.h: Various integer types were being used where, if we
  had strict type checking, afi_t and safi_t would be required.

Signed-off-by: G.Balaji <balajig81@gmail.com>
(cherry picked from commit c8af35ffa2dc79ff7d7ff00b1b61f1f50a100ab6)

14 years agoAdd MTR repository.
Greg Troxel [Fri, 24 Sep 2010 13:22:37 +0000 (09:22 -0400)]
Add MTR repository.

14 years agolib/vty.c: add missing format string when printing out motd message
Nico Golde [Sun, 1 Aug 2010 13:24:35 +0000 (15:24 +0200)]
lib/vty.c: add missing format string when printing out motd message

Signed-off-by: G.Balaji <balajig81@gmail.com>
14 years agoDocument rules for zalloc and friends.
Greg Troxel [Fri, 17 Sep 2010 16:19:13 +0000 (12:19 -0400)]
Document rules for zalloc and friends.

lib/memory.c:z{a,c,re}alloc, zfree, zdup: add requires/effects
comments.

14 years agoAdd pointer to Balaji G. git.
Greg Troxel [Fri, 17 Sep 2010 15:02:45 +0000 (11:02 -0400)]
Add pointer to Balaji G. git.

Balaji has been accumulating patches from the mailing list and
pre-screening them and spiffing up commit messages.

14 years agoSet from even if binfo->extra is NULL.
Greg Troxel [Fri, 17 Sep 2010 14:47:49 +0000 (10:47 -0400)]
Set from even if binfo->extra is NULL.

bgpd/bgp_packet.c:bgp_update_packet(): When extracting the peer, don't
  fail to extract it because "binfo->extra" is NULL.  While one should
  certainly avoid dereferencing binfo->extra, that's not a good reason
  not to use binfo->peer.

Fixes https://bugzilla.quagga.net/show_bug.cgi?id=497.
Patch by Eric Sobocinksi.

14 years agoZebra zserv: bogus conditional
Stephen Hemminger [Wed, 18 Aug 2010 22:56:46 +0000 (15:56 -0700)]
Zebra zserv: bogus conditional

This looks like a bug in original code from misunderstanding
of C rules of evaluation.