Hi Nithin, While reading the ETHERTYPE attribute we already use ntohs.
Regards, Ankur ________________________________________ From: dev <dev-boun...@openvswitch.org> on behalf of Nithin Raju <nit...@vmware.com> Sent: Thursday, October 16, 2014 10:52 PM To: dev@openvswitch.org Subject: [ovs-dev] [PATCH 2/4] datapath-windows: fixes in Flow.c in key parsing Signed-off-by: Nithin Raju <nit...@vmware.com> --- datapath-windows/ovsext/Flow.c | 43 ++++++++++++++++++++------------------- 1 files changed, 22 insertions(+), 21 deletions(-) diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index f3ee726..fa61262 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -1267,20 +1267,19 @@ _MapKeyAttrToFlowPut(PNL_ATTR *keyAttrs, * requests with no ETHERTYPE attributes. * Need to verify this. */ if (keyAttrs[OVS_KEY_ATTR_ETHERTYPE]) { - destKey->l2.dlType = ntohs((NlAttrGetU16(keyAttrs - [OVS_KEY_ATTR_ETHERTYPE]))); + destKey->l2.dlType = ntohs((NlAttrGetU16(keyAttrs + [OVS_KEY_ATTR_ETHERTYPE]))); } if (keyAttrs[OVS_KEY_ATTR_VLAN]) { - destKey->l2.vlanTci = NlAttrGetU16(keyAttrs - [OVS_KEY_ATTR_VLAN]); + destKey->l2.vlanTci = NlAttrGetU16(keyAttrs[OVS_KEY_ATTR_VLAN]); } /* ==== L3 + L4. ==== */ destKey->l2.keyLen = OVS_WIN_TUNNEL_KEY_SIZE + OVS_L2_KEY_SIZE - destKey->l2.offset; - switch (destKey->l2.dlType) { + switch (ntohs(destKey->l2.dlType)) { case ETH_TYPE_IPV4: { if (keyAttrs[OVS_KEY_ATTR_IPV4]) { @@ -1395,22 +1394,24 @@ _MapKeyAttrToFlowPut(PNL_ATTR *keyAttrs, } case ETH_TYPE_ARP: case ETH_TYPE_RARP: { - ArpKey *arpFlowPutKey = &destKey->arpKey; - const struct ovs_key_arp *arpKey; - - arpKey = NlAttrGet(keyAttrs[OVS_KEY_ATTR_ARP]); - - arpFlowPutKey->nwSrc = arpKey->arp_sip; - arpFlowPutKey->nwDst = arpKey->arp_tip; - - RtlCopyMemory(arpFlowPutKey->arpSha, arpKey->arp_sha, ETH_ADDR_LEN); - RtlCopyMemory(arpFlowPutKey->arpTha, arpKey->arp_tha, ETH_ADDR_LEN); - arpFlowPutKey->nwProto = (UINT8)(arpKey->arp_op); - arpFlowPutKey->pad[0] = 0; - arpFlowPutKey->pad[1] = 0; - arpFlowPutKey->pad[2] = 0; - destKey->l2.keyLen += OVS_ARP_KEY_SIZE; - break; + if (keyAttrs[OVS_KEY_ATTR_ARP]) { + ArpKey *arpFlowPutKey = &destKey->arpKey; + const struct ovs_key_arp *arpKey; + + arpKey = NlAttrGet(keyAttrs[OVS_KEY_ATTR_ARP]); + + arpFlowPutKey->nwSrc = arpKey->arp_sip; + arpFlowPutKey->nwDst = arpKey->arp_tip; + + RtlCopyMemory(arpFlowPutKey->arpSha, arpKey->arp_sha, ETH_ADDR_LEN); + RtlCopyMemory(arpFlowPutKey->arpTha, arpKey->arp_tha, ETH_ADDR_LEN); + arpFlowPutKey->nwProto = (UINT8)(arpKey->arp_op); + arpFlowPutKey->pad[0] = 0; + arpFlowPutKey->pad[1] = 0; + arpFlowPutKey->pad[2] = 0; + destKey->l2.keyLen += OVS_ARP_KEY_SIZE; + break; + } } } } -- 1.7.4.1 _______________________________________________ dev mailing list dev@openvswitch.org https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=f6EhnZ0ORGZNt5QbYmRaOxfWfx%2Bqd3KEiPf3%2FYaollU%3D%0A&m=jCDA1pWsDkBchl%2B6LQPbLbMuTXTPlVqZIjhz2oFAtYI%3D%0A&s=a2a2699705f1dd5d7c08c077b9373536039ccff323849677705d82283800ce3b _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev