]> git.puffer.fish Git - mirror/frr.git/log
mirror/frr.git
12 years agolib: do not allocate/free thread funcnames
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:14 +0000 (16:53 +0000)]
lib: do not allocate/free thread funcnames

  This avoids memory heap fragmentation and imposses less load on the
system memory allocator.

* thread.h: FUNCNAME_LEN defined to 64 (ISO C99 says max 63)

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
[changed FUNCNAME_LEN to a less arbitrary value]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agolib: micro-op for thread_get()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:13 +0000 (16:53 +0000)]
lib: micro-op for thread_get()

thread_trim_head() already checks that the list is not empty.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agolib: remove RUSAGE_T from struct thread
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:12 +0000 (16:53 +0000)]
lib: remove RUSAGE_T from struct thread

* thread.c: It's only temporarily used in thread_call() to calculate the
  diffs. Saves 80 bytes per copy.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agomicro-op bgp_node_[get|lookup]() and route_node_[get|lookup]()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:11 +0000 (16:53 +0000)]
micro-op bgp_node_[get|lookup]() and route_node_[get|lookup]()

  Reduce indirection for values that doesn't change in the loop.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
[adjusted after dropping previous patch]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize bgp_aggregate_[increment|decrement]()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:10 +0000 (16:53 +0000)]
bgpd: optimize bgp_aggregate_[increment|decrement]()

  If there were no aggregates configured this functions were allocating
and freeing a struct bgp_node for every call, and it's called for every
prefix received.

* bgp_route.c: Bail out early if the there are no aggregates configured.
  Change from bgp_node_get() to bgp_node_lookup() that does not allocate
  a new struct bgp_node if not found.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize bgp_update_main() in the soft_reconfig case
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:08 +0000 (16:53 +0000)]
bgpd: optimize bgp_update_main() in the soft_reconfig case

Avoids 3 checks per call.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize holdtime timer cancelling
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:07 +0000 (16:53 +0000)]
bgpd: optimize holdtime timer cancelling

* bgp_packet.c: (bgp_update_receive) for every update received we queue
  an event just to cancel the holdtime timer, done in bgp_fsm_update().
  Instead cancel the timer directly an avoid a scheduling pass.

  This incidently fixes another problem found on a slow box, where thousands
of events threads were queued, and run, but never freed, because they are
moved to the unused list that grows without bounds.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: Remove useless initialization
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:06 +0000 (16:53 +0000)]
bgpd: Remove useless initialization

It's initialized below

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: reduce struct attr_extra allocations/freeing
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:05 +0000 (16:53 +0000)]
bgpd: reduce struct attr_extra allocations/freeing

Try to use on stack structs for temporary uses.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: use on stack struct attr_extra in bgp_update_receive()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:03 +0000 (16:53 +0000)]
bgpd: use on stack struct attr_extra in bgp_update_receive()

Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: fix struct attr_extra leak in bgp_default_originate()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:02 +0000 (16:53 +0000)]
bgpd: fix struct attr_extra leak in bgp_default_originate()

  The call to bgp_attr_default_set() above creates the attr_extra struct,
but the attr.extra = NULL initialization was leaking it.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: use on stack struct attr_extra in bgp_attr_unintern()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:01 +0000 (16:53 +0000)]
bgpd: use on stack struct attr_extra in bgp_attr_unintern()

  Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: cleanup bgp_attr_unintern()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:53:00 +0000 (16:53 +0000)]
bgpd: cleanup bgp_attr_unintern()

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: use on stack struct attr_extra on bgp_attr_aggregate_intern()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:59 +0000 (16:52 +0000)]
bgpd: use on stack struct attr_extra on bgp_attr_aggregate_intern()

Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: reduce attrhash_make_key() indirections
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:58 +0000 (16:52 +0000)]
bgpd: reduce attrhash_make_key() indirections

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: remove some useless initializations
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:57 +0000 (16:52 +0000)]
bgpd: remove some useless initializations

* bgp_attr.c: (bgp_attr_default_intern) bgp_attr_default_set() already
  initializes the memory. Fixes a struct attr_extra leak.
* bgp_route.c: Remove useless on stack struct initializations.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize bgp_info_cmp()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:56 +0000 (16:52 +0000)]
bgpd: optimize bgp_info_cmp()

* bgp_route.c: (bgp_info_cmp) Reduce indirections, precalculate some
  values that are used several times, reduce conditionals.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize loops on [e]community_hash_make()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:55 +0000 (16:52 +0000)]
bgpd: optimize loops on [e]community_hash_make()

  This change reduces loop count. Less jumps.

* bgp_community.c: One loop per community.
* bgp_ecommunity.c: One loop per ecommunity.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: remove calls to peer_sort() from fast-path
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:54 +0000 (16:52 +0000)]
bgpd: remove calls to peer_sort() from fast-path

  peer_sort() it's called so much as to be annoying. In the assumption
