Commit Graph

15725 Commits

Author SHA1 Message Date
Philippe Guibert
a06437e632 lib: perform a bind inside vrf_socket() call
This is an extension to previous behavior, where the bind() operation
was performed only when vrf was not a netns backend kind. This was done
like that because usually the bind parameter is the vrf name itself, and
having an interface name with vrf name is an expectation so that the
bind operation works.
the bind() operation can be performed on whatever device provided that
that name is not null and there is an interface in the vrf that has the
same name as the parameter.

Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
2020-01-08 08:55:36 +02:00
Donald Sharp
c785c0516e
Merge pull request #5648 from LabNConsulting/working/lb/7.1/tt-update
7.1: topotest: bgp_l3vpn_to_bgp_vrf allow for different interface output
2020-01-07 14:35:25 -05:00
Donald Sharp
f3f172b5c2
Merge pull request #5641 from slankdev/slankdev-bgpd-fix-large-rd-frr-7-1
bgpd: [7.1] fix large route-distinguisher's format
2020-01-07 13:56:40 -05:00
Lou Berger
faab6713c1 topotest: bgp_l3vpn_to_bgp_vrf allow for different interface output
Signed-off-by: Lou Berger <lberger@labn.net>
2020-01-07 12:43:37 -05:00
Hiroki Shirokura
653b3bccf8 bgpd: fix large route-distinguisher's format
This commit is about #5629 's issue.
Before this commit, bgpd creates format string of
bgp-route-distinguisher as int32, but correctly format
is uint32. current bgpd's sh-run-cli generate int32 rd,
so if user sets the rd as 1:4294967295(0x1:0xffffffff),
sh-run cli generates 1: -1 as running-config. This
commit fix that issue.

Signed-off-by: Hiroki Shirokura <slank.dev@gmail.com>
2020-01-07 16:13:10 +09:00
Renato Westphal
81b3373da8
Merge pull request #5576 from ton31337/fix/no_bgp_listen_range_peer-group_7.1
bgpd: [7.1] Make sure we can use `no bgp listen range ...`
2020-01-07 00:05:11 -03:00
Donatas Abraitis
7ad598879a bgpd: Make sure we can use no bgp listen range ...
Fixes:
```
exit1-debian-9(config-router)# no bgp listen range 192.168.10.0/24 peer-group TEST
% Peer-group does not exist
exit1-debian-9(config-router)#
```
Closes https://github.com/FRRouting/frr/issues/5570

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-12-20 09:42:34 +02:00
Donatas Abraitis
0cca9d8f7e
Merge pull request #5455 from donaldsharp/7.1_bgp_rpki_crash
[7.1]bgpd: Prevent crash in bgp_table_range_lookup
2019-12-03 09:44:37 +02:00
Donald Sharp
13425b77c6 bgpd: Prevent crash in bgp_table_range_lookup
The function bgp_table_range_lookup attempts to walk down
the table node data structures to find a list of matching
nodes.  We need to guard against the current node from
not matching and not having anything in the child nodes.
Add a bit of code to guard against this.

Traceback that lead me down this path:

