Commit Graph

14033 Commits

Author SHA1 Message Date
Donald Sharp
64b81b3a64
Merge pull request #3442 from opensourcerouting/confirmed-commits
lib: add support for confirmed commits
2018-12-09 09:35:49 -05:00
Donald Sharp
f7b0f4ef9e
Merge pull request #3443 from opensourcerouting/show-command
lib: implement the "show" command
2018-12-08 13:44:25 -05:00
Donald Sharp
290e0a7b41
Merge pull request #3420 from LabNConsulting/working/master/topotest/ce4-in-vrf
Topotest: put ce4 into vrf (no default), plus a couple of lib changes
2018-12-08 13:43:01 -05:00
Lou Berger
43c2c66bdf topotest: bgp_l3vpn_to_bgp_vrf put ce4 into vrf (without a default)
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:43:44 -05:00
Lou Berger
90892d35e1 topotests/lib: help script writers understand wrong VRF failure
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:43:31 -05:00
Lou Berger
8cd7c744df topotest: remove sleep on staticd startup
Signed-off-by: Lou Berger <lberger@labn.net>
2018-12-08 10:42:21 -05:00
Russ White
6c9e36f8e2
Merge pull request #3444 from donaldsharp/adj_stuff
bgpd: Convert adj_out to a RB tree
2018-12-08 10:11:30 -05:00
Russ White
29f00acc8c
Merge pull request #3455 from donaldsharp/full_revert
bgpd: Back out rest of e23b9ef6d2
2018-12-08 10:07:30 -05:00
Renato Westphal
ca305e9ad8
Merge pull request #3424 from donaldsharp/show_ip_route_json
zebra: `show ip route A.B.C.D json` would only show last route entry
2018-12-07 20:00:31 -02:00
Donald Sharp
cacd02c30a
Merge pull request #3453 from opensourcerouting/revert-json-spellfix
bgpd: re-add spelling error in JSON output
2018-12-07 16:00:00 -05:00
Donald Sharp
b291ac44bc
Merge pull request #3450 from opensourcerouting/staticd-sa-warnings
staticd: fix static analysis warnings
2018-12-07 15:58:22 -05:00
Donald Sharp
be180f9736 bgpd: Back out rest of e23b9ef6d2
Fully revert the rest of the e23b9ef6d2 commit as that it was breaking
route leaking between vrf's.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-07 15:55:06 -05:00
David Lamparter
54f29523d9 bgpd: re-add spelling error in JSON output
I bulk-fixed "recieved" as a misspelling in 0437e10... but didn't notice
there was a JSON value among these.

Signed-off-by: David Lamparter <equinox@diac24.net>
2018-12-07 20:06:53 +01:00
Renato Westphal
c66861afa4 staticd: fix static analysis warnings
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-07 16:16:34 -02:00
Donald Sharp
a79c04e7fe bgpd: Convert adj_out to a RB tree
The adj_out data structure is a linked list of adjacencies
1 per update group.  In a large scale env where we are
not using peer groups, this list lookup starts to become
rather costly.  Convert to a better data structure for this.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-07 10:26:00 -05:00
Renato Westphal
18bf258a0d lib: implement the "show" command
The "show" command will be available in the configuration mode and
all configuration subnodes. It's used to display the section of
the candidate configuration being edited, instead of displaying
the entire candidate configuration like when "show configuration
candidate" is used. The goal is to add more convenience when editing
huge configurations.

When the transactional CLI mode is not used, the candidate
configuration and the running configuration are identical, hence in
this case we can say that the "show" command displays the section
of the running configuration being edited.

Example:
ripd(config)# show
Configuration:
!
frr version 6.1-dev
frr defaults traditional
!
interface eth0
 ip rip split-horizon poisoned-reverse
 ip rip authentication mode md5
 ip rip authentication string supersecret
!
interface eth1
 ip rip receive version 1
 ip rip send version 1
!
router rip
 allow-ecmp
 route 10.0.1.0/24
 route 10.0.2.0/24
!
end
ripd(config)#
ripd(config)#
ripd(config)# interface eth0
ripd(config-if)# show
!
interface eth0
 ip rip split-horizon poisoned-reverse
 ip rip authentication mode md5
 ip rip authentication string supersecret
!
ripd(config-if)# exit
ripd(config)#
ripd(config)#
ripd(config)# router rip
ripd(config-router)# show
!
router rip
 allow-ecmp
 route 10.0.1.0/24
 route 10.0.2.0/24
!
ripd(config-router)#

The "show" command only works for daemons converted to the new
northbound model. vtysh support will be implemented at a later
time as it will require some level of coordination between vtysh
and the FRR daemons.

Fixes #3148.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-07 11:29:58 -02:00
Renato Westphal
fbdc1c0a84 lib: add support for confirmed commits
Confirmed commits allow the user to request an automatic rollback to
the previous configuration if the commit operation is not confirmed
within a number of minutes. This is particularly useful when the user
is accessing the CLI through the network (e.g. using SSH) and any
configuration change might cause an unexpected loss of connectivity
between the user and the managed device (e.g. misconfiguration of a
routing protocol). By using a confirmed commit, the user can rest
assured the connectivity will be restored after the given timeout
expires, avoiding the need to access the router physically to fix
the problem.

When "commit confirmed TIMEOUT" is used, a new "commit" command is
expected to confirm the previous commit before the given timeout
expires. If "commit confirmed TIMEOUT" is used while there's already
a confirmed-commit in progress, the confirmed-commit timeout is
reset to the new value.

In the current implementation, if other users perform commits while
there's a confirmed-commit in progress, all commits are rolled back
when the confirmed-commit timeout expires. It's recommended to use
the "configure exclusive" configuration mode to prevent unexpected
outcomes when using confirmed commits.

When an user exits from the configuration mode while there's a
confirmed-commit in progress, the commit is automatically rolled
back and the user is notified about it. In the future we might
want to prompt the user if he or she really wants to exit from the
configuration mode when there's a pending confirmed commit.

Needless to say, confirmed commit only work for configuration
commands converted to the new northbound model. vtysh support will
be implemented at a later time.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2018-12-07 11:11:33 -02:00
Donald Sharp
ac92680d8d
Merge pull request #3438 from opensourcerouting/bgp-rfapi-default-value
bgpd: don't show default value in configuration
2018-12-06 19:32:07 -05:00
Donald Sharp
29dfc63cbf
Merge pull request #3437 from opensourcerouting/bugfix/topotests-use-copy
tests/topotests: Use copied tests in Docker
2018-12-06 19:31:26 -05:00
Donald Sharp
bc6f139cd1
Merge pull request #3436 from opensourcerouting/bugfix/topotest-sbin-dir
tests/topotests: Also search sbin for modprobe
2018-12-06 19:30:55 -05:00
Donald Sharp
3b2298e76b
Merge pull request #3421 from pguibert6WIND/bgp_lp_finish_called_too_early
bgpd: delay destruction of label pool
2018-12-06 19:30:18 -05:00
Russ White
0ac151ab44
Merge pull request #3425 from chiragshah6/evpn_dev1
bgpd: set attribute change flag to evpn imported route
2018-12-06 18:43:03 -05:00
Rafael Zalamena
d6efeaac3e bgpd: don't show default value in configuration
Don't show the configuration line `rfp full-table-download off` by
default as it is not the default value, instead only show
`rfp full-table-download on` (the non-default value) when it is
configured.

This standardizes this knob to the FRR default behavior.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-06 17:26:10 -02:00
Christian Franke
464e85c84d tests/topotests: Also search sbin for modprobe
We call `modprobe -n` to check if mpls modules are available to be
loaded. We do this as normal user, to only ask for root permissions
if we are actually loading the module.

This breaks if `modprobe` is in `/sbin` and normal users don't have
sbin in path.

So add `/sbin` to the search path to work around this.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-06 18:33:21 +01:00
Christian Franke
ebdaa9ce5f tests/topotests: Use copied tests in Docker
If we mount the tests into the container from the host, we also
mount any `*.pyc` files with them, which will lead to issues
as the mount is done read-only to avoid any changes to the host.

