[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