Nov 24 12:22:38 frr bgpd[20257]: Received signal 11 at 1574616158 (si_addr 0x2, PC 0x46cdc3); aborting...
Nov 24 12:22:38 frr bgpd[20257]: Backtrace for 11 stack frames:
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libfrr.so.0(zlog_backtrace_sigsafe+0x67) [0x7fd1ad445957]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libfrr.so.0(zlog_signal+0x113) [0x7fd1ad445db3]1ad445957]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libfrr.so.0(+0x70e65) [0x7fd1ad465e65]ad445db3]1ad445957]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libpthread.so.0(+0xf5f0) [0x7fd1abd605f0]45db3]1ad445957]
Nov 24 12:22:38 frr bgpd[20257]: /usr/lib/frr/bgpd(bgp_table_range_lookup+0x63) [0x46cdc3]445957]
Nov 24 12:22:38 frr bgpd[20257]: /usr/lib64/frr/modules/bgpd_rpki.so(+0x4f0d) [0x7fd1a934ff0d]57]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libfrr.so.0(thread_call+0x60) [0x7fd1ad4736e0]934ff0d]57]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libfrr.so.0(frr_run+0x128) [0x7fd1ad443ab8]e0]934ff0d]57]
Nov 24 12:22:38 frr bgpd[20257]: /usr/lib/frr/bgpd(main+0x2e3) [0x41c043]1ad443ab8]e0]934ff0d]57]
Nov 24 12:22:38 frr bgpd[20257]: /lib64/libc.so.6(__libc_start_main+0xf5) [0x7fd1ab9a5505]f0d]57]
Nov 24 12:22:38 frr bgpd[20257]: /usr/lib/frr/bgpd() [0x41d9bb]main+0xf5) [0x7fd1ab9a5505]f0d]57]
Nov 24 12:22:38 frr bgpd[20257]: in thread bgpd_sync_callback scheduled from bgpd/bgp_rpki.c:351#012; aborting...
Nov 24 12:22:38 frr watchfrr[6779]: [EC 268435457] bgpd state -> down : read returned EOF
Nov 24 12:22:38 frr zebra[5952]: [EC 4043309116] Client 'bgp' encountered an error and is shutting down.
Nov 24 12:22:38 frr zebra[5952]: zebra/zebra_ptm.c:1345 failed to find process pid registration
Nov 24 12:22:38 frr zebra[5952]: client 15 disconnected. 0 bgp routes removed from the rib

I am not really 100% sure what we are really trying to do with this function, but we must
guard against child nodes not having any data.

Fixes: #5440
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-02 19:08:16 -05:00
Donatas Abraitis
0cdd806939
Merge pull request #5448 from donaldsharp/7.1_bgp_show_json_mem_leak
[7.1]bgpd: Fix memory leak in json output of show commands
2019-12-02 07:39:35 +02:00
Donald Sharp
9ac50be02d bgpd: Fix memory leak in json output of show commands
When dumping a large bit of table data via bgp_show_table
and if there is no information to display for a particular
`struct bgp_node *` the data allocated via json_object_new_array()
is leaked.  Not a big deal on small tables but if you have a full
bgp feed and issue a show command that does not match any of
the route nodes ( say `vtysh -c "show bgp ipv4 large-community-list FOO"`)
then we will leak memory.

Before code change and issuing the above show bgp large-community-list command 15-20 times:
Memory statistics for bgpd:
System allocator statistics:
  Total heap allocated:  > 2GB
  Holding block headers: 0 bytes
  Used small blocks:     0 bytes
  Used ordinary blocks:  > 2GB
  Free small blocks:     31 MiB
  Free ordinary blocks:  616 KiB
  Ordinary blocks:       0
  Small blocks:          0
  Holding blocks:        0

After:

Memory statistics for bgpd:
System allocator statistics:
  Total heap allocated:  924 MiB
  Holding block headers: 0 bytes
  Used small blocks:     0 bytes
  Used ordinary blocks:  558 MiB
  Free small blocks:     26 MiB
  Free ordinary blocks:  340 MiB
  Ordinary blocks:       0
  Small blocks:          0
  Holding blocks:        0

Please note the 340mb of free ordinary blocks is from the fact I issued a
`show bgp ipv4 uni json` command and generated a large amount of data.

Fixes: #5445
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-12-01 19:37:38 -05:00
Sri Mohana Singamsetty
8e16e0a9c0
Merge pull request #5393 from ton31337/fix/update_rib_on_bgp_distance_changes_7.1
bgpd: [7.1] Reflect the distance in RIB when it is changed for an arbitrary afi/safi
2019-11-25 10:26:35 -08:00
Donatas Abraitis
ee7fbd2ed4 tests: Test if distance bgp (1-255) (1-255) (1-255) works
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-24 00:08:06 +02:00
Donald Sharp
a590ac8703
Merge pull request #5396 from ton31337/fix/send_BGP_NOTIFY_CEASE_PEER_UNCONFIG_after_no_neighbor_7.1
bgpd: [7.1] Notify "Peer De-configured" after entering 'no neighbor <neighbor> cmd'
2019-11-21 09:58:06 -05:00
Donatas Abraitis
7f98269f85 bgpd: Notify "Peer De-configured" after entering 'no neighbor <neighbor> cmd'
Before changes:

