]> git.puffer.fish Git - matthieu/frr.git/log
matthieu/frr.git
8 years agobgpd: Reduce json memory usage.
Donald Sharp [Wed, 5 Oct 2016 20:11:12 +0000 (20:11 +0000)]
bgpd: Reduce json memory usage.

When running 'show bgp ipv4 uni summ' (or any variation thereof)
If you have a large # of routes, the json package starts taking
up a tremendous amount of memory and processing power.

Modify the code to output the json as we go instead of gathering
it all up and outputting at the end.

Ticket: CM-13060
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
8 years agozebra: add support for ipv6 static to null0
Don Slice [Wed, 5 Oct 2016 19:54:48 +0000 (12:54 -0700)]
zebra: add support for ipv6 static to null0

Added the capability of defining an ipv6 static route to null0,
similar to the support previously in ipv4 only.

Ticket: CM-5794
Signed-off-by: Don Slice
Reviewed By: CCR-5223
Testing Done: Manual tested added to the ticket and bgp and ospf smoke
successfully completed

8 years agoospfd: Display all ospf peers with show ip ospf neighbor detail all
Don Slice [Thu, 6 Oct 2016 17:50:36 +0000 (13:50 -0400)]
ospfd: Display all ospf peers with show ip ospf neighbor detail all

Problem reported that no peers are displayed when the command "show
ip ospf neighbor detail all" is entered.  Determined that the problem
was actually that the function only displayed NBMA peers, and since
we rarely (if ever) define NBMA peers, nothing is normally displayed.
Changed the code to display both NBMA and non-NBMA peers, in both the
up and down state.  Manual testing attached to the jira ticket.

Ticket: CM-5878
Signed-off-by: Don Slice
Reviewed-by: Daniel Walton
8 years agotools: quagga-reload should raise Exception instead of exiting
Daniel Walton [Tue, 27 Sep 2016 15:56:36 +0000 (15:56 +0000)]
tools: quagga-reload should raise Exception instead of exiting

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
NCLU imports quagga-reload.py and uses its Config class to parse
Quagga.conf.  The Config class will call 'vtysh -m -f Quagga.conf" and
if that exited with an error Config would call sys.exit(1) which in my
cases causes the NCLU daemon to exit which is bad.  The fix is to have
the Config class raise an exception instead of exiting, then NCLU can
catch the exception, log it and move on.

(cherry picked from commit 276887bb1c2961fa37b42ce7160346f1417577a8)

8 years agobgpd: resolve memory leaks in "show ip bgp neighbor json"
Don Slice [Fri, 16 Sep 2016 16:20:03 +0000 (09:20 -0700)]
bgpd: resolve memory leaks in "show ip bgp neighbor json"

Found several leaks in bgp_show_peer and bgp_show_peer_afi where
json objects are created and then not attached to the parent, causing
them to be leaked.  If not attaching them, freeing the created objects.
Manual testing performed successfully. Fix  tested succesfully by the
submitter and bgp-smoke completed with same failures as base.

Ticket: CM-12846
Signed-off-by: Don Slice
Reviewed-by: CCR-5181
8 years agoospfd: Fix crash with usage of incorrect command
Donald Sharp [Fri, 9 Sep 2016 16:41:35 +0000 (12:41 -0400)]
ospfd: Fix crash with usage of incorrect command

Entering 'show ip ospf interface json' causes ospf
to crash.

Entering 'show ip ospf interface <intf> json' causes
ospf to crash if intf has no neighbors on the otherside

Modify the code to not crash in these cases.

Ticket: CM-12776
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
8 years agolib: apply mask to prefix in prefix-list
Don Slice [Mon, 12 Sep 2016 13:32:11 +0000 (06:32 -0700)]
lib: apply mask to prefix in prefix-list

A crash occurred if a prefix was defined in a prefix-list that
contained bits in the prefix but a /0 mask.  Resolving that crash
and improving usability by applying the mask to the supplied prefix
and notifying the user if the prefix was modified.

Ticket: CM-12744
Signed-off-by: Don Slice
Reviewed_By:
Testing Done: Manual testing attached to the ticket, bgp-min, bgp-smoke
ospf-min, and ospf-smoke all completed before commit

8 years agodebian: Update release information
Donald Sharp [Fri, 9 Sep 2016 18:42:22 +0000 (14:42 -0400)]
debian: Update release information

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agobgpd: Display interface next-hop for "show ip bgp" with unnumbered
Don Slice [Fri, 9 Sep 2016 13:35:47 +0000 (06:35 -0700)]
bgpd: Display interface next-hop for "show ip bgp" with unnumbered

Found that the logic had been changed to determine whether the next-hop
is a v4 or v6 address.  This caused an unnumbered interface to be seen
as ipv4 instead of ipv6 so the swp port was not correctly displayed.
Changed it back. Manual testing attaced to the ticket and bgp-min will
be run before committing.

Ticket: CM-12759
Signed-off-by: Don Slice
Reviewed-by: CCR-5166
8 years agoquagga-reload.py fails for "net add debug ospf6 lsa as-ext"
Daniel Walton [Thu, 8 Sep 2016 13:16:25 +0000 (13:16 +0000)]
quagga-reload.py fails for "net add debug ospf6 lsa as-ext"

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12773

- change "as-ext" to "as-external"
- drop "grp-mbr" option, it does not have a handler
- drop "type7" option, it does not have a handler

(cherry picked from commit 51f2d198c24107a91a32764bf0930c2d50954574)

8 years agobgpd: Process directly connected IBGP peers upon interface down
vivek [Thu, 8 Sep 2016 17:03:30 +0000 (10:03 -0700)]
bgpd: Process directly connected IBGP peers upon interface down

When we have a single-hop BFD session for any peering, it really means
that the peering is directly connected (maybe over a L2 network), whether
it is IBGP or EBGP. In such a case, upon link down, immediately process
IBGP peers too (and bring them down), not just EBGP peers.

This change eliminates some peculiar state transitions in specific IBGP
topologies, thus getting rid of the problem of nexthops remaining inactive
in the zebra RIB.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-12390
Reviewed By: CCR-5156
Testing Done: Manual, bgp-smoke

