summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Datapath.c
diff options
context:
space:
mode:
authorAnand Kumar <kumaranand@vmware.com>2018-09-19 11:39:21 -0700
committerAlin Gabriel Serdean <aserdean@ovn.org>2018-09-20 14:31:34 +0300
commita1d4207e2c8a751d03b45fa21e5d8370713b9047 (patch)
tree8efce3a3b1d7ef71f8fcc8b3c0b73a31bf1b7b45 /datapath-windows/ovsext/Datapath.c
parent37ed637239bed0102037d6df2752fc515d6b4ed9 (diff)
downloadopenvswitch-a1d4207e2c8a751d03b45fa21e5d8370713b9047.tar.gz
datapath-windows: Add support to configure ct zone limits
This patch implements limiting conntrack entries per zone using dpctl commands. Example: ovs-appctl dpctl/ct-set-limits default=5 zone=1,limit=2 zone=1,limit=3 ovs-appctl dpct/ct-del-limits zone=4 ovs-appctl dpct/ct-get-limits zone=1,2,3 - Also update the netlink-socket.c to support netlink family 'OVS_WIN_NL_CTLIMIT_FAMILY_ID' for conntrack zone limit. Signed-off-by: Anand Kumar <kumaranand@vmware.com> Acked-by: Alin Gabriel Serdean <aserdean@ovn.org> Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/Datapath.c')
-rw-r--r--datapath-windows/ovsext/Datapath.c34
1 files changed, 33 insertions, 1 deletions
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index 34ef2b40a..fa994840a 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -99,7 +99,8 @@ NetlinkCmdHandler OvsGetNetdevCmdHandler,
OvsSubscribePacketCmdHandler,
OvsReadPacketCmdHandler,
OvsCtDeleteCmdHandler,
- OvsCtDumpCmdHandler;
+ OvsCtDumpCmdHandler,
+ OvsCtLimitHandler;
static NTSTATUS HandleGetDpTransaction(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
UINT32 *replyLen);
@@ -324,6 +325,34 @@ NETLINK_FAMILY nlNetdevFamilyOps = {
.opsCount = ARRAY_SIZE(nlNetdevFamilyCmdOps)
};
+
+/* Netlink conntrack limit family. */
+NETLINK_CMD nlCtLimitFamilyCmdOps[] = {
+ { .cmd = OVS_CT_LIMIT_CMD_GET,
+ .handler = OvsCtLimitHandler,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+ { .cmd = OVS_CT_LIMIT_CMD_SET,
+ .handler = OvsCtLimitHandler,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+ { .cmd = OVS_CT_LIMIT_CMD_DEL,
+ .handler = OvsCtLimitHandler,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+};
+
+NETLINK_FAMILY nlCtLimitFamilyOps = {
+ .name = OVS_CT_LIMIT_FAMILY,
+ .id = OVS_WIN_NL_CTLIMIT_FAMILY_ID,
+ .version = OVS_CT_LIMIT_VERSION,
+ .maxAttr = OVS_CT_LIMIT_ATTR_MAX,
+ .cmds = nlCtLimitFamilyCmdOps,
+ .opsCount = ARRAY_SIZE(nlCtLimitFamilyCmdOps)
+};
static NTSTATUS MapIrpOutputBuffer(PIRP irp,
UINT32 bufferLength,
UINT32 requiredLength,
@@ -941,6 +970,9 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject,
case OVS_WIN_NL_NETDEV_FAMILY_ID:
nlFamilyOps = &nlNetdevFamilyOps;
break;
+ case OVS_WIN_NL_CTLIMIT_FAMILY_ID:
+ nlFamilyOps = &nlCtLimitFamilyOps;
+ break;
default:
status = STATUS_INVALID_PARAMETER;
goto done;