diff mbox

[ovs-dev] datapath-windows: Add OVS_KEY_ATTR_ICMP support

Message ID 1457618830-4908-1-git-send-email-aserdean@cloudbasesolutions.com
State Not Applicable
Headers show

Commit Message

Alin Serdean March 10, 2016, 2:07 p.m. UTC
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 <aserdean@cloudbasesolutions.com>
---
 datapath-windows/ovsext/Flow.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

Comments

Ben Pfaff March 29, 2016, 3:29 p.m. UTC | #1
On Thu, Mar 10, 2016 at 02:07:06PM +0000, Alin Serdean wrote:
> 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 <aserdean@cloudbasesolutions.com>

Though this was acked, it gets patch rejects when I try to apply it.
Alin Serdean March 31, 2016, 9:21 a.m. UTC | #2
Rebased: http://patchwork.ozlabs.org/patch/604021/ 

Thanks,
Alin

> -----Mesaj original-----
> De la: Ben Pfaff [mailto:blp@ovn.org]
> Trimis: Tuesday, March 29, 2016 6:30 PM
> Către: Alin Serdean <aserdean@cloudbasesolutions.com>
> Cc: dev@openvswitch.org
> Subiect: Re: [ovs-dev] [PATCH] datapath-windows: Add
> OVS_KEY_ATTR_ICMP support
> 
> On Thu, Mar 10, 2016 at 02:07:06PM +0000, Alin Serdean wrote:
> > 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 <aserdean@cloudbasesolutions.com>
> 
> Though this was acked, it gets patch rejects when I try to apply it.
diff mbox

Patch

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;