Fix source RPF check in ip4_local 17/3117/1
authorDave Barach <dave@barachs.net>
Fri, 23 Sep 2016 16:05:21 +0000 (12:05 -0400)
committerDave Barach <dave@barachs.net>
Fri, 23 Sep 2016 16:05:35 +0000 (12:05 -0400)
We need to accept src ip addresses which hit receive and clean
adjacencies.

Change-Id: I8cf07f622058203665ed09280452ed8412984bd5
Signed-off-by: Dave Barach <dave@barachs.net>
vnet/vnet/ip/ip4_forward.c

index 4c49d0e..f7cc766 100644 (file)
@@ -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);