aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStanislav Zaikin <zstaseg@gmail.com>2020-12-03 19:09:53 +0000
committerDamjan Marion <dmarion@me.com>2020-12-11 23:31:49 +0000
commit938af5e2710a789da2e7a5eb26ecdedcb68c508e (patch)
treee30ce54da823ae701a02577403e25f2c1ca198ad
parentb801cd1b31e44e9e90f4619db0cad4ab661019e5 (diff)
pppoe: fix VLIB_RX into the pppoe-input node
Previously, RX interface for PPPoE packets was set as the original interface. Now it is set as corresponding PPPoE interface in the "pppoe-input" node. We need to do it because otherwise IP or other settings won't be working onto the PPPoE interface (only on original rx interface). Type: fix Signed-off-by: Stanislav Zaikin <zstaseg@gmail.com> Change-Id: If9cc37608aa5fe685b8278dd99b819b7eddc6c38
-rw-r--r--src/plugins/pppoe/pppoe_decap.c3
-rw-r--r--src/plugins/pppoe/test/test_pppoe.py5
-rw-r--r--src/plugins/pppoe/test/vpp_pppoe_interface.py7
3 files changed, 15 insertions, 0 deletions
diff --git a/src/plugins/pppoe/pppoe_decap.c b/src/plugins/pppoe/pppoe_decap.c
index b2a6e4a396e..71b9874081e 100644
--- a/src/plugins/pppoe/pppoe_decap.c
+++ b/src/plugins/pppoe/pppoe_decap.c
@@ -181,6 +181,7 @@ VLIB_NODE_FN (pppoe_input_node) (vlib_main_t * vm,
sw_if_index0 = t0->sw_if_index;
len0 = vlib_buffer_length_in_chain (vm, b0);
+ vnet_buffer(b0)->sw_if_index[VLIB_RX] = sw_if_index0;
pkts_decapsulated ++;
stats_n_packets += 1;
@@ -274,6 +275,7 @@ VLIB_NODE_FN (pppoe_input_node) (vlib_main_t * vm,
sw_if_index1 = t1->sw_if_index;
len1 = vlib_buffer_length_in_chain (vm, b1);
+ vnet_buffer(b1)->sw_if_index[VLIB_RX] = sw_if_index1;
pkts_decapsulated ++;
stats_n_packets += 1;
@@ -398,6 +400,7 @@ VLIB_NODE_FN (pppoe_input_node) (vlib_main_t * vm,
sw_if_index0 = t0->sw_if_index;
len0 = vlib_buffer_length_in_chain (vm, b0);
+ vnet_buffer(b0)->sw_if_index[VLIB_RX] = sw_if_index0;
pkts_decapsulated ++;
stats_n_packets += 1;
diff --git a/src/plugins/pppoe/test/test_pppoe.py b/src/plugins/pppoe/test/test_pppoe.py
index cce8fe7fc50..99dba01cdc9 100644
--- a/src/plugins/pppoe/test/test_pppoe.py
+++ b/src/plugins/pppoe/test/test_pppoe.py
@@ -211,6 +211,7 @@ class TestPPPoE(VppTestCase):
self.pg0.remote_mac,
self.session_id)
pppoe_if.add_vpp_config()
+ pppoe_if.set_unnumbered(self.pg0.sw_if_index)
#
# Send tunneled packets that match the created tunnel and
@@ -274,6 +275,7 @@ class TestPPPoE(VppTestCase):
self.pg0.remote_mac,
self.session_id)
pppoe_if.add_vpp_config()
+ pppoe_if.set_unnumbered(self.pg0.sw_if_index)
#
# Send a packet stream that is routed into the session
@@ -337,6 +339,7 @@ class TestPPPoE(VppTestCase):
self.pg0.remote_mac,
self.session_id)
pppoe_if.add_vpp_config()
+ pppoe_if.set_unnumbered(self.pg0.sw_if_index)
#
# The double create (create the same session twice) should fail,
@@ -445,6 +448,7 @@ class TestPPPoE(VppTestCase):
self.pg0.remote_mac,
self.session_id)
pppoe_if1.add_vpp_config()
+ pppoe_if1.set_unnumbered(self.pg0.sw_if_index)
# Send PPPoE Discovery 2
tx3 = self.create_stream_pppoe_discovery(self.pg2, self.pg1,
@@ -465,6 +469,7 @@ class TestPPPoE(VppTestCase):
self.pg2.remote_mac,
self.session_id + 1)
pppoe_if2.add_vpp_config()
+ pppoe_if2.set_unnumbered(self.pg0.sw_if_index)
#
# Send tunneled packets that match the created tunnel and
diff --git a/src/plugins/pppoe/test/vpp_pppoe_interface.py b/src/plugins/pppoe/test/vpp_pppoe_interface.py
index 3767aa1d086..505ac4c6425 100644
--- a/src/plugins/pppoe/test/vpp_pppoe_interface.py
+++ b/src/plugins/pppoe/test/vpp_pppoe_interface.py
@@ -17,6 +17,7 @@ class VppPppoeInterface(VppInterface):
self.client_mac = client_mac
self.session_id = session_id
self.decap_vrf_id = decap_vrf_id
+ self.vpp_sw_if_index = -1
def add_vpp_config(self):
r = self.test.vapi.pppoe_add_del_session(
@@ -24,6 +25,7 @@ class VppPppoeInterface(VppInterface):
session_id=self.session_id,
decap_vrf_id=self.decap_vrf_id)
self.set_sw_if_index(r.sw_if_index)
+ self.vpp_sw_if_index = r.sw_if_index
self.generate_remote_hosts()
def remove_vpp_config(self):
@@ -33,3 +35,8 @@ class VppPppoeInterface(VppInterface):
session_id=self.session_id,
decap_vrf_id=self.decap_vrf_id,
is_add=0)
+
+ def set_unnumbered(self, swif_iface):
+ self.test.vapi.sw_interface_set_unnumbered(
+ swif_iface,
+ self.vpp_sw_if_index)