From: Pravin B Shelar
There is check to disable IPv6 tunneling. Following patch
removes it and reintroduces the tunneling automake tests.
This reverts commit 250bd94d1e500a89c76cac944e660bd9c07ac364.
Signed-off-by: Pravin B Shelar
---
lib/netdev-vport.c| 8 ---
ofproto/tunnel.c | 8 ---
tests/tunnel-push-pop-ipv6.at | 141 --
3 files changed, 137 insertions(+), 20 deletions(-)
diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c
index e3e6305..1784a46 100644
--- a/lib/netdev-vport.c
+++ b/lib/netdev-vport.c
@@ -504,10 +504,6 @@ set_tunnel_config(struct netdev *dev_, const struct smap
*args)
name, node->value);
return EINVAL;
}
-if (dst_proto == ETH_TYPE_IPV6) {
-VLOG_WARN("%s: IPv6 'remote_ip' is not supported", name);
-return EOPNOTSUPP;
-}
} else if (!strcmp(node->key, "local_ip")) {
int err;
err = parse_tunnel_ip(node->value, true, _cfg.ip_src_flow,
@@ -517,10 +513,6 @@ set_tunnel_config(struct netdev *dev_, const struct smap
*args)
VLOG_WARN("%s: bad %s 'local_ip'", name, type);
break;
}
-if (src_proto == ETH_TYPE_IPV6) {
-VLOG_WARN("%s: IPv6 'local_ip' is not supported", name);
-return EOPNOTSUPP;
-}
} else if (!strcmp(node->key, "tos")) {
if (!strcmp(node->value, "inherit")) {
tnl_cfg.tos_inherit = true;
diff --git a/ofproto/tunnel.c b/ofproto/tunnel.c
index a63cf71..24b717a 100644
--- a/ofproto/tunnel.c
+++ b/ofproto/tunnel.c
@@ -427,14 +427,6 @@ tnl_port_send(const struct ofport_dpif *ofport, struct
flow *flow,
flow->tunnel.ipv6_dst = tnl_port->match.ipv6_dst;
}
}
-if (ipv6_addr_is_set(>tunnel.ipv6_dst) ||
-ipv6_addr_is_set(>tunnel.ipv6_src)) {
-out_port = ODPP_NONE;
-VLOG_WARN_RL(, "port (%s): IPv6 tunnel endpoint is not supported",
- netdev_get_name(tnl_port->netdev));
-goto out;
-}
-
flow->pkt_mark = tnl_port->match.pkt_mark;
if (!cfg->out_key_flow) {
diff --git a/tests/tunnel-push-pop-ipv6.at b/tests/tunnel-push-pop-ipv6.at
index d3b09b8..842f1d0 100644
--- a/tests/tunnel-push-pop-ipv6.at
+++ b/tests/tunnel-push-pop-ipv6.at
@@ -10,10 +10,143 @@ AT_CHECK([ovs-vsctl add-port int-br t2 -- set Interface t2
type=vxlan \
options:remote_ip=2001:cafe::92 options:key=456
ofport_request=3\
-- add-port int-br t3 -- set Interface t3 type=vxlan \
options:remote_ip=2001:cafe::93 options:out_key=flow
options:csum=true ofport_request=4\
- ], [0], [], [dnl
-ovs-vsctl: Error detected while setting up 't2', 't1', 't3'. See ovs-vswitchd
log for details.
+-- add-port int-br t4 -- set Interface t4 type=geneve \
+ options:remote_ip=flow options:key=123 ofport_request=5\
+ ], [0])
+
+AT_CHECK([ovs-appctl dpif/show], [0], [dnl
+dummy@ovs-dummy: hit:0 missed:0
+ br0:
+ br0 65534/100: (dummy)
+ p0 1/1: (dummy)
+ int-br:
+ int-br 65534/2: (dummy)
+ t1 3/3: (gre: key=456, remote_ip=2001:cafe::92)
+ t2 2/4789: (vxlan: key=123, remote_ip=2001:cafe::92)
+ t3 4/4789: (vxlan: csum=true, out_key=flow,
remote_ip=2001:cafe::93)
+ t4 5/6081: (geneve: key=123, remote_ip=flow)
+])
+
+dnl First setup dummy interface IP address, then add the route
+dnl so that tnl-port table can get valid IP address for the device.
+AT_CHECK([ovs-appctl netdev-dummy/ip6addr br0 2001:cafe::88/24], [0], [OK
+])
+AT_CHECK([ovs-appctl ovs/route/add 2001:cafe::92/24 br0], [0], [OK
+])
+
+AT_CHECK([ovs-ofctl add-flow br0 action=normal])
+
+dnl Check ARP Snoop
+AT_CHECK([ovs-appctl netdev-dummy/receive br0
'in_port(100),eth(src=f8:bc:12:44:34:b6,dst=aa:55:aa:55:00:00),eth_type(0x86dd),ipv6(src=2001:cafe::92,dst=2001:cafe::94,label=0,proto=58,tclass=0,hlimit=255,frag=no),icmpv6(type=136,code=0),nd(target=2001:cafe::92,sll=00:00:00:00:00:00,tll=f8:bc:12:44:34:b6)'])
+
+AT_CHECK([ovs-appctl netdev-dummy/receive br0
'in_port(100),eth(src=f8:bc:12:44:34:b7,dst=aa:55:aa:55:00:00),eth_type(0x86dd),ipv6(src=2001:cafe::93,dst=2001:cafe::94,label=0,proto=58,tclass=0,hlimit=255,frag=no),icmpv6(type=136,code=0),nd(target=2001:cafe::93,sll=00:00:00:00:00:00,tll=f8:bc:12:44:34:b7)'])
+
+AT_CHECK([ovs-appctl tnl/arp/show], [0], [dnl
+IPMAC Bridge
+==
+2001:cafe::92 f8:bc:12:44:34:b6 br0
+2001:cafe::93