summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Datapath.c
diff options
context:
space:
mode:
Diffstat (limited to 'datapath-windows/ovsext/Datapath.c')
-rw-r--r--datapath-windows/ovsext/Datapath.c46
1 files changed, 45 insertions, 1 deletions
diff --git a/datapath-windows/ovsext/Datapath.c b/datapath-windows/ovsext/Datapath.c
index fa994840a..37db5bd17 100644
--- a/datapath-windows/ovsext/Datapath.c
+++ b/datapath-windows/ovsext/Datapath.c
@@ -100,7 +100,11 @@ NetlinkCmdHandler OvsGetNetdevCmdHandler,
OvsReadPacketCmdHandler,
OvsCtDeleteCmdHandler,
OvsCtDumpCmdHandler,
- OvsCtLimitHandler;
+ OvsCtLimitHandler,
+ OvsMeterFeatureProbe,
+ OvsNewMeterCmdHandler,
+ OvsMeterDestroy,
+ OvsMeterGet;
static NTSTATUS HandleGetDpTransaction(POVS_USER_PARAMS_CONTEXT usrParamsCtx,
UINT32 *replyLen);
@@ -307,6 +311,43 @@ NETLINK_FAMILY nlCtFamilyOps = {
.opsCount = ARRAY_SIZE(nlCtFamilyCmdOps)
};
+/* Netlink Meter family */
+NETLINK_CMD nlMeterFamilyCmdOps[] = {
+ { .cmd = OVS_METER_CMD_FEATURES,
+ .handler = OvsMeterFeatureProbe,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP |
+ OVS_WRITE_DEV_OP | OVS_READ_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+ { .cmd = OVS_METER_CMD_SET,
+ .handler = OvsNewMeterCmdHandler,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP |
+ OVS_WRITE_DEV_OP | OVS_READ_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+ { .cmd = OVS_METER_CMD_GET,
+ .handler = OvsMeterGet,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP |
+ OVS_WRITE_DEV_OP | OVS_READ_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+ { .cmd = OVS_METER_CMD_DEL,
+ .handler = OvsMeterDestroy,
+ .supportedDevOp = OVS_TRANSACTION_DEV_OP |
+ OVS_WRITE_DEV_OP | OVS_READ_DEV_OP,
+ .validateDpIndex = FALSE
+ },
+};
+
+NETLINK_FAMILY nlMeterFamilyOps = {
+ .name = OVS_METER_FAMILY,
+ .id = OVS_WIN_NL_METER_FAMILY_ID,
+ .version = OVS_METER_VERSION,
+ .maxAttr = __OVS_METER_ATTR_MAX,
+ .cmds = nlMeterFamilyCmdOps,
+ .opsCount = ARRAY_SIZE(nlMeterFamilyCmdOps)
+};
+
/* Netlink netdev family. */
NETLINK_CMD nlNetdevFamilyCmdOps[] = {
{ .cmd = OVS_WIN_NETDEV_CMD_GET,
@@ -952,6 +993,9 @@ OvsDeviceControl(PDEVICE_OBJECT deviceObject,
case NFNL_TYPE_CT_DEL:
nlFamilyOps = &nlCtFamilyOps;
break;
+ case OVS_WIN_NL_METER_FAMILY_ID:
+ nlFamilyOps = &nlMeterFamilyOps;
+ break;
case OVS_WIN_NL_CTRL_FAMILY_ID:
nlFamilyOps = &nlControlFamilyOps;
break;