~# vtysh -c 'show ip bgp neighbors 192.168.0.2 json' | \
	jq '."192.168.0.2".lastNotificationReason'
null

After changes:

~# vtysh -c 'show ip bgp neighbors 192.168.0.2 json' | \
	jq '."192.168.0.2".lastNotificationReason'
"Cease/Peer Unconfigured"

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-20 21:29:01 +02:00
Donatas Abraitis
afaef3e7fb bgpd: Reflect the distance in RIB when it is changed for an arbitrary afi/safi
debian-9# show ip route 192.168.255.2/32 longer-prefixes
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, q - queued route, r - rejected route

B>* 192.168.255.2/32 [20/0] via 192.168.0.1, eth1, 00:15:22
debian-9# conf
debian-9(config)# router bgp 100
debian-9(config-router)# address-family ipv4
debian-9(config-router-af)# distance bgp 123 123 123
debian-9(config-router-af)# do show ip route 192.168.255.2/32 longer-prefixes
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, q - queued route, r - rejected route

B>* 192.168.255.2/32 [123/0] via 192.168.0.1, eth1, 00:00:09
debian-9(config-router-af)# no distance bgp
debian-9(config-router-af)# do show ip route 192.168.255.2/32 longer-prefixes
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, q - queued route, r - rejected route

B>* 192.168.255.2/32 [20/0] via 192.168.0.1, eth1, 00:00:02
debian-9(config-router-af)#

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-20 21:20:39 +02:00
Donatas Abraitis
745a40481d
Merge pull request #5388 from donaldsharp/7.1_cherrys
[7.1] cherrys
2019-11-20 20:36:36 +02:00
Donald Sharp
ca491f0e2d pimd: Various buffer overflow reads and crashes
A variety of buffer overflow reads and crashes
that could occur if you fed bad info into pim.

1) When type is setup incorrectly we were printing the first 8 bytes
of the pim_parse_addr_source, but the min encoding length is
4 bytes.  As such we will read beyond end of buffer.

2) The RP(pim, grp) macro can return a NULL value
Do not automatically assume that we can deref
the data.

3) BSM parsing was not properly sanitizing data input from wire
and we could enter into situations where we would read beyond
the end of the buffer.  Prevent this from happening, we are
probably left in a bad way.

4) The received bit length cannot be greater than 32 bits,
refuse to allow it to happen.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-20 08:31:27 -05:00
Donald Sharp
334d2da8af pimd: Fix possible read beyond end of data received
If a register packet is received that is less than the PIM_MSG_REGISTER_LEN
in size we can have a possible situation where the data being
checksummed is just random data from the buffer we read into.

2019/11/18 21:45:46 warnings: PIM: int pim_if_add_vif(struct interface *, _Bool, _Bool): could not get address for interface fuzziface ifindex=0
==27636== Invalid read of size 4
==27636==    at 0x4E6EB0D: in_cksum (checksum.c:28)
==27636==    by 0x4463CC: pim_pim_packet (pim_pim.c:194)
==27636==    by 0x40E2B4: main (pim_main.c:117)
==27636==  Address 0x771f818 is 0 bytes after a block of size 24 alloc'd
==27636==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==27636==    by 0x40E261: main (pim_main.c:112)
==27636==

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-20 08:30:25 -05:00
Donald Sharp
48fe7ed0ba
Merge pull request #5366 from ton31337/fix/addpath_total_peer_update_7.1
bgpd: [7.1] Fix per afi/safi addpath peer counting
2019-11-19 07:41:32 -05:00
Mitch Skiba
1c34cc6b00 bgpd: Fix per afi/safi addpath peer counting
The total_peercount table was created as a short cut for queries about
if addpath was enabled at all on a particular afi/safi. However, the
values weren't updated, so BGP would act as if addpath wasn't enabled
when determining if updates should be sent out. The error in behavior
was much more noticeable in tx-all than best-per-as, since changes in
what is sent by best-per-as would often trigger updates even if addpath
wasn't enabled.

