summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2016-09-23 12:05:21 -0400
committerDave Barach <dave@barachs.net>2016-09-23 12:05:35 -0400
commit76260a61b258b16ea4f385eab7f69ce8a3bf7a25 (patch)
treec4b4d242e6558dbad7d8c66335424bc0dce292ae
parent4448957b1864bb1e640fec63cc6f61b1fb7e5b55 (diff)
Fix source RPF check in ip4_local
We need to accept src ip addresses which hit receive and clean adjacencies. Change-Id: I8cf07f622058203665ed09280452ed8412984bd5 Signed-off-by: Dave Barach <dave@barachs.net>
-rw-r--r--vnet/vnet/ip/ip4_forward.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vnet/vnet/ip/ip4_forward.c b/vnet/vnet/ip/ip4_forward.c
index 4c49d0e4916..f7cc7667069 100644
--- a/vnet/vnet/ip/ip4_forward.c
+++ b/vnet/vnet/ip/ip4_forward.c
@@ -1505,6 +1505,8 @@ ip4_local (vlib_main_t * vm,
error0 = (error0 == IP4_ERROR_UNKNOWN_PROTOCOL
&& dpo0->dpoi_type != DPO_ADJACENCY
&& dpo0->dpoi_type != DPO_ADJACENCY_INCOMPLETE
+ && dpo0->dpoi_type != DPO_RECEIVE
+ && dpo0->dpoi_type != DPO_ADJACENCY_GLEAN
&& ip0->dst_address.as_u32 != 0xFFFFFFFF
? IP4_ERROR_SRC_LOOKUP_MISS
: error0);
@@ -1514,6 +1516,8 @@ ip4_local (vlib_main_t * vm,
error1 = (error1 == IP4_ERROR_UNKNOWN_PROTOCOL
&& dpo1->dpoi_type != DPO_ADJACENCY
&& dpo1->dpoi_type != DPO_ADJACENCY_INCOMPLETE
+ && dpo0->dpoi_type != DPO_RECEIVE
+ && dpo0->dpoi_type != DPO_ADJACENCY_GLEAN
&& ip1->dst_address.as_u32 != 0xFFFFFFFF
? IP4_ERROR_SRC_LOOKUP_MISS
: error1);
@@ -1669,6 +1673,7 @@ ip4_local (vlib_main_t * vm,
&& dpo0->dpoi_type != DPO_ADJACENCY
&& dpo0->dpoi_type != DPO_ADJACENCY_INCOMPLETE
&& dpo0->dpoi_type != DPO_RECEIVE
+ && dpo0->dpoi_type != DPO_ADJACENCY_GLEAN
&& ip0->dst_address.as_u32 != 0xFFFFFFFF
? IP4_ERROR_SRC_LOOKUP_MISS
: error0);