]> git.proxmox.com Git - mirror_frr.git/log
mirror_frr.git
13 years agoospf6d: address more trivial compiler warnings
Denis Ovsienko [Sat, 27 Aug 2011 18:19:34 +0000 (22:19 +0400)]
ospf6d: address more trivial compiler warnings

* ospf6_main.c: include required headers
* ospf6_asbr.h: idem
* ospf6_spf.c
  * ospf6_spf_install(): remove unused variables

13 years agoospfd: sizing macros cleanup
Denis Ovsienko [Tue, 23 Aug 2011 07:36:27 +0000 (11:36 +0400)]
ospfd: sizing macros cleanup

* ospf_spf.c
  * ROUTER_LSA_TOS_SIZE: prepend OSPF_ and move to ospf_lsa.h
  * ROUTER_LSA_MIN_SIZE: replace with existing OSPF_ROUTER_LSA_LINK_SIZE

13 years agolib: use "protocol-independed API" from RFC3678, if that is available
Dmitrij Tejblum [Mon, 22 Aug 2011 07:39:35 +0000 (11:39 +0400)]
lib: use "protocol-independed API" from RFC3678, if that is available

(This commit is based on the patch from BZ#420, and should fix that bug.)

* configure.ac: detect availability of that API
* sockopt.c (setsockopt_ipv4_multicast): use it for join/leave IPv4
  multicast groups

13 years agolib: futher simplification of setsockopt_ipv4_multicast()
Dmitrij Tejblum [Fri, 19 Aug 2011 19:00:30 +0000 (23:00 +0400)]
lib: futher simplification of setsockopt_ipv4_multicast()

* sockopt.c (setsockopt_ipv4_multicast): check for wrong optname with
  assert(), rather than return an error.

13 years agolib: fix omission in the previous commit to lib/sockopt.c
Dmitrij Tejblum [Fri, 19 Aug 2011 18:25:23 +0000 (22:25 +0400)]
lib: fix omission in the previous commit to lib/sockopt.c

* sockopt.c (setsockopt_ipv4_multicast_if): fix missed line in
  the previous commit.

13 years agolib: simplify interface of setsockopt_multicast_ipv4().
Dmitrij Tejblum [Thu, 18 Aug 2011 16:22:17 +0000 (20:22 +0400)]
lib: simplify interface of setsockopt_multicast_ipv4().

* sockopt.[ch] (setsockopt_ipv4_multicast): ifindex is now mandatory (all
  non-ancient OSes can use it anyway), and if_addr parameter (the address
  of the interface) is now gone. (setsockopt_ipv4_multicast_if):
  IP_MULTICAST_IF processing moved to this new function

* ospf_network.c (ospf_if_add_allspfrouters, ospf_if_drop_allspfrouters,
  ospf_if_add_alldrouters, ospf_if_drop_alldrouters, ospf_if_ipmulticast),
  rip_interface.c (ipv4_multicast_join, ipv4_multicast_leave,
  rip_interface_new): adapt to the new interface

13 years agoospf6d: spelling
Denis Ovsienko [Fri, 19 Aug 2011 12:27:16 +0000 (16:27 +0400)]
ospf6d: spelling

13 years agolib: remove unused variable
Denis Ovsienko [Mon, 1 Aug 2011 17:59:04 +0000 (21:59 +0400)]
lib: remove unused variable

* sockopt.c (getsockopt_ifindex): "ifindex" was never used

13 years agodelete CVS keywords
Denis Ovsienko [Mon, 1 Aug 2011 12:52:03 +0000 (16:52 +0400)]
delete CVS keywords

13 years agoconfigure: fix OpenPAM detection
Denis Ovsienko [Thu, 14 Jul 2011 20:24:15 +0000 (00:24 +0400)]
configure: fix OpenPAM detection

13 years agobgpd: check ATOMIC_AGGREGATE attr flags (BZ#678)
Denis Ovsienko [Tue, 20 Sep 2011 10:43:50 +0000 (14:43 +0400)]
bgpd: check ATOMIC_AGGREGATE attr flags (BZ#678)

* bgp_attr.c
  * bgp_attr_atomic(): accept extra argument, add checks for
    "optional", "transitive" and "partial" bits, log each error
    condition independently
  * bgp_attr_parse(): provide extra argument

13 years agobgpd: check MULTI_EXIT_DISC attr flags (BZ#677)
Denis Ovsienko [Tue, 20 Sep 2011 06:54:25 +0000 (10:54 +0400)]
bgpd: check MULTI_EXIT_DISC attr flags (BZ#677)

* bgp_attr.c
  * bgp_attr_med(): add checks for "optional", "transitive" and
    "partial" bits, log each error condition independently

13 years agobgpd: check LOCAL_PREF attribute flags (BZ#674)
Denis Ovsienko [Mon, 19 Sep 2011 12:30:47 +0000 (16:30 +0400)]
bgpd: check LOCAL_PREF attribute flags (BZ#674)

* bgp_attr.c
  * bgp_attr_local_pref(): accept extra argument, add checks for
    "optional" and "transitive" bits, log each error condition
    independently
  * bgp_attr_parse(): provide extra argument

13 years agobgpd: add useful notification logs (BZ#616)
heasley [Mon, 12 Sep 2011 09:27:52 +0000 (13:27 +0400)]
bgpd: add useful notification logs (BZ#616)

* bgp_packet.c
  * bgp_notify_send_with_data(): add calls to zlog_info()

13 years agobgpd: consistent log msg format (BZ#565)
heasley [Tue, 12 Jul 2011 16:09:18 +0000 (20:09 +0400)]
bgpd: consistent log msg format (BZ#565)

13 years agoospf6d: add lost lines to area config block
Jon Andersson [Tue, 13 Sep 2011 11:47:14 +0000 (15:47 +0400)]
ospf6d: add lost lines to area config block

* ospf6_area.c
  * ospf6_area_config_write(): write filter-list, import-list and
    export-list lines

13 years agoospf6d: fix crash on filter-list handling (BZ#530)
Christian Hammers [Mon, 12 Sep 2011 10:23:05 +0000 (14:23 +0400)]
ospf6d: fix crash on filter-list handling (BZ#530)

This essentially merges the fix available from Debian build of Quagga.

* ospf6_area.c
  * area_filter_list(): use correct argv indices
  * no_area_filter_list(): idem

13 years agoconfigure: fix FreeBSD header detection (BZ#408)
Denis Ovsienko [Thu, 14 Jul 2011 12:30:08 +0000 (16:30 +0400)]
configure: fix FreeBSD header detection (BZ#408)

This change is based on Xavier Beaudouin's patch (which fixes detection
of 3 config.h macros on FreeBSD without any impact to Linux build of
Quagga) and FreeBSD port patch (which fixes 5 config.h macros, but
breaks the Linux build), it fixes 5 macros and works for both FreeBSD 8
and Linux.

13 years agoisisd: include hash.h, not hash.c
Peter Szilagyi [Tue, 13 Sep 2011 13:37:06 +0000 (17:37 +0400)]
isisd: include hash.h, not hash.c

13 years agoisisd: raise hello rate for DIS (BZ#539)
Fritz Reichmann [Wed, 14 Sep 2011 16:46:57 +0000 (20:46 +0400)]
isisd: raise hello rate for DIS (BZ#539)

* isis_pdu.c: Divide hello interval by three, depending if we are DIS or
  not.

13 years agoisisd: fix crash on "no router isis" (BZ#536)
Fritz Reichmann [Wed, 14 Sep 2011 15:31:51 +0000 (19:31 +0400)]
isisd: fix crash on "no router isis" (BZ#536)

The crash is due to threads accessing data that gets destroyed
during the removal of the configuration.

* isis_circuit.c: Destroy adjacencies to stop adjacency expiry thread.
  Stop PSNP threads.
* isisd.c: Change state of circuit back to INIT and reassign the
  circuit structure to isis->init_circ_list rather than destroying
  the circuit data structure. Stop SPF threads. Stop LSP generation
  threads.
* isisd.h: Add pointers to LSP threads into area structure in order to
  stop them in isisd.c
* isis_lsp.c: Store pointer to LSP thread in area structure.
* isis_pdu.c: Stop PDU generation for a circuit with a removed area.
* isis_pfpacket.c: Stop processing received PDUs for a circuit with a
  removed area.

13 years agoconfigure: dismiss libutil.h
Stephen Hemminger [Tue, 13 Sep 2011 13:15:51 +0000 (17:15 +0400)]
configure: dismiss libutil.h

Recent versions of libc on Linux (Debian Testing) create lots of
compile warnings about direct usage of libutil.h

13 years agozebra: fix loss of metric for Linux routes
Dmitry Popov [Sun, 11 Sep 2011 09:48:25 +0000 (13:48 +0400)]
zebra: fix loss of metric for Linux routes

* rt_netlink.c
  * netlink_route_change(): fetch metric information like
    netlink_routing_table() does and pass it further

13 years agoospfd: remove useless RFC1583 check
Alexandre Chappuis [Tue, 2 Aug 2011 13:37:39 +0000 (17:37 +0400)]
ospfd: remove useless RFC1583 check

* ospf_route.c: Function ospf_asbr_route_cmp is called uniquely from
  ospf_route_cmp() when the flag OSPF_RFC1583_COMPATIBLE is not set.
  Therefore, the check that the flag is set doesn't make sense at all
  and it can consequently be removed without doing any harm.

Signed-off-by: Alexandre Chappuis <alc@open.ch>
Signed-off-by: Roman Hoog Antink <rha@open.ch>
13 years agodoc: BGP route-flap dampening
Alexandre Chappuis [Sun, 11 Sep 2011 12:54:11 +0000 (16:54 +0400)]
doc: BGP route-flap dampening

13 years agodoc: add missing word
Alexandre Chappuis [Tue, 13 Sep 2011 12:33:45 +0000 (16:33 +0400)]
doc: add missing word

* ospfd.texi: Adjust meaning of the rfc1583compatibility option in
  order to match the RFC specification and the actual source code.

13 years agorelease: 0.99.19
Denis Ovsienko [Mon, 26 Sep 2011 14:50:06 +0000 (18:50 +0400)]
release: 0.99.19

13 years agoospf6d: CVE-2011-3323 (fortify packet reception)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:51 +0000 (13:18 +0400)]
ospf6d: CVE-2011-3323 (fortify packet reception)

This vulnerability (CERT-FI #514840) was reported by CROSS project.

ospf6d processes IPv6 prefix structures in incoming packets without
verifying that the declared prefix length is valid. This leads to a
crash
caused by out of bounds memory access.

* ospf6_abr.h: new macros for size/alignment validation
* ospf6_asbr.h: idem
* ospf6_intra.h: idem
* ospf6_lsa.h: idem
* ospf6_message.h: idem
* ospf6_proto.h: idem
* ospf6_message.c
  * ospf6_packet_minlen: helper array for ospf6_packet_examin()
  * ospf6_lsa_minlen: helper array for ospf6_lsa_examin()
  * ospf6_hello_recv(): do not call ospf6_header_examin(), let upper
    layer verify the input data
  * ospf6_dbdesc_recv(): idem
  * ospf6_lsreq_recv(): idem
  * ospf6_lsupdate_recv(): idem
  * ospf6_lsack_recv(): idem
  * ospf6_prefixes_examin(): new function, implements A.4.1
  * ospf6_lsa_examin(): new function, implements A.4
  * ospf6_lsaseq_examin(): new function, an interface to above
  * ospf6_packet_examin(): new function, implements A.3
  * ospf6_rxpacket_examin(): new function, replaces
    ospf6_header_examin()
  * ospf6_header_examin(): sayonara
  * ospf6_receive(): perform passive interface check earliest possible,
    employ ospf6_rxpacket_examin()

13 years agoospf6d: CVE-2011-3324 (DD LSA assertion)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:36 +0000 (13:18 +0400)]
ospf6d: CVE-2011-3324 (DD LSA assertion)

This vulnerability (CERT-FI #514839) was reported by CROSS project.

When Database Description LSA header list contains trailing zero octets,
ospf6d tries to process this data as an LSA header. This triggers an
assertion in the code and ospf6d shuts down.

* ospf6_lsa.c
  * ospf6_lsa_is_changed(): handle header-only argument(s)
    appropriately, do not treat LSA length underrun as a fatal error.

13 years agoospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)
Denis Ovsienko [Mon, 26 Sep 2011 09:18:02 +0000 (13:18 +0400)]
ospfd: CVE-2011-3325 part 2 (OSPF pkt type segv)

This vulnerability (CERT-FI #514838) was reported by CROSS project.

The error is reproducible only when ospfd debugging is enabled:
  * debug ospf packet all
  * debug ospf zebra
When incoming packet header type field is set to 0x0a, ospfd will crash.

* ospf_packet.c
  * ospf_verify_header(): add type field check
  * ospf_read(): perform input checks early

13 years agoospfd: CVE-2011-3325 part 1 (OSPF header underrun)
Denis Ovsienko [Mon, 26 Sep 2011 09:17:52 +0000 (13:17 +0400)]
ospfd: CVE-2011-3325 part 1 (OSPF header underrun)

This vulnerability (CERT-FI #514838) was reported by CROSS project.

When only 14 first bytes of a Hello packet is delivered, ospfd crashes.

* ospf_packet.c
  * ospf_read(): add size check

13 years agoospfd: CVE-2011-3326 (uknown LSA type segfault)
CROSS [Mon, 26 Sep 2011 09:17:21 +0000 (13:17 +0400)]
ospfd: CVE-2011-3326 (uknown LSA type segfault)

This vulnerability (CERT-FI #514837) was reported by CROSS project.
They have also suggested a fix to the problem, which was found
acceptable.

Quagga ospfd does not seem to handle unknown LSA types in a Link State
Update message correctly. If LSA type is something else than one
supported
by Quagga, the default handling of unknown types leads to an error.

* ospf_flood.c
  * ospf_flood(): check return value of ospf_lsa_install()

13 years agobgpd: CVE-2011-3327 (ext. comm. buffer overflow)
CROSS [Mon, 26 Sep 2011 09:17:05 +0000 (13:17 +0400)]
bgpd: CVE-2011-3327 (ext. comm. buffer overflow)

This vulnerability (CERT-FI #513254) was reported by CROSS project.
They have also suggested a fix to the problem, which was found
acceptable.

The problem occurs when bgpd receives an UPDATE message containing
255 unknown AS_PATH attributes in Path Attribute Extended Communities.
This causes a buffer overlow in bgpd.

* bgp_ecommunity.c
  * ecommunity_ecom2str(): perform size check earlier

13 years agoospf6d: add missing include
Denis Ovsienko [Sat, 20 Aug 2011 19:12:00 +0000 (23:12 +0400)]
ospf6d: add missing include

Two extern declarations in ospf6_abr.h are based on struct ospf6_route,
which may not be available at the time ospf6_abr.h is included. This may
lead to warnings after including ospf6_abr.h just for the structures
defined in it.

13 years agoospf6d: move named constants to ospf6d.h
Denis Ovsienko [Sat, 20 Aug 2011 16:58:15 +0000 (20:58 +0400)]
ospf6d: move named constants to ospf6d.h

13 years agoospf6d: justify some ABR debug code
Denis Ovsienko [Fri, 19 Aug 2011 18:24:27 +0000 (22:24 +0400)]
ospf6d: justify some ABR debug code

* ospf6_abr.c
  * ospf6_abr_examin_summary(): only fill "buf" when it is used

13 years agoMerge remote-tracking branch 'origin/master'
Paul Jakma [Fri, 29 Jul 2011 17:21:50 +0000 (18:21 +0100)]
Merge remote-tracking branch 'origin/master'

13 years agoMerge branch 'attr-errors'
Paul Jakma [Fri, 29 Jul 2011 17:16:25 +0000 (18:16 +0100)]
Merge branch 'attr-errors'

Contains BGP fixes:

- set extcommunity crash: tihs patch tries to make the refcounting more robust
  but does not fully solve the problem, sadly.
- BGP attribute error handling: Little testing.

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: Implement revised error handling for partial optional/trans. attributes
Paul Jakma [Tue, 23 Nov 2010 16:35:42 +0000 (16:35 +0000)]
bgpd: Implement revised error handling for partial optional/trans. attributes

* BGP error handling generally boils down to "reset session". This was fine
  when all BGP speakers pretty much understood all BGP messages. However
  the increasing deployment of new attribute types has shown this approach
  to cause problems, in particular where a new attribute type is "tunneled"
  over some speakers which do not understand it, and then arrives at a speaker
  which does but considers it malformed (e.g. corruption along the way, or
  because of early implementation bugs/interop issues).

  To mitigate this drafts before the IDR (likely to be adopted) propose to
  treat errors in partial (i.e.  not understood by neighbour), optional
  transitive attributes, when received from eBGP peers, as withdrawing only
  the NLRIs in the affected UPDATE, rather than causing the entire session
  to be reset.  See:

   http://tools.ietf.org/html/draft-scudder-idr-optional-transitive

* bgp_aspath.c: (assegments_parse) Replace the "NULL means valid, 0-length
  OR an error" return value with an error code - instead taking
  pointer to result structure as arg.
  (aspath_parse) adjust to suit previous change, but here NULL really
  does mean error in the external interface.
* bgp_attr.h (bgp_attr_parse) use an explictly typed and enumerated
  value to indicate return result.
  (bgp_attr_unintern_sub) cleans up just the members of an attr, but not the
  attr itself, for benefit of those who use a stack-local attr.
* bgp_attr.c: (bgp_attr_unintern_sub) split out from bgp_attr_unintern
  (bgp_attr_unintern) as previous.
  (bgp_attr_malformed) helper function to centralise decisions on how to
  handle errors in attributes.
  (bgp_attr_{aspathlimit,origin,etc..}) Use bgp_attr_malformed.
  (bgp_attr_aspathlimit) Subcode for error specifc to this attr should be
  BGP_NOTIFY_UPDATE_OPT_ATTR_ERR.
  (bgp_attr_as4_path) be more rigorous about checks, ala bgp_attr_as_path.
  (bgp_attr_parse) Adjust to deal with the additional error level that
  bgp_attr_ parsers can raise, and also similarly return appropriate
  error back up to (bgp_update_receive). Try to avoid leaking as4_path.
* bgp_packet.c: (bgp_update_receive) Adjust to deal with BGP_ATTR_PARSE_WITHDRAW
  error level from bgp_attr_parse, which should lead to a withdraw, by
  making the attribute parameter in call to (bgp_nlri_parse) conditional
  on the error, so the update case morphs also into a withdraw.
  Use bgp_attr_unintern_sub from above, instead of doing this itself.
  Fix error case returns which were not calling bgp_attr_unintern_sub
  and probably leaking memory.
* tests/aspath_test.c: Fix to work for null return with bad segments

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 agotools/multiple-bgpd.sh: set some community attributes to help test them
Paul Jakma [Sat, 27 Nov 2010 11:49:09 +0000 (11:49 +0000)]
tools/multiple-bgpd.sh: set some community attributes to help test them

13 years agobgpd: Try fix extcommunity resource allocation probs, particularly with 'set extcom..'
Paul Jakma [Tue, 23 Nov 2010 21:28:03 +0000 (21:28 +0000)]
bgpd: Try fix extcommunity resource allocation probs, particularly with 'set extcom..'

* Extended communities has some kind of resource allocation problem which
  causes a double-free if the 'set extcommunity ...' command is used.
  Try fix by properly interning extcommunities.

  Also, more generally, make unintern functions take a double pointer
  so they can NULL out callers references - a usefully defensive programming
  pattern for functions which make refs invalid.

  Sadly, this patch doesn't fix the problem entirely - crashes still
  occur on session clear.

* bgp_ecommunity.h: (ecommunity_{free,unintern}) take double pointer
  args.
* bgp_community.h: (community_unintern) ditto
* bgp_attr.h: (bgp_attr_intern) ditto
* bgp_aspath.h: (bgp_aspath.h) ditto
* (general) update all callers of above
* bgp_routemap.c: (route_set_ecommunity_{rt,soo}) intern the new extcom added
  to the attr, and unintern any old one.
  (route_set_ecommunity_{rt,soo}_compile) intern the extcom to be used
  for the route-map set.
  (route_set_ecommunity_*_free) unintern to match, instead of free
  (route_set_ecommunity_soo) Do as _rt does and don't just leak
  any pre-existing community, add to it (is additive right though?)

13 years agotests: Extend aspath_test.c with cases for invalid segments & attributes
Paul Jakma [Sat, 27 Nov 2010 23:14:02 +0000 (23:14 +0000)]
tests: Extend aspath_test.c with cases for invalid segments & attributes

* aspath_test.c: Add more test cases. In particular ones to cover the
  last invalid-segment problem. Also add ability to specify aspath attribute
  headers and test them somewhat.

  NB: It's obvious this test has not been run for a year by anyone, despite
  2 non-trivial commits to bgpd aspath code.

13 years agobgpd: Rollback some of the changes made for invalid AS_PATH segment fix
Paul Jakma [Sat, 27 Nov 2010 22:48:34 +0000 (22:48 +0000)]
bgpd: Rollback some of the changes made for invalid AS_PATH segment fix

Some of the changes made in commit cddb8112b80fa9867156c637d63e6e79eeac67bb
don't work particularly well for other changes that need to be made to
address BGP attribute error handling problems. In particular, returning
a pointer from complex attribute data parsing functions will not suffice
to express the require range of return status conditions.

* bgp_aspath.c: (assegments_parse) Rollback to a more minimal set of
  changes to fix the original problem.
  (aspath_parse) Slightly needless pushing around of code, and taking
  2 parameters to say whether ot use 2 or 4 byte encoding seems unnecessary.
* bgp_attr.c: (bgp_attr_as{,4}path) Rollback, in preparation for BGP
  attribute error handling update.

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