If a packet arrives on a tunnel port and is again transmitted on a tunnel port, the packet needs to be encapsulated.
Eg: Sample flow which arrives on a tunnel port and gets encapsulated again. eth(src=00:15:5d:ae:b7:b1,dst=ff:ff:ff:ff:ff:ff),in_port(5),eth_type(0x0806), arp(sip=192.168.1.12,tip=192.168.1.78,op=1,sha=00:15:5d:ae:b7:b1,tha=00:00:00:00:00:00), tunnel(tun_id=0x5b88,dst=192.165.226.191,src=192.166.255.253,tos=0,ttl=63, geneve({class=0x104,type=0x80,len=4,0x11680100}),flags(key)) actions:set(tunnel(tun_id=0x5b88,dst=192.165.226.190,ttl=64, geneve({class=0x104,type=0x80,len=4,0x1680100}),flags(df|csum|key))),5,4 Signed-off-by: Sairam Venugopal <vsai...@vmware.com> --- datapath-windows/ovsext/Actions.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c index 722a2a8..f46309a 100644 --- a/datapath-windows/ovsext/Actions.c +++ b/datapath-windows/ovsext/Actions.c @@ -311,7 +311,7 @@ OvsDetectTunnelPkt(OvsForwardingContext *ovsFwdCtx, * - a VIF port * - a bridge-internal port (packets generated from userspace) * - no port. - * + * - tunnel port * If the packet will not be encapsulated, consume the tunnel context * by clearing it. */ @@ -322,7 +322,8 @@ OvsDetectTunnelPkt(OvsForwardingContext *ovsFwdCtx, if (!vport || (vport->ovsType != OVS_VPORT_TYPE_NETDEV && - !OvsIsBridgeInternalVport(vport))) { + !OvsIsBridgeInternalVport(vport) && + !OvsIsTunnelVportType(vport->ovsType))) { ovsFwdCtx->tunKey.dst = 0; } } -- 2.9.0.windows.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev