]> git.puffer.fish Git - matthieu/frr.git/log
matthieu/frr.git
4 years agoMerge pull request #6396 from opensourcerouting/6.0/init-config-perms stable/6.0
Quentin Young [Tue, 19 May 2020 17:53:20 +0000 (13:53 -0400)]
Merge pull request #6396 from opensourcerouting/6.0/init-config-perms

[6.0] build: use configfile mode in init script

4 years agobuild: use configfile mode in init script
David Lamparter [Mon, 11 May 2020 19:37:08 +0000 (21:37 +0200)]
build: use configfile mode in init script

This only applies for split-config;  the init script would create an
empty config file with default permissions.

Reported-by: Robert Scheck <robert@fedoraproject.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 5c9063771195bb51a8cc1c64f9924e53a0602817)
(cherry picked from commit 7eef8f7b13e3c9ddeb957fdc39fa58f274cbe49d)

5 years agoMerge pull request #5287 from ton31337/fix/re-evaluate_nexthop_if_flags_changed_6.0
Donald Sharp [Wed, 6 Nov 2019 01:12:47 +0000 (20:12 -0500)]
Merge pull request #5287 from ton31337/fix/re-evaluate_nexthop_if_flags_changed_6.0

zebra: [6.0] Re-evaluate the nexthop tracking if flags changed

5 years agozebra: Re-evaluate the nexthop tracking if flags changed
Donald Sharp [Thu, 21 Feb 2019 21:10:56 +0000 (16:10 -0500)]
zebra: Re-evaluate the nexthop tracking if flags changed

Routing protocols are allowed ( and even encouraged ) to modify
the flags that influence the nexthop tracking.  As such when
we modify the tracking of a nexthop to go from, say, connected force
or not we must re-evaluate the nexthop and send the results
up to the interested parties.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #4901 from ton31337/fix/no_aspath_prepend_last_6.0
Donald Sharp [Thu, 29 Aug 2019 15:56:30 +0000 (11:56 -0400)]
Merge pull request #4901 from ton31337/fix/no_aspath_prepend_last_6.0

bgpd: [6.0] Add 'no set as-path prepend last-as X' command

5 years agobgpd: Update doc for some as-path route-map commands
Donald Sharp [Mon, 26 Aug 2019 13:56:53 +0000 (09:56 -0400)]
bgpd: Update doc for some as-path route-map commands

Update the documentation for some as-path route-map commands.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agobgpd: Add 'no set as-path prepend last-as X' command
Donald Sharp [Mon, 26 Aug 2019 13:49:18 +0000 (09:49 -0400)]
bgpd: Add 'no set as-path prepend last-as X' command

The `set as-path prepend last-as X` command had no, 'no' form
of the command.  Add this into the cli.

Testing:
!
route-map BLARBLE permit 10
 set as-path prepend last-as 3
!
!
router bgp 9999
 neighbor 10.50.12.118 remote-as external
 neighbor 10.50.12.118 ebgp-multihop 30
 !
 address-family ipv4 unicast
  neighbor 10.50.12.118 route-map BLARBLE in
 !
!

