[ovs-dev] [PATCH v3 3/9] datapath-windows: Add support for flushing conntrack entries

Nithin Raju nithin at vmware.com
Mon Jun 27 20:19:35 UTC 2016


CTA_ZONE is not defined yet, and I see it is defined in 4/9.


Don¹t you have to return anything upon success in OvsCtDeleteCmdHandler().
The operation type is a OVS_TRANSACTION_DEV_OP. See Flow.c for example:
https://github.com/openvswitch/ovs/blob/master/datapath-windows/ovsext/Flow
.c#L301

-- Nithin

-----Original Message-----
From: dev <dev-bounces at openvswitch.org> on behalf of Sairam Venugopal
<vsairam at vmware.com>
Date: Friday, June 24, 2016 at 12:03 PM
To: "dev at openvswitch.org" <dev at openvswitch.org>
Subject: [ovs-dev] [PATCH v3 3/9] datapath-windows: Add support for
flushing	conntrack entries

>Flush out all conntrack entries or those that match a given zone. Since
>the conntrack module is internal to OVS in Windows, this functionality
>needs to be added in.
>
>Signed-off-by: Sairam Venugopal <vsairam at vmware.com>
>Acked-by: Paul-Daniel Boca <pboca at cloudbasesolutions.com>
>---
> datapath-windows/ovsext/Conntrack.c | 75
>+++++++++++++++++++++++++++++++++++++
> 1 file changed, 75 insertions(+)
>
>diff --git a/datapath-windows/ovsext/Conntrack.c
>b/datapath-windows/ovsext/Conntrack.c
>index 5fc9282..15c495d 100644
>--- a/datapath-windows/ovsext/Conntrack.c
>+++ b/datapath-windows/ovsext/Conntrack.c
>@@ -624,3 +624,78 @@ ovsConntrackEntryCleaner(PVOID data)
> 
>     PsTerminateSystemThread(STATUS_SUCCESS);
> }
>+
>+/*
>+ 
>*-------------------------------------------------------------------------
>---
>+ * OvsCtFlush
>+ *     Flushes out all Conntrack Entries that match the given zone
>+ 
>*-------------------------------------------------------------------------
>---
>+ */
>+static __inline NDIS_STATUS
>+OvsCtFlush(UINT16 zone)
>+{
>+    PLIST_ENTRY link, next;
>+    POVS_CT_ENTRY entry;
>+
>+    LOCK_STATE_EX lockState;
>+    NdisAcquireRWLockWrite(ovsConntrackLockObj, &lockState, 0);
>+
>+    for (int i = 0; i < CT_HASH_TABLE_SIZE; i++) {
>+        LIST_FORALL_SAFE(&ovsConntrackTable[i], link, next) {
>+            entry = CONTAINING_RECORD(link, OVS_CT_ENTRY, link);
>+            if (!zone || zone == entry->key.zone)
>+                OvsCtEntryDelete(entry);
>+        }
>+    }
>+
>+    NdisReleaseRWLock(ovsConntrackLockObj, &lockState);
>+    return NDIS_STATUS_SUCCESS;
>+}
>+
>+NTSTATUS
>+OvsCtDeleteCmdHandler(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
>+                      UINT32 *replyLen)
>+{
>+    POVS_MESSAGE msgIn = (POVS_MESSAGE)usrParamsCtx->inputBuffer;
>+    PNL_MSG_HDR nlMsgHdr = &(msgIn->nlMsg);
>+    PNL_ATTR ctAttrs[__CTA_MAX];
>+    UINT32 attrOffset = NLMSG_HDRLEN + NF_GEN_MSG_HDRLEN + OVS_HDRLEN;
>+    NL_ERROR nlError = NL_ERROR_SUCCESS;
>+    NTSTATUS status;
>+    UINT16 zone = 0;
>+
>+    static const NL_POLICY ctZonePolicy[] = {
>+        [CTA_ZONE] = { .type = NL_A_BE16, .optional = TRUE },
>+    };
>+
>+    if ((NlAttrParse(nlMsgHdr, attrOffset, NfNlMsgAttrsLen(nlMsgHdr),
>+        ctZonePolicy, ARRAY_SIZE(ctZonePolicy),
>+        ctAttrs, ARRAY_SIZE(ctAttrs)))
>+        != TRUE) {
>+        OVS_LOG_ERROR("Zone attr parsing failed for msg: %p", nlMsgHdr);
>+        status = STATUS_INVALID_PARAMETER;
>+        goto done;
>+    }
>+
>+    if (ctAttrs[CTA_ZONE]) {
>+        zone = NlAttrGetU16(ctAttrs[CTA_ZONE]);
>+    }
>+
>+    status = OvsCtFlush(zone);
>+
>+done:
>+    if (status) {
>+        nlError = NlMapStatusToNlErr(status);
>+    }
>+    if (nlError != NL_ERROR_SUCCESS) {
>+        POVS_MESSAGE_ERROR msgError = (POVS_MESSAGE_ERROR)
>+                                       usrParamsCtx->outputBuffer;
>+
>+        ASSERT(msgError);
>+        NlBuildErrorMsg(msgIn, msgError, nlError, replyLen);
>+        ASSERT(*replyLen != 0);
>+        status = STATUS_SUCCESS;
>+    }
>+
>+    return status;
>+}
>-- 
>2.5.0.windows.1
>
>_______________________________________________
>dev mailing list
>dev at openvswitch.org
>https://urldefense.proofpoint.com/v2/url?u=http-3A__openvswitch.org_mailma
>n_listinfo_dev&d=CwIGaQ&c=Sqcl0Ez6M0X8aeM67LKIiDJAXVeAw-YihVMNtXt-uEs&r=pN
>HQcdr7B40b4h6Yb7FIedI1dnBsxdDuTLBYD3JqV80&m=sDVTDLzIeFV8CdglHvFqzyKhA4D5UY
>7yjpBedaeSPVs&s=_p8ReK6W74YrArXBrNwcGs8vk_DSWMGS5Vbd6mfmXic&e= 




More information about the dev mailing list