Commit Graph

13509 Commits

Author SHA1 Message Date
Renato Westphal
a6233bfcb3 lib, ripd: rework API for converted CLI commands
When editing the candidate configuration, the northbound must ensure
that either all changes made by a command are accepted or none are.
This is done to prevent inconsistent states where only parts of a
command are applied in the event any error happens.

The previous API for converted commands, the nb_cli_cfg_change()
function, required callers to pass an array containing all changes
that needed to be applied in the candidate configuration. The
problem with this API is that it was very inconvenient for complex
commands, which change different configuration options depending
on several factors.  This required users to manipulate the array
of configuration changes using low-level primitives, making it
complicated to implement some commands.

To solve this problem, introduce a new API based on the two following
functions:
- nb_cli_enqueue_change()
- nb_cli_apply_changes()

The first function is used to enqueue configuration changes, one
at time. Then the nb_cli_apply_changes() function is used to apply
all the enqueued configuration changes.

To implement this, a static-sized array was allocated in the "vty"
structure, along with a counter of enqueued changes. This eliminates
the need to declare an array of configuration changes in every
converted CLI command, simplifying things quite considerably.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 15:57:23 -02:00
Renato Westphal
bb5b9c10c1 ripd: fix display of the "distance" command
When displaying a configuration using the "with-defaults" option,
do not display "distance 0" when the "distance" command is not
configured. The range of accepted values is (1-255), so "distance
0" isn't a valid command. In this case, display "no distance".

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 15:53:21 -02:00
Renato Westphal
25c780a32a lib: make yang_dnode_get_entry() more flexible
Add the "abort_if_not_found" parameter to the yang_dnode_get_entry()
function instead of always aborting when an user pointer is not
found.  This will make it possible, for example, to use this function
during the validation phase of a configuration transaction. Callers
will only need to check if the function returned NULL or not,
since new configuration objects (if any) won't be created until
the NB_EV_APPLY phase of the transaction.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 15:53:15 -02:00
Renato Westphal
3f66207896 lib: introduce function to retrieve the schema name of a data node
In some cases it might be desirable to obtain the schema name of
a libyang data node. Introduce the yang_dnode_get_schema_name()
function for this purpose.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 15:52:12 -02:00
Renato Westphal
a7d055e4ff lib: improve error handling when connection to confd is lost
This fixes an infinite loop that happened every time the connection
to the confd daemon was lost. Deactivate the confd module when
that happens to fix the infinite loop. This is only a temporary
workaround, in the long term we need to add a connection retry timer
to reestablish the connection to the confd daemon once it's back.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 15:51:57 -02:00
Renato Westphal
76ca535697 build: fix detection of the confd binary
The confd binary must be searched in the path given by the user and not
in the system standard directories. This is necessary because, the way
confd is distributed, multiple installations of confd (from different
versions) are possible. Users must choose at configure time which confd
installation they want to use.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 13:07:42 -02:00
Renato Westphal
f3e5b71cc1 lib: set YANG search directory when creating libyang context
Minor code simplification.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-11-26 13:07:40 -02:00
Russ White
98d8359fe7
Merge pull request #3351 from chiragshah6/ospfv3_dev
ospf6d: abr summary advertise best route
2018-11-26 08:09:12 -05:00
Russ White
ae4bb7ba6e
Merge pull request #3356 from opensourcerouting/router-id-loopbacks
zebra: improve identification of loopback interfaces in the router-id code
2018-11-26 08:07:28 -05:00
Russ White
0c9503eb4e
Merge pull request #3361 from opensourcerouting/yang-embed-models
yang: embed models into binaries
2018-11-26 08:04:03 -05:00
Russ White
32bdc40ec4
Merge pull request #3362 from pacovn/Coverity_1475469_null_check
bgpd: null check (Coverity 1475469)
2018-11-26 08:01:09 -05:00
Russ White
63d3ca26f6
Merge pull request #3364 from opensourcerouting/bugfix/isis-ipv6-only
IS-IS: Bugfix ipv6 only
2018-11-26 08:00:25 -05:00
Russ White
55cdfc769c
Merge pull request #3374 from opensourcerouting/bugfix/vty-shadow
lib/vty: Fix warning about shadowed variable
2018-11-26 07:56:31 -05:00
Russ White
7af31aa6fa
Merge pull request #3371 from donaldsharp/vtysh_ospf_instance
vtysh: Don't attempt to reconnect the non-instanced ospf process
2018-11-26 07:55:49 -05:00
Russ White
eda41b4c21
Merge pull request #3325 from adeg/bugfix/bgpd-vtysh-fixes
bgp_vty: Fix vpn_leak_postchange_all() every time "router bgp ASNUM" context is entered
2018-11-25 22:39:47 -05:00
Russ White
19e5a46591
Merge pull request #3176 from chiragshah6/evpn_dev
zebra: duplicate address detection and dampening
2018-11-25 22:17:33 -05:00
Christian Franke
d0dec58747 lib/vty: Fix warning about shadowed variable
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-23 17:52:46 +01:00
Donald Sharp
b2443937b0 vtysh: Don't attempt to reconnect the non-instanced ospf process
When running ospf instances we should not attempt to reconnect
the default ospf instance on running a command.

This commit should be targeted enough because in the case
of normal operation we connect to everything we should
and only set the VTYSH_WAS_ACTIVE flag for those we
truly have lost connection too.

Before:

donna.cumulusnetworks.com# config t
donna.cumulusnetworks.com(config)# router ospf 100
Warning: connecting to ospfd...failed!
donna.cumulusnetworks.com(config-router)#

After:
donna.cumulusnetworks.com# conf t
donna.cumulusnetworks.com(config)# router ospf 100
donna.cumulusnetworks.com(config-router)# end
donna.cumulusnetworks.com#

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-11-21 16:15:38 -05:00
Russ White
4b53ce068d
Merge pull request #3367 from karamalla0406/frr3333
bgpd: BGP daemon crashed when a L2VNI is unconfigured
2018-11-21 13:51:02 -05:00
Renato Westphal
f37bb166a6
Merge pull request #3363 from pacovn/static_analysis__ISO_C_return_compliance
bgpd isisd lib: fix return on void functions
2018-11-21 14:19:09 -02:00
Renato Westphal
e3ae78a829
Merge pull request #3368 from pacovn/static_analysis__ISO_C_empty_initializer
isisd lib ospfd pbrd python: fix empty init
2018-11-21 14:14:45 -02:00
F. Aragon
48944eb65e
isisd lib ospfd pbrd python: fix empty init
ISO C forbids empty initializer braces. Empty initializers have been
replaced with {0}

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-11-21 14:45:42 +01:00
Kishore Aramalla
1b7db1df43 bgpd: BGP daemon crashed when a L2VNI is unconfigured
When a VNI is unconfigured it deletes all of its import and export
route-targets.  There is a export route-target link list and import
route-target linked list.  There are redudant loops in  the
route-target deletion code.  In the first iteration it deleted the
route-target and freed the RT node, but not list node.
In the 2nd iteration it tries to free the RT node again, resulting in
 the double free of RT node.

Signed-off-by: "Kishore Aramalla karamallavmware.com"
2018-11-20 16:15:56 -08:00
Russ White
8e42765666
Merge pull request #3339 from opensourcerouting/bugfix/isis-flooding-issues
isis: Fix flooding issues
2018-11-20 15:07:19 -05:00
Christian Franke
4773e4f894 isisd: Fix bug in tlvs_protocols_supported_to_adj
We should set nlpids[0] if we only set on protocol,
not nlpids[1].

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-11-20 19:45:58 +01:00
Christian Franke
7d26945ad8 isisd: Consider non-mt links usable when either v4 or v6 works
When we run in non-mt mode, we should consider links which have either
working IPv4 or IPv6 active and look at the neighbors nlpids to judge
wether a link is usable.

Fixes: #3336
2018-11-20 19:20:47 +01:00
Mark Stapp
fb88590c77
Merge pull request #3359 from qlyoung/true-atomics
Restrict atomics to 32-bits only
2018-11-20 11:43:10 -05:00
F. Aragon
d90b788e38
bgpd isisd lib: fix return on void functions
ISO C forbids ‘return’ with expression, in function returning void.

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-11-20 16:32:25 +01:00
Renato Westphal
ce6a0c3268
Merge pull request #2929 from kssoman/rtr_fix
bgpd, zebra: Creating Loopback Interface Flaps BGPd, it should update
2018-11-20 12:26:52 -02:00
F. Aragon
32fbbd9c7d
bgpd: null check (Coverity 1475469)
Null check of 'rn' returned by bgp_node_lookup() because it could be
deferenced afterwards into bgp_nexthop_get_node_info()

