summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNeale Ranns <nranns@cisco.com>2020-10-08 08:10:34 +0000
committerDamjan Marion <dmarion@me.com>2020-10-08 13:06:01 +0000
commit533bf08cf491a9b74cf761abf05709248a80b274 (patch)
treeeb4d067136f9f5389fd47f44acbe12ce504e52b8 /src
parent0c25492eb42645f43e3fbbcf7407462429a03c65 (diff)
gre: MPLS over GRE does not select correct fixup function
Type: fix Signed-off-by: Neale Ranns <nranns@cisco.com> Change-Id: I9eff41407b0f172f2b567e6a4ea1c48be8df883a
Diffstat (limited to 'src')
-rw-r--r--src/scripts/vnet/mpls-to-dot1ad53
-rw-r--r--src/vnet/gre/gre.c4
2 files changed, 55 insertions, 2 deletions
diff --git a/src/scripts/vnet/mpls-to-dot1ad b/src/scripts/vnet/mpls-to-dot1ad
new file mode 100644
index 00000000000..93d3a701595
--- /dev/null
+++ b/src/scripts/vnet/mpls-to-dot1ad
@@ -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
diff --git a/src/vnet/gre/gre.c b/src/vnet/gre/gre.c
index 439c542b291..5b102ae3992 100644
--- a/src/vnet/gre/gre.c
+++ b/src/vnet/gre/gre.c
@@ -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);