Acked-by: Sorin Vinturis <svintu...@cloudbasesolutions.com>

-----Original Message-----
From: dev [mailto:dev-boun...@openvswitch.org] On Behalf Of Alin Serdean
Sent: Thursday, 10 March, 2016 16:07
To: dev@openvswitch.org
Subject: [ovs-dev] [PATCH] datapath-windows: Add OVS_KEY_ATTR_ICMP support

Revisit the mapping of an IPv4 key to netlink key and add the according 
transformation.

Also add support for OVS_KEY_ATTR_ICMP to the windows datapath.

Signed-off-by: Alin Gabriel Serdean <aserd...@cloudbasesolutions.com>
---
 datapath-windows/ovsext/Flow.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c 
index 5eec513..9e9b8b0 100644
--- a/datapath-windows/ovsext/Flow.c
+++ b/datapath-windows/ovsext/Flow.c
@@ -1034,13 +1034,12 @@ _MapFlowIpv4KeyToNlKey(PNL_BUFFER nlBuf, IpKey 
*ipv4FlowPutKey)
 
         case IPPROTO_ICMP: {
             struct ovs_key_icmp icmpKey;
-            /* XXX: revisit to see if htons is needed */
-            icmpKey.icmp_type = (__u8)(ipv4FlowPutKey->l4.tpSrc);
-            icmpKey.icmp_code = (__u8)(ipv4FlowPutKey->l4.tpDst);
+            icmpKey.icmp_type = (__u8)ntohs(ipv4FlowPutKey->l4.tpSrc);
+            icmpKey.icmp_code = (__u8)ntohs(ipv4FlowPutKey->l4.tpDst);
 
             if (!NlMsgPutTailUnspec(nlBuf, OVS_KEY_ATTR_ICMP,
-                                   (PCHAR)(&icmpKey),
-                                   sizeof(icmpKey))) {
+                                    (PCHAR)(&icmpKey),
+                                    sizeof(icmpKey))) {
                 rc = STATUS_UNSUCCESSFUL;
                 goto done;
             }
@@ -1411,6 +1410,13 @@ _MapKeyAttrToFlowPut(PNL_ATTR *keyAttrs,
                 ipv4FlowPutKey->l4.tpDst = sctpKey->sctp_dst;
             }
 
+            if (keyAttrs[OVS_KEY_ATTR_ICMP]) {
+                const struct ovs_key_icmp *icmpKey;
+                icmpKey = NlAttrGet(keyAttrs[OVS_KEY_ATTR_ICMP]);
+                ipv4FlowPutKey->l4.tpSrc = htons(icmpKey->icmp_type);
+                ipv4FlowPutKey->l4.tpDst = htons(icmpKey->icmp_code);
+            }
+
             destKey->l2.keyLen += OVS_IP_KEY_SIZE;
         }
         break;
--
1.9.5.msysgit.0
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to