diff options
author | Neale Ranns <nranns@cisco.com> | 2020-10-08 08:10:34 +0000 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-10-08 13:06:01 +0000 |
commit | 533bf08cf491a9b74cf761abf05709248a80b274 (patch) | |
tree | eb4d067136f9f5389fd47f44acbe12ce504e52b8 /src | |
parent | 0c25492eb42645f43e3fbbcf7407462429a03c65 (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-dot1ad | 53 | ||||
-rw-r--r-- | src/vnet/gre/gre.c | 4 |
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); |