8 years agolib, bgpd: Log next hops
vivek [Thu, 8 Sep 2016 16:38:53 +0000 (09:38 -0700)]
lib, bgpd: Log next hops

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-12390
Reviewed By: CCR-5156
Testing Done: Manual

8 years agobgpd: Enhance path selection logs
vivek [Mon, 5 Sep 2016 17:53:06 +0000 (10:53 -0700)]
bgpd: Enhance path selection logs

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Ticket: CM-12390
Reviewed By: CCR-5136
Testing Done: Manual

(cherry picked from commit a6086ad4084a9dfbf930ef48e2987772767063bd)

8 years agobgpd: Fix route install upon multipath nexthop change
vivek [Mon, 5 Sep 2016 17:49:16 +0000 (10:49 -0700)]
bgpd: Fix route install upon multipath nexthop change

In multipath selection, there can be a scenario where the set of route
entries selected as multipath can be the same (i.e., from the same peers)
but one or more of these may have a change to the BGP next hop. In this
case, the route needs to be installed again in zebra even if the best
route entry selected has not changed, otherwise the zebra RIB may have
a different set of next hops (and first hops) than what the routing
protocol selected.

This patch handles this scenario by re-installing the route if any BGP
attribute has changed for any of the multipaths. Not all BGP attributes
are of relevance to the zebra RIB, but this approach follows existing
logic used in the code (e.g., when BGP attributes for the best route
entry has changed).

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Sid Khot <sidkhot@cumulusnetworks.com>
Ticket: CM-12390
Reviewed By: CCR-5135
Testing Done: Manual, bgp-smoke

(cherry picked from commit e10720512ef744483ffed8a6ef3b529ec97e130d)

8 years agobgpd: Fix route install upon non-best nexthop change
vivek [Mon, 5 Sep 2016 17:35:19 +0000 (10:35 -0700)]
bgpd: Fix route install upon non-best nexthop change

After BGP path selection, even if the best route entry selected has not
changed, ensure that the route is installed again in zebra if any non-best
but multipath route entry has a nexthop resolution change.

In the absence of this fix, if a non-best multipath route entry had a
nexthop resolution change (such as being resolved over two first hops instead
of one), the route would get reinstalled into zebra only in some situations
(i.e., when the best route entry had its IGP change flag set). If the route
does not get reinstalled by BGP, the corresponding route in the zebra RIB
would not have all the first hops.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Sid Khot <sidkhot@cumulusnetworks.com>
Ticket: CM-12390
Reviewed By: CCR-5134
Testing Done: Manual, bgp-smoke

(cherry picked from commit 3064bf43a7d8162dadada2934132f915a45d2bcb)

8 years agoQuagga won't advertise 0.0.0.0/0 with network statement
Daniel Walton [Wed, 31 Aug 2016 12:31:47 +0000 (12:31 +0000)]
Quagga won't advertise 0.0.0.0/0 with network statement

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12561
(cherry picked from commit 337299a936d9db8951825dcbf3acc4bd3b89ac32)

8 years agojson support for "show ip route" for "show ipv6 route"
Daniel Walton [Mon, 29 Aug 2016 19:59:53 +0000 (19:59 +0000)]
json support for "show ip route" for "show ipv6 route"

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12633
(cherry picked from commit 18a4ded2a72cc5613f54845dd29c1ee7d05bbf04)

8 years agoquagga-reload.py should be importable
Daniel Walton [Wed, 31 Aug 2016 12:58:46 +0000 (12:58 +0000)]
quagga-reload.py should be importable

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Ticket: CM-12686
(cherry picked from commit a782e613dd44a4447e4a9ef08cfe014e09da2b2f)

