summaryrefslogtreecommitdiffstats
path: root/net/openvswitch/datapath.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/openvswitch/datapath.c')
-rw-r--r--net/openvswitch/datapath.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 3b99fc3de9ac..b95015c7e999 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -639,6 +639,7 @@ static const struct nla_policy packet_policy[OVS_PACKET_ATTR_MAX + 1] = {
639 639
640static const struct genl_ops dp_packet_genl_ops[] = { 640static const struct genl_ops dp_packet_genl_ops[] = {
641 { .cmd = OVS_PACKET_CMD_EXECUTE, 641 { .cmd = OVS_PACKET_CMD_EXECUTE,
642 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
642 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 643 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
643 .doit = ovs_packet_cmd_execute 644 .doit = ovs_packet_cmd_execute
644 } 645 }
@@ -1424,19 +1425,23 @@ static const struct nla_policy flow_policy[OVS_FLOW_ATTR_MAX + 1] = {
1424 1425
1425static const struct genl_ops dp_flow_genl_ops[] = { 1426static const struct genl_ops dp_flow_genl_ops[] = {
1426 { .cmd = OVS_FLOW_CMD_NEW, 1427 { .cmd = OVS_FLOW_CMD_NEW,
1428 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1427 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1429 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1428 .doit = ovs_flow_cmd_new 1430 .doit = ovs_flow_cmd_new
1429 }, 1431 },
1430 { .cmd = OVS_FLOW_CMD_DEL, 1432 { .cmd = OVS_FLOW_CMD_DEL,
1433 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1431 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1434 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1432 .doit = ovs_flow_cmd_del 1435 .doit = ovs_flow_cmd_del
1433 }, 1436 },
1434 { .cmd = OVS_FLOW_CMD_GET, 1437 { .cmd = OVS_FLOW_CMD_GET,
1438 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1435 .flags = 0, /* OK for unprivileged users. */ 1439 .flags = 0, /* OK for unprivileged users. */
1436 .doit = ovs_flow_cmd_get, 1440 .doit = ovs_flow_cmd_get,
1437 .dumpit = ovs_flow_cmd_dump 1441 .dumpit = ovs_flow_cmd_dump
1438 }, 1442 },
1439 { .cmd = OVS_FLOW_CMD_SET, 1443 { .cmd = OVS_FLOW_CMD_SET,
1444 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1440 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1445 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1441 .doit = ovs_flow_cmd_set, 1446 .doit = ovs_flow_cmd_set,
1442 }, 1447 },
@@ -1814,19 +1819,23 @@ static const struct nla_policy datapath_policy[OVS_DP_ATTR_MAX + 1] = {
1814 1819
1815static const struct genl_ops dp_datapath_genl_ops[] = { 1820static const struct genl_ops dp_datapath_genl_ops[] = {
1816 { .cmd = OVS_DP_CMD_NEW, 1821 { .cmd = OVS_DP_CMD_NEW,
1822 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1817 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1823 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1818 .doit = ovs_dp_cmd_new 1824 .doit = ovs_dp_cmd_new
1819 }, 1825 },
1820 { .cmd = OVS_DP_CMD_DEL, 1826 { .cmd = OVS_DP_CMD_DEL,
1827 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1821 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1828 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1822 .doit = ovs_dp_cmd_del 1829 .doit = ovs_dp_cmd_del
1823 }, 1830 },
1824 { .cmd = OVS_DP_CMD_GET, 1831 { .cmd = OVS_DP_CMD_GET,
1832 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1825 .flags = 0, /* OK for unprivileged users. */ 1833 .flags = 0, /* OK for unprivileged users. */
1826 .doit = ovs_dp_cmd_get, 1834 .doit = ovs_dp_cmd_get,
1827 .dumpit = ovs_dp_cmd_dump 1835 .dumpit = ovs_dp_cmd_dump
1828 }, 1836 },
1829 { .cmd = OVS_DP_CMD_SET, 1837 { .cmd = OVS_DP_CMD_SET,
1838 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
1830 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 1839 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
1831 .doit = ovs_dp_cmd_set, 1840 .doit = ovs_dp_cmd_set,
1832 }, 1841 },
@@ -2254,19 +2263,23 @@ static const struct nla_policy vport_policy[OVS_VPORT_ATTR_MAX + 1] = {
2254 2263
2255static const struct genl_ops dp_vport_genl_ops[] = { 2264static const struct genl_ops dp_vport_genl_ops[] = {
2256 { .cmd = OVS_VPORT_CMD_NEW, 2265 { .cmd = OVS_VPORT_CMD_NEW,
2266 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
2257 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 2267 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
2258 .doit = ovs_vport_cmd_new 2268 .doit = ovs_vport_cmd_new
2259 }, 2269 },
2260 { .cmd = OVS_VPORT_CMD_DEL, 2270 { .cmd = OVS_VPORT_CMD_DEL,
2271 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
2261 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 2272 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
2262 .doit = ovs_vport_cmd_del 2273 .doit = ovs_vport_cmd_del
2263 }, 2274 },
2264 { .cmd = OVS_VPORT_CMD_GET, 2275 { .cmd = OVS_VPORT_CMD_GET,
2276 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
2265 .flags = 0, /* OK for unprivileged users. */ 2277 .flags = 0, /* OK for unprivileged users. */
2266 .doit = ovs_vport_cmd_get, 2278 .doit = ovs_vport_cmd_get,
2267 .dumpit = ovs_vport_cmd_dump 2279 .dumpit = ovs_vport_cmd_dump
2268 }, 2280 },
2269 { .cmd = OVS_VPORT_CMD_SET, 2281 { .cmd = OVS_VPORT_CMD_SET,
2282 .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP,
2270 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */ 2283 .flags = GENL_UNS_ADMIN_PERM, /* Requires CAP_NET_ADMIN privilege. */
2271 .doit = ovs_vport_cmd_set, 2284 .doit = ovs_vport_cmd_set,
2272 }, 2285 },