[ovs-dev] [PATCH v2] datapath-windows: Update VXLAN header information
Eitan Eliahu
eliahue at vmware.com
Mon Jul 13 17:54:13 UTC 2015
Thanks for addressing the issue!
Acked-by: Eitan Eliahu <eliahue at vmware.com>
Eitan
-----Original Message-----
From: dev [mailto:dev-bounces at openvswitch.org] On Behalf Of Alin Serdean
Sent: Monday, July 13, 2015 9:59 AM
To: dev at openvswitch.org
Subject: [ovs-dev] [PATCH v2] datapath-windows: Update VXLAN header information
Use tunnel key information on the IP header preceding the VXLAN header.
Signed-off-by: Alin Gabriel Serdean <aserdean at cloudbasesolutions.com>
---
v2: use separate variable to store the number of transmitted bytes
---
datapath-windows/ovsext/Vxlan.c | 13 ++++++++----- datapath-windows/ovsext/Vxlan.h | 1 +
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c index f43805a..4c44a54 100644
--- a/datapath-windows/ovsext/Vxlan.c
+++ b/datapath-windows/ovsext/Vxlan.c
@@ -15,6 +15,7 @@
*/
#include "precomp.h"
+#include "Atomic.h"
#include "NetProto.h"
#include "Switch.h"
#include "Vport.h"
@@ -263,11 +264,13 @@ OvsDoEncapVxlan(POVS_VPORT_ENTRY vport,
ipHdr = (IPHdr *)((PCHAR)ethHdr + sizeof *ethHdr);
ipHdr->ihl = sizeof *ipHdr / 4;
- ipHdr->version = IPV4;
- ipHdr->tos = 0;
+ ipHdr->version = IPPROTO_IPV4;
+ ipHdr->tos = tunKey->tos;
ipHdr->tot_len = htons(NET_BUFFER_DATA_LENGTH(curNb) - sizeof *ethHdr);
- ipHdr->id = 0;
- ipHdr->frag_off = IP_DF_NBO;
+ ipHdr->id = (uint16)atomic_add64(&vportVxlan->ipId,
+ NET_BUFFER_DATA_LENGTH(curNb));
+ ipHdr->frag_off = (tunKey->flags & OVS_TNL_F_DONT_FRAGMENT) ?
+ IP_DF_NBO : 0;
ipHdr->ttl = tunKey->ttl ? tunKey->ttl : VXLAN_DEFAULT_TTL;
ipHdr->protocol = IPPROTO_UDP;
ASSERT(tunKey->dst == fwdInfo->dstIpAddr); @@ -279,7 +282,7 @@ OvsDoEncapVxlan(POVS_VPORT_ENTRY vport,
/* UDP header */
udpHdr = (UDPHdr *)((PCHAR)ipHdr + sizeof *ipHdr);
- udpHdr->source = htons(tunKey->flow_hash | 32768);
+ udpHdr->source = htons(tunKey->flow_hash | MAXINT16);
udpHdr->dest = htons(vportVxlan->dstPort);
udpHdr->len = htons(NET_BUFFER_DATA_LENGTH(curNb) - headRoom +
sizeof *udpHdr + sizeof *vxlanHdr); diff --git a/datapath-windows/ovsext/Vxlan.h b/datapath-windows/ovsext/Vxlan.h index b010af0..a05834d 100644
--- a/datapath-windows/ovsext/Vxlan.h
+++ b/datapath-windows/ovsext/Vxlan.h
@@ -25,6 +25,7 @@ typedef struct _OVS_VXLAN_VPORT {
UINT64 slowInPkts;
UINT64 slowOutPkts;
UINT64 filterID;
+ UINT64 ipId;
/*
* To be filled
*/
--
1.9.5.msysgit.0
_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailman_listinfo_dev&d=BQIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=CWsgHUxi6ExLXY798tmo3LJ4e3geGYp56lkcH-5cLCY&m=sLmgmKYBzErgdoMYMwZPN5FTTawtYpMeXZQEUMdA32E&s=xCBCnNlcIRw8cupgUMSX1ZwjkglFlMgWQXhkFIU7Zpo&e=
More information about the dev
mailing list