8 years agozebra: stack overrun in IPv6 RA receive code (CVE ##TBA##)
David Lamparter [Wed, 31 Aug 2016 11:31:16 +0000 (13:31 +0200)]
zebra: stack overrun in IPv6 RA receive code (CVE ##TBA##)

The IPv6 RA code also receives ICMPv6 RS and RA messages.
Unfortunately, by bad coding practice, the buffer size specified on
receiving such messages mixed up 2 constants that in fact have different
values.

The code itself has:
 #define RTADV_MSG_SIZE 4096
While BUFSIZ is system-dependent, in my case (x86_64 glibc):
 /usr/include/_G_config.h:#define _G_BUFSIZ 8192
 /usr/include/libio.h:#define _IO_BUFSIZ _G_BUFSIZ
 /usr/include/stdio.h:# define BUFSIZ _IO_BUFSIZ

As the latter is passed to the kernel on recvmsg(), it's possible to
overwrite 4kB of stack -- with ICMPv6 packets that can be globally sent
to any of the system's addresses (using fragmentation to get to 8k).

(The socket has filters installed limiting this to RS and RA packets,
but does not have a filter for source address or TTL.)

Issue discovered by trying to test other stuff, which randomly caused
the stack to be smaller than 8kB in that code location, which then
causes the kernel to report EFAULT (Bad address).

Ticket: CM-12687
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agobgpd: Add fix for multiple set commands with prefer-global
root [Tue, 30 Aug 2016 12:59:08 +0000 (08:59 -0400)]
bgpd: Add fix for multiple set commands with prefer-global

In further testing, found that if there were multiple set commands in
the route-map with one being prefer-global, the removal of the prefer-global
was not recognized and reacted to correctly.  This small addition includes
that support

Ticket: CM-11480
Signed-off-by: Don Slice
Reviewed By: Donald Sharp
Testing Done: Manual testing, bgp-min and bgp-smoke completed

8 years agoisisd: warn if there is an MTU issue on circuits
Christian Franke [Mon, 15 Aug 2016 11:36:59 +0000 (13:36 +0200)]
isisd: warn if there is an MTU issue on circuits

Instead of later tripping over an assert, add a proper warning for
interfaces whose MTU is too low.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: fold up isis_circuit_is_type_set()
David Lamparter [Fri, 12 Aug 2016 23:32:52 +0000 (01:32 +0200)]
isisd: fold up isis_circuit_is_type_set()

see previous commit.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: fix is_type_set
David Lamparter [Fri, 12 Aug 2016 23:20:20 +0000 (01:20 +0200)]
isisd: fix is_type_set

Code's "is_type" is "circuit-type" in CLI, "circuit_type" is "network"
(type) in CLI, and the function to change is_type is
isis_event_circuit_type_change()... *headdesk*

Reported-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: fix network-type configuration
Christian Franke [Thu, 11 Aug 2016 14:08:05 +0000 (16:08 +0200)]
isisd: fix network-type configuration

Reported-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: fix isis_circuit_af_set() on fresh circuit
David Lamparter [Thu, 11 Aug 2016 15:02:50 +0000 (17:02 +0200)]
isisd: fix isis_circuit_af_set() on fresh circuit

A newly-created circuit will be in enabled state but have neither IPv4
nor IPv6 configured.  The logic in isis_circuit_af_set assumed that
"enabled" is equivalent to "ip || ipv6".

This is the only place where this distinction is currently relevant, as
the CLI won't allow enabling an interface without enabling either IPv4
or IPv6;  and it will also disable a circuit when both are deconfigured.

Reported-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: fix isis_circuit_create()
David Lamparter [Thu, 11 Aug 2016 14:59:08 +0000 (16:59 +0200)]
isisd: fix isis_circuit_create()

Between the awkwardly managed CSM and the tacked-on IPv6 support, the
simplified logic to setup a circuit wasn't quite right.

Note that the API essentially allows creating a circuit without enabling
either IPv4 or IPv6.  This wasn't possible before and probably breaks
isisd in 'interesting' ways.  The CLI won't do this, so it's only an
issue when adding on other configuration mechanisms.

Reported-by: Martin Winter <mwinter@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: Upon interface up (update) only kick-off non-Established peers
vivek [Thu, 18 Aug 2016 22:02:49 +0000 (15:02 -0700)]
bgpd: Upon interface up (update) only kick-off non-Established peers

Any interface flags/parameter change (e.g., MTU, PROMISC flag change) is
notified by zebra to clients as an "up" event. BGP literally treats this
as the interface coming up and kicks all neighbors on that interface (i.e.,
directly connected peers). When doing so for IPv4 peers on the interface
(numbered or unnumbered /30-/31) or IPv6 numbered peers, peers that may
already be Established are also flapped; when doing so for IPv6 unnumbered
peers (classic 'neighbor swpX interface' scenario with no configured IP
address on interface), only peers not in Established state are processed.

This patch fixes the code to ensure that in all cases, only non-Established
peers are kicked.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
Reviewed-by: Chris Cormier <chriscormier@cumulusnetworks.com>
Ticket: CM-12526
Reviewed By: CCR-5119
Testing Done: Manual, bgp-min

8 years agoquagga-reload.py should not restart quagga if bgp ASN changes
Daniel Walton [Thu, 18 Aug 2016 18:03:46 +0000 (18:03 +0000)]
quagga-reload.py should not restart quagga if bgp ASN changes

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Dinesh Dutt<ddutt@cumulusnetworks.com>
Ticket: CM-12521

8 years agovtysh --markfile needs to ignore the "end" lines
Daniel Walton [Thu, 18 Aug 2016 17:47:01 +0000 (17:47 +0000)]
vtysh --markfile needs to ignore the "end" lines

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12515

8 years agoFix for CM-12450 Ensure quagga logs at startup are sent to syslog (until log configur...
Sid Khot [Thu, 18 Aug 2016 02:36:54 +0000 (19:36 -0700)]
Fix for CM-12450 Ensure quagga logs at startup are sent to syslog (until log configuration is processed)

Ticket: CM-12450
Reviewed By: CCR-5112
Testing Done: Manual

8 years agoBGP: neighbor activate lines for ipv4 unicast are not in the sub context
Daniel Walton [Wed, 17 Aug 2016 00:22:12 +0000 (00:22 +0000)]
BGP: neighbor activate lines for ipv4 unicast are not in the sub context

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12080

8 years agobgpd: Fix for CM-11777 Need Quagga.conf created at quagga install
Sid Khot [Tue, 16 Aug 2016 23:27:34 +0000 (16:27 -0700)]
bgpd: Fix for CM-11777 Need Quagga.conf created at quagga install

Ticket: CM-11777
Reviewed By: CCR-5110
Testing Done: Manual

8 years agoRevert "Remove individual daemon conf files and replace with Quagga.conf"
Sid Khot [Tue, 16 Aug 2016 00:59:47 +0000 (17:59 -0700)]
Revert "Remove individual daemon conf files and replace with Quagga.conf"

This reverts commit f04605f4e5518ca161ee4088895988c4ae050b57.

8 years ago"No such peer-groupr" should be "No such peer-group"
Daniel Walton [Mon, 15 Aug 2016 19:25:02 +0000 (19:25 +0000)]
"No such peer-groupr" should be "No such peer-group"

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12191

8 years agozebra: Fix usage of accidental NULL pointer
Donald Sharp [Mon, 15 Aug 2016 16:04:30 +0000 (12:04 -0400)]
zebra: Fix usage of accidental NULL pointer

NS_DEFAULT is #defined to 0, We are passing it
in to a function that is taking 'struct zebra_ns *'
which is translating into a NULL pointer.  Which
in some situations will cause a crash.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
             Daniel Walton <dwalton@cumulusnetworks.com>
             Nikolay Aleksandrov <nikolay@cumulusnetworks.com>

(cherry picked from commit 1e9fa2763953adc603c3acc4ed2a46c9e72cbb29)
(cherry picked from commit e33efc8aa85ad17698bd8d42f1d32d80eb5ca4b6)

8 years agozebra: Fix interface lookup for RA statistics
vivek [Sat, 13 Aug 2016 20:25:56 +0000 (13:25 -0700)]
zebra: Fix interface lookup for RA statistics

Ensure we lookup interface across VRFs, not just in the default VRF.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
Ticket: CM-12357
Reviewed By: CCR-5097
Testing Done: Manual, bgp-min

8 years agoRemove individual daemon conf files and replace with Quagga.conf
Dinesh G Dutt [Sat, 13 Aug 2016 07:41:21 +0000 (00:41 -0700)]
Remove individual daemon conf files and replace with Quagga.conf

Ticket: CM-11777
Reviewed By: CCR-5096
Testing Done:

The recommended, and in many ways the only supported, model for
the configuration file of quagga is to use a single Quagga.conf
configuration file. However, we weren't shipping with this model,
which led to some confusion amongst users. This patch fixes this
by removing all individual daemon configuration files and replacing
it with the single Quagga.conf file.

8 years agobgpd: Reverting fix for CM-5040: BGP and OSPF should accept "router-id use-loopback"
Sid Khot [Sat, 13 Aug 2016 00:09:27 +0000 (17:09 -0700)]
bgpd: Reverting fix for CM-5040: BGP and OSPF should accept "router-id use-loopback"
ospfd: Reverting fix for CM-5040: BGP and OSPF should accept "router-id use-loopback"

This reverts commit cdb805bc9e45e355f4f034be8c89f0b7ca7894fd.

Conflicts:
bgpd/bgp_vty.c

8 years agobgpd: Fix for CM-11982 bgp failed to redistribute connected in vrf table
Sid Khot [Fri, 5 Aug 2016 23:49:39 +0000 (16:49 -0700)]
bgpd: Fix for CM-11982 bgp failed to redistribute connected in vrf table

Made fix to update the redistribute vrf bitmap when vrf goes down and comes up.

Ticket: CM-11982
Reviewed By: CCR-5032
Testing Done: bgp-min passed, manual

8 years ago'debug ospf' print a garbage character
Daniel Walton [Fri, 5 Aug 2016 21:47:42 +0000 (21:47 +0000)]
'debug ospf' print a garbage character

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: sidkhot@cumulusnetworks.com
Ticket: CM-12271

8 years agoFix changelog to add maintainer info, build fails without it
John Berezovik [Thu, 4 Aug 2016 16:08:37 +0000 (09:08 -0700)]
Fix changelog to add maintainer info, build fails without it

8 years agoquagga: Set version strings appropriately
Donald Sharp [Tue, 2 Aug 2016 08:54:45 +0000 (04:54 -0400)]
quagga: Set version strings appropriately

Set the version strings to be correct for the upcoming
3.1 release of Quagga.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agolib: Arm build breakage with MAX_INT macro issues
Donald Sharp [Wed, 3 Aug 2016 14:26:31 +0000 (10:26 -0400)]
lib: Arm build breakage with MAX_INT macro issues

The VTY_GET_INTEGER_RANGE macro is failing on arm
with a warning->error issue where we are passing in
a unsigned MAXINT to this macro and it is complaining
that the comparison of (TMPL) > MAXINT is always going
to be false because of data structure size.

I've changed the tmp variable to a unsigned long long
which alleviates this issue.

Ticket: CM-12187
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
8 years agobgpd: Add command to prefer global ipv6 address
Don Slice [Wed, 3 Aug 2016 13:49:09 +0000 (06:49 -0700)]
bgpd: Add command to prefer global ipv6 address

There are cases where customers desire the ability to override the
default behavior of installing ipv6 prefixes with a link-local next-hop
if both a link-local and global ipv6 next-op is present in the bgp table.
This fix provides this ability and will allow the global to be used as the
next-hop.  This also retains the ability to manually set the ipv6 next-hop
global value as before, and if so, this manual entry will be used for the
next-hop.

Ticket: CM-11480
Signed-off-by: Don Slice
Reviewed By: CCR-4983
Testing Done: Manual testing results attached to the ticket. bgp-min and
bgp-smoke will be completed before committing.

8 years agobgpd: Add the no form of some dump bgp commands
Donald Sharp [Mon, 1 Aug 2016 17:38:05 +0000 (13:38 -0400)]
bgpd: Add the no form of some dump bgp commands

Ticket: CM-9432
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by:

8 years agoBGP displays "keepalive" instead of "keepalives" for debugs
Daniel Walton [Mon, 1 Aug 2016 12:15:28 +0000 (12:15 +0000)]
BGP displays "keepalive" instead of "keepalives" for debugs

Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-12101

8 years agovtysh: Do not run extract.pl over protocols that are not configured
Donald Sharp [Thu, 28 Jul 2016 18:28:22 +0000 (14:28 -0400)]
vtysh: Do not run extract.pl over protocols that are not configured

Dynamically figure out the list of .c files that we need to scan
based upon whether or not the daemon is --enabled via configure.

Ticket: CM-12081
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Quentin Young <qlyoung@cumulusnetworks.com>
8 years agolib: 'show commandtree' is not a CLI command
Donald Sharp [Thu, 28 Jul 2016 18:02:52 +0000 (14:02 -0400)]
lib: 'show commandtree' is not a CLI command

The 'show commandtree' command was added to the CONFIG_NODE.

We have a basic assumption that CONFIG_NODE commands actually
change state.  'show commandtree' doesn't meet this requirement.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
8 years agoisisd: drop unused per-type metric values
David Lamparter [Thu, 28 Jul 2016 15:23:32 +0000 (17:23 +0200)]
isisd: drop unused per-type metric values

Expense, Error and Delay metrics never quite made it into the real
world.  Either way isisd does nothing useful with them, so let's drop
them from the code.  If someone wants to implement them, this patch can
still be reverted.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: area (L1), domain (L2) passwords
Christian Franke [Thu, 28 Jul 2016 15:23:31 +0000 (17:23 +0200)]
isisd: API: area (L1), domain (L2) passwords

Last isisd CLI cleanup for now.  This also folds L1 & L2 configs into
common functions, reducing CLI function bloat by a bit.

(This patch contains changes authored by both Christian Franke and David
Lamparter.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: timers (LSP, SPF)
Christian Franke [Thu, 28 Jul 2016 15:23:30 +0000 (17:23 +0200)]
isisd: API: timers (LSP, SPF)

See previous commits...

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: LSP-MTU & area level
Christian Franke [Thu, 28 Jul 2016 15:23:29 +0000 (17:23 +0200)]
isisd: API: LSP-MTU & area level

Yet more CLI functions in isis_vty.c using more nice setters.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: timers (IIH, CSNP, PSNP)
David Lamparter [Thu, 28 Jul 2016 15:23:28 +0000 (17:23 +0200)]
isisd: API: timers (IIH, CSNP, PSNP)

No setters needed since change of fields doesn't require any
specific action to make it apply.  Just move the CLI defs to isis_vty.c.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: circuit password
Christian Franke [Thu, 28 Jul 2016 15:23:27 +0000 (17:23 +0200)]
isisd: API: circuit password

This cleans up circuit password configuration a little bit.
(Restructured several times by both Christian Franke and David
Lamparter.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: basic area config
Christian Franke [Thu, 28 Jul 2016 15:23:26 +0000 (17:23 +0200)]
isisd: API: basic area config

Move out basic area configuration (metric type, overload and attachment
bits, dynamic hostname extension enable) into isis_vty.c.

[v2: moved stuff back here that accidentally was in the previous patch]

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoisisd: API: basic circuit config
David Lamparter [Fri, 29 Jul 2016 14:19:40 +0000 (16:19 +0200)]
isisd: API: basic circuit config

Create isis_vty.c and start moving off CLI functions into that.  These
then call newly-added "nice" API wrappers.

Patch contains significant work authored by Christian Franke.

[v2: removed stuff that crept in from the next patch]

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: get rid of "MTYPE 0"
David Lamparter [Thu, 28 Jul 2016 15:23:49 +0000 (17:23 +0200)]
*: get rid of "MTYPE 0"

A few places are using 0 in place of the MTYPE_* argument.  The
following rewrite of the alloc tracking won't deal with that, so let's
use MTYPE_TMP instead.

Acked-by: Vincent JARDIN <vincent.jardin@6wind.com>
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
[DL: v2: fix XFREE(0, foo) calls too]
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agopimd: relegate pim_igmp_join.c into a header file
David Lamparter [Thu, 28 Jul 2016 15:23:48 +0000 (17:23 +0200)]
pimd: relegate pim_igmp_join.c into a header file

pim_igmp_join.c only exists to make some portability hacks available to
test_igmpv3_join.  The function only has 1 call site in each pimd and
the test tool, so it's nicely served as a simple static function in a
header file.

This removes a MTYPE related compiler/linker issue from referencing
lib/if.h in a binary that doesn't link libzebra, as test_igmpv3_join is
now fully independent of lib/.

(Fix by Christian Franke: remove stray leftover ifindex_t)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: add 3-byte stream functions
David Lamparter [Thu, 28 Jul 2016 15:23:47 +0000 (17:23 +0200)]
lib: add 3-byte stream functions

This will be used for BGP MPLS labels.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: linklist: clean up insert-before/after dups
David Lamparter [Thu, 28 Jul 2016 15:23:46 +0000 (17:23 +0200)]
lib: linklist: clean up insert-before/after dups

- list_add_node_next was in fact unused
- list_add_node_prev performs a subset of listnode_add_before and
  its only use in isisd replaced with that.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: snmp: add a load of "static" specifiers
David Lamparter [Thu, 28 Jul 2016 15:23:45 +0000 (17:23 +0200)]
*: snmp: add a load of "static" specifiers

Make it easier to see which bits in *_snmp.c are actually referenced
from non-SNMP parts of the code.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agozebra: fix include for SNMP
David Lamparter [Thu, 28 Jul 2016 15:23:44 +0000 (17:23 +0200)]
zebra: fix include for SNMP

no idea where this disappeared.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: AgentX: use threads instead of eventloop hack
David Lamparter [Thu, 28 Jul 2016 15:23:43 +0000 (17:23 +0200)]
lib: AgentX: use threads instead of eventloop hack

AgentX fd/timeout handling is rather hackishly monkeyed into thread.c.
Replace with code that uses plain thread_* functions.

NB: Net-SNMP's API rivals Quagga's in terms of age and absence of
documentation.  netsnmp_check_outstanding_agent_requests() in particular
seems to be unused and is therefore untested.

The most useful documentation on this is actually the blog post Vincent
Bernat wrote when he originally integrated this into lldpd and Quagga:
https://vincent.bernat.im/en/blog/2012-snmp-event-loop.html

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: add thread_add_timer_tv (struct timeval)
David Lamparter [Thu, 28 Jul 2016 15:23:42 +0000 (17:23 +0200)]
lib: add thread_add_timer_tv (struct timeval)

Another zoo extension, this adds a timer scheduling function that takes
a struct timeval argument (which is actually what the wrappers boil down
to, yet it's not exposed...)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: linklist: add listnode_add_before()
David Lamparter [Thu, 28 Jul 2016 15:23:41 +0000 (17:23 +0200)]
lib: linklist: add listnode_add_before()

This utility function, to join the zoo that the Quagga linked-list
implementation has accumulated, does an insert-before while returning
the newly allocated node.

It is similar to:
- listnode_add_after(), but
  - complementary direction
  - returns allocated node
- list_add_node_prev(), but
  - supports before == NULL
  - returns allocated node

In general, the entire linked-list implementation is in bad shape, and
while it needs a cleanup / rewrite / replacement, this would both cause
significant conflicts and block other cleanups...

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agolib: remove a whole bunch of unused time stuff
David Lamparter [Thu, 28 Jul 2016 15:23:40 +0000 (17:23 +0200)]
lib: remove a whole bunch of unused time stuff

QUAGGA_CLK_REALTIME and QUAGGA_CLK_REALTIME_STABILISED aren't used
anywhere in the code.  Remove.  The enum is kept to avoid having to
change the calls everywhere.

Same applies to the workaround code for systems that don't have a
monotonic clock.  None of the systems Quagga works on fall into that
category;  Linux, BSD and Solaris all do clock_gettime, for OSX we have
mach_absolute_time() - that covers everything.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agozebra: use quagga_monotime() for zserv and rnh
Christian Franke [Thu, 28 Jul 2016 15:23:39 +0000 (17:23 +0200)]
zebra: use quagga_monotime() for zserv and rnh

quagga_time() will disappear with the next commit, this is the last
remaining user of it.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoospfd: use random() to pick initial DD seq#
David Lamparter [Thu, 28 Jul 2016 15:23:38 +0000 (17:23 +0200)]
ospfd: use random() to pick initial DD seq#

While the idea for this came the other way around - removing
quagga_time() - using random() is actually a better idea here.  It's
seeded by time to begin with, but if ospfd restarts several times in a
short timespan it won't run straight into the same sequence number.

(Should also update the random seed to include microseconds so restarts
within a second use a different seq#)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoospfd: ditch unused time fields
David Lamparter [Thu, 28 Jul 2016 15:23:37 +0000 (17:23 +0200)]
ospfd: ditch unused time fields

The ctime/mtime fields in ospf_route and start_time field in ospf_master
are written but never read, thus entirely useless.  Remove them.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoospfd: monotonic clock for lsa_refresher_started
David Lamparter [Thu, 28 Jul 2016 15:23:36 +0000 (17:23 +0200)]
ospfd: monotonic clock for lsa_refresher_started

ospf->lsa_refresher_started is only used in relative timing to itself;
replace with monotonic clock which is appropriate for this.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: ditch unused bgp_node_*() functions
David Lamparter [Thu, 28 Jul 2016 15:23:35 +0000 (17:23 +0200)]
bgpd: ditch unused bgp_node_*() functions

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: divorce router-id logic from CLI & zebra
David Lamparter [Thu, 28 Jul 2016 15:23:34 +0000 (17:23 +0200)]
bgpd: divorce router-id logic from CLI & zebra

Logic for determining the router-id was spread out over bgp_zebra.c and
bgp_vty.c.  Move to bgpd/bgpd.c and have these two call more properly
encapsulated functions.

Significant work by Christian Franke <chris@opensourcerouting.org>.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: minor header/API clean up
David Lamparter [Thu, 28 Jul 2016 15:23:33 +0000 (17:23 +0200)]
bgpd: minor header/API clean up

Adds "const" on:
- peer_update_source_addr_set()
- peer_description_set()
Adds parameter names on:
- bgp_timers_set()
  (really confusing, this one, with 2 unexplained args of same type)
Adds new setter:
- peer_afc_set(), calling peer_activate/peer_deactivate.
  (intended for API consumers, matches peer->afc)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: Pass correct bgp-name for clear command
Don Slice [Thu, 28 Jul 2016 21:35:48 +0000 (14:35 -0700)]
bgpd: Pass correct bgp-name for clear command

Found that original fix for CM-10113 had a significant flaw, that
by deriving the bgp instance from the vty->index, if a clear ip bgp
command was entered from a vty index other then bgp, a crash occurred.
This fix passes the bgp->name to the clear functions so the correct
instance can be derived.  Tested manually in both the CM-10113 case
as well as the problem discovered while testing CM-11480.

Ticket: CM-10113
Signed-off-by: Don Slice
Reviewed-by:

8 years agopimd: supply VIFF_USE_IFINDEX definition
David Lamparter [Wed, 27 Jul 2016 18:02:54 +0000 (20:02 +0200)]
pimd: supply VIFF_USE_IFINDEX definition

This fixes compilation if the system libc doesn't have VIFF_USE_IFINDEX.
It'll still break runtime if the kernel is older than 2.6.32.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agotests: update testcli reference output
David Lamparter [Wed, 27 Jul 2016 17:39:46 +0000 (19:39 +0200)]
tests: update testcli reference output

an extra comment line got added somewhere inbetween.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agoRevert "lib: Rewrite ipv4 address and prefix validator"
David Lamparter [Wed, 27 Jul 2016 17:39:45 +0000 (19:39 +0200)]
Revert "lib: Rewrite ipv4 address and prefix validator"

This reverts commit d4dc41b6a23d5156b0d9068006a1eeb3ba32e301.

The rewritten parser fails to recognise "1.2." as partial input for an
IPv4 address, which causes "make check" to fail.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years ago*: fixup snmp support
David Lamparter [Wed, 27 Jul 2016 17:39:44 +0000 (19:39 +0200)]
*: fixup snmp support

- HAVE_POLL is overloaded by net-snmp
- missing includes
- ospf6_snmp converted to vrf_iflist()

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
8 years agobgpd: Fix for CM-11908 BGP: 'Address-family encap' cli issues
Sid Khot [Wed, 27 Jul 2016 01:20:37 +0000 (18:20 -0700)]
bgpd: Fix for CM-11908 BGP: 'Address-family encap' cli issues

Made fix to handle the "Ambigious command" for address-family vpvn6 and vpnv6 unicast.
Rest of the bug analysis is below:
1. Issues with address-family encap/address-family encapv6/address-family vpnv6/address-family vpnv6 unicast need to be added to the ignore list in the test file tests.l3.quagga_cfg_cli_crawler_test. Sid to fix the "Ambiguous command" for vpnv6 as part of fix for this bug.
2. Neighbor <ipaddr/interface> disable-connected-check/ttl. Options should not be listed for interface. Anitha to file bugs for these. And also remove these commands from the test file tests.l3.quagga_cfg_cli_crawler_test.

Ticket:  CM-11908
Reviewed By: CCR-4999
Testing Done: Manual, Ran the tests.l3.quagga_cfg_cli_crawler_test

<DETAILED DESCRIPTION (REPLACE)>

8 years agolib: Free memory correctly when braces used in parser
Don Slice [Tue, 26 Jul 2016 13:44:39 +0000 (06:44 -0700)]
lib: Free memory correctly when braces used in parser

When braces (optional parameters) are used in the quagga parser, there
was a small leak on every iteration.  Since this construct is primarily
used in the configuation process rather than show commands, it was not
readily apparent.  With the addition of the "show ip bgp {json}" form of
the commands, each time one was run, memory was leaked.

Ticket: CM-11435
Signed-off-by: Don Slice
Reviewed By: Donald Sharp
Testing Done: Manual testing, bgp-min and bgp-smoke successful

8 years agobgpd: Fix attribute handling upon redistribution metric change
vivek [Tue, 26 Jul 2016 17:45:51 +0000 (10:45 -0700)]
bgpd: Fix attribute handling upon redistribution metric change

When the metric for a redistributed route is changed through configuration,
the path attribute for the route/routes need to be "re-created" as the hash
entry would change. In the absence of this, the entry would have the correct
values but when a hash lookup is done at a later time (e.g., when trying to
free the entry), it would fail. This patch addresses the "re-creation"

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-11168
Reviewed By: CCR-4990
Testing Done: Manual, bgp-smoke

8 years agodebian: Remove pimd build object from packaging
Donald Sharp [Tue, 26 Jul 2016 17:32:52 +0000 (13:32 -0400)]
debian: Remove pimd build object from packaging

We've disabled pimd, remove the build object
from our packaging.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Vivek Venkataraman <vivek@cumulusnetworks.com>
8 years agobgpd: Fix for vtysh -m does not mark "end" of router bgp
Sid Khot [Tue, 26 Jul 2016 17:23:46 +0000 (10:23 -0700)]
bgpd: Fix for  vtysh -m does not mark "end" of router bgp

There was an exit added at the end of the BGP commands after we pulled the code from upstream. This was causing the reload scripts to fail. Removed this exit.

Ticket: CM-11464 CM-11924
Reviewed By: CCR-4995
Testing Done: Manual

<DETAILED DESCRIPTION (REPLACE)>

8 years agodebian: Disable pimd in cmaster-next
Donald Sharp [Tue, 26 Jul 2016 16:42:28 +0000 (12:42 -0400)]
debian: Disable pimd in cmaster-next

Turn off the building of pimd in cmaster-next.

Ticket: CM-12015
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
8 years agolib: Modify 'banner motd file <X>'
Donald Sharp [Fri, 22 Jul 2016 23:50:51 +0000 (19:50 -0400)]
lib: Modify 'banner motd file <X>'

Modify the banner motd file X command to do these things
differently:

1)  Only allow the file <X> to be in SYSCONFDIR
2)  Only allow the user to use a file that exists.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Reviewed-by: Dinesh Dutt <ddutt@cumulusnetworks.com>
8 years agoMake vtysh-integrated-config truly the default and fix quagga reload for this.
Dinesh G Dutt [Wed, 20 Jul 2016 15:24:47 +0000 (08:24 -0700)]
Make vtysh-integrated-config truly the default and fix quagga reload for this.

Ticket: CM-11910
Reviewed By: sharpd, routing-dev slack
Testing Done: Test with nothing in vtysh.conf, add no, remove it etc.

Even though we force integrated config to be the default, we do this by adding
a line to our default vtysh.conf which has integrated config enabled. When we
stopped printing integrated-config as part of wr mem or show running-config, we
broke quagga reload because it was explicitly looking for integrated config.
Furthermore, merely fixing quagga reload wouldn't work because subsequent saves
would result in config being saved to individual files since vtysh.conf no
longer forced the file to be integrated.

This patch fixes both issues. Makes integrated config the default in the code,
rather than via a shipped default file, and fixes quagga reload to look for
the "no integrated-vtysh-config" to deny attempting a reload.

8 years agobgpd: Print the correct table in "show ip bgp x.x.x.x"
Don Slice [Wed, 20 Jul 2016 12:02:04 +0000 (08:02 -0400)]
bgpd: Print the correct table in "show ip bgp x.x.x.x"

Prior to this change, bgp always identified the routing table used as
the default in the output of "show ip bgp x.x.x.x".  This fix changes
the behavior to use the correct table name.

Ticket: CM-10239
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
8 years agoMerge branch 'cmaster-next' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into...
vivek [Wed, 20 Jul 2016 02:36:04 +0000 (19:36 -0700)]
Merge branch 'cmaster-next' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster-next

8 years agoospfd: Ensure correct handling of router-id change
vivek [Wed, 20 Jul 2016 02:17:38 +0000 (19:17 -0700)]
ospfd: Ensure correct handling of router-id change

Upon router-id change, one object that needs to be updated is the "nbr_self"
structure that is created to contain information about the local router and
is used during DR election, among other things. In the past, the code used to
just change the router-id field of this structure. This is actually not
sufficient - the neighbor has to be deleted and re-added into the tree. This
was fixed upstream and the fix is now available in our tree, but those changes
don't work well with prior Cumulus changes to defer updating the router-id
in the OSPF instance until other cleanup has happened.

Fixed code to update the "nbr_self" structure correctly while continuing to
defer the router_id update in the OSPF structure.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-11861
Reviewed By: CCR-4980
Testing Done: Manual, failed test

8 years agoDon't print empty sections as they clutter the output of show-running
Dinesh G Dutt [Mon, 18 Jul 2016 06:08:05 +0000 (23:08 -0700)]
Don't print empty sections as they clutter the output of show-running

Ticket: CM-11808
Reviewed By: CCR-4971
Testing Done: Usual stuff including doing show running with multiple daemons

Interface and VRF are both sections of the config that could possibly be
empty. This unnecessarily clutters the output of show running. This patch
fixes that by not displaying empty sections of interface, and vrf.
Routemaps have a genuine empty stanza and so we cannot add routemap to this
list. Unfortunately this means a "show running-config ospfd" may have empty
route-maps if the route-maps all correspond to BGP, for example. This
is not a concern for the entire "show running-config".

The trick in fixing this is on the vtysh side rather than on the client side.
The reason for this is that its quite tricky given the number of options to
ensure that a daemon never printed a section header unless there was something
to print. On the vtysh side, however, its easy to check if a section is
empty and not print it.

8 years agoDeprecate link-detect and don't display it in show running-config
Dinesh G Dutt [Mon, 18 Jul 2016 06:12:12 +0000 (23:12 -0700)]
Deprecate link-detect and don't display it in show running-config

Ticket: CM-11808
Reviewed By: CCR-4972
Testing Done: Usual stuff

link-detect is on by default, and has been so since the first release
of Cumulus Linux. So, in the light of not displaying defaults, don't
display link-detect if enabled, only if disabled.

8 years agoDon't display integrated-vtysh-config as its the default in CL.
Dinesh G Dutt [Mon, 18 Jul 2016 06:38:51 +0000 (23:38 -0700)]
Don't display integrated-vtysh-config as its the default in CL.

Ticket: CM-11832
Reviewed By:
Testing Done: Testing that its not displayed if enabled & only if disabled

In the spirit of not displaying the defaults, we shouldn't display
"service integrated-vtysh-config" as its the default. It also tends to
clutter the output with stuff the user doesn't know or care about. This
patch removes displaying that and only prints it when the option is
disabled.

8 years agobgpd: Use the correct bgp instance for cli commands issuing clear
Don Slice [Mon, 18 Jul 2016 14:32:46 +0000 (10:32 -0400)]
bgpd: Use the correct bgp instance for cli commands issuing clear

Some bgp commands end with doing a bgp_clear_vty, which invalidly
made the assumption that the clear should always be done for the default
instance.  This fix derives the correct instance from the vty-index if
one is supplied, and uses the default instance if it is not.

Ticket: CM-10113
Signed-off-by: Don Slice
Reviewed-by: Donald Sharp
8 years agoSimplify BGP unnumbered configuration by eliminating the unessential.
Dinesh G Dutt [Wed, 13 Jul 2016 22:31:27 +0000 (15:31 -0700)]
Simplify BGP unnumbered configuration by eliminating the unessential.

To make BGP configuration as simple as possible, assume the capability
extended-nexthop to be default for interface neighbors. Also allow the
ability to specify remote-as on the same line as neighbor interface to
make BGP unnumbered configuration a single line.

One corner case. This is the first feature for which the default for a
member is different from the default for a peer-group. Since advertising
the capability is only done for interface neighbors, the capability is
not set for the peer-group, but is automatically set for interface
neighbors that belong to that peer-group. So, if you want to disable the
advertisement of this capability for an interface neighbor, you must
do it per each interface neighbor.

The patch is more complicated than it needs to be due to the handling
of quagga reload and appropriate updates to the show running output.

Ticket: CM-11830
Reviewed By: CCR-4958
Testing Done: Usual coterie, including manual

(cherry picked from commit 347914a0a785993200cb04ae3cbf8ff9a9104d60)

8 years agoMerge remote-tracking branch 'origin/cmaster' into cmaster-next
Donald Sharp [Fri, 15 Jul 2016 20:40:01 +0000 (16:40 -0400)]
Merge remote-tracking branch 'origin/cmaster' into cmaster-next

P unnumbered configuration a single line.

One corner case. This is the first feature for which the default for a
member is different from the default for a peer-group. Since advertising
the capability is only done for interface neighbors, the capability is
not set for the peer-group, but is automatically set for interface
neighbors that belong to that peer-group. So, if you want to disable the
advertisement of this capability for an interface neighbor, you must
do it per each interface neighbor.

The patch is more complicated than it needs to be due to the handling
of quagga reload and appropriate updates to the show running output.

Ticket: CM-11830
Reviewed By: CCR-4958
Testing Done: Usual coterie, including manual

8 years agoMerge branch 'cmaster-next' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into...
Don Slice [Tue, 19 Jul 2016 17:37:08 +0000 (10:37 -0700)]
Merge branch 'cmaster-next' of ssh://stash.cumulusnetworks.com:7999/quag/quagga into cmaster-next

8 years agoSimplify BGP unnumbered configuration by eliminating the unessential.
Dinesh G Dutt [Wed, 13 Jul 2016 22:31:27 +0000 (15:31 -0700)]
Simplify BGP unnumbered configuration by eliminating the unessential.

To make BGP configuration as simple as possible, assume the capability
extended-nexthop to be default for interface neighbors. Also allow the
ability to specify remote-as on the same line as neighbor interface to
make BGP unnumbered configuration a single line.

One corner case. This is the first feature for which the default for a
member is different from the default for a peer-group. Since advertising
the capability is only done for interface neighbors, the capability is
not set for the peer-group, but is automatically set for interface
neighbors that belong to that peer-group. So, if you want to disable the
advertisement of this capability for an interface neighbor, you must
do it per each interface neighbor.

The patch is more complicated than it needs to be due to the handling
of quagga reload and appropriate updates to the show running output.

Ticket: CM-11830
Reviewed By: CCR-4958
Testing Done: Usual coterie, including manual

8 years agozebra: Eliminate use of imported arp entries as next-hops for other routes
Don Slice [Fri, 15 Jul 2016 13:33:48 +0000 (06:33 -0700)]
zebra: Eliminate use of imported arp entries as next-hops for other routes

Ticket: CM-8228
Signed-off-by: Donald Slice
Reviewed By:
Testing Done: Manual testing succesful. bgp-min and ospf-smoke successful. redistribute-neighbor-smoke
has the same failures as the base image.

Problem was due to considering imported /32 arp entries as elible next-hops for other routes
(in this case a static route.)  This confuses the rib since this next-hop is considered both
recursive and  onlink.  Disallowed the use of this imported arp entry in next-hop determination.

8 years agobgpd: Make ASN optional for `no router bgp`
Quentin Young [Thu, 14 Jul 2016 13:04:47 +0000 (13:04 +0000)]
bgpd: Make ASN optional for `no router bgp`

When there is one BGP router instance, `no router bgp` may be used to
deconfigure it without specifying its ASN

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
8 years agoMerge remote-tracking branch 'origin/cmaster' into cmaster-next
Donald Sharp [Wed, 13 Jul 2016 00:24:00 +0000 (20:24 -0400)]
Merge remote-tracking branch 'origin/cmaster' into cmaster-next