Commit Graph

25340 Commits

Author SHA1 Message Date
Mobashshera Rasool
c405b00fcf ospf6d: install summary route NULL0 as nexthop
This is a requirement for avoiding sending traffic somewhere it was not
supposed to go: install summary route to local RIB to send traffic to
Null0.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-21 05:16:54 +00:00
Mobashshera Rasool
d2e5d5d444 ospf6d: support blackhole next hops
This feature is required for creating summary routes that drop traffic
without more specific routes.

Authored-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-21 05:16:54 +00:00
Mobashshera Rasool
c3a70f6517 ospf6d: ASBR summarisation feature changes for NSSA area
1. ASBR summarisation for Type-7 LSAs are done here.

2. Fixed Code warnings

Signed-off-by: Mobashshera Rasool<mrasool@vmware.com>
2021-07-21 05:16:54 +00:00
Mobashshera Rasool
4dc4388691 ospf6d: ASBR Summarisation feature implementation
Feature Implementation.
========================
This feature will help in advertising the External LSAs with aggregation.
The commands allow us to tune the advertisement with different parameters
as mentioned in the CLI List below.
It can also help in case we do not want to advertise any prefix with the
no-advertise option.

New CLIs added:
===============
summary-address X:X::X:X/M$prefix [tag (1-4294967295)] [{metric (0-16777215) | metric-type (1-2)}]
no summary-address X:X::X:X/M$prefix [tag (1-4294967295)] [{metric (0-16777215) | metric-type (1-2)}]
summary-address X:X::X:X/M$prefix no-advertise
no summary-address X:X::X:X/M$prefix no-advertise
aggregation timer (5-1800)
no aggregation timer (5-1800)
show ipv6 ospf6 summary-address [detail$detail] [json]
debug ospf6 lsa aggregation

CAT RUN:
========
QE to add test scripts

Signed-Off-by: Mobashshera Rasool <mrassol@vmware.com>
2021-07-21 05:16:54 +00:00
Renato Westphal
2e69d1e4f3
Merge pull request #9098 from donaldsharp/if_secondary_bsd
zebra: Mark some bsd interface prefixes as SECONDARY
2021-07-21 01:06:42 -03:00
Russ White
e2d17cd9b0
Merge pull request #9095 from opensourcerouting/ospfv3-stub-def-always
ospf6d: always generate default route for stubs
2021-07-20 15:25:27 -04:00
Russ White
2c4fdef90a
Merge pull request #9093 from rgirada/nbr_crash
ospfd: ospfd crash while giving 'clear ip ospf neighbor'
2021-07-20 15:25:07 -04:00
Donald Sharp
b57d3daeea
Merge pull request #9074 from mobash-rasool/pim-fixes
pimd: IGMPv3 conformance fixes for invalid TTL and invalid TOS
2021-07-20 12:29:53 -04:00
Donald Sharp
ecff5258a0 zebra: Mark some bsd interface prefixes as SECONDARY
Notice when a ip address on a bsd interface is considered
an alias, let's mark the connected prefix we generate as
a SECONDARY.

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-07-20 10:12:04 -04:00
Mark Stapp
abfafdece2 pathd: don't use localtime
Use localtime_r() instead of localtime() in pathd.

Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
2021-07-20 08:52:33 -04:00
Rafael Zalamena
80d1eb49b1 ospf6d: always generate default route for stubs
In RFC 2328 OSPF Version 2, Section 12.4.3.1 "Originating summary-LSAs
into stub areas" mentions that the stub areas should not import external
routes and instead should generate a 'default summary-LSA' set to
default destination.

> In a stub area, instead of importing external routes
> each area border router originates a "default summary-
> LSA" into the area. The Link State ID for the default
> summary-LSA is set to DefaultDestination, and the metric
> set to the (per-area) configurable parameter
> StubDefaultCost.  Note that StubDefaultCost need not be
> configured identically in all of the stub area's area
> border routers.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
2021-07-20 09:43:03 -03:00
rgirada
c88ad8ec5b ospfd: ospfd crash while giving 'clear ip ospf neighbor'
Description:
	Ospf process crashes upon giving 'clear ip ospf neighbor' with
        self routerId. It is asserting if it is a self neighbor in ospf
        neighbour kill event processing.
	Added a check to validate the provided router-id is self
        router-id.

Signed-off-by: Rajesh Girada <rgirada@vmware.com>
2021-07-20 04:39:05 -07:00
gord_chen
ec8977510e zebra: trigger remove all access vlans for access port
When port was removed from last access vlan, the linux kernel
won't send any vlan info in the netlink message, it might affact
the evpn mh not withdraw EAD-EVI routes.