Since the tests are now integrated and we already create a writeable
copy of the FRR tree, just use the tests from the FRR tree to avoid
this issue.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-06 15:30:03 +01:00
Donald Sharp
8ba26ecda7
Merge pull request #3419 from opensourcerouting/freebsd-route-warning-fix
zebra: fix some boot up warnings on FreeBSD
2018-12-06 07:53:30 -05:00
Chirag Shah
a9f8ad9fca bgpd: set attribute change flag to evpn imported
EVPN route's attribute changes,
mark attribute change flag to imported unicast route.

A scenario where AS_PATH attribute have changed for an EVPN type-5
route, set attribute change
to imported route.

Ticket:CM-23008
Reviewed By:
Testing Done:
Validated via marking EVPN route with AS_PATH prepand.
At the receiving VTEP, ensure attribute change flag is set to
imported unicast route and bgp update sent to VTEPs subsequent
bgp peers with AS_PATH prepend update.

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-12-05 20:32:03 -08:00
Donald Sharp
9e7cd6fdca zebra: show ip route A.B.C.D json would only show last route entry
The `show ip route A.B.C.D json` command was only displaying
the last route entry looked at and we would drop the data
associated with other route entries.  This fixes the issue:

robot# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
       F - PBR, f - OpenFabric,
       > - selected route, * - FIB route

K>* 0.0.0.0/0 [0/100] via 192.168.201.1, enp3s0, 00:13:31
C>* 4.50.50.50/32 is directly connected, lo, 00:13:31
D   10.0.0.1/32 [150/0] via 192.168.201.1, enp3s0, 00:09:46
S>* 10.0.0.1/32 [1/0] via 192.168.201.1, enp3s0, 00:10:04
C>* 192.168.201.0/24 is directly connected, enp3s0, 00:13:31
robot# show ip route 10.0.0.1 json
{
  "10.0.0.1\/32":[
    {
      "prefix":"10.0.0.1\/32",
      "protocol":"sharp",
      "distance":150,
      "metric":0,
      "internalStatus":0,
      "internalFlags":1,
      "uptime":"00:09:50",
      "nexthops":[
        {
          "flags":1,
          "ip":"192.168.201.1",
          "afi":"ipv4",
          "interfaceIndex":2,
          "interfaceName":"enp3s0",
          "active":true
        }
      ]
    },
    {
      "prefix":"10.0.0.1\/32",
      "protocol":"static",
      "selected":true,
      "distance":1,
      "metric":0,
      "internalStatus":0,
      "internalFlags":2064,
      "uptime":"00:10:08",
      "nexthops":[
        {
          "flags":3,
          "fib":true,
          "ip":"192.168.201.1",
          "afi":"ipv4",
          "interfaceIndex":2,
          "interfaceName":"enp3s0",
          "active":true
        }
      ]
    }
  ]
}
robot#

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2018-12-05 15:12:50 -05:00
Rafael Zalamena
c69f2c1fff zebra: don't log errors on unsupported medias
When using `SIOCGIFMEDIA` check for `EINVAL`, otherwise we might print
an error message on an unsupported interface.

FreeBSD source code reference:
https://github.com/freebsd/freebsd/blob/master/sys/net/if_media.c#L300