Signed-off-by: Mitchell Skiba <mskiba@amazon.com>
2019-11-19 08:41:20 +02:00
Jafar Al-Gharaibeh
a2a703921d
Merge pull request #5363 from donaldsharp/71_pim_crash_rp
[7.1]pimd: Create pimreg interface when we start any interface config
2019-11-18 22:18:31 -06:00
Donald Sharp
7f55e3d594 pimd: Create pimreg interface when we start any interface config
When you configure interface configuration without explicitly
configuring pim on that interface, we were not creating the pimreg
interface and as such we would crash in an attempted register
since the pimreg device is non-existent.

The crash is this:
==8823== Invalid read of size 8
==8823==    at 0x468614: pim_channel_add_oif (pim_oil.c:392)
==8823==    by 0x46D0F1: pim_register_join (pim_register.c:61)
==8823==    by 0x449AB3: pim_mroute_msg_nocache (pim_mroute.c:242)
==8823==    by 0x449AB3: pim_mroute_msg (pim_mroute.c:661)
==8823==    by 0x449AB3: mroute_read (pim_mroute.c:707)
==8823==    by 0x4FC0676: thread_call (thread.c:1549)
==8823==    by 0x4EF3A2F: frr_run (libfrr.c:1064)
==8823==    by 0x40DCB5: main (pim_main.c:162)
==8823==  Address 0xc8 is not stack'd, malloc'd or (recently) free'd

pim_register_join calls pim_channel_add_oif with:

	pim_channel_add_oif(up->channel_oil, pim->regiface,
			    PIM_OIF_FLAG_PROTO_PIM);

We just need to make srue pim->regiface exists once we start configuring
pim.

Fixes: #5358
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-11-18 15:07:04 -05:00
Sri Mohana Singamsetty
9e37611dd0
Merge pull request #5337 from opensourcerouting/ldpd-buffer-overflow-7.1
[7.1] ldpd: add missing sanity check in the parsing of label messages
2019-11-15 15:38:45 -08:00
Donald Sharp
6ff29243fb
Merge pull request #5348 from ton31337/fix/bgp_dampening_per_afi_safi_7.1
bgpd: [7.1] Rework BGP dampening to be per AFI/SAFI
2019-11-15 07:36:40 -05:00
Donatas Abraitis
967d8257a9 bgpd: Rework BGP dampening to be per AFI/SAFI
Before we had:

!
router bgp 65031
 bgp dampening 1 2 3 4
!

exit2-debian-9(config)# router bgp 65031
exit2-debian-9(config-router)# address-family ipv4 multicast
exit2-debian-9(config-router-af)# bgp dampening 5 6 7 8
exit2-debian-9(config-router-af)# end
exit2-debian-9# show running-config

!
router bgp 65031
 bgp dampening 1 2 3 4
!

After fix:

!
router bgp 65031
 neighbor 192.168.1.2 remote-as 100
 !
 address-family ipv4 unicast
  bgp dampening 1 2 3 4
 exit-address-family
 !
 address-family ipv4 multicast
  bgp dampening 5 6 7 8
 exit-address-family
!

exit2-debian-9# show ip bgp ipv4 unicast dampening parameters
Half-life time: 1 min
Reuse penalty: 2
Suppress penalty: 3
Max suppress time: 4 min
Max suppress penalty: 32

exit2-debian-9# show ip bgp ipv4 multicast dampening parameters
Half-life time: 5 min
Reuse penalty: 6
Suppress penalty: 7
Max suppress time: 8 min
Max suppress penalty: 18

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-14 19:56:49 +02:00
Donatas Abraitis
1eae4f2c51 doc: Append documentation for bgp dampening command
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-11-14 19:55:05 +02:00
Renato Westphal
199902c514 ldpd: add missing sanity check in the parsing of label messages
Validate that the FEC prefix length is within the allowed limit
(depending on the FEC address family) in order to prevent possible
buffer overflows.

Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
2019-11-13 22:02:53 -03:00
Donald Sharp
0687f4803b
Merge pull request #5255 from ton31337/fix/doc_bgp_redistribute_vpn_7.1
doc: [7.1] Add redistribute vnc-direct command and fix typo in redistribute vnc
2019-10-31 10:25:29 -04:00
Donatas Abraitis
70c14900e2 doc: Add redistribute vnc-direct command
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-31 09:03:45 +02:00
Donatas Abraitis
6288243bee doc: redistribute vpn --> redistribute vnc
Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-31 09:03:43 +02:00
Donald Sharp
486d6e94d8
Merge pull request #5244 from ton31337/fix/do_not_include_nexthop_dash_dash_7.1
bgpd: [7.1] Do not send next-hop as :: in MP_REACH_NLRI if no link-local ex…
2019-10-29 13:02:56 -04:00
Donatas Abraitis
e359ac07ed bgpd: Do not send next-hop as :: in MP_REACH_NLRI if no link-local exists
This is the unusual case when you have global IPv6 address and no link-local
on interface attached. Like here:

eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
 link/ether 08:00:27:65:c6:82 brd ff:ff:ff:ff:ff:ff
 inet6 2a02:4780:face::1/64 scope global
    valid_lft forever preferred_lft forever

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-29 15:42:33 +02:00
Donald Sharp
a90299b748
Merge pull request #5231 from ton31337/fix/noip_nhrp_map_7.1
nhrp: [7.1] Make sure `no ip nhrp map <something>` works as expected
2019-10-25 22:25:47 -04:00
Donald Sharp
173360a40f
Merge pull request #5228 from ton31337/fix/override_peers_ttl_if_peer_group_configured_7.1
bgpd: [7.1] Override peer's TTL only if peer-group is configured with TTL
2019-10-25 22:25:15 -04:00
Donatas Abraitis
98ac48a01d nhrp: Make sure no ip nhrp map <something> works as expected
We passed peer as NULL and nothing happened.

exit2-debian-9# conf
exit2-debian-9(config)# int gre1
exit2-debian-9(config-if)# ip nhrp map 1.1.1.1 local
exit2-debian-9(config-if)# ip nhrp map 2.2.2.2 3.3.3.3
exit2-debian-9(config-if)# do sh run
...
!
interface gre1
 ip nhrp map 1.1.1.1 local
 ip nhrp map 2.2.2.2 3.3.3.3
!
...
exit2-debian-9(config-if)# no ip nhrp map 1.1.1.1
exit2-debian-9(config-if)# do sh run
...
!
interface gre1
 ip nhrp map 2.2.2.2 3.3.3.3
!

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-25 21:52:13 +03:00
Donatas Abraitis
6381f7b42b bgpd: Override peer's TTL only if peer-group is configured with TTL
When a peer-group is configured for an already configured eBGP neighbor,
ebgp-multihop command is removed for that peer.

This fix remains configured peer's ebgp-multihop value if peer-group does
not have ebgp-multihop configured.

!
router bgp 100
 neighbor A8 peer-group
 neighbor A9 peer-group
 neighbor A9 ebgp-multihop 12
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 ebgp-multihop 255
 neighbor 4.4.4.4 remote-as 123
 !

spine1-debian-9#
spine1-debian-9# conf
spine1-debian-9(config)# router bgp 100
spine1-debian-9(config-router)# neighbor 3.3.3.3 peer-group A8
spine1-debian-9(config-router)# do sh run

!
router bgp 100
 neighbor A8 peer-group
 neighbor A9 peer-group
 neighbor A9 ebgp-multihop 12
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 peer-group A8
 neighbor 3.3.3.3 ebgp-multihop 255
 neighbor 4.4.4.4 remote-as 123
!

spine1-debian-9(config-router)# neighbor 4.4.4.4 peer-group A9
spine1-debian-9(config-router)# do sh run

!
router bgp 100
 neighbor A8 peer-group
 neighbor A9 peer-group
 neighbor A9 ebgp-multihop 12
 neighbor 3.3.3.3 remote-as 123
 neighbor 3.3.3.3 peer-group A8
 neighbor 3.3.3.3 ebgp-multihop 255
 neighbor 4.4.4.4 remote-as 123
 neighbor 4.4.4.4 peer-group A9