Signed-off-by: Gord Chen <gord_chen@edge-core.com>
2021-07-20 09:39:45 +00:00
nguggarigoud
db56171c86 tests: Adding ospfv3 basic functionality test cases
1. Adding  APIs to configure and verify ospfv3.
2. Adding ospfv3 base functionality testcase.

Signed-off-by: nguggarigoud <nguggarigoud@vmware.com>
2021-07-20 02:34:24 -07:00
David Lamparter
621ee705b5 ospf6d: use OSPF6_INTERFACE_LOOPBACK state
The OSPF6_INTERFACE_LOOPBACK interface state wasn't entered anywhere,
even if the interface was OSPF6_IFTYPE_LOOPBACK.  Fix.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
David Lamparter
2e9db233b1 ospf6d: don't create Adv-ID:0.0.0.0 LSAs at start
When ospf6d comes up, it gets interface and address state before it
decides on its router ID.  This results in a bunch of LSAs with
advertising router ID 0.0.0.0 in the LSDB.  Not quite right.

There's a whole bunch of paths leading to this, so just drop the LSA in
ospf6_lsa_originate.  The router-ID change causes everything to be
readvertised anyway (... but the delete doesn't catch the 0.0.0.0 stuff
because the router-ID is now different.)

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
David Lamparter
b08221513c ospf6d: actually print prefix options
Well at least I had a good laugh at the "xxx".

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
David Lamparter
4699ad7296 ospf6d: move prefix_options from _path to _route
Prefix options are per-prefix, not per-path.  As evident by the fact
that the field is never used on ECMP paths.  Move it where it belongs.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2021-07-20 11:22:21 +02:00
Donald Sharp
79a9ad1450 zebra: Do not allow redistribution for non-vrf tables
Current code was allowing redistribution of kernel routes from
the non-default non vrf tables once FRR was already up and running.

In the case where we add `redistribute kernel` in an upper level
protocol we never consider the non-default vrf or non-vrf tables
so it is never accepted.

In the case where a kernel route is added after `redistribute kernel`
is already in place we were never looking at the fact that the
route was in a non-default non-vrf table.  This code fixes
that issue.

Fixes: #9073
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
2021-07-19 20:04:03 -04:00
Stephen Worley
1dce93dabb
Merge pull request #8554 from mjstapp/evpn_workqueue
lib,zebra: move some evpn dplane installation to the zebra workqueue
2021-07-19 16:21:20 -04:00
Mobashshera Rasool
e39f74d04a pimd: Add TOS check for IGMP conformance
IGMPv3 packets with invalid TOS should be dropped.
Test Case ID: 4.10
TEST_DESCRIPTION
Every IGMP message described in this document is sent with
IP Precedence of Internetwork Control (e.g., Type of Service
0xc0)
(Tests that IGMPv3 Membership Query Message conforms to
above statement)
TEST_REFERENCE
NEGATIVE: RFC 3376, IGMP Version 3, s4 p7 Message Formats
Issue: #9071

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-19 19:46:10 +00:00
Mobashshera Rasool
54d7bf0cc6 pimd: Add TTL check for IGMP conformance
IGMPv3 packets with invalid TTL should be dropped.
Test Case ID: 4.10
TEST_DESCRIPTION
Every IGMP message described in this document is sent with an IP
Time-to-Live of 1 (Tests that IGMPv3 Membership Report Message
conforms to above statement)
TEST_REFERENCE
NEGATIVE: RFC 3376, IGMP Version 3, s4 p7 Message Formats
Issue: #9070

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-19 19:46:10 +00:00
Mobashshera Rasool
ff4ad8709b pimd: Abstracting header verification for igmp
Moving the header verification checks inside a function.