And:
8cb4b0c018/usr.sbin/rtsold/if.c (L211)

  /*
   * EINVAL simply means that the interface does not support
   * the SIOCGIFMEDIA ioctl. We regard it alive.
   */

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-05 17:22:56 -02:00
Philippe Guibert
0768f289e0 bgpd: delay destruction of label pool
label pool finalisation must be delayed after route deletion on bgp.
otherwise a crash will happen, while labels will be released.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-05 18:24:12 +01:00
Lou Berger
60e2b4f566
Merge pull request #3418 from pguibert6WIND/bgp_rfapi_path_info_extra_free
bgpd: reuse bgp_path_info_extra_free() routing in rfapi
2018-12-05 10:24:33 -05:00
Rafael Zalamena
86c57af534 zebra: refactor route socket message handling
Some address types were not being skipped triggering a warning log
message, so lets refactor this code to properly handle known and unknown
types.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-05 12:49:23 -02:00
Philippe Guibert
a2e219fe2e bgpd: reuse bgp_path_info_extra_free() routing in rfapi
rfapi code should use bgp_path_info_extra_free() routine.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2018-12-05 15:09:35 +01:00
Rafael Zalamena
cb800e3529 zebra: always define ROUNDUP and ROUND_TYPE
Move the declaration of ROUNDUP and ROUND_TYPE to outside of
`ifdef SA_SIZE`. We'll use these definitions in the next commit.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2018-12-05 11:56:10 -02:00
Sri Mohana Singamsetty
ad31e8d398
Merge pull request #3372 from nitinsoniism/show_evpn_mac_vni_all_detail
zebra: Add "show evpn mac vni all detail" command
2018-12-04 10:19:18 -08:00
Olivier Dugeon
5898044382
Merge pull request #3174 from opensourcerouting/feature/isis-triggered-hello
Feature: IS-IS triggered hello
2018-12-04 18:33:36 +01:00
Quentin Young
39801f8e4f
Merge pull request #3410 from opensourcerouting/bugfix/topotest-docker-build-context
Revert "tests/topotests: Change docker build context"
2018-12-04 11:36:11 -05:00
David Lamparter
21e2819dbf
Merge pull request #3340 from nitinsoniism/show_evpn_vni_detail
zebra: Add "show evpn vni detail" command
2018-12-04 17:29:50 +01:00
Christian Franke
7fe06d5559 topotests: Update json_cmp_result to return readable result
Before this update, json_cmp_results which were formatted as strings
would not show the error mesage but just an object reference.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:58 +01:00
Christian Franke
32bc1eafb6 topotests/isis-topo1: Set useful IS-IS debugs
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:50 +01:00
Christian Franke
5346acec2d isisd: trigger hellos on adjacency state change
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:24 +01:00
Christian Franke
a0a707ee6c isisd: add send_hello_sched function
Add a function send_hello_sched so that the logic for scheduling a
hello is not replicated inconsistently into different locations.

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 16:13:24 +01:00
David Lamparter
b59d17baf3
Merge pull request #3413 from chiragshah6/evpn_dev1
zebra: dup addr detect clear cmd non-zero return
2018-12-04 15:43:15 +01:00
David Lamparter
1061bb9a4f
Merge pull request #3357 from ton31337/fix/optional_args_for_extcommunity-lists
bgpd: Remove extcommunity-list by name without typing full rule
2018-12-04 15:34:59 +01:00
Christian Franke
78ca034252 lib: add thread_timer_remain_msec function
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 12:49:25 +01:00
Christian Franke
0a5e562a65 isisd: Move dr election timer to the end of isis_dr_commence
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 12:49:25 +01:00
Christian Franke
7c4f7aabc5 isisd: reduce code duplication for levels
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 12:49:25 +01:00
Christian Franke
7da4aa3c7a isisd: Add level&circuit thread argument to circuit
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
2018-12-04 12:49:25 +01:00
Chirag Shah
1883de666f zebra: dup addr detect clear cmd non-zero return
Clear dup address vni needs to return non-zero value
in case of command is not successful.

Ticket:CM-23122
Testing Done:
run clear command and check upon failure return code is non-zero.

root@TORS1:~# vtysh -c "clear evpn dup-addr vni 1000 ip 45.0.1.26"
% Requested IP's associated MAC 00:01:02:03:04:05 is still in duplicate
% state
root@TORS1:~# echo $?
1

Signed-off-by: Chirag Shah <chirag@cumulusnetworks.com>
2018-12-03 16:56:00 -08:00
Renato Westphal
a1f0a9ac23
Merge pull request #3370 from pguibert6WIND/default_vrf_initialization
Default vrf initialization
2018-12-03 21:30:00 -02:00