that the 'sort' of the peer doesn't change during an established session,
I have changed all calls to peer_sort() in the 'fast-path' to only check
the 'sort'. All the calls from the vty and such still recalculate the sort
and store it in the peer.

  There's a lot of other calls to peer_sort() that could be changed but some
maube tricky, someone more knowledgeable may try to reduce them.

  This hits peer_sort() from 5th out of the stadium^H^H list on a full
internet table loading profiling session.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: debug buffers cleanup and optimization
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:53 +0000 (16:52 +0000)]
bgpd: debug buffers cleanup and optimization

Just the first change pushes bgp_update_receive() from 6th to ~14th on a
full internet table load profiling session.

* bgp_debug.c: (bgp_update_receive) The attrstr initialization is expensive,
  moved under the debug conditional where it is used and just initialize the
  first char to NULL.
  (bgp_update_default_send) Initialize attrstr needed for bgp_dump_attr().
  Moved some buffers used for printing IP[4|6] addresses under the debug
  conditionals that use them and reduced its size.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize bgp_nexthop_self()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:52 +0000 (16:52 +0000)]
bgpd: optimize bgp_nexthop_self()

  This function scores 2nd, profiling a full internet table load. It's called
for every prefix received.
  Instead of looping in the interface lists comparing addresses use a hash
to mantain them.

* bgpd.c: Init the own address hash.
* bgp_nexthop.c: Introduce methods to maintain an own address hash.
  (bgp_connected_add) add addresses to the hash.
  (bgp_connected_delete) delete addresses from the hash.
  (bgp_nexthop_self) lookup addresses in the hash. Removed the unused afi_t
  parameter.
* bgp_route.c: (bgp_update_main) Micro-optimization, rearranged condition to
  not lookup the hash for bogus nexthops (0.0.0.0 or a class D/E address)

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: optimize aspath string representation and assegments handling
Jorge Boncompte [DTI2] [Mon, 7 May 2012 16:52:51 +0000 (16:52 +0000)]
bgpd: optimize aspath string representation and assegments handling

* bgp_aspath.h: Add str_len to struct aspath.
* bgp_aspath.c: Save the aspath string representation length and use it
  instead of strlen().
  (aspath_make_str_count) assign the string buffer directly for
  consistency with the string length and change the return type to void.
  (aspath_dup) use str_len and copy the string instead of calling
  aspath_make_str_count().
  (assegment_data_new) change from XCALLOC to XMALLOC. All users initialize
  the memory before use.
  (assegment_data_free) unused, removed.
  (aspath_intern) check that there's always a ->str pointer.
  (aspath_hash_alloc) reuse assegments and string representation instead of
  copying them.
  (aspath_parse) now aspath_hash_alloc does not dupes memory, free the
  temporary structures only if the aspath it is in the hash.
  (aspath_cmp_left) remove useless NULL initialization.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agobgpd: fix crash with vpnv4 soft-reconfiguration
Jorge Boncompte [DTI2] [Mon, 7 May 2012 15:17:34 +0000 (15:17 +0000)]
bgpd: fix crash with vpnv4 soft-reconfiguration

bgp_afi_node_get() expects a non-NULL prd for a SAFI_MPLS_VPN prefix.

* bgp_route.c: pass down the struct prefix_rd from bgp_soft_reconfig_in()
  and bgp_soft_reconfig_rsclient().

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agolib: fix thread_cancel_event()
Jorge Boncompte [DTI2] [Mon, 7 May 2012 15:17:31 +0000 (15:17 +0000)]
lib: fix thread_cancel_event()

  ospfd was crashing some times on neighbour going down. The cause was that
ospf_nsm_event() was accessing already freed memory in ospf_nbr_delete()
call from ospf_nsm_event().

  What happens is that since commit b5043aab (lib: fix incorrect thread
list...) now a thread can be on the event and ready lists but
thread_cancel_event() doesn't account for that.

* thread.c: (thread_cancel_event) loop on the ready list too to cancel
  pending events.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agolib: drop heuristic IPv6 address recognition
Roman Hoog Antink [Wed, 9 May 2012 06:35:34 +0000 (06:35 +0000)]
lib: drop heuristic IPv6 address recognition

* command.c: (cmd_ipv6_match) Drop IPv6 address recognition
  heuristics and solely rely on inet_pton, because strings
  like "abcd" were mistaken for IPv6 addresses.
  This affects e.g. the command "neighbour WORD peer-group",
  which won't work with words consisting of up to 4 characters
  between 'a' and 'f' and digits.

