diff options
author | Andrew Yourtchenko <ayourtch@gmail.com> | 2017-10-25 05:50:37 -0700 |
---|---|---|
committer | Ole Trøan <otroan@employees.org> | 2017-10-25 16:28:03 +0000 |
commit | 5f3fcb96296a4769f55f60270e10c6294c604db9 (patch) | |
tree | 028293ba04f669187b8d41cd72f34f195e12e81b /src/vnet/adj | |
parent | 36ea2d6d3a67a60534a7c2b58551688858a1ce7f (diff) |
L3 proxy FIB source for container networking
Change-Id: I4164c4c19c8dbfd73e6ddf94a12056325cc093b9
Signed-off-by: Neale Ranns <nranns@cisco.com>
Signed-off-by: Andrew Yourtchenko <ayourtch@gmail.com>
Diffstat (limited to 'src/vnet/adj')
-rw-r--r-- | src/vnet/adj/adj.c | 10 | ||||
-rw-r--r-- | src/vnet/adj/adj_glean.c | 1 | ||||
-rw-r--r-- | src/vnet/adj/adj_internal.h | 2 | ||||
-rw-r--r-- | src/vnet/adj/adj_mcast.c | 2 | ||||
-rw-r--r-- | src/vnet/adj/adj_midchain.c | 1 | ||||
-rw-r--r-- | src/vnet/adj/adj_nbr.c | 2 |
6 files changed, 18 insertions, 0 deletions
diff --git a/src/vnet/adj/adj.c b/src/vnet/adj/adj.c index f84969136c9..5f7fe74cd43 100644 --- a/src/vnet/adj/adj.c +++ b/src/vnet/adj/adj.c @@ -208,6 +208,16 @@ adj_last_lock_gone (ip_adjacency_t *adj) pool_put(adj_pool, adj); } +u32 +adj_dpo_get_urpf (const dpo_id_t *dpo) +{ + ip_adjacency_t *adj; + + adj = adj_get(dpo->dpoi_index); + + return (adj->rewrite_header.sw_if_index); +} + void adj_lock (adj_index_t adj_index) { diff --git a/src/vnet/adj/adj_glean.c b/src/vnet/adj/adj_glean.c index 8d86e2a9f00..82023f12dd2 100644 --- a/src/vnet/adj/adj_glean.c +++ b/src/vnet/adj/adj_glean.c @@ -251,6 +251,7 @@ const static dpo_vft_t adj_glean_dpo_vft = { .dv_lock = adj_dpo_lock, .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_glean, + .dv_get_urpf = adj_dpo_get_urpf, }; /** diff --git a/src/vnet/adj/adj_internal.h b/src/vnet/adj/adj_internal.h index 2c123c542a1..ca41cb21d9e 100644 --- a/src/vnet/adj/adj_internal.h +++ b/src/vnet/adj/adj_internal.h @@ -109,4 +109,6 @@ extern void adj_glean_remove(fib_protocol_t proto, extern void adj_mcast_remove(fib_protocol_t proto, u32 sw_if_index); +extern u32 adj_dpo_get_urpf(const dpo_id_t *dpo); + #endif diff --git a/src/vnet/adj/adj_mcast.c b/src/vnet/adj/adj_mcast.c index da06cd00b4e..00a12ad330b 100644 --- a/src/vnet/adj/adj_mcast.c +++ b/src/vnet/adj/adj_mcast.c @@ -387,11 +387,13 @@ const static dpo_vft_t adj_mcast_dpo_vft = { .dv_lock = adj_dpo_lock, .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_mcast, + .dv_get_urpf = adj_dpo_get_urpf, }; const static dpo_vft_t adj_mcast_midchain_dpo_vft = { .dv_lock = adj_dpo_lock, .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_mcast_midchain, + .dv_get_urpf = adj_dpo_get_urpf, }; /** diff --git a/src/vnet/adj/adj_midchain.c b/src/vnet/adj/adj_midchain.c index e9a510b004c..370fa4652f8 100644 --- a/src/vnet/adj/adj_midchain.c +++ b/src/vnet/adj/adj_midchain.c @@ -615,6 +615,7 @@ const static dpo_vft_t adj_midchain_dpo_vft = { .dv_lock = adj_dpo_lock, .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_midchain, + .dv_get_urpf = adj_dpo_get_urpf, }; /** diff --git a/src/vnet/adj/adj_nbr.c b/src/vnet/adj/adj_nbr.c index 3d450d1fba3..fc7a7fcd93c 100644 --- a/src/vnet/adj/adj_nbr.c +++ b/src/vnet/adj/adj_nbr.c @@ -1047,11 +1047,13 @@ const static dpo_vft_t adj_nbr_dpo_vft = { .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_nbr, .dv_mem_show = adj_mem_show, + .dv_get_urpf = adj_dpo_get_urpf, }; const static dpo_vft_t adj_nbr_incompl_dpo_vft = { .dv_lock = adj_dpo_lock, .dv_unlock = adj_dpo_unlock, .dv_format = format_adj_nbr_incomplete, + .dv_get_urpf = adj_dpo_get_urpf, }; /** |