[ovs-dev] [PATCH] datapath-windows: Add OVS_KEY_ATTR_ICMP support
Alin Serdean
aserdean at cloudbasesolutions.com
Thu Mar 10 14:07:06 UTC 2016
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 at 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
More information about the dev
mailing list