Signed-off-by: F. Aragon <paco@voltanet.io>
2018-11-20 12:51:27 +01:00
David Lamparter
9fd4742bee yang: add .gitignore
Signed-off-by: David Lamparter <equinox@diac24.net>
2018-11-19 23:59:41 +01:00
David Lamparter
3a11599cdc yang: embed models into binaries
This bakes our YANG models straight into the library/daemons, so they
don't need to be loaded from /usr/share/yang.  This makes the
installation quite a bit more robust, as well as gets us halfway to
running uninstalled.  (The other half is baking in the extension type
module.)

The /usr/share/yang directory is still searched as a fallback, as well
as for the experimental YANG model translator.  This is likely to stay
as is for the time being.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-11-19 23:45:24 +01:00
Quentin Young
11b5117007 tools: add non-32 bit atomic warning to checkpatch
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-11-19 19:03:45 +00:00
Quentin Young
0545c37384 *: only use 32-bit atomics
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
2018-11-19 18:44:35 +00:00
Quentin Young
dc079d4f7a
Merge pull request #3358 from opensourcerouting/libtool-cfg-warn
build: refuse non-working linking options
2018-11-19 12:16:37 -05:00
David Lamparter
add5f18350
Merge pull request #3346 from donaldsharp/pim_possible_issues
Pim possible issues
2018-11-19 17:02:27 +01:00
David Lamparter
b156e69c6c
Merge pull request #3294 from pguibert6WIND/distribute_list_ipv6
lib: distribute-list ipv6 can be (un)configured
2018-11-19 17:01:24 +01:00
David Lamparter
01a0d85510
Merge pull request #3311 from dslicenc/static-int-up
staticd: install static routes in a vrf when next-hop interface comes up
2018-11-19 16:59:08 +01:00
David Lamparter
02968310e0
Merge pull request #2725 from pguibert6WIND/workflow_lts
doc: change workflow to support long term maintenance branches
2018-11-19 16:54:56 +01:00
David Lamparter
6236b8e4d8
Merge pull request #3343 from qlyoung/doc-add-vtysh-dev
doc: add dev doc for vtysh
2018-11-19 16:54:25 +01:00
David Lamparter
2cc4f280ed build: refuse non-working linking options
We only support:
* --enable-shared --disable-static --disable-static-bin
* --enable-shared --enable-static --disable-static-bin
* --enable-shared --enable-static --enable-static-bin

(The second option is not particularly useful.)

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-11-19 16:32:14 +01:00
root
36dc75886d bgpd: Creating Loopback Interface Flaps BGPd (#2865)
* The function bgp_router_id_zebra_bump() will check for active bgp
  peers before chenging the router ID.
  If there are established peers, router ID is not modified
  which prevents the flapping of established peer connection

* Added field in bgp structure to store the count of established peers

Signed-off-by: kssoman <somanks@vmware.com>
2018-11-19 04:35:32 -08:00
Chirag Shah
bdca1974e1 zebra: dup addr detect mac consolidation
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 22:30:17 -08:00
Chirag Shah
7510e45925 zebra: dup addr detect neigh consolidation
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 22:14:11 -08:00
Chirag Shah
979777b2d7 bgp, zebra: address review comments
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00
Chirag Shah
61d46edaa6 zebra: dup addr detect add fields to show evpn cmd
TOR# show evpn
L2 VNIs: 5
L3 VNIs: 0
Advertise gateway mac-ip: No
Duplicate address detection: Enable
  Detection max-moves 5, time 180

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00
Chirag Shah
37a040400d zebra: dup addr detect fix warnings
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00
Chirag Shah
09de9258a9 zebra: dup addr detect clear command
Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00
Chirag Shah
1374d4dbc2 zebra: dup addr detect operation commands
Display duplicate detected list of MACs and VNIs.
- Per VNI
- Across all VNIs

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00
Chirag Shah
87454e6bd1 lib, zebra: dup addr detect display detection fields
Display following Per MAC and Neigh's output:
If duplicate address detection is under process,
display detection start time and detection count.
If duplicate address detection detected an address
as duplicate, display detection time and duplicate
status.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-11-17 19:22:17 -08:00