mirror_frr/lib
vivek 2b83602b24 *: Explicitly mark nexthop of EVPN-sourced routes as onlink
In the case of EVPN symmetric routing, the tenant VRF is associated with
a VNI that is used for routing and commonly referred to as the L3 VNI or
VRF VNI. Corresponding to this VNI is a VLAN and its associated L3 (IP)
interface (SVI). Overlay next hops (i.e., next hops for routes in the
tenant VRF) are reachable over this interface. Howver, in the model that
is supported in the implementation and commonly deployed, there is no
explicit Overlay IP address associated with the next hop in the tenant
VRF; the underlay IP is used if (since) the forwarding plane requires
a next hop IP. Therefore, the next hop has to be explicit flagged as
onlink to cause any next hop reachability checks in the forwarding plane
to be skipped.

https://tools.ietf.org/html/draft-ietf-bess-evpn-prefix-advertisement
section 4.4 provides additional description of the above constructs.

Use existing mechanism to specify the nexthops as onlink when installing
these routes from bgpd to zebra and get rid of a special flag that was
introduced for EVPN-sourced routes. Also, use the onlink flag during next
hop validation in zebra and eliminate other special checks.

Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Anuradha Karuppiah <anuradhak@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
2019-02-27 12:54:24 +00:00
..
.gitignore *: cleanup .gitignore files 2018-09-08 21:30:42 +02:00
agentx.c lib: remove agentx already enabled warning 2018-10-28 02:50:47 +00:00
agg_table.c bgpd, lib, zebra: Wrapper get/set of table->info pointer 2018-09-23 20:04:39 -04:00
agg_table.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
bfd.c *: spelchek 2018-10-25 20:10:57 +02:00
bfd.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
bitfield.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
buffer.c *: LIB_[ERR|WARN] -> EC_LIB 2018-09-13 19:34:28 +00:00
buffer.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
checksum.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
checksum.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
clippy.c lib: untrusted argument (Coverity 1448386) 2018-06-27 15:50:04 +02:00
clippy.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
command_graph.c lib: fix clippy build w/ gcc under certain configs 2018-04-26 12:31:45 -04:00
command_graph.h lib: a few more trivial changes for C++ compatibility 2019-02-11 22:34:12 -02:00
command_lex.l lib: change M:A:C to X:X:X:X:X:X 2018-10-24 21:44:33 +00:00
command_match.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
command_match.h lib: rename enum to avoid conflict 2019-02-11 22:34:12 -02:00
command_parse.y lib: Convert zlog_err for clippy build 2018-08-14 20:02:05 +00:00
command_py.c Revert "isisd lib ospfd pbrd python: fix empty init" 2018-12-01 16:49:45 +01:00
command.c lib: rename enum to avoid conflict 2019-02-11 22:34:12 -02:00
command.h lib: Allow DEFPY_HIDDEN to exist in vtysh 2019-02-20 19:26:15 -05:00
compiler.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
csv.c Merge pull request #2965 from opensourcerouting/buildfoo-20180904 2018-09-09 14:11:10 -04:00
csv.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
db.c lib: introduce new northbound API 2018-10-27 16:16:12 -02:00
db.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
debug.c lib: add mt-safe debugging facilities 2018-03-01 15:01:25 -05:00
debug.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
defun_lex.l lib: early-include "config.h" in flex lexers 2018-09-09 01:16:25 +02:00
distribute.c *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
distribute.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
event_counter.c *: reindent 2017-07-17 14:04:07 +02:00
event_counter.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
ferr.c *: Replace hash_cmp function return value to a bool 2018-10-19 13:14:45 -04:00
ferr.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
fifo.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
filter.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
filter.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
freebsd-queue.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
frr_pthread.c lib: snprintf to strlcpy in frr_pthread.c 2019-01-31 07:52:23 -05:00
frr_pthread.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
frr_zmq.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
frr_zmq.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
frratomic.h lib: make atomic ops C++ compatible 2019-02-11 15:49:49 -02:00
frrstr.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
frrstr.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
getopt1.c *: reindent 2017-07-17 14:04:07 +02:00
getopt.c Revert "*: reindent pt. 2" 2017-07-22 14:52:33 +02:00
getopt.h *: reindent 2017-07-17 14:04:07 +02:00
gitversion.pl build: make gitversion more useful 2017-08-02 02:59:51 +02:00
grammar_sandbox_main.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
grammar_sandbox.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
graph.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
graph.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
hash.c *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
hash.h lib: add compatibility #define for hash_backet 2019-02-25 17:08:45 +00:00
hook.c lib: flip to ISC on hook & module code 2018-12-14 16:24:06 +01:00
hook.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
id_alloc.c libs: rename two id_alloc macros to resolve bsd conflict 2018-11-14 14:04:55 -05:00
id_alloc.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
if_rmap.c *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
if_rmap.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
if.c libs, rip, isis: change northbound operation enum to DESTROY 2019-02-11 15:49:49 -02:00
if.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
imsg-buffer.c lib, ldpd: fix SA warnings from TAILQ oddness 2018-09-08 20:34:32 +02:00
imsg.c lib, ldpd: fix SA warnings from TAILQ oddness 2018-09-08 20:34:32 +02:00
imsg.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
ipaddr.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
jhash.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
jhash.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
json.c bgpd/ospfd: make bgp and ospf json response a bit more consistent 2018-08-30 12:40:18 +00:00
json.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
keychain.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
keychain.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
lib_errors.c lib: update suggestions related to some northbound errors 2019-01-14 16:33:37 -02:00
lib_errors.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
libfrr.c lib: add support for confirmed commits 2018-12-07 11:11:33 -02:00
libfrr.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
libospf.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
linklist.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
linklist.h lib: add macro that performs explicit static casts when using a C++ compiler 2019-02-11 22:34:12 -02:00
log_int.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
log.c lib: advertise svi ip as macip opcode 2019-02-06 19:57:00 -08:00
log.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
logicalrouter.c *: conform with COMMUNITY.md formatting rules, via 'make indent' 2018-03-06 14:04:32 -05:00
logicalrouter.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
lua.c lua: Initial Lua import 2018-09-26 21:21:23 -04:00
lua.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
Makefile build: convert lib/ to non-recursive build 2017-07-31 23:03:27 +02:00
md5.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
md5.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
memory_vty.c lib: Cleanup include of link.h 2018-09-08 12:00:17 -04:00
memory_vty.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
memory.c lib: MTYPE_PREFIX_FLOWSPEC should not be exposed by memory.h 2019-02-07 09:35:49 -05:00
memory.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
mlag.c lib: Add mlag_role2str function 2019-01-04 12:21:00 -05:00
mlag.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
module.c lib: flip to ISC on hook & module code 2018-12-14 16:24:06 +01:00
module.h lib: a few more trivial changes for C++ compatibility 2019-02-11 22:34:12 -02:00
monotime.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
mpls.c lib, zebra: Move label conversion strings to lib 2018-04-18 07:06:11 -04:00
mpls.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
netns_linux.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
netns_other.c zebra: add an indirection table for ns_id 2018-04-13 16:40:32 +02:00
network.c *: LIB_[ERR|WARN] -> EC_LIB 2018-09-13 19:34:28 +00:00
network.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
nexthop_group.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
nexthop_group.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
nexthop.c lib: Cleanup nexthop2str code to be consistent 2018-11-30 16:07:34 -05:00
nexthop.h *: Explicitly mark nexthop of EVPN-sourced routes as onlink 2019-02-27 12:54:24 +00:00
northbound_cli.c lib: fix "use of uninitialised value" valgrind warning 2019-01-14 16:32:23 -02:00
northbound_cli.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
northbound_confd.c libs, rip, isis: change northbound operation enum to DESTROY 2019-02-11 15:49:49 -02:00
northbound_db.c lib: introduce new northbound API 2018-10-27 16:16:12 -02:00
northbound_db.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
northbound_sysrepo.c libs, rip, isis: change northbound operation enum to DESTROY 2019-02-11 15:49:49 -02:00
northbound.c libs, rip, isis: change northbound operation enum to DESTROY 2019-02-11 15:49:49 -02:00
northbound.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
ns.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
openbsd-queue.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
openbsd-tree.c lib: RB-tree copy-paste error (Coverity 1446184) 2018-09-28 20:37:27 +02:00
openbsd-tree.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
pbr.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
pid_output.c lib: When we can't lock the pid file provide a meaningfull message 2018-09-22 14:18:52 -04:00
plist_int.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
plist.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
plist.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
pqueue.c *: reindent 2017-07-17 14:04:07 +02:00
pqueue.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
prefix.c lib: MTYPE_PREFIX_FLOWSPEC should not be exposed by memory.h 2019-02-07 09:35:49 -05:00
prefix.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
privs.c lib: fix garbage array size in zprivs_init 2019-02-15 16:27:55 +00:00
privs.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
ptm_lib.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
ptm_lib.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
pw.h lib: a few more trivial changes for C++ compatibility 2019-02-11 22:34:12 -02:00
qobj.c *: Replace hash_cmp function return value to a bool 2018-10-19 13:14:45 -04:00
qobj.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
queue.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
ringbuf.c *: conform with COMMUNITY.md formatting rules, via 'make indent' 2018-03-06 14:04:32 -05:00
ringbuf.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
route_types.pl lib, zebra: Fix 'show ip route' char collision 2019-01-29 20:41:36 -05:00
route_types.txt fabricd: add new daemon as build of isisd 2018-09-05 11:38:12 +02:00
routemap.c *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
routemap.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
sbuf.c lib: out-of-bounds access (Coverity 1452539) 2018-06-22 00:06:07 +02:00
sbuf.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
sha256.c lib: Fix memset usage 2017-10-03 12:03:56 -04:00
sha256.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
sigevent.c *: LIB_[ERR|WARN] -> EC_LIB 2018-09-13 19:34:28 +00:00
sigevent.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
skiplist.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
skiplist.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
smux.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
snmp.c *: use C99 standard fixed-width integer types 2018-03-27 15:13:34 -04:00
sockopt.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
sockopt.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
sockunion.c *: spelchek 2018-10-25 20:10:57 +02:00
sockunion.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
spf_backoff.c lib: Remove default case statement from a enum driven switch 2018-08-23 08:36:07 -04:00
spf_backoff.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
srcdest_table.c bgpd, lib, zebra: Wrapper get/set of table->info pointer 2018-09-23 20:04:39 -04:00
srcdest_table.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
stream.c *: style for EC replacements 2018-09-13 19:38:57 +00:00
stream.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
strlcat.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
strlcpy.c *: fix config.h/zebra.h include order 2018-09-08 21:30:42 +02:00
subdir.am build: fix a whole bunch of *FLAGS 2019-01-30 19:13:51 +01:00
systemd.c *: reindent 2017-07-17 14:04:07 +02:00
systemd.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
table.c Merge pull request #3180 from qlyoung/prefixlen-u8-to-u16 2019-01-15 00:39:39 -02:00
table.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
termtable.c lib: protect termtable from bad fmt string 2019-01-28 20:44:20 +00:00
termtable.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
thread.c *: Rename backet to bucket 2019-02-25 16:22:36 +00:00
thread.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
vector.c lib: add vector_compact(), use after str splits 2018-06-06 16:16:12 +00:00
vector.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
version.h.in lib: add cli preprocessor for | actions 2018-06-06 16:15:34 +00:00
vlan.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
vrf_int.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
vrf.c libs, daemons: changes to permit c++ compilation 2019-02-11 15:49:49 -02:00
vrf.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
vty.c Treewide: use ANSI function definitions 2019-01-24 11:21:59 +01:00
vty.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
vxlan.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
wheel.c *: list_delete_and_null() -> list_delete() 2018-10-02 11:40:52 +02:00
wheel.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
workqueue.c libs: remove useless static work_queue_free helper 2019-02-07 13:54:50 -05:00
workqueue.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
yang_translator.c lib: yang: use common yang_ctx_new_setup() 2019-02-19 21:41:39 +01:00
yang_translator.h lib: add extern "C" {} blocks to all libfrr headers 2019-02-11 22:34:12 -02:00
yang_wrappers.c lib: fix issue with yang_str2enum 2018-12-18 15:15:26 +01:00
yang_wrappers.h lib: use prefixconstptr instead of const prefixptr 2018-11-26 17:35:58 -02:00
yang.c lib: yang: use common yang_ctx_new_setup() 2019-02-19 21:41:39 +01:00
yang.h lib: yang: use common yang_ctx_new_setup() 2019-02-19 21:41:39 +01:00
zassert.h *: Remove cvs control points 2017-12-05 17:28:12 -05:00
zclient.c lib: Send interface request after initial hello 2019-02-05 09:13:30 -05:00
zclient.h lib: advertise svi ip as macip opcode 2019-02-06 19:57:00 -08:00
zebra.h lib: add macro that performs explicit static casts when using a C++ compiler 2019-02-11 22:34:12 -02:00