From: Roman Hoog Antink <rha@open.ch>
[full delete instead of #if 0]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
12 years agozebra: fix up compilation without rtadv/IPv6
Joachim Nilsson [Wed, 9 May 2012 11:38:36 +0000 (13:38 +0200)]
zebra: fix up compilation without rtadv/IPv6

let's ground the rtadv.h file if route advertisements are disabled. And
fix up the CLI for it, as well as move the "show ip mroute" to its
proper place.

  * zebra/rtadv.h: #ifdef RTADV
  * zebra/main.c: #ifdef RTADV
  * zebra/zebra_vty.c: move "show ip mroute" out of #ifdef IPV6

From: Joachim Nilsson <troglobit@gmail.com>
[moved #ifdef RTADV to rtadv.h]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
13 years agozebra: feed Connected routes into MRIB
G.Balaji [Mon, 2 Apr 2012 18:01:29 +0000 (23:31 +0530)]
zebra: feed Connected routes into MRIB

The SAFI_MULTICAST RIB needs to contain Connected routes so that the
nexthop lookup does not fail and so that multicast routing daemons do
not need to sidestep and look into SAFI_UNICAST to be aware of connected
subnets.

  * zebra/connected.c: add & delete connected in SAFI_MULTICAST

Signed-off-by: G.Balaji <balajig81@gmail.com>
[merged add/delete patches]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agozebra: no need to clear memory of the netlink buffers
Jorge Boncompte [DTI2] [Fri, 20 Apr 2012 12:28:40 +0000 (14:28 +0200)]
zebra: no need to clear memory of the netlink buffers

The memory is always written before sending. Clearing it before use
slows netlink_route_multipath() down considerably and it's pretty
noticeable in a full-internet table scenario loading.

  * zebra/rt_netlink.c: subtract bulk buffer size from clear

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
[reworded commit message]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: cleanup, use correct buffer sizes for sockunion2str()
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:27 +0000 (16:57 +0200)]
bgpd: cleanup, use correct buffer sizes for sockunion2str()

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agolib: remove sockunion related unused definitions
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:26 +0000 (16:57 +0200)]
lib: remove sockunion related unused definitions

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agolib, zebra: extend use of sockunion2ip macro
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:25 +0000 (16:57 +0200)]
lib, zebra: extend use of sockunion2ip macro

  * lib/sockunion.c,
  * zebra/zebra_rib.c: replace ->sin.sin_addr.s_addr with sockunion2ip

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
[reworded commit message]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: Fix memory leak of some "show ip bgp neighbor" commands
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:24 +0000 (16:57 +0200)]
bgpd: Fix memory leak of some "show ip bgp neighbor" commands

sockunion_str2su() use is prone to memory leaks. Remove it's use all over
the code.

At least these commands leaked a sockunion union:
    - show ip bgp vpnv4 ... routes
    - show ip bgp ... received prefix-filter

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agolib: remove last uses of sockunion_su2str()
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:23 +0000 (16:57 +0200)]
lib: remove last uses of sockunion_su2str()

Use of this function is prone to memory leaks.

This fixes a memory accounting bug for vty denied connections.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: Fix memory leak with 'set ip next-hop peer-address'
Jorge Boncompte [DTI2] [Tue, 10 Apr 2012 14:57:22 +0000 (16:57 +0200)]
bgpd: Fix memory leak with 'set ip next-hop peer-address'

A route-map with the mentioned statement causes a memory leak for every
prefix that matches.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: fix for route-maps with "match peer local" statements
Jorge Boncompte [DTI2] [Fri, 13 Apr 2012 11:46:08 +0000 (13:46 +0200)]
bgpd: fix for route-maps with "match peer local" statements

A route-map with a 'match peer local' statement it's shown like
'match peer (null)' on config output...

... and it's unparsable on daemon startup.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd, zebra: Fix format for some metric outputs
Jorge Boncompte [DTI2] [Fri, 13 Apr 2012 11:46:07 +0000 (13:46 +0200)]
bgpd, zebra: Fix format for some metric outputs

Metrics are unsigned values.

  * bgpd/bgp_{debug,route,vty}.c,
  * zebra/zebra_vty.c: replace %d with %u for metrics & distances

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
[reworded commit message]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: Fix regression in args consolidation, total should be inited from args
Paul Jakma [Mon, 13 Feb 2012 13:53:07 +0000 (13:53 +0000)]
bgpd: Fix regression in args consolidation, total should be inited from args

* bgp_attr.c: (bgp_attr_unknown) total should be initialised from the args.

13 years agobgpd: Make socket init separate, so unit tests work again.
Paul Jakma [Tue, 1 May 2012 15:24:35 +0000 (16:24 +0100)]
bgpd: Make socket init separate, so unit tests work again.

* Separate out BGP socket initialisation from bgp_get, and make it an
  explicit function. Allows unit tests to work again and probably also
  benefits dry-run.