eva# show bgp ipv4 uni 4.4.4.4
BGP routing table entry for 4.4.4.4/32
Paths: (1 available, best #1, table default)
  Advertised to non peer-group peers:
  10.50.12.118
  999 999 999 999
    10.50.12.118 from 10.50.12.118 (10.50.12.118)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Last update: Mon Aug 26 09:47:17 2019

eva# conf
eva(config)# route-map BLARBLE permit 10
eva(config-route-map)# no set as-path prepend last-as 3
eva(config-route-map)# end
eva# clear bgp ipv4 uni *
eva# show bgp ipv4 uni 4.4.4.4
BGP routing table entry for 4.4.4.4/32
Paths: (1 available, best #1, table default)
  Advertised to non peer-group peers:
  10.50.12.118
  999
    10.50.12.118 from 10.50.12.118 (10.50.12.118)
      Origin incomplete, metric 0, valid, external, best (First path received)
      Last update: Mon Aug 26 09:48:31 2019

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #4855 from rtrlib/2019-08-16-bugfix-6-0
Donald Sharp [Tue, 20 Aug 2019 13:54:02 +0000 (09:54 -0400)]
Merge pull request #4855 from rtrlib/2019-08-16-bugfix-6-0

bgpd: rpki fixes (stable/6.0)

5 years agobgpd: fix bgp_table range lookup
Marcel Röthke [Fri, 16 Aug 2019 14:20:05 +0000 (16:20 +0200)]
bgpd: fix bgp_table range lookup

In case the topmost node has a larger prefix length than the lookup
prefix it never matches even if it was still lower than maxlen

This also alters a test case to check for this bug.

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
5 years agobgpd: remove initial sync timeout in rpki startup code
Marcel Röthke [Fri, 16 Aug 2019 10:52:47 +0000 (12:52 +0200)]
bgpd: remove initial sync timeout in rpki startup code

The initial sync timeout breaks config load and is not necessary anyway.

Fix #4827

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
5 years agoMerge pull request #4771 from ton31337/fix/always_resend_nexthop_information_when_reg...
Sri Mohana Singamsetty [Tue, 6 Aug 2019 18:34:36 +0000 (11:34 -0700)]
Merge pull request #4771 from ton31337/fix/always_resend_nexthop_information_when_registered_6.0

zebra: [6.0] Always resend nexthop information when registered

5 years agoMerge pull request #4767 from ton31337/fix/set_comm-list_args_delete_6.0
David Lamparter [Tue, 6 Aug 2019 08:44:14 +0000 (10:44 +0200)]
Merge pull request #4767 from ton31337/fix/set_comm-list_args_delete_6.0

bgpd: [6.0] set comm-list <arg> delete stuff

5 years agozebra: Always resend nexthop information when registered
Donald Sharp [Wed, 28 Nov 2018 16:43:26 +0000 (11:43 -0500)]
zebra: Always resend nexthop information when registered

Always resend the nexthop information when we get a registration
event.  Multiple daemons expect this information.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com.
5 years agobgpd: Convert to network byte order before passing value to `community_del_val`
Donatas Abraitis [Fri, 19 Jul 2019 13:15:52 +0000 (16:15 +0300)]
bgpd: Convert to network byte order before passing value to `community_del_val`

community_val_get() returns ntohl(val) which is used in more places like
community_include(), community_add_val(), but community_del_val() is missing
back conversion htonl().

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4747 from ton31337/fix/next-hop-self_force_alias_for_ipv6_6.0
Donald Sharp [Tue, 30 Jul 2019 14:01:00 +0000 (10:01 -0400)]
Merge pull request #4747 from ton31337/fix/next-hop-self_force_alias_for_ipv6_6.0

bgpd: [6.0] Add hidden `next-hop-self all` for all address families

5 years agobgpd: Add hidden `next-hop-self all` for all address families
Donatas Abraitis [Wed, 24 Jul 2019 16:05:51 +0000 (19:05 +0300)]
bgpd: Add hidden `next-hop-self all` for all address families

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4667 from ton31337/fix/show_delete_suboption_for_set_comm-list_6.0
Renato Westphal [Fri, 12 Jul 2019 21:57:16 +0000 (18:57 -0300)]
Merge pull request #4667 from ton31337/fix/show_delete_suboption_for_set_comm-list_6.0

bgpd: [6.0] Show `delete` sub-option for `set [l]comm-list <list> delete`

5 years agoMerge pull request #4681 from ton31337/fix/aggregate-address_do_not_remove_prefix_if_...
Quentin Young [Fri, 12 Jul 2019 17:46:55 +0000 (13:46 -0400)]
Merge pull request #4681 from ton31337/fix/aggregate-address_do_not_remove_prefix_if_already_exists_6.0

bgpd: [6.0] solve issue entering aggregate twice

5 years agobgpd: solve issue entering aggregate twice
Don Slice [Fri, 28 Sep 2018 15:55:39 +0000 (15:55 +0000)]
bgpd: solve issue entering aggregate twice

Problem reported that frr-relaod.py was not installing an aggregate
properly.  Problem was actually that frr-reload.py does the command
twice, and the second time the aggregate command was entered, it would
appear in the config but the aggregate was removed from the bgp table
and not advertised to peers.  Solved by noticing when an aggregate
was marked for deletion (info_invalid) and allowing the re-entry if
the old one was being removed.

Ticket: CM-22509
Signed-off-by: Don Slice <dslice@cumulusnetworks.com>
5 years agobgpd: Show `delete` sub-option for `set [l]comm-list <list> delete`
Donatas Abraitis [Wed, 26 Jun 2019 12:06:10 +0000 (15:06 +0300)]
bgpd: Show `delete` sub-option for `set [l]comm-list <list> delete`

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4648 from ton31337/feature/validate_lcommunity_6.0
Donald Sharp [Tue, 9 Jul 2019 01:48:27 +0000 (21:48 -0400)]
Merge pull request #4648 from ton31337/feature/validate_lcommunity_6.0

bgpd: [6.0] Validate large-community-list against UINT_MAX

5 years agobgpd: Validate large-community-list against UINT_MAX
Donatas Abraitis [Tue, 2 Jul 2019 12:35:26 +0000 (15:35 +0300)]
bgpd: Validate large-community-list against UINT_MAX

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4556 from ton31337/fix/force_ehne_if_peer_group_and_interface
Sri Mohana Singamsetty [Wed, 3 Jul 2019 17:06:46 +0000 (10:06 -0700)]
Merge pull request #4556 from ton31337/fix/force_ehne_if_peer_group_and_interface

bgpd: [6.0] interface based peers should automatically override it's peer g…

5 years agoMerge pull request #4614 from donaldsharp/6_0_igmp_connected_source
Jafar Al-Gharaibeh [Fri, 28 Jun 2019 15:54:25 +0000 (18:54 +0300)]
Merge pull request #4614 from donaldsharp/6_0_igmp_connected_source

[6.0]pimd: Dissallow query to be received from a non-connected source

5 years agopimd: Dissallow query to be received from a non-connected source
Donald Sharp [Tue, 25 Jun 2019 04:30:11 +0000 (00:30 -0400)]
pimd: Dissallow query to be received from a non-connected source

When we receive an igmp query on a interface, ensure that the
source address of the packet is connected to the incoming
interface.  This will prevent a meanie from crafting a igmp
packet with a source address less than ours and causing
us to suspend query activities.

Fixes: #1692
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #4591 from ton31337/fix/documentation_as_path_validation_6.0
Donald Sharp [Sat, 22 Jun 2019 11:26:27 +0000 (07:26 -0400)]
Merge pull request #4591 from ton31337/fix/documentation_as_path_validation_6.0

doc: [6.0] Specify allowed chars in bgp regular expressions

5 years agodoc: Specify allowed chars in bgp regular expressions
Donatas Abraitis [Tue, 23 Apr 2019 08:38:59 +0000 (11:38 +0300)]
doc: Specify allowed chars in bgp regular expressions

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4574 from ton31337/fix/validate_as_path_in_acl
Donald Sharp [Fri, 21 Jun 2019 23:34:43 +0000 (19:34 -0400)]
Merge pull request #4574 from ton31337/fix/validate_as_path_in_acl

bgpd: [6.0] Validate as-path access-list before continuing regarding invali…

5 years agobgpd: Allow backslash in as-path filter lists
Donatas Abraitis [Thu, 18 Apr 2019 06:59:51 +0000 (09:59 +0300)]
bgpd: Allow backslash in as-path filter lists

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agobgpd: Validate as-path access-list before continuing regarding invalid chars
Donatas Abraitis [Wed, 29 Aug 2018 16:12:30 +0000 (19:12 +0300)]
bgpd: Validate as-path access-list before continuing regarding invalid chars

Signed-off-by: Donatas Abraitis donatas.abraitis@gmail.com
5 years agobgpd: interface based peers should automatically override it's peer group
Donald Sharp [Wed, 28 Nov 2018 23:46:36 +0000 (18:46 -0500)]
bgpd: interface based peers should automatically override it's peer group

When a interface based peer is setup and if it is part of a peer
group we should ignore this and just use the PEER_FLAG_CAPABILITY_ENHE
no matter what.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4548 from ton31337/feature/autocomplete_peer_groups_6.0
Russ White [Tue, 18 Jun 2019 14:53:20 +0000 (10:53 -0400)]
Merge pull request #4548 from ton31337/feature/autocomplete_peer_groups_6.0

bgpd: [6.0] List all groups dynamically for commands with peer-group

5 years agobgpd: List all groups dynamically for commands with peer-group
Donatas Abraitis [Tue, 11 Jun 2019 20:29:32 +0000 (23:29 +0300)]
bgpd: List all groups dynamically for commands with peer-group

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4541 from opensourcerouting/6.0/watchfrr-sd-timeout
Donald Sharp [Tue, 18 Jun 2019 00:47:42 +0000 (20:47 -0400)]
Merge pull request #4541 from opensourcerouting/6.0/watchfrr-sd-timeout

[6.0] tools: retain sanity when reloading under systemd

5 years agotools: retain sanity when reloading under systemd
David Lamparter [Sun, 9 Jun 2019 23:35:04 +0000 (01:35 +0200)]
tools: retain sanity when reloading under systemd

Without this, we end up restarting watchfrr with the systemd watchdog
non-functional & tripped a bit later.  Also, if watchfrr is in the
"control" cgroup, systemd 232 will kill it.  (241 apparently doesn't.
Can't find anything about this in systemd's ChangeLog though.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 9c251d376ad8e604c25767b32c2816e9ae75a738)

5 years ago6.0 isisd: The RFC states that v6 addresses are limited to 16 in a hello … (#4477)
David Lamparter [Thu, 6 Jun 2019 17:44:38 +0000 (19:44 +0200)]
6.0 isisd: The RFC states that v6 addresses are limited to 16 in a hello … (#4477)

6.0 isisd: The RFC states that v6 addresses are limited to 16 in a hello …

5 years agoisisd: The RFC states that v6 addresses are limited to 16 in a hello packet
Donald Sharp [Wed, 5 Jun 2019 01:15:43 +0000 (21:15 -0400)]
isisd: The RFC states that v6 addresses are limited to 16 in a hello packet

The RFC states we can send only up to 16 v6 addresses in a hello packet
and cannot send sub tlv's of that type.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
5 years agoMerge pull request #4440 from opensourcerouting/multicast-fix-6.0
Donald Sharp [Sun, 2 Jun 2019 22:53:40 +0000 (18:53 -0400)]
Merge pull request #4440 from opensourcerouting/multicast-fix-6.0

6.0: ospf6d: fix multicast join race on FreeBSD

5 years agoospf6d: fix FreeBSD IPv6 multicast group join race
Rafael Zalamena [Sat, 26 Jan 2019 15:49:35 +0000 (13:49 -0200)]
ospf6d: fix FreeBSD IPv6 multicast group join race

Avoid a IPv6 multicast group join race by delaying the group install
before processing all event queue.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
(cherry picked from commit bc482dc0caeed76505623426edf58c6de48f013e)

5 years agoospf6d: keep track of the socket set thread
Rafael Zalamena [Wed, 23 Jan 2019 12:25:30 +0000 (10:25 -0200)]
ospf6d: keep track of the socket set thread

When using the timer to set the socket multicast options, keep track
of the thread pointer. If we lose the thread reference we might have
situations where multicast is enabled when it should be disabled and
vice versa.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
(cherry picked from commit f80003b0e12a090b34e2ab9547ed072ff02c33ba)

5 years agoospf6d: don't queue interface events
Rafael Zalamena [Wed, 23 Jan 2019 12:06:49 +0000 (10:06 -0200)]
ospf6d: don't queue interface events

Apply interface event as soon as possible instead of queueing an event
for it.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
(cherry picked from commit 849576ee962518c926c6a264a497e873210941e8)

5 years agoMerge pull request #4421 from ton31337/feature/delete_prefix_list_by_sequence_number
Donald Sharp [Thu, 30 May 2019 15:21:17 +0000 (11:21 -0400)]
Merge pull request #4421 from ton31337/feature/delete_prefix_list_by_sequence_number

plist: [6.0] Delete prefix-list by sequence number

5 years agoplist: Delete prefix-list by sequence number
Donatas Abraitis [Fri, 24 May 2019 06:22:09 +0000 (09:22 +0300)]
plist: Delete prefix-list by sequence number

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
5 years agoMerge pull request #4338 from mjstapp/fix_vrf_lsps_6_0
Donald Sharp [Tue, 14 May 2019 23:30:41 +0000 (19:30 -0400)]
Merge pull request #4338 from mjstapp/fix_vrf_lsps_6_0

zebra: [6.0] remove vrf LSPs when vrf is deleted

5 years agozebra: [6.0] remove vrf LSPs when vrf is deleted
Mark Stapp [Tue, 14 May 2019 17:59:53 +0000 (13:59 -0400)]
zebra: [6.0] remove vrf LSPs when vrf is deleted

Try to remove any LSPs associated with a vrf when the vrf is
deleted. The vrf code was calling a helpful zebra_mpls api,
but that api was basically a no-op for vrfs other than
the default.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
5 years ago*: 6.0.3 release frr-6.0.3
Quentin Young [Tue, 7 May 2019 20:14:44 +0000 (20:14 +0000)]
*: 6.0.3 release

* bgpd: Fix 'show bgp ipv4/ipv6 neighbors' to show only v4 or v6 neighbors
* bgpd: Fix display issue when showing labeled-unicast routes
* bgpd: Fix incorrect # peers in 'show bgp ipv6 summary' output
* bgpd: Fix issue with remote-private-as in combination with local-as
* bgpd: Fix memory error when prepending to AS-path
* bgpd: Improve error handling when using maximum-prefix
* ldpd: Fix startup permissions error on OpenBSD
* ldpd: add support for FreeBSD IP_BINDANY
* ospfd: Fix incorrect display of millisecond time values
* tools: Fix incorrect systemd dependencies causing failure to start on boot
* vtysh: Fix unnecessary reconnection under multi-instance OSPF
* watchfrr: Fix multi-instance support when using new init script
* zebra: Fix a display bug in 'show ip route ... json'
* zebra: Fix compilation issue on OpenBSD
* zebra: Fix issue with missed selection of system-sourced routes
* zebra: Fix race condition in label manager
* zebra: Reliability improvements to pseudowire route recovery
* zebra: Tweak metric values for macvlan devices

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
5 years agoMerge pull request #4254 from opensourcerouting/fixes-for-6.0
Donald Sharp [Fri, 3 May 2019 23:34:30 +0000 (19:34 -0400)]
Merge pull request #4254 from opensourcerouting/fixes-for-6.0

 [6.0] ldpd: *BSD fixes

5 years agoldpd: add support for FreeBSD IP_BINDANY
Rafael Zalamena [Fri, 21 Dec 2018 14:27:44 +0000 (12:27 -0200)]
ldpd: add support for FreeBSD IP_BINDANY

Add yet another way to setsockopt a socket to listen to a foreign
address.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agozebra: fix compilation on OpenBSD
Rafael Zalamena [Fri, 21 Dec 2018 19:03:05 +0000 (17:03 -0200)]
zebra: fix compilation on OpenBSD

OpenBSD doesn't define RTM_LOCK anymore:
https://marc.info/?l=openbsd-tech&m=153018811429193&w=2

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
5 years agoldpd: fix startup on OpenBSD
Rafael Zalamena [Fri, 21 Dec 2018 22:59:18 +0000 (20:59 -0200)]
ldpd: fix startup on OpenBSD

We must open the PF_KEY socket before dropping privileges, otherwise the
socket creation will fail with permission problems.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
6 years agoMerge pull request #4224 from ton31337/stable/6.0
Donald Sharp [Tue, 30 Apr 2019 00:09:07 +0000 (20:09 -0400)]
Merge pull request #4224 from ton31337/stable/6.0

bgpd: [6.0] Do not send UPDATE message with maximum-prefix

6 years agobgpd: Do not send UPDATE message with maximum-prefix
Donatas Abraitis [Mon, 15 Apr 2019 20:53:20 +0000 (23:53 +0300)]
bgpd: Do not send UPDATE message with maximum-prefix

When using maximum-prefix and count is overflow BGP
sends UPDATE message:

Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: 192.168.0.2 [Error] Error parsing NLRI
Apr 15 20:45:06 exit1-debian-9 bgpd[9818]: %NOTIFICATION: sent to neighbor 192.168.0.2 3/10 (UPDATE Message Error/Invalid Network Field) 0 bytes

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
6 years agoMerge pull request #4211 from ton31337/feature/all_alias_for_force_next_self_host_6.0
Quentin Young [Mon, 29 Apr 2019 16:56:03 +0000 (12:56 -0400)]
Merge pull request #4211 from ton31337/feature/all_alias_for_force_next_self_host_6.0

bgpd: [6.0] Make sure `next-hop-self all` backward compatible with force

6 years agobgpd: Make sure `next-hop-self all` backward compatible with force
Donatas Abraitis [Thu, 25 Apr 2019 13:39:49 +0000 (16:39 +0300)]
bgpd: Make sure `next-hop-self all` backward compatible with force

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
6 years agoMerge pull request #3811 from AkhileshSamineni/show_bgp_ipv6_summary_fix
Quentin Young [Sun, 21 Apr 2019 22:11:36 +0000 (18:11 -0400)]
Merge pull request #3811 from AkhileshSamineni/show_bgp_ipv6_summary_fix

[6.0] bgpd: Incorrect number of peers count in "show bgp ipv6 summary" output

6 years agoMerge pull request #4121 from pacovn/201904_6.0__pw_fixes
Donald Sharp [Thu, 11 Apr 2019 12:20:28 +0000 (08:20 -0400)]
Merge pull request #4121 from pacovn/201904_6.0__pw_fixes

zebra: pseudowire event recovery (DoS fix) [6.0]

6 years agozebra: pseudowire event recovery (DoS fix)
F. Aragon [Wed, 10 Apr 2019 17:08:50 +0000 (19:08 +0200)]
zebra: pseudowire event recovery (DoS fix)

When having a route recovery, because of the route installation
cycling and the next hop label check, it could happen that the PW
never gets recovered. The original code shows the intention of retrying,
but the code was missing. The fix includes the call to the timer programming
the recovery attempt.

Example for reproducing the issue:

      |P1|  <->  |P2|  <->  |P3|

- Being P1, P2, P3 nodes, using IS-IS as IGP, and having a pseudowire
betwen P1 and P3 (P1, P2, P3 having configured LDP daemons).
- After 60 seconds, kill the IS-IS daemon in P2.
- Wait 30 seconds
- Launch again the IS-IS daemon in P2
- The bug/issue is that after P1 <-> P3 recovering connectivity sometimes
  the PW is not recovered because the reason explained in the first paragraph.

Signed-off-by: F. Aragon <paco@voltanet.io>
6 years agoMerge pull request #4108 from pacovn/201904_6.0__lm_aliasing_fixes
Donald Sharp [Tue, 9 Apr 2019 17:52:34 +0000 (13:52 -0400)]
Merge pull request #4108 from pacovn/201904_6.0__lm_aliasing_fixes

zebra: label manager race condition fix (6.0 branch)

6 years agozebra: label manager race condition fix
F. Aragon [Fri, 5 Apr 2019 13:26:14 +0000 (15:26 +0200)]
zebra: label manager race condition fix

This fix covers the case where two or more events are processed but only one
becoming effective. E.g. when mixing a synchronous label request from a LDP
deamon and an asynchronous request from a BGP daemon it could happen to the
BGP having the label chunk, but the LDP stuck waiting for the response.

Given e.g.

  ldpd     <-------->
  (sync label request)
                       Zebra (label proxy)  <-->  Zebra (shared label manager)
  bgpd     <-------->
  (async label request)

Sequence:

   LDP label request ----->
                               Zebra (label proxy FW) ----> Zebra (LM)
   BGP label request ----->
                               Zebra (label proxy FW) ----> Zebra (LM)
                                                      <---- Zebra (LM) RP LDP
                                                      <---- Zebra (LM) RP BGP

Signed-off-by: F. Aragon <paco@voltanet.io>
6 years agoMerge pull request #4090 from ton31337/stable/6.0
Donald Sharp [Fri, 5 Apr 2019 12:14:27 +0000 (08:14 -0400)]
Merge pull request #4090 from ton31337/stable/6.0

bgpd: [6.0] Remove private AS numbers if local-as is defined

6 years agobgpd: Remove private AS numbers if local-as is defined
Donatas Abraitis [Sat, 2 Mar 2019 20:36:31 +0000 (22:36 +0200)]
bgpd: Remove private AS numbers if local-as is defined

When using remove-private-AS together with local-as
aspath_remove_private_asns() is called before bgp_packet_attribute().

In this case, private AS will always appear in front of change_local_as.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
6 years agoMerge pull request #4050 from donaldsharp/interface_deletion_6.0
Renato Westphal [Sat, 30 Mar 2019 03:19:46 +0000 (00:19 -0300)]
Merge pull request #4050 from donaldsharp/interface_deletion_6.0

bfdd, nhrpd, pimd: When deleting an interface clean up

6 years agobfdd, nhrpd, pimd: When deleting an interface clean up
Donald Sharp [Fri, 29 Mar 2019 02:08:37 +0000 (22:08 -0400)]
bfdd, nhrpd, pimd: When deleting an interface clean up

When we delete an interface, we need to set the interface
ifindex to an internal value so that we don't end up in
a state where the re-addition of the same ifindex, due to
a rename operation, causes an infinite loop.

Fixes:#4007
Fix-Suggested-by: Saravanan K
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
6 years agoMerge pull request #4036 from manuhalo/fix-lu-bgp-6.0
Donald Sharp [Fri, 29 Mar 2019 00:17:56 +0000 (20:17 -0400)]
Merge pull request #4036 from manuhalo/fix-lu-bgp-6.0

[6.0] bgpd: fix show bgp labeled_unicast

6 years agobgpd: fix show bgp labeled_unicast
Emanuele Di Pascale [Thu, 28 Mar 2019 16:02:33 +0000 (17:02 +0100)]
bgpd: fix show bgp labeled_unicast

while labeled_unicast routes should be fetched in the
unicast table, we cannot set the safi to SAFI_UNICAST
else the peer afc checks and subgroup retrieval will fail

Signed-off-by: Emanuele Di Pascale <emanuele@voltanet.io>
6 years agoMerge pull request #3991 from opensourcerouting/6.0/redhat-new-init
Donald Sharp [Tue, 26 Mar 2019 15:43:37 +0000 (11:43 -0400)]
Merge pull request #3991 from opensourcerouting/6.0/redhat-new-init

[6.0] redhat: switch to new init script

6 years agotools/frrcommon.sh: ignore 'declare' failures
David Lamparter [Sun, 24 Mar 2019 14:52:02 +0000 (15:52 +0100)]
tools/frrcommon.sh: ignore 'declare' failures

The "declare -p watchfrr_options" call is just to support backwards
compatibility.  If it fails, silently ignore that.

Signed-off-by: David Lamparter <equinox@diac24.net>
6 years agoMerge pull request #3884 from ton31337/stable/6.0
Donald Sharp [Fri, 22 Mar 2019 06:26:28 +0000 (02:26 -0400)]
Merge pull request #3884 from ton31337/stable/6.0

bgpd: [6.0] Add peer action for PEER_FLAG_IFPEER_V6ONLY flag

6 years agoredhat: switch to new init script
David Lamparter [Mon, 18 Feb 2019 23:44:01 +0000 (00:44 +0100)]
redhat: switch to new init script

Drop the special versions of frr.init/frr.service/daemons from redhat/
and use the generic versions instead.

Tested-by: Liam McBirnie <liam.mcbirnie@boeing.com>
Signed-off-by: David Lamparter <equinox@diac24.net>
6 years agoMerge pull request #3959 from donaldsharp/connected_6.0
Jafar Al-Gharaibeh [Tue, 19 Mar 2019 05:11:37 +0000 (00:11 -0500)]
Merge pull request #3959 from donaldsharp/connected_6.0

Connected 6.0

6 years agoMerge pull request #3957 from mjstapp/fix_ospf_json_60
Donald Sharp [Fri, 15 Mar 2019 16:15:38 +0000 (12:15 -0400)]
Merge pull request #3957 from mjstapp/fix_ospf_json_60

ospfd: [6.0] fix some json timer output

6 years agozebra: System routes sometimes can not be properly selected
Donald Sharp [Mon, 11 Mar 2019 13:39:19 +0000 (09:39 -0400)]
zebra: System routes sometimes can not be properly selected

System Routes if received over the netlink bus in a
specific pattern that causes an update operation for that
route in zebra can leave the dest->selected_fib pointer NULL,
while having the ZEBRA_FLAG_SELECTED flag set. Specifically
one way to achieve this is to do this:

`ip addr del 4.5.6.7/32 dev swp1 ; ip addr add 4.5.6.7/32 dev swp1 metric 9`

Why is this a big deal?
Because nexthop tracking is looking at ZEBRA_FLAG_SELECTED to
know if we can use a route, while nexthop active checking uses
dest->selected_fib.

So imagine we have bgp registering a nexthop. nexthop tracking in
the above case will be able to choose the 4.5.6.7/32 route
if that is what the nexthop is, due to the ZEBRA_FLAG_SELECTED being
properly set. BGP then allows the peers connection to come up and we
install routes with a 4.5.6.7 nexthop. The rib processing for route
installation will then look at the 4.5.6.7 route see no
dest->selected_fib and then start walking up the tree to resolve
the route. In our case we could easily hit the default route and be
unable to resolve the route. Which then becomes inactive in the
rib so we never attempt to install it.

This commit fixes this problem because when the rib_process decides
that we need to update the fib( ie replace old w/ new ), the
replacement with new was not setting the `dest->selected_fib` pointer
to the new route_entry, when the route was a system route.

Ticket: CM-24203
Signed-off-by: Donald Sharp <sharpd@cumulusnetworkscom>
6 years agoospfd: fix some json timer output
Mark Stapp [Fri, 15 Mar 2019 13:46:40 +0000 (09:46 -0400)]
ospfd: fix some json timer output

Fix a few json output values: a few are in seconds, not msecs,
and one is a number-per-second, not a duration. [6.0 version]

Signed-off-by: Mark Stapp <mjs@voltanet.io>
6 years agozebra: `show ip route A.B.C.D json` would only show last route entry
Donald Sharp [Wed, 5 Dec 2018 20:12:50 +0000 (15:12 -0500)]
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>
6 years agozebra: Allow json output to give a bit more data
Donald Sharp [Sun, 10 Mar 2019 01:28:49 +0000 (20:28 -0500)]
zebra: Allow json output to give a bit more data

The dest->selected_fib should be reported in json output
so that we can debug subtle conditions a bit better in the
future.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
6 years agozebra: display metric for connected routes
Anuradha Karuppiah [Mon, 14 Jan 2019 23:56:30 +0000 (15:56 -0800)]
zebra: display metric for connected routes

In a VRR/VRRP setup we can have connected routes with different costs.
So this change eliminates suppressing metric display for connected routes.

Sample output -
root@TORC11:~# vtysh -c "show ipv6 route vrf vrf1"
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       > - selected route, * - FIB route

VRF vrf1:
K * ::/0 [255/8192] unreachable (ICMP unreachable), 00:00:36
C * 2001:aa:1::/64 [0/100] is directly connected, vlan1002-v0, 00:00:36
C>* 2001:aa:1::/64 [0/90] is directly connected, vlan1002, 00:00:36

Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
6 years agozebra: set connected route metric based on the devaddr metric
Anuradha Karuppiah [Mon, 14 Jan 2019 23:45:33 +0000 (15:45 -0800)]
zebra: set connected route metric based on the devaddr metric

MACVLAN devices are typically used for applications such as VRR/VRRP that
require a second MAC address (virtual). These devices have a corresponding
SVI/VLAN device -
root@TORC11:~# ip addr show vlan1002
39: vlan1002@bridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9152 qdisc noqueue master vrf1 state UP group default
    link/ether 00:02:00:00:00:2e brd ff:ff:ff:ff:ff:ff
    inet6 2001:aa:1::2/64 scope global
       valid_lft forever preferred_lft forever
root@TORC11:~# ip addr show vlan1002-v0
40: vlan1002-v0@vlan1002: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9152 qdisc noqueue master vrf1 state UP group default
    link/ether 00:00:5e:00:01:01 brd ff:ff:ff:ff:ff:ff
    inet6 2001:aa:1::a/64 metric 1024 scope global
       valid_lft forever preferred_lft forever
root@TORC11:~#

The macvlan device is used primarily for RX (VR-IP/VR-MAC). And TX is via
the SVI. To acheive that functionality the macvlan network's metric
is set to a higher value.

Zebra currently ignores the devaddr metric sent by the kernel and hardcodes
it to 0. This commit eliminates that hardcoding. If the devaddr metric
is available (METRIC_MAX) it is used for setting up the connected route
otherwise we fallback to the dev/interface metric.

Setting the macvlan metric to a higher value ensures that zebra will always
select the connected route on the SVI (and subsequently use it for next hop
resolution etc.) -
root@TORC11:~# vtysh -c "show ip route vrf vrf1 2001:aa:1::/64"
Routing entry for 2001:aa:1::/64
  Known via "connected", distance 0, metric 1024, vrf vrf1
  Last update 11:30:56 ago
  * directly connected, vlan1002-v0

Routing entry for 2001:aa:1::/64
  Known via "connected", distance 0, metric 0, vrf vrf1, best
  Last update 11:30:56 ago
  * directly connected, vlan1002

root@TORC11:~#

Ticket: CM-23511
Signed-off-by: Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
6 years agoMerge pull request #3938 from donaldsharp/ospf_1000_club_6.0
Olivier Dugeon [Wed, 13 Mar 2019 16:56:51 +0000 (17:56 +0100)]
Merge pull request #3938 from donaldsharp/ospf_1000_club_6.0

ospfd: When converting to ms divide by 1000

6 years agoospfd: When converting to ms divide by 1000
Donald Sharp [Wed, 13 Mar 2019 00:44:31 +0000 (20:44 -0400)]
ospfd: When converting to ms divide by 1000

When converting to miliseconds divide by 1000 not
the other way around.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
6 years agoMerge pull request #3755 from kirankella/show_bgp_neigh_af_fix
David Lamparter [Mon, 11 Mar 2019 18:44:14 +0000 (19:44 +0100)]
Merge pull request #3755 from kirankella/show_bgp_neigh_af_fix

[6.0] bgpd: 'show bgp [ipv4|ipv6] neighbors' displays all address family neighbors

6 years agobgpd: Add peer action for PEER_FLAG_IFPEER_V6ONLY flag
Donatas Abraitis [Mon, 25 Feb 2019 19:16:02 +0000 (21:16 +0200)]
bgpd: Add peer action for PEER_FLAG_IFPEER_V6ONLY flag

peer_flag_modify() will always return BGP_ERR_INVALID_FLAG because
the action was not defined for PEER_FLAG_IFPEER_V6ONLY flag.

```
global PEER_FLAG_IFPEER_V6ONLY = 16384;
global BGP_ERR_INVALID_FLAG = -2;

probe process("/usr/lib/frr/bgpd").statement("peer_flag_modify@/root/frr/bgpd/bgpd.c:3975")
{
if ($flag == PEER_FLAG_IFPEER_V6ONLY && $action->type == 0)
printf("action not found for the flag PEER_FLAG_IFPEER_V6ONLY\n");
}

probe process("/usr/lib/frr/bgpd").function("peer_flag_modify").return
{
if ($return == BGP_ERR_INVALID_FLAG)
printf("return BGP_ERR_INVALID_FLAG\n");
}
```
produces:
action not found for the flag PEER_FLAG_IFPEER_V6ONLY
return BGP_ERR_INVALID_FLAG

$ vtysh -c 'conf t' -c 'router bgp 20' -c 'neighbor eth1 interface v6only remote-as external'

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
6 years agobgpd: 'show bgp [ipv4|ipv6] neighbors' displays all af neighbors
Kiran Kella [Fri, 8 Feb 2019 07:25:25 +0000 (12:55 +0530)]
bgpd: 'show bgp [ipv4|ipv6] neighbors' displays all af neighbors

- Display only ipv4 neighbors when 'show bgp ipv4 neighbors' command is
  issued.
- Display only ipv6 neighbors when 'show bgp ipv6 neighbors'
  command is issued.
- Take the address family of the peer address into account, while
  displaying the neighbors.

Signed-off-by: Kiran Kella <kiran.kella@broadcom.com>
6 years agoMerge pull request #3814 from opensourcerouting/6.0/doc-pager-theme
Donald Sharp [Tue, 19 Feb 2019 17:41:41 +0000 (12:41 -0500)]
Merge pull request #3814 from opensourcerouting/6.0/doc-pager-theme

[6.0] doc: VTYSH_PAGER docs + new FRR theme

6 years agoMerge pull request #3826 from opensourcerouting/6.0/init-multi-instance
Donald Sharp [Tue, 19 Feb 2019 00:48:59 +0000 (19:48 -0500)]
Merge pull request #3826 from opensourcerouting/6.0/init-multi-instance

[6.0] tools: fix new init script wrt. multi-instance

6 years agotools: fix new init script wrt. multi-instance
David Lamparter [Mon, 18 Feb 2019 23:27:45 +0000 (00:27 +0100)]
tools: fix new init script wrt. multi-instance

TBH when I looked at watchfrr I didn't see any MI support and hence
assumed this just didn't work to begin with.  However, it actually does
(transparently to watchfrr, by just using "ospfd-1" as daemon name.)

So, fix this up and make it work again.

(Also remove 2 extraneous \n in messages.)

Signed-off-by: David Lamparter <equinox@diac24.net>
6 years agodoc: document VTYSH_PAGER and "terminal paginate"
David Lamparter [Mon, 18 Feb 2019 13:23:03 +0000 (14:23 +0100)]
doc: document VTYSH_PAGER and "terminal paginate"

Signed-off-by: David Lamparter <equinox@diac24.net>
6 years agodoc: orange FRR theme
David Lamparter [Mon, 18 Feb 2019 12:57:43 +0000 (13:57 +0100)]
doc: orange FRR theme

Signed-off-by: David Lamparter <equinox@diac24.net>
6 years agoMerge pull request #3807 from donaldsharp/vtysh_ospf_6.0
David Lamparter [Mon, 18 Feb 2019 12:06:39 +0000 (13:06 +0100)]
Merge pull request #3807 from donaldsharp/vtysh_ospf_6.0

[6.0] vtysh: Don't attempt to reconnect the non-instanced ospf process

6 years agoMerge branch 'show_bgp_ipv6_summary_fix' of https://github.com/AkhileshSamineni/frr...
Akhilesh Samineni [Sun, 17 Feb 2019 07:12:07 +0000 (12:42 +0530)]
Merge branch 'show_bgp_ipv6_summary_fix' of https://github.com/AkhileshSamineni/frr into show_bgp_ipv6_summary_fix

6 years agobgpd: Incorrect number of peers count in "show bgp ipv6 summary" output
Akhilesh Samineni [Fri, 15 Feb 2019 16:50:51 +0000 (22:20 +0530)]
bgpd: Incorrect number of peers count in "show bgp ipv6 summary" output

Fix : Now the peers count displays the number of neighbors activated per afi/safi.

Signed-off-by: Akhilesh Samineni <akhilesh.samineni@broadcom.com>
6 years agobgpd: Incorrect number of peers count in "show bgp ipv6 summary" output
Akhilesh Samineni [Fri, 15 Feb 2019 16:50:51 +0000 (22:20 +0530)]
bgpd: Incorrect number of peers count in "show bgp ipv6 summary" output

Fix : Now the peers count displays the number of neighbors activated per afi/safi.

Signed-off-by: Akhilesh Samineni <akhilesh.samineni@broadcom.com>
6 years agovtysh: Don't attempt to reconnect the non-instanced ospf process
Donald Sharp [Wed, 21 Nov 2018 21:13:25 +0000 (16:13 -0500)]
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>
6 years agoMerge pull request #3785 from qlyoung/fix-aspath-prepend-heap-uaf-6.0.3
Renato Westphal [Wed, 13 Feb 2019 14:09:30 +0000 (12:09 -0200)]
Merge pull request #3785 from qlyoung/fix-aspath-prepend-heap-uaf-6.0.3

[6.0] bgpd: fix as-path prepend heap uaf

6 years agobgpd: fix as-path prepend heap uaf
Quentin Young [Tue, 29 Jan 2019 16:13:39 +0000 (16:13 +0000)]
bgpd: fix as-path prepend heap uaf

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
6 years agoMerge pull request #3717 from qlyoung/fix-systemd-deps-6.0.3
David Lamparter [Mon, 11 Feb 2019 06:50:31 +0000 (07:50 +0100)]
Merge pull request #3717 from qlyoung/fix-systemd-deps-6.0.3

[6.0.3] tools: fix systemd dependency graph

6 years agoMerge pull request #3742 from manuhalo/log_hook_6.0
Renato Westphal [Sat, 9 Feb 2019 01:54:38 +0000 (23:54 -0200)]
Merge pull request #3742 from manuhalo/log_hook_6.0

[6.0.3] lib: add hooks for external logging function

6 years agoMerge pull request #3751 from opensourcerouting/6.0/rpki-fixes
Donald Sharp [Thu, 7 Feb 2019 22:25:36 +0000 (17:25 -0500)]
Merge pull request #3751 from opensourcerouting/6.0/rpki-fixes

[6.0] RPKI fixes

6 years agobgpd: fix crash when trying to remove non-existing rpki cache
Marcel Röthke [Thu, 7 Feb 2019 16:16:19 +0000 (17:16 +0100)]
bgpd: fix crash when trying to remove non-existing rpki cache

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
6 years agobgpd: fix "show rpki cache-server" for ssh caches
Marcel Röthke [Thu, 7 Feb 2019 16:12:16 +0000 (17:12 +0100)]
bgpd: fix "show rpki cache-server" for ssh caches

Fix #3662

Signed-off-by: Marcel Röthke <marcel.roethke@haw-hamburg.de>
6 years agotools: fix systemd dependency graph
Quentin Young [Wed, 6 Feb 2019 19:40:55 +0000 (19:40 +0000)]
tools: fix systemd dependency graph

Currently our systemd dependencies look something like this (example
from vanilla Debian 9):

$ systemctl list-dependencies frr
frr.service
● ├─system.slice
● └─sysinit.target
  ...

$ systemctl list-dependencies --reverse frr
frr.service
● └─network-online.target
●   └─apt-daily.service

Note that sysinit.target does not depend on any network* service or
target.

In other words, unless there is a service that requires
network-online.service, even if FRR is enabled it will not be started.
Therefore network-online.target is the wrong unit to have in WantedBy=,
as it is not always started.

This patch updates our service file so that it is properly started by
the system when enabled, delayed until networking is up, and if possible
delayed until after NetworkManager, systemd-networkd or any other
networking configuration manager has finished performing its tasks -
i.e. after network-online.target.

After these changes our new dependency graph looks like this:

$ systemctl list-dependencies frr
frr.service
● ├─system.slice
● │ └─networking.service
● ├─network.target
● └─sysinit.target
  ...

$ systemctl list-dependencies --reverse frr
frr.service
● └─multi-user.target
●   └─graphical.target

This way, FRR will be started by multi-user.target (just like most
applications), but delayed until after networking has been configured.

In the same stroke, this should also fix issues on systems that do not
provide "networking.service" (such as CentOS 7).

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Signed-off-by: David Lamparter <equinox@diac24.net>