gre: MPLS over GRE does not select correct fixup function
Type: fix Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I9eff41407b0f172f2b567e6a4ea1c48be8df883a
This commit is contained in:

committed by
Damjan Marion

parent
0c25492eb4
commit
533bf08cf4
53
src/scripts/vnet/mpls-to-dot1ad
Normal file
53
src/scripts/vnet/mpls-to-dot1ad
Normal file
@ -0,0 +1,53 @@
|
||||
|
||||
create packet-generator interface pg0
|
||||
create packet-generator interface pg1
|
||||
|
||||
set int ip address pg0 192.168.0.1/24
|
||||
|
||||
set int state pg0 up
|
||||
set int state pg1 up
|
||||
set int mac address pg1 00:00:00:00:00:11
|
||||
create sub-interface pg1 12 dot1ad 32 inner-dot1q 33
|
||||
set int state pg1.12 up
|
||||
set int l2 tag-rewrite pg1.12 pop 2
|
||||
|
||||
set ip neighbor pg0 192.168.0.2 1:2:3:4:5:6 static
|
||||
|
||||
create gre tunnel dst 192.168.0.2 src 192.168.0.1
|
||||
set int state gre0 up
|
||||
set int ip addr gre0 1.1.1.1/30
|
||||
|
||||
mpls table 0
|
||||
mpls tunnel add l2-only via 1.1.1.2 gre0 out-labels 33
|
||||
set int state mpls-tunnel0 up
|
||||
set int mpls gre0 enable
|
||||
|
||||
set int l2 xconnect pg1.12 mpls-tunnel0
|
||||
set int l2 xconnect mpls-tunnel0 pg1.12
|
||||
|
||||
mpls local-label add eos 33 via l2-input-on mpls-tunnel0
|
||||
|
||||
trace add pg-input 100
|
||||
|
||||
packet-generator new {
|
||||
name g2v
|
||||
limit 1
|
||||
node ip4-input
|
||||
interface pg0
|
||||
data {
|
||||
hex 0x4500002000000000fe2f3b5bc0a80002c0a800010000884700021140000000000011005056b77c83010203040506
|
||||
}
|
||||
}
|
||||
|
||||
packet-generator new {
|
||||
name v2g
|
||||
limit 1
|
||||
node ethernet-input
|
||||
interface pg1.12
|
||||
data {
|
||||
hex 0x000000000011005056b77c8388a80020810000210102030405060708
|
||||
}
|
||||
}
|
||||
|
||||
pack en g2v
|
||||
sh trace
|
@ -391,9 +391,9 @@ gre_get_fixup (fib_protocol_t fproto, vnet_link_t lt)
|
||||
return (gre64_fixup);
|
||||
if (fproto == FIB_PROTOCOL_IP4 && lt == VNET_LINK_IP4)
|
||||
return (gre44_fixup);
|
||||
if (fproto == FIB_PROTOCOL_IP6 && lt == VNET_LINK_ETHERNET)
|
||||
if (fproto == FIB_PROTOCOL_IP6)
|
||||
return (grex6_fixup);
|
||||
if (fproto == FIB_PROTOCOL_IP4 && lt == VNET_LINK_ETHERNET)
|
||||
if (fproto == FIB_PROTOCOL_IP4)
|
||||
return (grex4_fixup);
|
||||
|
||||
ASSERT (0);
|
||||
|
@ -14,7 +14,9 @@ from vpp_sub_interface import L2_VTR_OP, VppDot1QSubint
|
||||
from vpp_gre_interface import VppGreInterface
|
||||
from vpp_teib import VppTeib
|
||||
from vpp_ip import DpoProto
|
||||
from vpp_ip_route import VppIpRoute, VppRoutePath, VppIpTable, FibPathProto
|
||||
from vpp_ip_route import VppIpRoute, VppRoutePath, VppIpTable, FibPathProto, \
|
||||
VppMplsLabel
|
||||
from vpp_mpls_tunnel_interface import VppMPLSTunnelInterface
|
||||
from util import ppp, ppc
|
||||
from vpp_papi import VppEnum
|
||||
|
||||
@ -629,12 +631,64 @@ class TestGRE(VppTestCase):
|
||||
self.verify_tunneled_6o4(self.pg0, rx, tx,
|
||||
self.pg0.local_ip4, "1.1.1.2")
|
||||
|
||||
#
|
||||
# add a labelled route through the tunnel
|
||||
#
|
||||
label_via_tun = VppIpRoute(self, "5.4.3.2", 32,
|
||||
[VppRoutePath("0.0.0.0",
|
||||
gre_if.sw_if_index,
|
||||
labels=[VppMplsLabel(33)])])
|
||||
label_via_tun.add_vpp_config()
|
||||
|
||||
tx = self.create_stream_ip4(self.pg0, "5.5.5.5", "5.4.3.2")
|
||||
rx = self.send_and_expect(self.pg0, tx, self.pg0)
|
||||
self.verify_tunneled_4o4(self.pg0, rx, tx,
|
||||
self.pg0.local_ip4, "1.1.1.2")
|
||||
|
||||
#
|
||||
# an MPLS tunnel over the GRE tunnel add a route through
|
||||
# the mpls tunnel
|
||||
#
|
||||
mpls_tun = VppMPLSTunnelInterface(
|
||||
self,
|
||||
[VppRoutePath("0.0.0.0",
|
||||
gre_if.sw_if_index,
|
||||
labels=[VppMplsLabel(44),
|
||||
VppMplsLabel(46)])])
|
||||
mpls_tun.add_vpp_config()
|
||||
mpls_tun.admin_up()
|
||||
|
||||
label_via_mpls = VppIpRoute(self, "5.4.3.1", 32,
|
||||
[VppRoutePath("0.0.0.0",
|
||||
mpls_tun.sw_if_index,
|
||||
labels=[VppMplsLabel(33)])])
|
||||
label_via_mpls.add_vpp_config()
|
||||
|
||||
tx = self.create_stream_ip4(self.pg0, "5.5.5.5", "5.4.3.1")
|
||||
rx = self.send_and_expect(self.pg0, tx, self.pg0)
|
||||
self.verify_tunneled_4o4(self.pg0, rx, tx,
|
||||
self.pg0.local_ip4, "1.1.1.2")
|
||||
|
||||
mpls_tun_l2 = VppMPLSTunnelInterface(
|
||||
self,
|
||||
[VppRoutePath("0.0.0.0",
|
||||
gre_if.sw_if_index,
|
||||
labels=[VppMplsLabel(44),
|
||||
VppMplsLabel(46)])],
|
||||
is_l2=1)
|
||||
mpls_tun_l2.add_vpp_config()
|
||||
mpls_tun_l2.admin_up()
|
||||
|
||||
#
|
||||
# test case cleanup
|
||||
#
|
||||
route_tun_dst.remove_vpp_config()
|
||||
route_via_tun.remove_vpp_config()
|
||||
route6_via_tun.remove_vpp_config()
|
||||
label_via_mpls.remove_vpp_config()
|
||||
label_via_tun.remove_vpp_config()
|
||||
mpls_tun.remove_vpp_config()
|
||||
mpls_tun_l2.remove_vpp_config()
|
||||
gre_if.remove_vpp_config()
|
||||
|
||||
self.pg0.unconfig_ip6()
|
||||
|
Reference in New Issue
Block a user