From fdb876e405c797d789a38f06ad90f8402155f7b6 Mon Sep 17 00:00:00 2001 From: Alin Serdean Date: Thu, 31 Mar 2016 09:16:52 +0000 Subject: 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 Acked-by: Sorin Vinturis Signed-off-by: Ben Pfaff --- datapath-windows/ovsext/Flow.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'datapath-windows/ovsext/Flow.c') diff --git a/datapath-windows/ovsext/Flow.c b/datapath-windows/ovsext/Flow.c index b9623b11d..c079540b1 100644 --- a/datapath-windows/ovsext/Flow.c +++ b/datapath-windows/ovsext/Flow.c @@ -1066,9 +1066,8 @@ _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), @@ -1452,6 +1451,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; -- cgit v1.2.1