Signed-off-by: Mobashshera Rasool <mrassol@vmware.com>
2021-07-19 19:46:00 +00:00
Donald Lee
2ce634e2ad lib: formatting
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-19 23:28:01 +08:00
Mark Stapp
80ff3f05ea zebra: replace ipaddr2str in dplane module
Replace a couple of ipaddr2str calls with pIA in the dplane
module.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
b747851a5d tests: skip tests after errors in bgp-evpn-vxlan
In bgp-evpn-vxlan, skip test cases if there's been a failure;
a couple of cases were missing this.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
7e5b0b2b36 zebra: process EVPN remote VTEP updates from the workqueue
Move remote VTEP updates from immediate, inline processing
in their ZAPI message handlers to the main workqueue.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
7f7e49d11a zebra: use workqueue for vxlan remote macip updates
Enqueue incoming vxlan remote macip updates on the main
workqueue, instead of performing the updates immediately,
in-line.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
1a3bd37f7c zebra: use more const
Use const in many more evpn apis, especially for macaddr,
ipaddr arguments.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
32367e7a3b zebra: add workqueue support for EVPN updates
Add workqueue subqueue for EVPN/VxLAN updates; migrate the
evpn route and remote ES processing from their ZAPI handlers
to the workqueue.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 10:36:12 -04:00
Mark Stapp
0a0875df5b lib: remove quagga from route_types.txt
Remove the q-word.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 08:43:48 -04:00
Mark Stapp
272e11bfc4 zebra: give some evpn apis better names
Use more useful names for a few evpn apis.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
2021-07-19 08:43:48 -04:00
github login name
906640dbaf pimd : memory leak in rp_table cleanup.
Problem Statement:
==================
valgrind shows memleaks in rp_table, when pimd shuts down gracefully.
2020-05-05 22:09:29,451 ERROR: Memory leaks in router [r4] for daemon [pimd]
2020-05-05 22:09:29,451 ERROR: Memory leaks in router [r4] for daemon [zebra]
2020-05-05 22:09:29,637 ERROR: Found memory leak in module pimd
2020-05-05 22:09:29,638 ERROR: ==6178== 184 (56 direct, 128 indirect) bytes in 1 blocks are definitely lost in loss record 21 of 21
2020-05-05 22:09:29,638 ERROR: ==6178== at 0x4C2FFAC: calloc (vg_replace_malloc.c:762)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4E855EE: qcalloc (memory.c:111)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EAA43C: route_table_init_with_delegate (table.c:52)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x1281A1: pim_rp_init (pim_rp.c:114)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D0F8: pim_instance_init (pim_instance.c:117)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D0F8: pim_vrf_new (pim_instance.c:150)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EB1BEC: vrf_get (vrf.c:209)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x4EB2B2F: vrf_init (vrf.c:493)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11D227: pim_vrf_init (pim_instance.c:217)
2020-05-05 22:09:29,638 ERROR: ==6178== by 0x11BBAB: main (pim_main.c:121)

Fix:
====
rp_info is allocated in pim_rp_init API. rp_info pointer is present
in rp_list and rp_table. In rp_list cleanup, the memory for rp_info
gets freed. rp_table clean up should be done first and then rp_list.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-19 04:30:58 -07:00
github login name
660b044294 pimd: pim_ifchannel_local_membership_add should not inherit if (S,G) rpf unresolved
Problem:
S,G entry has iif = oif in FHR is LHR case.

Setup:-

R11-----R2----R4

R11 :- FHR and LHR
R2 :- RP
R4 :- LHR

Issue :-

1) shut mapped interface in R11
2) wait for 5 min
3) do FRR restart
5) No shut of mapped interface

OIL is added for local interface also where OIL is same as IIF
and duplicate traffic observed on R4 receives in Ixia

RCA:
pim_ifchannel_local_membership_add adds inherited oif from starg when iif for
SG is unavailable.
When  rpf for that SG resolves to this inherited oif from starg, iif is also in oif.
This results in dup traffic.

Fix:
If iif is not available, do not inherit from starg.

Signed-off-by: Mobashshera Rasool <mrasool@vmware.com>
2021-07-19 03:57:25 -07:00
Donald Sharp
fb8e437bcd
Merge pull request #9080 from ton31337/fix/reason_bgpd
bgpd: Drop unnecessary chars for filtered reason
2021-07-18 15:33:19 -04:00
Donatas Abraitis
396a82ec2e
Merge pull request #9075 from donaldsharp/alias_auto_completion
bgpd: Allow for auto-completion of community alias's created
2021-07-18 20:30:41 +03:00
Donatas Abraitis
692174a1c5 bgpd: Drop unnecessary chars for filtered reason
Seems missed grammarly review for the reason "as-path contains our own AS;"

Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
2021-07-18 18:03:25 +03:00
Donatas Abraitis
dddec792ae
Merge pull request #9061 from donaldsharp/bgp_max_path_doc
doc: Document the maximum-paths command for bgp
2021-07-18 11:46:35 +03:00
Donald Lee
596b44af8a lib: Remove warning about script not found
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
9d6204020d bgpd: Remove warning about not finding script
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
7472871eef lib: Comment functions
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
62435f8ce1 bgpd: Use int encoder/decoder
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
2b67227e6e lib: Add int encoder/decoder
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
8878080b1b lib: Remove ../ include
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
0972af957a bgpd: Update bgpd example with get_result
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
aed6f883a0 doc: Update documentation
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
64d457d7ac lib: Rename frrscript_unload to delete
frrscript_load now loads a function instead of a file, so frrscript_unload
should be renamed since it does not unload a function.

Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
8a04c1e74e tests: Add more examples to get_result
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
b664092990 lib: standardize zlog error messages
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00
Donald Lee
ad6e9b854d test: Use frrscript_unload
Signed-off-by: Donald Lee <dlqs@gmx.com>
2021-07-18 06:32:03 +08:00