!

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-25 21:49:45 +03:00
Donald Sharp
e90cc521f4
Merge pull request #5163 from ton31337/fix/do_not_reconnect_if_prefix_overflow_7.1
bgpd: [7.1] Keep the session down if maximum-prefix is reached
2019-10-16 07:07:04 -04:00
Donatas Abraitis
cb84b33e82 bgpd: Keep the session down if maximum-prefix is reached
Under high load instances with hundreds of thousands of prefixes this
could result in very unstable systems.

When maximum-prefix is set, but restart timer is not set then the session
flaps between Idle(Pfx) -> Established -> Idle(Pfx) states.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-16 08:26:46 +03:00
Donatas Abraitis
5ec0a8fe4a tests: Remove sleep from test_bgp_maximum_prefix_invalid_update
Sleep is not needed here while we fail instantly if maximum is reached.

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-16 08:26:39 +03:00
Matthew Smith
e9f55621df bgpd: honor max prefix timer on inbound sessions
When using the maximum-prefix restart option with a BGP peer,
if the peer exceeds the limit of prefixes, bgpd causes the
connection to be closed and sets a timer. It will not attempt
to connect to that peer until the timer expires. But if the
peer attempts to connect to it before the timer expires, it
accepts the connection and starts exchanging routes again.

When accepting a connection from a peer, reject the connection
if the max prefix restart timer is set.

Signed-off-by: Matthew Smith <mgsmith@netgate.com>
2019-10-16 08:26:32 +03:00
Quentin Young
1f71f88093
Merge pull request #5116 from ton31337/feature/maximum-prefix_uint64_to_uint32_7.1
bgpd: [7.1] Use uint32_t for maximum-prefix
2019-10-09 15:33:13 -04:00
Donatas Abraitis
3b59184d01 bgpd: Use uint32_t for maximum-prefix
Currently we have unsigned long which is not what we defined
in CLI (1-4294967295).

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2019-10-07 21:28:15 +03:00
Russ White
8c5e037c49
Merge pull request #5092 from sworleys/Fix-Vrf_ID-Decode_7.1
[7.1] lib: Decode vrf_id update appropriately from zapi
2019-10-02 10:23:28 -04:00
Stephen Worley
31615ea837 lib: Decode vrf_id update appropriately from zapi
The vrf_id in `zsend_interface_vrf_update()` is encoded as
a long via `stream_putl()`, we should decode it as such
as well.

Signed-off-by: Stephen Worley <sworley@cumulusnetworks.com>
2019-10-01 19:15:07 -04:00
Donatas Abraitis
9d12a864a7
Merge pull request #5030 from donaldsharp/7.1_send_that_error_bgp
7.1 send that error bgp
2019-09-22 11:21:52 +03:00
Donald Sharp
22c1690208 bgpd: Invalid NH's should send an apropriate reason code
RFC 4271 sec 6.3 p33, In the case of a BGP_NEXTHOP attribute with an
incorrect value, FRR is supposed to send a notification
and include 'Corresponding type, length and value of the NEXT_HOP
attribute in the notification data.

Fixes: #4997
Signed-off-by: Nikos <ntriantafillis@gmail.com>
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2019-09-20 13:10:19 -04:00
nikos
d946538310 bgpd: IPv6 session flapping with MP_REACH_NLRI and 0.0.0.0 in NEXT_HOP attribute
This is causing interop issues with vendors. According to the RFC,
receiver should ignore the NEXT_HOP attribute with MP_REACH_NLRI
present.

Signed-off-by: nikos <ntriantafillis@gmail.com>
2019-09-20 13:10:14 -04:00
nikos
a1e3c60317 bgpd: IPv6 session flapping with MP_REACH_NLRI and 0.0.0.0 in NEXT_HOP attribute
This is causing interop issues with vendors. According to the RFC,
receiver should ignore the NEXT_HOP attribute with MP_REACH_NLRI
present.

Signed-off-by: nikos ntriantafillis@gmail.com
2019-09-20 13:10:02 -04:00
Donald Sharp
1d83c2f7c7
Merge pull request #4960 from ton31337/fix/check_if_rmap_exists_before_warning
bgpd: [7.1] `neighbor X:X::X default-originate` complains about (null)
2019-09-11 09:46:32 -04:00