* bgpd.c: (bgp_get) move socket init out...
  (bgp_socket_init) to here
* bgp_main.c: and call it after dry-run.
* bgpd.h: (bgp_socket_init) add prototype

13 years agotests: Fix some compile errors and warnings
Paul Jakma [Tue, 1 May 2012 15:20:33 +0000 (16:20 +0100)]
tests: Fix some compile errors and warnings

* aspath_test.c: match changes in aspath_unintern. Fix printf size_t warning.
* bgp_capability_test.c: compile warnings.
* bgp_mp_attr_test.c: update for attr parser context struct
* ecommunity_test.c: ecommunity_free/ecommunity
* test-checksum.c: some unused vars and funcs without need of prototypes.

13 years agoRevert "tests: disable broken tests/bgp_mp_attr_test.c"
Paul Jakma [Wed, 2 May 2012 10:01:01 +0000 (11:01 +0100)]
Revert "tests: disable broken tests/bgp_mp_attr_test.c"

This reverts commit d78e2b8b562f8496aaf2977f7371415b71e82433. Next 2
commits fix it.

13 years agorelease: 0.99.21
David Lamparter [Tue, 1 May 2012 19:43:53 +0000 (21:43 +0200)]
release: 0.99.21

13 years agotests: disable broken tests/bgp_mp_attr_test.c
David Lamparter [Tue, 1 May 2012 16:08:43 +0000 (18:08 +0200)]
tests: disable broken tests/bgp_mp_attr_test.c

it doesn't compile currently; it'll be fixed after the 0.99.21 release.

  * tests/bgp_mp_attr_test.c: wrap in #if 0 for now

Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoredhat: add systemd service files
David Ward [Sun, 29 Apr 2012 20:47:08 +0000 (16:47 -0400)]
redhat: add systemd service files

 * redhat/*.service: add systemd service file for each routing daemon
 * redhat/quagga.sysconfig: add comment about watchquagga and systemd
 * redhat/Makefile.am: add systemd service files to distribution

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoredhat: update initscripts
David Ward [Sun, 29 Apr 2012 20:47:07 +0000 (16:47 -0400)]
redhat: update initscripts

Taken from Fedora packaging with additional fixes.

 * redhat/*.init: make all initscripts LSB-compliant;
     store the daemon configuration file location in $CONF_FILE,
     and perform existence testing before starting the daemon
 * redhat/babeld.init: add initscript for Babel routing engine
 * redhat/quagga.sysconfig: add command-line options for babeld;
     remove the daemon configuration file locations from $*_OPTS;
     clarify directions for configuring watchquagga
 * redhat/Makefile.am: add babeld.init to distribution

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoredhat: add logrotate configuration for babeld and isisd
David Ward [Sun, 29 Apr 2012 20:47:06 +0000 (16:47 -0400)]
redhat: add logrotate configuration for babeld and isisd

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agodoc: add ospfclient(8) and watchquagga(8) man pages
David Ward [Mon, 30 Apr 2012 15:36:16 +0000 (11:36 -0400)]
doc: add ospfclient(8) and watchquagga(8) man pages

Taken from Fedora packaging.

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agodoc: only package man pages for daemons that are built
David Ward [Mon, 30 Apr 2012 15:36:15 +0000 (11:36 -0400)]
doc: only package man pages for daemons that are built

Signed-off-by: David Ward <david.ward@ll.mit.edu>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agotools: use standard interpreter path in all Perl scripts
David Ward [Sun, 29 Apr 2012 20:47:03 +0000 (16:47 -0400)]
tools: use standard interpreter path in all Perl scripts

Signed-off-by: David Ward <david.ward@ll.mit.edu>
[changed /usr/bin/perl to /usr/bin/env perl]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: fix up multipath merge breakage
David Lamparter [Sat, 28 Apr 2012 20:37:20 +0000 (22:37 +0200)]
bgpd: fix up multipath merge breakage

the BGP multipath code was developed against a pre-f6f434b Quagga where
bgp_attr_unintern and ecommunity_free took single-star pointers.  They
now take double-star pointers.

  * bgpd/bgp_mpath.c: fix up bgp_attr_unintern & ecommunity_free calls.

Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobabeld: merge kernel_zebra.c into kernel.c.
Juliusz Chroboczek [Mon, 12 Mar 2012 12:52:42 +0000 (13:52 +0100)]
babeld: merge kernel_zebra.c into kernel.c.

In upstream babel, we include different kernel_foo files depending on the
platform we compile for.  In Quagga, this is not needed, and it avoids
tricky autotools issues.  (All autotools issues are tricky.)

[David: without this commit, build breaks.]

From: Juliusz Chroboczek <jch@pps.jussieu.fr>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobabeld: Include babel_main.h in noinst_HEADERS.
Denis Ovsienko [Mon, 12 Mar 2012 12:51:49 +0000 (13:51 +0100)]
babeld: Include babel_main.h in noinst_HEADERS.

babeld wouldn't build in a dist tarball without this.

From: Denis Ovsienko <infrastation@yandex.ru>
Signed-off-by: Juliusz Chroboczek <jch@pps.jussieu.fr>
[fixed up git message]
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agolib: bump ZSERV_VERSION to 2
David Lamparter [Fri, 20 Apr 2012 15:26:48 +0000 (17:26 +0200)]
lib: bump ZSERV_VERSION to 2

continually changing the zserv protocol without bumping up the version
number has made it impossible to talk to zebra without knowing the exact
version.  in reality, increasing the version number more often guards
against inadvertedly running incompatible versions of a daemon and zebra
as well as aids external development.

  * lib/zclient.h: #define ZSERV_VERSION 2

Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoRevert "zebra: clean up client routes when client goes away"
David Lamparter [Fri, 20 Apr 2012 15:23:39 +0000 (17:23 +0200)]
Revert "zebra: clean up client routes when client goes away"

This reverts commit af56d404cd56d94ad3b2ec3f159650eb72baef0a,
which was accidentally duplicating functionality from commit
2ea1ab1 "zebra: ZEBRA_HELLO and mopping up routes (BZ#448)"

Conflicts:

zebra/zebra_rib.c

Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agobgpd: Fix crash when disabling dampening (BZ#687)
Jorge Boncompte [DTI2] [Fri, 13 Apr 2012 11:46:09 +0000 (13:46 +0200)]
bgpd: Fix crash when disabling dampening (BZ#687)

    Vladimir Podobaev reported that the following commands crashed the
daemon.

router bgp 123
 bgp dampening
 no bgp dampening 1 2 3 4
 no bgp dampening

    The problem was that bgp_damp_info_clean() tried to dereference the
already freed reuse_list array in the second call to "no bgp dampening".

    Fixed by checking in bgp_damp_disable() that the dampening it's
enabled before doing the cleanup.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
13 years agoospfd: Fixes a crash of the daemon with a snmp walk
Jorge Boncompte [DTI2] [Mon, 9 Apr 2012 16:03:57 +0000 (18:03 +0200)]
ospfd: Fixes a crash of the daemon with a snmp walk

    - And allows to walk the LSDB.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
13 years agozebra: use larger buffer (4096) for netlink messages
JR Rivers [Sun, 1 Apr 2012 19:16:31 +0000 (12:16 -0700)]
zebra: use larger buffer (4096) for netlink messages

Increase the maximum number of nexthops per route by using a larger
buffer for netlink messages.

  * zebra/rt_netlink.c: Use a buffer of 4096 bytes to parse/build
    netlink messages. Add a hash define for this number
    (NL_PKT_BUF_SIZE). Most places in the code were previously using a
    buffer of 1024 bytes.

13 years agoisisd: merge osr/google-is-is
David Lamparter [Mon, 16 Apr 2012 16:24:40 +0000 (18:24 +0200)]
isisd: merge osr/google-is-is

this is essentially half of a rewrite of isisd. please note that a lot
of things are still broken and isisd is not ready for production use.

13 years agoquagga: option "-z" ("--socket <path>") added
Vyacheslav Trushkin [Fri, 25 Nov 2011 14:51:48 +0000 (18:51 +0400)]
quagga: option "-z" ("--socket <path>") added

All daemons modified to support custom path to zserv
socket.

[reapplied from b511468 after isisd merge]

13 years agoisisd: indent longopts array
Vyacheslav Trushkin [Fri, 25 Nov 2011 13:56:21 +0000 (17:56 +0400)]
isisd: indent longopts array

13 years agoisisd: reapply removal of CVS cruft
David Lamparter [Mon, 16 Apr 2012 16:14:50 +0000 (18:14 +0200)]
isisd: reapply removal of CVS cruft

this re-removes CVS keywords and .cvsignore files. original commits:
b82cdeb delete CVS keywords
05e54ee build: delete .cvsignore files

13 years agobgpd: merge osr/quagga-osr-patches (BZ#700)
David Lamparter [Mon, 16 Apr 2012 14:46:13 +0000 (16:46 +0200)]
bgpd: merge osr/quagga-osr-patches (BZ#700)

this merges a bgp capability negotiation fix where bgpd would fail if no
multiprotocol capability was present, but other capabilities were.

13 years agobgpd: merge osr/google-bgp-multipath
David Lamparter [Mon, 16 Apr 2012 11:54:37 +0000 (13:54 +0200)]
bgpd: merge osr/google-bgp-multipath

this patchset allows collapsing multiple received routes in BGP into one
multipath route that will, if readvertised, contain an aggregate of all
received attributes.

13 years agoisisd: reapply patch to fix zebra protocol
Avneesh Sachdev [Thu, 12 Apr 2012 06:56:03 +0000 (23:56 -0700)]
isisd: reapply patch to fix zebra protocol

Reapply the bits of revision b4e45f6 that pertain to isisd. That is:
  git log -n 1 -p b4e45f6 -- isisd

These were dropped in the merge with the Google ISIS code (14d2bbaa).

The commit message for b4e45f6 is:

    fix zebra protocol after MP-BGP changes

    The previous commits modified both zebra and bgpd for additional
    SAFI field, but not any other routing daemon, which led to zebra
    daemon crashing with failed assertion.

13 years agoMerge quagga mainline into the google ISIS code.
Avneesh Sachdev [Thu, 12 Apr 2012 06:51:08 +0000 (23:51 -0700)]
Merge quagga mainline into the google ISIS code.

The steps were:

  $ git checkout google-is-is
  $ git merge quagga
  $ git checkout google-is-is -- isisd

  # Resolve conflicts in the following:
  lib/md5.h
  zebra/rt_netlink.c
  zebra/zebra_rib.c
  zebra/zserv.c

Note that the content in the isisd directory is left unchanged in the
merge. As a result, changes made to isisd as part of the following
commits on the quagga mainline are dropped.

  # 8ced4e82 is the merge base, e96b3121 is the current quagga master
  $ git log --oneline --reverse 8ced4e82..e96b3121 -- isisd
  5574999 isisd: fix crash on "no router isis" (BZ#536)
  8998075 isisd: raise hello rate for DIS (BZ#539)
  306ca83 isisd: include hash.h, not hash.c
  b82cdeb delete CVS keywords
  2f65867 isisd: indent longopts array
  b511468 quagga: option "-z" ("--socket <path>") added
  05e54ee build: delete .cvsignore files
  b4e45f6 fix zebra protocol after MP-BGP changes
  7fd6cd8 isisd: fix circuit state machine
  907fd95 isisd: send proper LSP after DIS election
  d034aa0 isisd: fix wrong next-hops from SPF
  c25eaff isisd: unexpected kernel routing table (BZ#544)
  e6b03b7 isisd: implement MD5 circuit authentication

13 years agoospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case
Denis Ovsienko [Tue, 3 Apr 2012 16:33:24 +0000 (20:33 +0400)]
ospfd: adjust OSPF_ROUTER_LSA_MIN_SIZE for VL case

13 years agoMerge branch 'quagga' into google-bgp-multipath
Avneesh Sachdev [Mon, 9 Apr 2012 07:25:15 +0000 (00:25 -0700)]
Merge branch 'quagga' into google-bgp-multipath

Conflicts:
bgpd/bgp_route.c

13 years agobgpd: fix issue in capability negotiation (BZ#700)
Avneesh Sachdev [Sun, 19 Feb 2012 18:19:52 +0000 (10:19 -0800)]
bgpd: fix issue in capability negotiation (BZ#700)

Address problem where bgpd would reject a session if a peer sent some
capabilities in its Open message, but did not include a Multiprotocol
extensions capability. Note that the session would come up if there
were no capabilities at all in the Open message.

  * Add the 'mp_capability' out parameter to
    bgp_capability_parse(). Set it to '1' if a Multiprotocol
    extensions capability is encountered.

  * Switch on 'mp_capability' instead of 'capability' in the calling
    functions to determine if the peer indicated the set of AFI/SAFIs
    it supports.

    The net result is that when a peer does not send an MP capability,
    it is assumed to support the AFI/SAFIs configured for it locally.

13 years agozebra: include hardware addr in if up/down messages
Josh Bailey [Thu, 22 Mar 2012 00:13:39 +0000 (17:13 -0700)]
zebra: include hardware addr in if up/down messages

Change interface up/down notification messages to also include the
hardware address of the interface. The format of these messages is now
identical to the interface add message -- move the serialization code
to common functions.

  * lib/zclient.c: Modify zebra_interface_if_set_value() to also parse
    the hardware address. Invoke it from zebra_interface_add_read()
    and and zebra_interface_state_read().

  * zebra/zserv.c: Add zserv_encode_interface(). Invoke it from
    zserv_interface_add(), zserv_interface_delete() and
    zserv_interface_update().

13 years agolib: Tweak to if_delete_retain()
Josh Bailey [Wed, 21 Mar 2012 17:37:03 +0000 (10:37 -0700)]
lib: Tweak to if_delete_retain()

  * lib/if.c: Change if_delete_retain() to delete all connected
    addresses, but to not free the list that holds them. Free the list
    just before the interface structure itself is freed, in
    if_delete().

13 years agozebra: clean up client routes when client goes away
Josh Bailey [Thu, 22 Mar 2012 01:47:51 +0000 (18:47 -0700)]
zebra: clean up client routes when client goes away

  * zebra/zebra_rib.c: Add code to clean up routes added by a client
    (as identfied by 'rib type').

  * zebra/zserv.[ch]: Maintain the type of the routes added by a
    client on the 'zserv' structure -- assume that a given client uses
    a single route type for now.

    Clean up routes from a client when the client goes away (in
    zebra_client_close()).

From: Josh Bailey <joshb@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agozebra: add more logs/asserts to rib work queue code
Subbaiah Venkata [Tue, 27 Mar 2012 23:35:22 +0000 (16:35 -0700)]
zebra: add more logs/asserts to rib work queue code

  * zebra/zebra_rib.c: (rib_queue_add, rib_queue_init) Add some more
    logs and asserts.

From: Subbaiah Venkata <svenkata@google.com>
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoisisd: couple of bug fixes
Subbaiah Venkata [Wed, 28 Mar 2012 06:48:05 +0000 (23:48 -0700)]
isisd: couple of bug fixes

13 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

13 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>
13 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>
13 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>
13 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>
13 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 agolib: pretty ip_masklen and masklen2ip
David Lamparter [Tue, 3 Apr 2012 22:14:36 +0000 (00:14 +0200)]
lib: pretty ip_masklen and masklen2ip

nonwithstanding any desire for optimisation, these versions are shorter
and more concise.  reading the comments, they might even be easier to
understand.

I've tested them on i686 and x86_64, and checked that correct assembler
code is emitted for ARM, MIPS and PowerPC.

IPv6 is left as an exercise for another day, none of the ideas I had led
to a "yes, this is the one to go with" solution.

Signed-off-by: David Lamparter <equinox@diac24.net>
13 years agoRevert "lib: optimize ip_masklen()" (BZ#720)
David Lamparter [Fri, 23 Mar 2012 21:48:05 +0000 (22:48 +0100)]
Revert "lib: optimize ip_masklen()" (BZ#720)

This reverts commit d171bf58ef12ace43d48565e6870722dece1e6ed.

There are multiple reasons for this revert, including bug #720, but also
quite simply the unreadability of having 2000 lines of an autogenerated
table in the middle of a source file.

Signed-off-by: David Lamparter <equinox@diac24.net>
Reported-by: Martin Winter <mwinter@opensourcerouting.org>
13 years agobgpd: bgp_attr_flags_diagnose shouldn't assert
Paul Jakma [Tue, 27 Mar 2012 10:54:04 +0000 (11:54 +0100)]
bgpd: bgp_attr_flags_diagnose shouldn't assert

* bgpd/bgp_attr.c: (bgp_attr_flags_diagnose) debug code for error-handling
  paths probably shouldn't assert, instead it should just log that there
  was no problem.

13 years agobgpd: attr_parse call to attr_malformed should deal with PROCEED error case
Paul Jakma [Sun, 25 Mar 2012 20:31:47 +0000 (21:31 +0100)]
bgpd: attr_parse call to attr_malformed should deal with PROCEED error case

* bgpd/bgp_attr.c: (bgp_attr_parse) the invalid flag check call to
  bgp_attr_malformed is pretty useless if it doesn't actually allow
  for the PROCEED non-error case.

13 years agobgpd: Fix silly mistake in bgp_attr_flag_invalid
Paul Jakma [Fri, 23 Mar 2012 14:58:45 +0000 (14:58 +0000)]
bgpd: Fix silly mistake in bgp_attr_flag_invalid

* bgp_attr.c: (bgp_attr_flag_invalid) flags is meant to be masked
  off with the mask variable...

13 years agobgpd: malformed attribute error that can still proceed should fixup getp
Paul Jakma [Thu, 15 Mar 2012 11:30:00 +0000 (11:30 +0000)]
bgpd: malformed attribute error that can still proceed should fixup getp

* bgp_attr.c: (bgp_attr_malformed) When a malformed attribute error can be
  ignored, and BGP message processing may still proceed, the stream getp
  should be adjusted to the end of the attribute - the caller may not have
  consumed all the attribute. Problem noted by Martin Winter in bug 678.

  Also, rename the 'startp' local to 'notify_datap', for clarity.

13 years agoMerge branch 'babeld-merge' into master-copy
Paul Jakma [Sun, 25 Mar 2012 16:10:22 +0000 (17:10 +0100)]
Merge branch 'babeld-merge' into master-copy

13 years agobabeld: remove "parasitic" mode.
Juliusz Chroboczek [Tue, 14 Feb 2012 14:43:34 +0000 (15:43 +0100)]
babeld: remove "parasitic" mode.

This is the functionality described in Appendix C of RFC 6126.  Its
main purpose is to avoid keeping a full source table, which makes it
possible to implement a subset of Babel in just a few hundred lines of
code.  However, in Quagga the code for maintaining the source table is
already there, and a parasitic implementation can be simulated using
filtering -- so it makes little sense to keep the functionality.

13 years agobabeld: 3 more timing statements in config text
Denis Ovsienko [Tue, 14 Feb 2012 11:12:03 +0000 (15:12 +0400)]
babeld: 3 more timing statements in config text

This commit makes the following lines visible in running-config text,
when respective intervals are configured to non-default values:

* babel hello-interval
* babel update-interval
* babel resend-delay

13 years agobabeld: consolidate zebra interface into fewer functions.
Juliusz Chroboczek [Tue, 14 Feb 2012 10:22:29 +0000 (11:22 +0100)]
babeld: consolidate zebra interface into fewer functions.

13 years agobabeld: fix typo in kernel_route_add_v6.
Juliusz Chroboczek [Tue, 14 Feb 2012 10:17:32 +0000 (11:17 +0100)]
babeld: fix typo in kernel_route_add_v6.

13 years agobabeld: set interface flags eagerly, not at interface up.
Juliusz Chroboczek [Tue, 14 Feb 2012 08:09:32 +0000 (09:09 +0100)]
babeld: set interface flags eagerly, not at interface up.

13 years agobabeld: more helpful sample conf file.
Juliusz Chroboczek [Tue, 14 Feb 2012 07:53:51 +0000 (08:53 +0100)]
babeld: more helpful sample conf file.

13 years agobabeld: fix documentation.
Juliusz Chroboczek [Tue, 14 Feb 2012 07:52:19 +0000 (08:52 +0100)]
babeld: fix documentation.

13 years agobabeld: remove remains of standalone babeld's configuration code.
Juliusz Chroboczek [Tue, 14 Feb 2012 07:49:57 +0000 (08:49 +0100)]
babeld: remove remains of standalone babeld's configuration code.

Standalone babeld has a configuration interface that is not used in
Quagga.  This removes a few bits of this code that survived the
port to Quagga.

13 years agobabeld: drive interface_config_write() forward
Denis Ovsienko [Mon, 13 Feb 2012 18:13:37 +0000 (22:13 +0400)]
babeld: drive interface_config_write() forward

13 years agobabeld: justify "running-config" meaning in CLI
Denis Ovsienko [Sat, 11 Feb 2012 17:06:16 +0000 (21:06 +0400)]
babeld: justify "running-config" meaning in CLI

The primary focus of this commit is to make "show running-config"
command display more current configuration, including some of the bits
previously seen in the output of "show babel running-config". Besides
that, the following commands were renamed for consistency with the
syntax of other components:

"debug *" to "debug babel *" (and moved to top level)
"show babel running-config" to "show babel parameters"

* babel_interface.c
  * show_babel_running_config(): rename to show_babel_parameters(),
    update syntax pattern, don't call show_babeld_configuration()
  * babel_if_init(): update respectively
  * babel_enable_if_config_write(): new VTY helper for static
    babel_enable_if
* babel_interface.h: add extern declaration
* babel_main.c: unset all debug options by default
  * show_babel_main_configuration(): remove debug options decoder
* babel_zebra.c
  * babel_debug(): rename to debug_babel(), update syntax pattern
  * no_babel_debug(): rename to no_debug_babel(), update syntax pattern
  * babelz_zebra_init(): update respectively
  * debug_babel_config_write() new VTY helper for static debug_type
* babel_zebra.h: add extern declaration
* babeld.c
  * babel_config_write(): add the code to output "debug babel *",
    "router babel", "redistribute *" and "network *" statements
  * show_babeld_configuration(): dismiss
* babeld.h: remove extern declaration
* babeld.texi: update for renamed commands
* babeld.conf.sample: idem, add debug statements block

13 years agoRemove dead variable reboot_time.
Juliusz Chroboczek [Sat, 11 Feb 2012 16:48:05 +0000 (17:48 +0100)]
Remove dead variable reboot_time.

Thanks to Denis Ovsienko.

13 years agodoc: fix typo.
Matthieu Boutier [Sat, 11 Feb 2012 14:09:33 +0000 (15:09 +0100)]
doc: fix typo.

13 years agodoc: update babeld documentation.
Juliusz Chroboczek [Sat, 11 Feb 2012 13:28:17 +0000 (14:28 +0100)]
doc: update babeld documentation.

13 years agodoc: fix Makefile dependencies for babeld.
Juliusz Chroboczek [Sat, 11 Feb 2012 13:27:16 +0000 (14:27 +0100)]
doc: fix Makefile dependencies for babeld.

13 years agobabeld: display update-interval and resend-delay in show commands"
Juliusz Chroboczek [Sat, 11 Feb 2012 13:06:24 +0000 (14:06 +0100)]
babeld: display update-interval and resend-delay in show commands"