aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi')
-rw-r--r--include/uapi/linux/Kbuild1
-rw-r--r--include/uapi/linux/batman_adv.h94
-rw-r--r--include/uapi/linux/bpf.h51
-rw-r--r--include/uapi/linux/bpf_perf_event.h18
-rw-r--r--include/uapi/linux/ethtool.h11
-rw-r--r--include/uapi/linux/if_bridge.h2
-rw-r--r--include/uapi/linux/if_link.h30
-rw-r--r--include/uapi/linux/if_tunnel.h17
-rw-r--r--include/uapi/linux/inet_diag.h20
-rw-r--r--include/uapi/linux/ipv6.h1
-rw-r--r--include/uapi/linux/mii.h1
-rw-r--r--include/uapi/linux/netfilter/nf_log.h12
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h106
-rw-r--r--include/uapi/linux/netfilter/nfnetlink_conntrack.h8
-rw-r--r--include/uapi/linux/netfilter/xt_hashlimit.h23
-rw-r--r--include/uapi/linux/nl80211.h270
-rw-r--r--include/uapi/linux/openvswitch.h17
-rw-r--r--include/uapi/linux/pkt_cls.h19
-rw-r--r--include/uapi/linux/pkt_sched.h4
-rw-r--r--include/uapi/linux/snmp.h1
-rw-r--r--include/uapi/linux/tc_act/tc_ife.h3
-rw-r--r--include/uapi/linux/tc_act/tc_skbmod.h39
-rw-r--r--include/uapi/linux/tc_act/tc_tunnel_key.h41
-rw-r--r--include/uapi/linux/tc_act/tc_vlan.h2
-rw-r--r--include/uapi/linux/tcp.h3
-rw-r--r--include/uapi/linux/tipc_netlink.h4
-rw-r--r--include/uapi/linux/xfrm.h2
27 files changed, 778 insertions, 22 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index 185f8ea2702f..d0352a971ebd 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -71,6 +71,7 @@ header-y += binfmts.h
71header-y += blkpg.h 71header-y += blkpg.h
72header-y += blktrace_api.h 72header-y += blktrace_api.h
73header-y += bpf_common.h 73header-y += bpf_common.h
74header-y += bpf_perf_event.h
74header-y += bpf.h 75header-y += bpf.h
75header-y += bpqether.h 76header-y += bpqether.h
76header-y += bsg.h 77header-y += bsg.h
diff --git a/include/uapi/linux/batman_adv.h b/include/uapi/linux/batman_adv.h
index 0fbf6fd4711b..734fe83ab645 100644
--- a/include/uapi/linux/batman_adv.h
+++ b/include/uapi/linux/batman_adv.h
@@ -23,6 +23,42 @@
23#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter" 23#define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
24 24
25/** 25/**
26 * enum batadv_tt_client_flags - TT client specific flags
27 * @BATADV_TT_CLIENT_DEL: the client has to be deleted from the table
28 * @BATADV_TT_CLIENT_ROAM: the client roamed to/from another node and the new
29 * update telling its new real location has not been received/sent yet
30 * @BATADV_TT_CLIENT_WIFI: this client is connected through a wifi interface.
31 * This information is used by the "AP Isolation" feature
32 * @BATADV_TT_CLIENT_ISOLA: this client is considered "isolated". This
33 * information is used by the Extended Isolation feature
34 * @BATADV_TT_CLIENT_NOPURGE: this client should never be removed from the table
35 * @BATADV_TT_CLIENT_NEW: this client has been added to the local table but has
36 * not been announced yet
37 * @BATADV_TT_CLIENT_PENDING: this client is marked for removal but it is kept
38 * in the table for one more originator interval for consistency purposes
39 * @BATADV_TT_CLIENT_TEMP: this global client has been detected to be part of
40 * the network but no nnode has already announced it
41 *
42 * Bits from 0 to 7 are called _remote flags_ because they are sent on the wire.
43 * Bits from 8 to 15 are called _local flags_ because they are used for local
44 * computations only.
45 *
46 * Bits from 4 to 7 - a subset of remote flags - are ensured to be in sync with
47 * the other nodes in the network. To achieve this goal these flags are included
48 * in the TT CRC computation.
49 */
50enum batadv_tt_client_flags {
51 BATADV_TT_CLIENT_DEL = (1 << 0),
52 BATADV_TT_CLIENT_ROAM = (1 << 1),
53 BATADV_TT_CLIENT_WIFI = (1 << 4),
54 BATADV_TT_CLIENT_ISOLA = (1 << 5),
55 BATADV_TT_CLIENT_NOPURGE = (1 << 8),
56 BATADV_TT_CLIENT_NEW = (1 << 9),
57 BATADV_TT_CLIENT_PENDING = (1 << 10),
58 BATADV_TT_CLIENT_TEMP = (1 << 11),
59};
60
61/**
26 * enum batadv_nl_attrs - batman-adv netlink attributes 62 * enum batadv_nl_attrs - batman-adv netlink attributes
27 * 63 *
28 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors 64 * @BATADV_ATTR_UNSPEC: unspecified attribute to catch errors
@@ -40,6 +76,26 @@
40 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run 76 * @BATADV_ATTR_TPMETER_BYTES: amount of acked bytes during run
41 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session 77 * @BATADV_ATTR_TPMETER_COOKIE: session cookie to match tp_meter session
42 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment 78 * @BATADV_ATTR_PAD: attribute used for padding for 64-bit alignment
79 * @BATADV_ATTR_ACTIVE: Flag indicating if the hard interface is active
80 * @BATADV_ATTR_TT_ADDRESS: Client MAC address
81 * @BATADV_ATTR_TT_TTVN: Translation table version
82 * @BATADV_ATTR_TT_LAST_TTVN: Previous translation table version
83 * @BATADV_ATTR_TT_CRC32: CRC32 over translation table
84 * @BATADV_ATTR_TT_VID: VLAN ID
85 * @BATADV_ATTR_TT_FLAGS: Translation table client flags
86 * @BATADV_ATTR_FLAG_BEST: Flags indicating entry is the best
87 * @BATADV_ATTR_LAST_SEEN_MSECS: Time in milliseconds since last seen
88 * @BATADV_ATTR_NEIGH_ADDRESS: Neighbour MAC address
89 * @BATADV_ATTR_TQ: TQ to neighbour
90 * @BATADV_ATTR_THROUGHPUT: Estimated throughput to Neighbour
91 * @BATADV_ATTR_BANDWIDTH_UP: Reported uplink bandwidth
92 * @BATADV_ATTR_BANDWIDTH_DOWN: Reported downlink bandwidth
93 * @BATADV_ATTR_ROUTER: Gateway router MAC address
94 * @BATADV_ATTR_BLA_OWN: Flag indicating own originator
95 * @BATADV_ATTR_BLA_ADDRESS: Bridge loop avoidance claim MAC address
96 * @BATADV_ATTR_BLA_VID: BLA VLAN ID
97 * @BATADV_ATTR_BLA_BACKBONE: BLA gateway originator MAC address
98 * @BATADV_ATTR_BLA_CRC: BLA CRC
43 * @__BATADV_ATTR_AFTER_LAST: internal use 99 * @__BATADV_ATTR_AFTER_LAST: internal use
44 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available 100 * @NUM_BATADV_ATTR: total number of batadv_nl_attrs available
45 * @BATADV_ATTR_MAX: highest attribute number currently defined 101 * @BATADV_ATTR_MAX: highest attribute number currently defined
@@ -60,6 +116,26 @@ enum batadv_nl_attrs {
60 BATADV_ATTR_TPMETER_BYTES, 116 BATADV_ATTR_TPMETER_BYTES,
61 BATADV_ATTR_TPMETER_COOKIE, 117 BATADV_ATTR_TPMETER_COOKIE,
62 BATADV_ATTR_PAD, 118 BATADV_ATTR_PAD,
119 BATADV_ATTR_ACTIVE,
120 BATADV_ATTR_TT_ADDRESS,
121 BATADV_ATTR_TT_TTVN,
122 BATADV_ATTR_TT_LAST_TTVN,
123 BATADV_ATTR_TT_CRC32,
124 BATADV_ATTR_TT_VID,
125 BATADV_ATTR_TT_FLAGS,
126 BATADV_ATTR_FLAG_BEST,
127 BATADV_ATTR_LAST_SEEN_MSECS,
128 BATADV_ATTR_NEIGH_ADDRESS,
129 BATADV_ATTR_TQ,
130 BATADV_ATTR_THROUGHPUT,
131 BATADV_ATTR_BANDWIDTH_UP,
132 BATADV_ATTR_BANDWIDTH_DOWN,
133 BATADV_ATTR_ROUTER,
134 BATADV_ATTR_BLA_OWN,
135 BATADV_ATTR_BLA_ADDRESS,
136 BATADV_ATTR_BLA_VID,
137 BATADV_ATTR_BLA_BACKBONE,
138 BATADV_ATTR_BLA_CRC,
63 /* add attributes above here, update the policy in netlink.c */ 139 /* add attributes above here, update the policy in netlink.c */
64 __BATADV_ATTR_AFTER_LAST, 140 __BATADV_ATTR_AFTER_LAST,
65 NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST, 141 NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
@@ -73,6 +149,15 @@ enum batadv_nl_attrs {
73 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device 149 * @BATADV_CMD_GET_MESH_INFO: Query basic information about batman-adv device
74 * @BATADV_CMD_TP_METER: Start a tp meter session 150 * @BATADV_CMD_TP_METER: Start a tp meter session
75 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session 151 * @BATADV_CMD_TP_METER_CANCEL: Cancel a tp meter session
152 * @BATADV_CMD_GET_ROUTING_ALGOS: Query the list of routing algorithms.
153 * @BATADV_CMD_GET_HARDIFS: Query list of hard interfaces
154 * @BATADV_CMD_GET_TRANSTABLE_LOCAL: Query list of local translations
155 * @BATADV_CMD_GET_TRANSTABLE_GLOBAL Query list of global translations
156 * @BATADV_CMD_GET_ORIGINATORS: Query list of originators
157 * @BATADV_CMD_GET_NEIGHBORS: Query list of neighbours
158 * @BATADV_CMD_GET_GATEWAYS: Query list of gateways
159 * @BATADV_CMD_GET_BLA_CLAIM: Query list of bridge loop avoidance claims
160 * @BATADV_CMD_GET_BLA_BACKBONE: Query list of bridge loop avoidance backbones
76 * @__BATADV_CMD_AFTER_LAST: internal use 161 * @__BATADV_CMD_AFTER_LAST: internal use
77 * @BATADV_CMD_MAX: highest used command number 162 * @BATADV_CMD_MAX: highest used command number
78 */ 163 */
@@ -81,6 +166,15 @@ enum batadv_nl_commands {
81 BATADV_CMD_GET_MESH_INFO, 166 BATADV_CMD_GET_MESH_INFO,
82 BATADV_CMD_TP_METER, 167 BATADV_CMD_TP_METER,
83 BATADV_CMD_TP_METER_CANCEL, 168 BATADV_CMD_TP_METER_CANCEL,
169 BATADV_CMD_GET_ROUTING_ALGOS,
170 BATADV_CMD_GET_HARDIFS,
171 BATADV_CMD_GET_TRANSTABLE_LOCAL,
172 BATADV_CMD_GET_TRANSTABLE_GLOBAL,
173 BATADV_CMD_GET_ORIGINATORS,
174 BATADV_CMD_GET_NEIGHBORS,
175 BATADV_CMD_GET_GATEWAYS,
176 BATADV_CMD_GET_BLA_CLAIM,
177 BATADV_CMD_GET_BLA_BACKBONE,
84 /* add new commands above here */ 178 /* add new commands above here */
85 __BATADV_CMD_AFTER_LAST, 179 __BATADV_CMD_AFTER_LAST,
86 BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1 180 BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 9e5fc168c8a3..f09c70b97eca 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -95,6 +95,7 @@ enum bpf_prog_type {
95 BPF_PROG_TYPE_SCHED_ACT, 95 BPF_PROG_TYPE_SCHED_ACT,
96 BPF_PROG_TYPE_TRACEPOINT, 96 BPF_PROG_TYPE_TRACEPOINT,
97 BPF_PROG_TYPE_XDP, 97 BPF_PROG_TYPE_XDP,
98 BPF_PROG_TYPE_PERF_EVENT,
98}; 99};
99 100
100#define BPF_PSEUDO_MAP_FD 1 101#define BPF_PSEUDO_MAP_FD 1
@@ -375,6 +376,56 @@ enum bpf_func_id {
375 */ 376 */
376 BPF_FUNC_probe_write_user, 377 BPF_FUNC_probe_write_user,
377 378
379 /**
380 * bpf_current_task_under_cgroup(map, index) - Check cgroup2 membership of current task
381 * @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
382 * @index: index of the cgroup in the bpf_map
383 * Return:
384 * == 0 current failed the cgroup2 descendant test
385 * == 1 current succeeded the cgroup2 descendant test
386 * < 0 error
387 */
388 BPF_FUNC_current_task_under_cgroup,
389
390 /**
391 * bpf_skb_change_tail(skb, len, flags)
392 * The helper will resize the skb to the given new size,
393 * to be used f.e. with control messages.
394 * @skb: pointer to skb
395 * @len: new skb length
396 * @flags: reserved
397 * Return: 0 on success or negative error
398 */
399 BPF_FUNC_skb_change_tail,
400
401 /**
402 * bpf_skb_pull_data(skb, len)
403 * The helper will pull in non-linear data in case the
404 * skb is non-linear and not all of len are part of the
405 * linear section. Only needed for read/write with direct
406 * packet access.
407 * @skb: pointer to skb
408 * @len: len to make read/writeable
409 * Return: 0 on success or negative error
410 */
411 BPF_FUNC_skb_pull_data,
412
413 /**
414 * bpf_csum_update(skb, csum)
415 * Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
416 * @skb: pointer to skb
417 * @csum: csum to add
418 * Return: csum on success or negative error
419 */
420 BPF_FUNC_csum_update,
421
422 /**
423 * bpf_set_hash_invalid(skb)
424 * Invalidate current skb>hash.
425 * @skb: pointer to skb
426 */
427 BPF_FUNC_set_hash_invalid,
428
378 __BPF_FUNC_MAX_ID, 429 __BPF_FUNC_MAX_ID,
379}; 430};
380 431
diff --git a/include/uapi/linux/bpf_perf_event.h b/include/uapi/linux/bpf_perf_event.h
new file mode 100644
index 000000000000..067427259820
--- /dev/null
+++ b/include/uapi/linux/bpf_perf_event.h
@@ -0,0 +1,18 @@
1/* Copyright (c) 2016 Facebook
2 *
3 * This program is free software; you can redistribute it and/or
4 * modify it under the terms of version 2 of the GNU General Public
5 * License as published by the Free Software Foundation.
6 */
7#ifndef _UAPI__LINUX_BPF_PERF_EVENT_H__
8#define _UAPI__LINUX_BPF_PERF_EVENT_H__
9
10#include <linux/types.h>
11#include <linux/ptrace.h>
12
13struct bpf_perf_event_data {
14 struct pt_regs regs;
15 __u64 sample_period;
16};
17
18#endif /* _UAPI__LINUX_BPF_PERF_EVENT_H__ */
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index b8f38e84d93a..099a4200732c 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -1362,7 +1362,14 @@ enum ethtool_link_mode_bit_indices {
1362 ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37, 1362 ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT = 37,
1363 ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38, 1363 ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT = 38,
1364 ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39, 1364 ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT = 39,
1365 ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40, 1365 ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT = 40,
1366 ETHTOOL_LINK_MODE_1000baseX_Full_BIT = 41,
1367 ETHTOOL_LINK_MODE_10000baseCR_Full_BIT = 42,
1368 ETHTOOL_LINK_MODE_10000baseSR_Full_BIT = 43,
1369 ETHTOOL_LINK_MODE_10000baseLR_Full_BIT = 44,
1370 ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT = 45,
1371 ETHTOOL_LINK_MODE_10000baseER_Full_BIT = 46,
1372
1366 1373
1367 /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit 1374 /* Last allowed bit for __ETHTOOL_LINK_MODE_LEGACY_MASK is bit
1368 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_* 1375 * 31. Please do NOT define any SUPPORTED_* or ADVERTISED_*
@@ -1371,7 +1378,7 @@ enum ethtool_link_mode_bit_indices {
1371 */ 1378 */
1372 1379
1373 __ETHTOOL_LINK_MODE_LAST 1380 __ETHTOOL_LINK_MODE_LAST
1374 = ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT, 1381 = ETHTOOL_LINK_MODE_10000baseER_Full_BIT,
1375}; 1382};
1376 1383
1377#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \ 1384#define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) \
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
index c186f64fffca..ab92bca6d448 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -140,7 +140,7 @@ struct bridge_vlan_xstats {
140 __u64 tx_bytes; 140 __u64 tx_bytes;
141 __u64 tx_packets; 141 __u64 tx_packets;
142 __u16 vid; 142 __u16 vid;
143 __u16 pad1; 143 __u16 flags;
144 __u32 pad2; 144 __u32 pad2;
145}; 145};
146 146
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index a1b5202c5f6b..b4fba662cd32 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -318,6 +318,7 @@ enum {
318 IFLA_BRPORT_FLUSH, 318 IFLA_BRPORT_FLUSH,
319 IFLA_BRPORT_MULTICAST_ROUTER, 319 IFLA_BRPORT_MULTICAST_ROUTER,
320 IFLA_BRPORT_PAD, 320 IFLA_BRPORT_PAD,
321 IFLA_BRPORT_MCAST_FLOOD,
321 __IFLA_BRPORT_MAX 322 __IFLA_BRPORT_MAX
322}; 323};
323#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 324#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -463,6 +464,7 @@ enum {
463enum ipvlan_mode { 464enum ipvlan_mode {
464 IPVLAN_MODE_L2 = 0, 465 IPVLAN_MODE_L2 = 0,
465 IPVLAN_MODE_L3, 466 IPVLAN_MODE_L3,
467 IPVLAN_MODE_L3S,
466 IPVLAN_MODE_MAX 468 IPVLAN_MODE_MAX
467}; 469};
468 470
@@ -617,7 +619,7 @@ enum {
617enum { 619enum {
618 IFLA_VF_UNSPEC, 620 IFLA_VF_UNSPEC,
619 IFLA_VF_MAC, /* Hardware queue specific attributes */ 621 IFLA_VF_MAC, /* Hardware queue specific attributes */
620 IFLA_VF_VLAN, 622 IFLA_VF_VLAN, /* VLAN ID and QoS */
621 IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */ 623 IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */
622 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */ 624 IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */
623 IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */ 625 IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */
@@ -629,6 +631,7 @@ enum {
629 IFLA_VF_TRUST, /* Trust VF */ 631 IFLA_VF_TRUST, /* Trust VF */
630 IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */ 632 IFLA_VF_IB_NODE_GUID, /* VF Infiniband node GUID */
631 IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */ 633 IFLA_VF_IB_PORT_GUID, /* VF Infiniband port GUID */
634 IFLA_VF_VLAN_LIST, /* nested list of vlans, option for QinQ */
632 __IFLA_VF_MAX, 635 __IFLA_VF_MAX,
633}; 636};
634 637
@@ -645,6 +648,22 @@ struct ifla_vf_vlan {
645 __u32 qos; 648 __u32 qos;
646}; 649};
647 650
651enum {
652 IFLA_VF_VLAN_INFO_UNSPEC,
653 IFLA_VF_VLAN_INFO, /* VLAN ID, QoS and VLAN protocol */
654 __IFLA_VF_VLAN_INFO_MAX,
655};
656
657#define IFLA_VF_VLAN_INFO_MAX (__IFLA_VF_VLAN_INFO_MAX - 1)
658#define MAX_VLAN_LIST_LEN 1
659
660struct ifla_vf_vlan_info {
661 __u32 vf;
662 __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */
663 __u32 qos;
664 __be16 vlan_proto; /* VLAN protocol either 802.1Q or 802.1ad */
665};
666
648struct ifla_vf_tx_rate { 667struct ifla_vf_tx_rate {
649 __u32 vf; 668 __u32 vf;
650 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 669 __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */
@@ -825,6 +844,7 @@ enum {
825 IFLA_STATS_LINK_64, 844 IFLA_STATS_LINK_64,
826 IFLA_STATS_LINK_XSTATS, 845 IFLA_STATS_LINK_XSTATS,
827 IFLA_STATS_LINK_XSTATS_SLAVE, 846 IFLA_STATS_LINK_XSTATS_SLAVE,
847 IFLA_STATS_LINK_OFFLOAD_XSTATS,
828 __IFLA_STATS_MAX, 848 __IFLA_STATS_MAX,
829}; 849};
830 850
@@ -844,6 +864,14 @@ enum {
844}; 864};
845#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1) 865#define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
846 866
867/* These are stats embedded into IFLA_STATS_LINK_OFFLOAD_XSTATS */
868enum {
869 IFLA_OFFLOAD_XSTATS_UNSPEC,
870 IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
871 __IFLA_OFFLOAD_XSTATS_MAX
872};
873#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
874
847/* XDP section */ 875/* XDP section */
848 876
849enum { 877enum {
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index 777b6cdb1b7b..92f3c8677523 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -27,9 +27,23 @@
27#define GRE_SEQ __cpu_to_be16(0x1000) 27#define GRE_SEQ __cpu_to_be16(0x1000)
28#define GRE_STRICT __cpu_to_be16(0x0800) 28#define GRE_STRICT __cpu_to_be16(0x0800)
29#define GRE_REC __cpu_to_be16(0x0700) 29#define GRE_REC __cpu_to_be16(0x0700)
30#define GRE_FLAGS __cpu_to_be16(0x00F8) 30#define GRE_ACK __cpu_to_be16(0x0080)
31#define GRE_FLAGS __cpu_to_be16(0x0078)
31#define GRE_VERSION __cpu_to_be16(0x0007) 32#define GRE_VERSION __cpu_to_be16(0x0007)
32 33
34#define GRE_IS_CSUM(f) ((f) & GRE_CSUM)
35#define GRE_IS_ROUTING(f) ((f) & GRE_ROUTING)
36#define GRE_IS_KEY(f) ((f) & GRE_KEY)
37#define GRE_IS_SEQ(f) ((f) & GRE_SEQ)
38#define GRE_IS_STRICT(f) ((f) & GRE_STRICT)
39#define GRE_IS_REC(f) ((f) & GRE_REC)
40#define GRE_IS_ACK(f) ((f) & GRE_ACK)
41
42#define GRE_VERSION_0 __cpu_to_be16(0x0000)
43#define GRE_VERSION_1 __cpu_to_be16(0x0001)
44#define GRE_PROTO_PPP __cpu_to_be16(0x880b)
45#define GRE_PPTP_KEY_MASK __cpu_to_be32(0xffff)
46
33struct ip_tunnel_parm { 47struct ip_tunnel_parm {
34 char name[IFNAMSIZ]; 48 char name[IFNAMSIZ];
35 int link; 49 int link;
@@ -60,6 +74,7 @@ enum {
60 IFLA_IPTUN_ENCAP_FLAGS, 74 IFLA_IPTUN_ENCAP_FLAGS,
61 IFLA_IPTUN_ENCAP_SPORT, 75 IFLA_IPTUN_ENCAP_SPORT,
62 IFLA_IPTUN_ENCAP_DPORT, 76 IFLA_IPTUN_ENCAP_DPORT,
77 IFLA_IPTUN_COLLECT_METADATA,
63 __IFLA_IPTUN_MAX, 78 __IFLA_IPTUN_MAX,
64}; 79};
65#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1) 80#define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
diff --git a/include/uapi/linux/inet_diag.h b/include/uapi/linux/inet_diag.h
index abbd1dc5d683..509cd961068d 100644
--- a/include/uapi/linux/inet_diag.h
+++ b/include/uapi/linux/inet_diag.h
@@ -73,6 +73,7 @@ enum {
73 INET_DIAG_BC_S_COND, 73 INET_DIAG_BC_S_COND,
74 INET_DIAG_BC_D_COND, 74 INET_DIAG_BC_D_COND,
75 INET_DIAG_BC_DEV_COND, /* u32 ifindex */ 75 INET_DIAG_BC_DEV_COND, /* u32 ifindex */
76 INET_DIAG_BC_MARK_COND,
76}; 77};
77 78
78struct inet_diag_hostcond { 79struct inet_diag_hostcond {
@@ -82,6 +83,11 @@ struct inet_diag_hostcond {
82 __be32 addr[0]; 83 __be32 addr[0];
83}; 84};
84 85
86struct inet_diag_markcond {
87 __u32 mark;
88 __u32 mask;
89};
90
85/* Base info structure. It contains socket identity (addrs/ports/cookie) 91/* Base info structure. It contains socket identity (addrs/ports/cookie)
86 * and, alas, the information shown by netstat. */ 92 * and, alas, the information shown by netstat. */
87struct inet_diag_msg { 93struct inet_diag_msg {
@@ -117,6 +123,8 @@ enum {
117 INET_DIAG_LOCALS, 123 INET_DIAG_LOCALS,
118 INET_DIAG_PEERS, 124 INET_DIAG_PEERS,
119 INET_DIAG_PAD, 125 INET_DIAG_PAD,
126 INET_DIAG_MARK,
127 INET_DIAG_BBRINFO,
120 __INET_DIAG_MAX, 128 __INET_DIAG_MAX,
121}; 129};
122 130
@@ -150,8 +158,20 @@ struct tcp_dctcp_info {
150 __u32 dctcp_ab_tot; 158 __u32 dctcp_ab_tot;
151}; 159};
152 160
161/* INET_DIAG_BBRINFO */
162
163struct tcp_bbr_info {
164 /* u64 bw: max-filtered BW (app throughput) estimate in Byte per sec: */
165 __u32 bbr_bw_lo; /* lower 32 bits of bw */
166 __u32 bbr_bw_hi; /* upper 32 bits of bw */
167 __u32 bbr_min_rtt; /* min-filtered RTT in uSec */
168 __u32 bbr_pacing_gain; /* pacing gain shifted left 8 bits */
169 __u32 bbr_cwnd_gain; /* cwnd gain shifted left 8 bits */
170};
171
153union tcp_cc_info { 172union tcp_cc_info {
154 struct tcpvegas_info vegas; 173 struct tcpvegas_info vegas;
155 struct tcp_dctcp_info dctcp; 174 struct tcp_dctcp_info dctcp;
175 struct tcp_bbr_info bbr;
156}; 176};
157#endif /* _UAPI_INET_DIAG_H_ */ 177#endif /* _UAPI_INET_DIAG_H_ */
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index 395876060f50..8c2772340c3f 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -177,6 +177,7 @@ enum {
177 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST, 177 DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
178 DEVCONF_DROP_UNSOLICITED_NA, 178 DEVCONF_DROP_UNSOLICITED_NA,
179 DEVCONF_KEEP_ADDR_ON_DOWN, 179 DEVCONF_KEEP_ADDR_ON_DOWN,
180 DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
180 DEVCONF_MAX 181 DEVCONF_MAX
181}; 182};
182 183
diff --git a/include/uapi/linux/mii.h b/include/uapi/linux/mii.h
index 237fac4bc17b..15d8510cdae0 100644
--- a/include/uapi/linux/mii.h
+++ b/include/uapi/linux/mii.h
@@ -48,6 +48,7 @@
48#define BMCR_SPEED100 0x2000 /* Select 100Mbps */ 48#define BMCR_SPEED100 0x2000 /* Select 100Mbps */
49#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */ 49#define BMCR_LOOPBACK 0x4000 /* TXD loopback bits */
50#define BMCR_RESET 0x8000 /* Reset to default state */ 50#define BMCR_RESET 0x8000 /* Reset to default state */
51#define BMCR_SPEED10 0x0000 /* Select 10Mbps */
51 52
52/* Basic mode status register. */ 53/* Basic mode status register. */
53#define BMSR_ERCAP 0x0001 /* Ext-reg capability */ 54#define BMSR_ERCAP 0x0001 /* Ext-reg capability */
diff --git a/include/uapi/linux/netfilter/nf_log.h b/include/uapi/linux/netfilter/nf_log.h
new file mode 100644
index 000000000000..8be21e02387d
--- /dev/null
+++ b/include/uapi/linux/netfilter/nf_log.h
@@ -0,0 +1,12 @@
1#ifndef _NETFILTER_NF_LOG_H
2#define _NETFILTER_NF_LOG_H
3
4#define NF_LOG_TCPSEQ 0x01 /* Log TCP sequence numbers */
5#define NF_LOG_TCPOPT 0x02 /* Log TCP options */
6#define NF_LOG_IPOPT 0x04 /* Log IP options */
7#define NF_LOG_UID 0x08 /* Log UID owning local socket */
8#define NF_LOG_NFLOG 0x10 /* Unsupported, don't reuse */
9#define NF_LOG_MACDECODE 0x20 /* Decode MAC header */
10#define NF_LOG_MASK 0x2f
11
12#endif /* _NETFILTER_NF_LOG_H */
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index c674ba2563b7..c6c4477c136b 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -546,6 +546,35 @@ enum nft_cmp_attributes {
546}; 546};
547#define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1) 547#define NFTA_CMP_MAX (__NFTA_CMP_MAX - 1)
548 548
549/**
550 * enum nft_range_ops - nf_tables range operator
551 *
552 * @NFT_RANGE_EQ: equal
553 * @NFT_RANGE_NEQ: not equal
554 */
555enum nft_range_ops {
556 NFT_RANGE_EQ,
557 NFT_RANGE_NEQ,
558};
559
560/**
561 * enum nft_range_attributes - nf_tables range expression netlink attributes
562 *
563 * @NFTA_RANGE_SREG: source register of data to compare (NLA_U32: nft_registers)
564 * @NFTA_RANGE_OP: cmp operation (NLA_U32: nft_cmp_ops)
565 * @NFTA_RANGE_FROM_DATA: data range from (NLA_NESTED: nft_data_attributes)
566 * @NFTA_RANGE_TO_DATA: data range to (NLA_NESTED: nft_data_attributes)
567 */
568enum nft_range_attributes {
569 NFTA_RANGE_UNSPEC,
570 NFTA_RANGE_SREG,
571 NFTA_RANGE_OP,
572 NFTA_RANGE_FROM_DATA,
573 NFTA_RANGE_TO_DATA,
574 __NFTA_RANGE_MAX
575};
576#define NFTA_RANGE_MAX (__NFTA_RANGE_MAX - 1)
577
549enum nft_lookup_flags { 578enum nft_lookup_flags {
550 NFT_LOOKUP_F_INV = (1 << 0), 579 NFT_LOOKUP_F_INV = (1 << 0),
551}; 580};
@@ -575,6 +604,10 @@ enum nft_dynset_ops {
575 NFT_DYNSET_OP_UPDATE, 604 NFT_DYNSET_OP_UPDATE,
576}; 605};
577 606
607enum nft_dynset_flags {
608 NFT_DYNSET_F_INV = (1 << 0),
609};
610
578/** 611/**
579 * enum nft_dynset_attributes - dynset expression attributes 612 * enum nft_dynset_attributes - dynset expression attributes
580 * 613 *
@@ -585,6 +618,7 @@ enum nft_dynset_ops {
585 * @NFTA_DYNSET_SREG_DATA: source register of the data (NLA_U32) 618 * @NFTA_DYNSET_SREG_DATA: source register of the data (NLA_U32)
586 * @NFTA_DYNSET_TIMEOUT: timeout value for the new element (NLA_U64) 619 * @NFTA_DYNSET_TIMEOUT: timeout value for the new element (NLA_U64)
587 * @NFTA_DYNSET_EXPR: expression (NLA_NESTED: nft_expr_attributes) 620 * @NFTA_DYNSET_EXPR: expression (NLA_NESTED: nft_expr_attributes)
621 * @NFTA_DYNSET_FLAGS: flags (NLA_U32)
588 */ 622 */
589enum nft_dynset_attributes { 623enum nft_dynset_attributes {
590 NFTA_DYNSET_UNSPEC, 624 NFTA_DYNSET_UNSPEC,
@@ -596,6 +630,7 @@ enum nft_dynset_attributes {
596 NFTA_DYNSET_TIMEOUT, 630 NFTA_DYNSET_TIMEOUT,
597 NFTA_DYNSET_EXPR, 631 NFTA_DYNSET_EXPR,
598 NFTA_DYNSET_PAD, 632 NFTA_DYNSET_PAD,
633 NFTA_DYNSET_FLAGS,
599 __NFTA_DYNSET_MAX, 634 __NFTA_DYNSET_MAX,
600}; 635};
601#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1) 636#define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1)
@@ -724,6 +759,28 @@ enum nft_meta_keys {
724}; 759};
725 760
726/** 761/**
762 * enum nft_hash_attributes - nf_tables hash expression netlink attributes
763 *
764 * @NFTA_HASH_SREG: source register (NLA_U32)
765 * @NFTA_HASH_DREG: destination register (NLA_U32)
766 * @NFTA_HASH_LEN: source data length (NLA_U32)
767 * @NFTA_HASH_MODULUS: modulus value (NLA_U32)
768 * @NFTA_HASH_SEED: seed value (NLA_U32)
769 * @NFTA_HASH_OFFSET: add this offset value to hash result (NLA_U32)
770 */
771enum nft_hash_attributes {
772 NFTA_HASH_UNSPEC,
773 NFTA_HASH_SREG,
774 NFTA_HASH_DREG,
775 NFTA_HASH_LEN,
776 NFTA_HASH_MODULUS,
777 NFTA_HASH_SEED,
778 NFTA_HASH_OFFSET,
779 __NFTA_HASH_MAX,
780};
781#define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
782
783/**
727 * enum nft_meta_attributes - nf_tables meta expression netlink attributes 784 * enum nft_meta_attributes - nf_tables meta expression netlink attributes
728 * 785 *
729 * @NFTA_META_DREG: destination register (NLA_U32) 786 * @NFTA_META_DREG: destination register (NLA_U32)
@@ -866,12 +923,14 @@ enum nft_log_attributes {
866 * @NFTA_QUEUE_NUM: netlink queue to send messages to (NLA_U16) 923 * @NFTA_QUEUE_NUM: netlink queue to send messages to (NLA_U16)
867 * @NFTA_QUEUE_TOTAL: number of queues to load balance packets on (NLA_U16) 924 * @NFTA_QUEUE_TOTAL: number of queues to load balance packets on (NLA_U16)
868 * @NFTA_QUEUE_FLAGS: various flags (NLA_U16) 925 * @NFTA_QUEUE_FLAGS: various flags (NLA_U16)
926 * @NFTA_QUEUE_SREG_QNUM: source register of queue number (NLA_U32: nft_registers)
869 */ 927 */
870enum nft_queue_attributes { 928enum nft_queue_attributes {
871 NFTA_QUEUE_UNSPEC, 929 NFTA_QUEUE_UNSPEC,
872 NFTA_QUEUE_NUM, 930 NFTA_QUEUE_NUM,
873 NFTA_QUEUE_TOTAL, 931 NFTA_QUEUE_TOTAL,
874 NFTA_QUEUE_FLAGS, 932 NFTA_QUEUE_FLAGS,
933 NFTA_QUEUE_SREG_QNUM,
875 __NFTA_QUEUE_MAX 934 __NFTA_QUEUE_MAX
876}; 935};
877#define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1) 936#define NFTA_QUEUE_MAX (__NFTA_QUEUE_MAX - 1)
@@ -880,6 +939,25 @@ enum nft_queue_attributes {
880#define NFT_QUEUE_FLAG_CPU_FANOUT 0x02 /* use current CPU (no hashing) */ 939#define NFT_QUEUE_FLAG_CPU_FANOUT 0x02 /* use current CPU (no hashing) */
881#define NFT_QUEUE_FLAG_MASK 0x03 940#define NFT_QUEUE_FLAG_MASK 0x03
882 941
942enum nft_quota_flags {
943 NFT_QUOTA_F_INV = (1 << 0),
944};
945
946/**
947 * enum nft_quota_attributes - nf_tables quota expression netlink attributes
948 *
949 * @NFTA_QUOTA_BYTES: quota in bytes (NLA_U16)
950 * @NFTA_QUOTA_FLAGS: flags (NLA_U32)
951 */
952enum nft_quota_attributes {
953 NFTA_QUOTA_UNSPEC,
954 NFTA_QUOTA_BYTES,
955 NFTA_QUOTA_FLAGS,
956 NFTA_QUOTA_PAD,
957 __NFTA_QUOTA_MAX
958};
959#define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
960
883/** 961/**
884 * enum nft_reject_types - nf_tables reject expression reject types 962 * enum nft_reject_types - nf_tables reject expression reject types
885 * 963 *
@@ -1051,7 +1129,7 @@ enum nft_gen_attributes {
1051 * @NFTA_TRACE_NFPROTO: nf protocol processed (NLA_U32) 1129 * @NFTA_TRACE_NFPROTO: nf protocol processed (NLA_U32)
1052 * @NFTA_TRACE_POLICY: policy that decided fate of packet (NLA_U32) 1130 * @NFTA_TRACE_POLICY: policy that decided fate of packet (NLA_U32)
1053 */ 1131 */
1054enum nft_trace_attibutes { 1132enum nft_trace_attributes {
1055 NFTA_TRACE_UNSPEC, 1133 NFTA_TRACE_UNSPEC,
1056 NFTA_TRACE_TABLE, 1134 NFTA_TRACE_TABLE,
1057 NFTA_TRACE_CHAIN, 1135 NFTA_TRACE_CHAIN,
@@ -1082,4 +1160,30 @@ enum nft_trace_types {
1082 __NFT_TRACETYPE_MAX 1160 __NFT_TRACETYPE_MAX
1083}; 1161};
1084#define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1) 1162#define NFT_TRACETYPE_MAX (__NFT_TRACETYPE_MAX - 1)
1163
1164/**
1165 * enum nft_ng_attributes - nf_tables number generator expression netlink attributes
1166 *
1167 * @NFTA_NG_DREG: destination register (NLA_U32)
1168 * @NFTA_NG_MODULUS: maximum counter value (NLA_U32)
1169 * @NFTA_NG_TYPE: operation type (NLA_U32)
1170 * @NFTA_NG_OFFSET: offset to be added to the counter (NLA_U32)
1171 */
1172enum nft_ng_attributes {
1173 NFTA_NG_UNSPEC,
1174 NFTA_NG_DREG,
1175 NFTA_NG_MODULUS,
1176 NFTA_NG_TYPE,
1177 NFTA_NG_OFFSET,
1178 __NFTA_NG_MAX
1179};
1180#define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
1181
1182enum nft_ng_types {
1183 NFT_NG_INCREMENTAL,
1184 NFT_NG_RANDOM,
1185 __NFT_NG_MAX
1186};
1187#define NFT_NG_MAX (__NFT_NG_MAX - 1)
1188
1085#endif /* _LINUX_NF_TABLES_H */ 1189#endif /* _LINUX_NF_TABLES_H */
diff --git a/include/uapi/linux/netfilter/nfnetlink_conntrack.h b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
index 9df789709abe..6deb8867c5fc 100644
--- a/include/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/include/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -231,13 +231,13 @@ enum ctattr_secctx {
231 231
232enum ctattr_stats_cpu { 232enum ctattr_stats_cpu {
233 CTA_STATS_UNSPEC, 233 CTA_STATS_UNSPEC,
234 CTA_STATS_SEARCHED, 234 CTA_STATS_SEARCHED, /* no longer used */
235 CTA_STATS_FOUND, 235 CTA_STATS_FOUND,
236 CTA_STATS_NEW, 236 CTA_STATS_NEW, /* no longer used */
237 CTA_STATS_INVALID, 237 CTA_STATS_INVALID,
238 CTA_STATS_IGNORE, 238 CTA_STATS_IGNORE,
239 CTA_STATS_DELETE, 239 CTA_STATS_DELETE, /* no longer used */
240 CTA_STATS_DELETE_LIST, 240 CTA_STATS_DELETE_LIST, /* no longer used */
241 CTA_STATS_INSERT, 241 CTA_STATS_INSERT,
242 CTA_STATS_INSERT_FAILED, 242 CTA_STATS_INSERT_FAILED,
243 CTA_STATS_DROP, 243 CTA_STATS_DROP,
diff --git a/include/uapi/linux/netfilter/xt_hashlimit.h b/include/uapi/linux/netfilter/xt_hashlimit.h
index 6db90372f09c..3efc0ca18345 100644
--- a/include/uapi/linux/netfilter/xt_hashlimit.h
+++ b/include/uapi/linux/netfilter/xt_hashlimit.h
@@ -6,6 +6,7 @@
6 6
7/* timings are in milliseconds. */ 7/* timings are in milliseconds. */
8#define XT_HASHLIMIT_SCALE 10000 8#define XT_HASHLIMIT_SCALE 10000
9#define XT_HASHLIMIT_SCALE_v2 1000000llu
9/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490 10/* 1/10,000 sec period => max of 10,000/sec. Min rate is then 429490
10 * seconds, or one packet every 59 hours. 11 * seconds, or one packet every 59 hours.
11 */ 12 */
@@ -63,6 +64,20 @@ struct hashlimit_cfg1 {
63 __u8 srcmask, dstmask; 64 __u8 srcmask, dstmask;
64}; 65};
65 66
67struct hashlimit_cfg2 {
68 __u64 avg; /* Average secs between packets * scale */
69 __u64 burst; /* Period multiplier for upper limit. */
70 __u32 mode; /* bitmask of XT_HASHLIMIT_HASH_* */
71
72 /* user specified */
73 __u32 size; /* how many buckets */
74 __u32 max; /* max number of entries */
75 __u32 gc_interval; /* gc interval */
76 __u32 expire; /* when do entries expire? */
77
78 __u8 srcmask, dstmask;
79};
80
66struct xt_hashlimit_mtinfo1 { 81struct xt_hashlimit_mtinfo1 {
67 char name[IFNAMSIZ]; 82 char name[IFNAMSIZ];
68 struct hashlimit_cfg1 cfg; 83 struct hashlimit_cfg1 cfg;
@@ -71,4 +86,12 @@ struct xt_hashlimit_mtinfo1 {
71 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8))); 86 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
72}; 87};
73 88
89struct xt_hashlimit_mtinfo2 {
90 char name[NAME_MAX];
91 struct hashlimit_cfg2 cfg;
92
93 /* Used internally by the kernel */
94 struct xt_hashlimit_htable *hinfo __attribute__((aligned(8)));
95};
96
74#endif /* _UAPI_XT_HASHLIMIT_H */ 97#endif /* _UAPI_XT_HASHLIMIT_H */
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 220694151434..56368e9b4622 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -48,6 +48,7 @@
48#define NL80211_MULTICAST_GROUP_REG "regulatory" 48#define NL80211_MULTICAST_GROUP_REG "regulatory"
49#define NL80211_MULTICAST_GROUP_MLME "mlme" 49#define NL80211_MULTICAST_GROUP_MLME "mlme"
50#define NL80211_MULTICAST_GROUP_VENDOR "vendor" 50#define NL80211_MULTICAST_GROUP_VENDOR "vendor"
51#define NL80211_MULTICAST_GROUP_NAN "nan"
51#define NL80211_MULTICAST_GROUP_TESTMODE "testmode" 52#define NL80211_MULTICAST_GROUP_TESTMODE "testmode"
52 53
53/** 54/**
@@ -838,6 +839,41 @@
838 * not running. The driver indicates the status of the scan through 839 * not running. The driver indicates the status of the scan through
839 * cfg80211_scan_done(). 840 * cfg80211_scan_done().
840 * 841 *
842 * @NL80211_CMD_START_NAN: Start NAN operation, identified by its
843 * %NL80211_ATTR_WDEV interface. This interface must have been previously
844 * created with %NL80211_CMD_NEW_INTERFACE. After it has been started, the
845 * NAN interface will create or join a cluster. This command must have a
846 * valid %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
847 * %NL80211_ATTR_NAN_DUAL attributes.
848 * After this command NAN functions can be added.
849 * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
850 * its %NL80211_ATTR_WDEV interface.
851 * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
852 * with %NL80211_ATTR_NAN_FUNC nested attribute. When called, this
853 * operation returns the strictly positive and unique instance id
854 * (%NL80211_ATTR_NAN_FUNC_INST_ID) and a cookie (%NL80211_ATTR_COOKIE)
855 * of the function upon success.
856 * Since instance ID's can be re-used, this cookie is the right
857 * way to identify the function. This will avoid races when a termination
858 * event is handled by the user space after it has already added a new
859 * function that got the same instance id from the kernel as the one
860 * which just terminated.
861 * This cookie may be used in NAN events even before the command
862 * returns, so userspace shouldn't process NAN events until it processes
863 * the response to this command.
864 * Look at %NL80211_ATTR_SOCKET_OWNER as well.
865 * @NL80211_CMD_DEL_NAN_FUNCTION: Delete a NAN function by cookie.
866 * This command is also used as a notification sent when a NAN function is
867 * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID
868 * and %NL80211_ATTR_COOKIE attributes.
869 * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN configuration. NAN
870 * must be operational (%NL80211_CMD_START_NAN was executed).
871 * It must contain at least one of the following attributes:
872 * %NL80211_ATTR_NAN_MASTER_PREF, %NL80211_ATTR_NAN_DUAL.
873 * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
874 * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
875 * %NL80211_ATTR_COOKIE.
876 *
841 * @NL80211_CMD_MAX: highest used command number 877 * @NL80211_CMD_MAX: highest used command number
842 * @__NL80211_CMD_AFTER_LAST: internal use 878 * @__NL80211_CMD_AFTER_LAST: internal use
843 */ 879 */
@@ -1026,6 +1062,13 @@ enum nl80211_commands {
1026 1062
1027 NL80211_CMD_ABORT_SCAN, 1063 NL80211_CMD_ABORT_SCAN,
1028 1064
1065 NL80211_CMD_START_NAN,
1066 NL80211_CMD_STOP_NAN,
1067 NL80211_CMD_ADD_NAN_FUNCTION,
1068 NL80211_CMD_DEL_NAN_FUNCTION,
1069 NL80211_CMD_CHANGE_NAN_CONFIG,
1070 NL80211_CMD_NAN_MATCH,
1071
1029 /* add new commands above here */ 1072 /* add new commands above here */
1030 1073
1031 /* used to define NL80211_CMD_MAX below */ 1074 /* used to define NL80211_CMD_MAX below */
@@ -1343,7 +1386,13 @@ enum nl80211_commands {
1343 * enum nl80211_band value is used as the index (nla_type() of the nested 1386 * enum nl80211_band value is used as the index (nla_type() of the nested
1344 * data. If a band is not included, it will be configured to allow all 1387 * data. If a band is not included, it will be configured to allow all
1345 * rates based on negotiated supported rates information. This attribute 1388 * rates based on negotiated supported rates information. This attribute
1346 * is used with %NL80211_CMD_SET_TX_BITRATE_MASK. 1389 * is used with %NL80211_CMD_SET_TX_BITRATE_MASK and with starting AP,
1390 * and joining mesh networks (not IBSS yet). In the later case, it must
1391 * specify just a single bitrate, which is to be used for the beacon.
1392 * The driver must also specify support for this with the extended
1393 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
1394 * NL80211_EXT_FEATURE_BEACON_RATE_HT and
1395 * NL80211_EXT_FEATURE_BEACON_RATE_VHT.
1347 * 1396 *
1348 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain 1397 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
1349 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME. 1398 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
@@ -1733,6 +1782,12 @@ enum nl80211_commands {
1733 * regulatory indoor configuration would be owned by the netlink socket 1782 * regulatory indoor configuration would be owned by the netlink socket
1734 * that configured the indoor setting, and the indoor operation would be 1783 * that configured the indoor setting, and the indoor operation would be
1735 * cleared when the socket is closed. 1784 * cleared when the socket is closed.
1785 * If set during NAN interface creation, the interface will be destroyed
1786 * if the socket is closed just like any other interface. Moreover, only
1787 * the netlink socket that created the interface will be allowed to add
1788 * and remove functions. NAN notifications will be sent in unicast to that
1789 * socket. Without this attribute, any socket can add functions and the
1790 * notifications will be sent to the %NL80211_MCGRP_NAN multicast group.
1736 * 1791 *
1737 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is 1792 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
1738 * the TDLS link initiator. 1793 * the TDLS link initiator.
@@ -1867,6 +1922,21 @@ enum nl80211_commands {
1867 * @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is 1922 * @NL80211_ATTR_MESH_PEER_AID: Association ID for the mesh peer (u16). This is
1868 * used to pull the stored data for mesh peer in power save state. 1923 * used to pull the stored data for mesh peer in power save state.
1869 * 1924 *
1925 * @NL80211_ATTR_NAN_MASTER_PREF: the master preference to be used by
1926 * %NL80211_CMD_START_NAN and optionally with
1927 * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0.
1928 * Also, values 1 and 255 are reserved for certification purposes and
1929 * should not be used during a normal device operation.
1930 * @NL80211_ATTR_NAN_DUAL: NAN dual band operation config (see
1931 * &enum nl80211_nan_dual_band_conf). This attribute is used with
1932 * %NL80211_CMD_START_NAN and optionally with
1933 * %NL80211_CMD_CHANGE_NAN_CONFIG.
1934 * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See
1935 * &enum nl80211_nan_func_attributes for description of this nested
1936 * attribute.
1937 * @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
1938 * See &enum nl80211_nan_match_attributes.
1939 *
1870 * @NUM_NL80211_ATTR: total number of nl80211_attrs available 1940 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
1871 * @NL80211_ATTR_MAX: highest attribute number currently defined 1941 * @NL80211_ATTR_MAX: highest attribute number currently defined
1872 * @__NL80211_ATTR_AFTER_LAST: internal use 1942 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2261,6 +2331,11 @@ enum nl80211_attrs {
2261 2331
2262 NL80211_ATTR_MESH_PEER_AID, 2332 NL80211_ATTR_MESH_PEER_AID,
2263 2333
2334 NL80211_ATTR_NAN_MASTER_PREF,
2335 NL80211_ATTR_NAN_DUAL,
2336 NL80211_ATTR_NAN_FUNC,
2337 NL80211_ATTR_NAN_MATCH,
2338
2264 /* add attributes here, update the policy in nl80211.c */ 2339 /* add attributes here, update the policy in nl80211.c */
2265 2340
2266 __NL80211_ATTR_AFTER_LAST, 2341 __NL80211_ATTR_AFTER_LAST,
@@ -2339,6 +2414,7 @@ enum nl80211_attrs {
2339 * commands to create and destroy one 2414 * commands to create and destroy one
2340 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS 2415 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS
2341 * This mode corresponds to the MIB variable dot11OCBActivated=true 2416 * This mode corresponds to the MIB variable dot11OCBActivated=true
2417 * @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
2342 * @NL80211_IFTYPE_MAX: highest interface type number currently defined 2418 * @NL80211_IFTYPE_MAX: highest interface type number currently defined
2343 * @NUM_NL80211_IFTYPES: number of defined interface types 2419 * @NUM_NL80211_IFTYPES: number of defined interface types
2344 * 2420 *
@@ -2359,6 +2435,7 @@ enum nl80211_iftype {
2359 NL80211_IFTYPE_P2P_GO, 2435 NL80211_IFTYPE_P2P_GO,
2360 NL80211_IFTYPE_P2P_DEVICE, 2436 NL80211_IFTYPE_P2P_DEVICE,
2361 NL80211_IFTYPE_OCB, 2437 NL80211_IFTYPE_OCB,
2438 NL80211_IFTYPE_NAN,
2362 2439
2363 /* keep last */ 2440 /* keep last */
2364 NUM_NL80211_IFTYPES, 2441 NUM_NL80211_IFTYPES,
@@ -4551,6 +4628,12 @@ enum nl80211_feature_flags {
4551 * (if available). 4628 * (if available).
4552 * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of 4629 * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
4553 * channel dwell time. 4630 * channel dwell time.
4631 * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
4632 * configuration (AP/mesh), supporting a legacy (non HT/VHT) rate.
4633 * @NL80211_EXT_FEATURE_BEACON_RATE_HT: Driver supports beacon rate
4634 * configuration (AP/mesh) with HT rates.
4635 * @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
4636 * configuration (AP/mesh) with VHT rates.
4554 * 4637 *
4555 * @NUM_NL80211_EXT_FEATURES: number of extended features. 4638 * @NUM_NL80211_EXT_FEATURES: number of extended features.
4556 * @MAX_NL80211_EXT_FEATURES: highest extended feature index. 4639 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4562,6 +4645,9 @@ enum nl80211_ext_feature_index {
4562 NL80211_EXT_FEATURE_SCAN_START_TIME, 4645 NL80211_EXT_FEATURE_SCAN_START_TIME,
4563 NL80211_EXT_FEATURE_BSS_PARENT_TSF, 4646 NL80211_EXT_FEATURE_BSS_PARENT_TSF,
4564 NL80211_EXT_FEATURE_SET_SCAN_DWELL, 4647 NL80211_EXT_FEATURE_SET_SCAN_DWELL,
4648 NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
4649 NL80211_EXT_FEATURE_BEACON_RATE_HT,
4650 NL80211_EXT_FEATURE_BEACON_RATE_VHT,
4565 4651
4566 /* add new features before the definition below */ 4652 /* add new features before the definition below */
4567 NUM_NL80211_EXT_FEATURES, 4653 NUM_NL80211_EXT_FEATURES,
@@ -4855,4 +4941,186 @@ enum nl80211_bss_select_attr {
4855 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1 4941 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
4856}; 4942};
4857 4943
4944/**
4945 * enum nl80211_nan_dual_band_conf - NAN dual band configuration
4946 *
4947 * Defines the NAN dual band mode of operation
4948 *
4949 * @NL80211_NAN_BAND_DEFAULT: device default mode
4950 * @NL80211_NAN_BAND_2GHZ: 2.4GHz mode
4951 * @NL80211_NAN_BAND_5GHZ: 5GHz mode
4952 */
4953enum nl80211_nan_dual_band_conf {
4954 NL80211_NAN_BAND_DEFAULT = 1 << 0,
4955 NL80211_NAN_BAND_2GHZ = 1 << 1,
4956 NL80211_NAN_BAND_5GHZ = 1 << 2,
4957};
4958
4959/**
4960 * enum nl80211_nan_function_type - NAN function type
4961 *
4962 * Defines the function type of a NAN function
4963 *
4964 * @NL80211_NAN_FUNC_PUBLISH: function is publish
4965 * @NL80211_NAN_FUNC_SUBSCRIBE: function is subscribe
4966 * @NL80211_NAN_FUNC_FOLLOW_UP: function is follow-up
4967 */
4968enum nl80211_nan_function_type {
4969 NL80211_NAN_FUNC_PUBLISH,
4970 NL80211_NAN_FUNC_SUBSCRIBE,
4971 NL80211_NAN_FUNC_FOLLOW_UP,
4972
4973 /* keep last */
4974 __NL80211_NAN_FUNC_TYPE_AFTER_LAST,
4975 NL80211_NAN_FUNC_MAX_TYPE = __NL80211_NAN_FUNC_TYPE_AFTER_LAST - 1,
4976};
4977
4978/**
4979 * enum nl80211_nan_publish_type - NAN publish tx type
4980 *
4981 * Defines how to send publish Service Discovery Frames
4982 *
4983 * @NL80211_NAN_SOLICITED_PUBLISH: publish function is solicited
4984 * @NL80211_NAN_UNSOLICITED_PUBLISH: publish function is unsolicited
4985 */
4986enum nl80211_nan_publish_type {
4987 NL80211_NAN_SOLICITED_PUBLISH = 1 << 0,
4988 NL80211_NAN_UNSOLICITED_PUBLISH = 1 << 1,
4989};
4990
4991/**
4992 * enum nl80211_nan_func_term_reason - NAN functions termination reason
4993 *
4994 * Defines termination reasons of a NAN function
4995 *
4996 * @NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST: requested by user
4997 * @NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED: timeout
4998 * @NL80211_NAN_FUNC_TERM_REASON_ERROR: errored
4999 */
5000enum nl80211_nan_func_term_reason {
5001 NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST,
5002 NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED,
5003 NL80211_NAN_FUNC_TERM_REASON_ERROR,
5004};
5005
5006#define NL80211_NAN_FUNC_SERVICE_ID_LEN 6
5007#define NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN 0xff
5008#define NL80211_NAN_FUNC_SRF_MAX_LEN 0xff
5009
5010/**
5011 * enum nl80211_nan_func_attributes - NAN function attributes
5012 * @__NL80211_NAN_FUNC_INVALID: invalid
5013 * @NL80211_NAN_FUNC_TYPE: &enum nl80211_nan_function_type (u8).
5014 * @NL80211_NAN_FUNC_SERVICE_ID: 6 bytes of the service ID hash as
5015 * specified in NAN spec. This is a binary attribute.
5016 * @NL80211_NAN_FUNC_PUBLISH_TYPE: relevant if the function's type is
5017 * publish. Defines the transmission type for the publish Service Discovery
5018 * Frame, see &enum nl80211_nan_publish_type. Its type is u8.
5019 * @NL80211_NAN_FUNC_PUBLISH_BCAST: relevant if the function is a solicited
5020 * publish. Should the solicited publish Service Discovery Frame be sent to
5021 * the NAN Broadcast address. This is a flag.
5022 * @NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE: relevant if the function's type is
5023 * subscribe. Is the subscribe active. This is a flag.
5024 * @NL80211_NAN_FUNC_FOLLOW_UP_ID: relevant if the function's type is follow up.
5025 * The instance ID for the follow up Service Discovery Frame. This is u8.
5026 * @NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID: relevant if the function's type
5027 * is follow up. This is a u8.
5028 * The requestor instance ID for the follow up Service Discovery Frame.
5029 * @NL80211_NAN_FUNC_FOLLOW_UP_DEST: the MAC address of the recipient of the
5030 * follow up Service Discovery Frame. This is a binary attribute.
5031 * @NL80211_NAN_FUNC_CLOSE_RANGE: is this function limited for devices in a
5032 * close range. The range itself (RSSI) is defined by the device.
5033 * This is a flag.
5034 * @NL80211_NAN_FUNC_TTL: strictly positive number of DWs this function should
5035 * stay active. If not present infinite TTL is assumed. This is a u32.
5036 * @NL80211_NAN_FUNC_SERVICE_INFO: array of bytes describing the service
5037 * specific info. This is a binary attribute.
5038 * @NL80211_NAN_FUNC_SRF: Service Receive Filter. This is a nested attribute.
5039 * See &enum nl80211_nan_srf_attributes.
5040 * @NL80211_NAN_FUNC_RX_MATCH_FILTER: Receive Matching filter. This is a nested
5041 * attribute. It is a list of binary values.
5042 * @NL80211_NAN_FUNC_TX_MATCH_FILTER: Transmit Matching filter. This is a
5043 * nested attribute. It is a list of binary values.
5044 * @NL80211_NAN_FUNC_INSTANCE_ID: The instance ID of the function.
5045 * Its type is u8 and it cannot be 0.
5046 * @NL80211_NAN_FUNC_TERM_REASON: NAN function termination reason.
5047 * See &enum nl80211_nan_func_term_reason.
5048 *
5049 * @NUM_NL80211_NAN_FUNC_ATTR: internal
5050 * @NL80211_NAN_FUNC_ATTR_MAX: highest NAN function attribute
5051 */
5052enum nl80211_nan_func_attributes {
5053 __NL80211_NAN_FUNC_INVALID,
5054 NL80211_NAN_FUNC_TYPE,
5055 NL80211_NAN_FUNC_SERVICE_ID,
5056 NL80211_NAN_FUNC_PUBLISH_TYPE,
5057 NL80211_NAN_FUNC_PUBLISH_BCAST,
5058 NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE,
5059 NL80211_NAN_FUNC_FOLLOW_UP_ID,
5060 NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID,
5061 NL80211_NAN_FUNC_FOLLOW_UP_DEST,
5062 NL80211_NAN_FUNC_CLOSE_RANGE,
5063 NL80211_NAN_FUNC_TTL,
5064 NL80211_NAN_FUNC_SERVICE_INFO,
5065 NL80211_NAN_FUNC_SRF,
5066 NL80211_NAN_FUNC_RX_MATCH_FILTER,
5067 NL80211_NAN_FUNC_TX_MATCH_FILTER,
5068 NL80211_NAN_FUNC_INSTANCE_ID,
5069 NL80211_NAN_FUNC_TERM_REASON,
5070
5071 /* keep last */
5072 NUM_NL80211_NAN_FUNC_ATTR,
5073 NL80211_NAN_FUNC_ATTR_MAX = NUM_NL80211_NAN_FUNC_ATTR - 1
5074};
5075
5076/**
5077 * enum nl80211_nan_srf_attributes - NAN Service Response filter attributes
5078 * @__NL80211_NAN_SRF_INVALID: invalid
5079 * @NL80211_NAN_SRF_INCLUDE: present if the include bit of the SRF set.
5080 * This is a flag.
5081 * @NL80211_NAN_SRF_BF: Bloom Filter. Present if and only if
5082 * &NL80211_NAN_SRF_MAC_ADDRS isn't present. This attribute is binary.
5083 * @NL80211_NAN_SRF_BF_IDX: index of the Bloom Filter. Mandatory if
5084 * &NL80211_NAN_SRF_BF is present. This is a u8.
5085 * @NL80211_NAN_SRF_MAC_ADDRS: list of MAC addresses for the SRF. Present if
5086 * and only if &NL80211_NAN_SRF_BF isn't present. This is a nested
5087 * attribute. Each nested attribute is a MAC address.
5088 * @NUM_NL80211_NAN_SRF_ATTR: internal
5089 * @NL80211_NAN_SRF_ATTR_MAX: highest NAN SRF attribute
5090 */
5091enum nl80211_nan_srf_attributes {
5092 __NL80211_NAN_SRF_INVALID,
5093 NL80211_NAN_SRF_INCLUDE,
5094 NL80211_NAN_SRF_BF,
5095 NL80211_NAN_SRF_BF_IDX,
5096 NL80211_NAN_SRF_MAC_ADDRS,
5097
5098 /* keep last */
5099 NUM_NL80211_NAN_SRF_ATTR,
5100 NL80211_NAN_SRF_ATTR_MAX = NUM_NL80211_NAN_SRF_ATTR - 1,
5101};
5102
5103/**
5104 * enum nl80211_nan_match_attributes - NAN match attributes
5105 * @__NL80211_NAN_MATCH_INVALID: invalid
5106 * @NL80211_NAN_MATCH_FUNC_LOCAL: the local function that had the
5107 * match. This is a nested attribute.
5108 * See &enum nl80211_nan_func_attributes.
5109 * @NL80211_NAN_MATCH_FUNC_PEER: the peer function
5110 * that caused the match. This is a nested attribute.
5111 * See &enum nl80211_nan_func_attributes.
5112 *
5113 * @NUM_NL80211_NAN_MATCH_ATTR: internal
5114 * @NL80211_NAN_MATCH_ATTR_MAX: highest NAN match attribute
5115 */
5116enum nl80211_nan_match_attributes {
5117 __NL80211_NAN_MATCH_INVALID,
5118 NL80211_NAN_MATCH_FUNC_LOCAL,
5119 NL80211_NAN_MATCH_FUNC_PEER,
5120
5121 /* keep last */
5122 NUM_NL80211_NAN_MATCH_ATTR,
5123 NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
5124};
5125
4858#endif /* __LINUX_NL80211_H */ 5126#endif /* __LINUX_NL80211_H */
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 54c3b4f4aceb..59ed3992c760 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -605,13 +605,13 @@ struct ovs_action_push_mpls {
605 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set 605 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set
606 * (but it will not be set in the 802.1Q header that is pushed). 606 * (but it will not be set in the 802.1Q header that is pushed).
607 * 607 *
608 * The @vlan_tpid value is typically %ETH_P_8021Q. The only acceptable TPID 608 * The @vlan_tpid value is typically %ETH_P_8021Q or %ETH_P_8021AD.
609 * values are those that the kernel module also parses as 802.1Q headers, to 609 * The only acceptable TPID values are those that the kernel module also parses
610 * prevent %OVS_ACTION_ATTR_PUSH_VLAN followed by %OVS_ACTION_ATTR_POP_VLAN 610 * as 802.1Q or 802.1AD headers, to prevent %OVS_ACTION_ATTR_PUSH_VLAN followed
611 * from having surprising results. 611 * by %OVS_ACTION_ATTR_POP_VLAN from having surprising results.
612 */ 612 */
613struct ovs_action_push_vlan { 613struct ovs_action_push_vlan {
614 __be16 vlan_tpid; /* 802.1Q TPID. */ 614 __be16 vlan_tpid; /* 802.1Q or 802.1ad TPID. */
615 __be16 vlan_tci; /* 802.1Q TCI (VLAN ID and priority). */ 615 __be16 vlan_tci; /* 802.1Q TCI (VLAN ID and priority). */
616}; 616};
617 617
@@ -721,9 +721,10 @@ enum ovs_nat_attr {
721 * is copied from the value to the packet header field, rest of the bits are 721 * is copied from the value to the packet header field, rest of the bits are
722 * left unchanged. The non-masked value bits must be passed in as zeroes. 722 * left unchanged. The non-masked value bits must be passed in as zeroes.
723 * Masking is not supported for the %OVS_KEY_ATTR_TUNNEL attribute. 723 * Masking is not supported for the %OVS_KEY_ATTR_TUNNEL attribute.
724 * @OVS_ACTION_ATTR_PUSH_VLAN: Push a new outermost 802.1Q header onto the 724 * @OVS_ACTION_ATTR_PUSH_VLAN: Push a new outermost 802.1Q or 802.1ad header
725 * packet. 725 * onto the packet.
726 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q header off the packet. 726 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q or 802.1ad header
727 * from the packet.
727 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in 728 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in
728 * the nested %OVS_SAMPLE_ATTR_* attributes. 729 * the nested %OVS_SAMPLE_ATTR_* attributes.
729 * @OVS_ACTION_ATTR_PUSH_MPLS: Push a new MPLS label stack entry onto the 730 * @OVS_ACTION_ATTR_PUSH_MPLS: Push a new MPLS label stack entry onto the
diff --git a/include/uapi/linux/pkt_cls.h b/include/uapi/linux/pkt_cls.h
index d1c1ccaba787..8fd715f806a2 100644
--- a/include/uapi/linux/pkt_cls.h
+++ b/include/uapi/linux/pkt_cls.h
@@ -396,6 +396,7 @@ enum {
396 TCA_BPF_FD, 396 TCA_BPF_FD,
397 TCA_BPF_NAME, 397 TCA_BPF_NAME,
398 TCA_BPF_FLAGS, 398 TCA_BPF_FLAGS,
399 TCA_BPF_FLAGS_GEN,
399 __TCA_BPF_MAX, 400 __TCA_BPF_MAX,
400}; 401};
401 402
@@ -428,6 +429,24 @@ enum {
428 TCA_FLOWER_KEY_UDP_DST, /* be16 */ 429 TCA_FLOWER_KEY_UDP_DST, /* be16 */
429 430
430 TCA_FLOWER_FLAGS, 431 TCA_FLOWER_FLAGS,
432 TCA_FLOWER_KEY_VLAN_ID, /* be16 */
433 TCA_FLOWER_KEY_VLAN_PRIO, /* u8 */
434 TCA_FLOWER_KEY_VLAN_ETH_TYPE, /* be16 */
435
436 TCA_FLOWER_KEY_ENC_KEY_ID, /* be32 */
437 TCA_FLOWER_KEY_ENC_IPV4_SRC, /* be32 */
438 TCA_FLOWER_KEY_ENC_IPV4_SRC_MASK,/* be32 */
439 TCA_FLOWER_KEY_ENC_IPV4_DST, /* be32 */
440 TCA_FLOWER_KEY_ENC_IPV4_DST_MASK,/* be32 */
441 TCA_FLOWER_KEY_ENC_IPV6_SRC, /* struct in6_addr */
442 TCA_FLOWER_KEY_ENC_IPV6_SRC_MASK,/* struct in6_addr */
443 TCA_FLOWER_KEY_ENC_IPV6_DST, /* struct in6_addr */
444 TCA_FLOWER_KEY_ENC_IPV6_DST_MASK,/* struct in6_addr */
445
446 TCA_FLOWER_KEY_TCP_SRC_MASK, /* be16 */
447 TCA_FLOWER_KEY_TCP_DST_MASK, /* be16 */
448 TCA_FLOWER_KEY_UDP_SRC_MASK, /* be16 */
449 TCA_FLOWER_KEY_UDP_DST_MASK, /* be16 */
431 __TCA_FLOWER_MAX, 450 __TCA_FLOWER_MAX,
432}; 451};
433 452
diff --git a/include/uapi/linux/pkt_sched.h b/include/uapi/linux/pkt_sched.h
index 2382eed50278..df7451d35131 100644
--- a/include/uapi/linux/pkt_sched.h
+++ b/include/uapi/linux/pkt_sched.h
@@ -792,6 +792,8 @@ enum {
792 792
793 TCA_FQ_ORPHAN_MASK, /* mask applied to orphaned skb hashes */ 793 TCA_FQ_ORPHAN_MASK, /* mask applied to orphaned skb hashes */
794 794
795 TCA_FQ_LOW_RATE_THRESHOLD, /* per packet delay under this rate */
796
795 __TCA_FQ_MAX 797 __TCA_FQ_MAX
796}; 798};
797 799
@@ -809,7 +811,7 @@ struct tc_fq_qd_stats {
809 __u32 flows; 811 __u32 flows;
810 __u32 inactive_flows; 812 __u32 inactive_flows;
811 __u32 throttled_flows; 813 __u32 throttled_flows;
812 __u32 pad; 814 __u32 unthrottle_latency_ns;
813}; 815};
814 816
815/* Heavy-Hitter Filter */ 817/* Heavy-Hitter Filter */
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index 25a9ad8bcef1..e7a31f830690 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -235,6 +235,7 @@ enum
235 LINUX_MIB_TCPSPURIOUSRTOS, /* TCPSpuriousRTOs */ 235 LINUX_MIB_TCPSPURIOUSRTOS, /* TCPSpuriousRTOs */
236 LINUX_MIB_TCPMD5NOTFOUND, /* TCPMD5NotFound */ 236 LINUX_MIB_TCPMD5NOTFOUND, /* TCPMD5NotFound */
237 LINUX_MIB_TCPMD5UNEXPECTED, /* TCPMD5Unexpected */ 237 LINUX_MIB_TCPMD5UNEXPECTED, /* TCPMD5Unexpected */
238 LINUX_MIB_TCPMD5FAILURE, /* TCPMD5Failure */
238 LINUX_MIB_SACKSHIFTED, 239 LINUX_MIB_SACKSHIFTED,
239 LINUX_MIB_SACKMERGED, 240 LINUX_MIB_SACKMERGED,
240 LINUX_MIB_SACKSHIFTFALLBACK, 241 LINUX_MIB_SACKSHIFTFALLBACK,
diff --git a/include/uapi/linux/tc_act/tc_ife.h b/include/uapi/linux/tc_act/tc_ife.h
index 4ece02a77b9a..cd18360eca24 100644
--- a/include/uapi/linux/tc_act/tc_ife.h
+++ b/include/uapi/linux/tc_act/tc_ife.h
@@ -32,8 +32,9 @@ enum {
32#define IFE_META_HASHID 2 32#define IFE_META_HASHID 2
33#define IFE_META_PRIO 3 33#define IFE_META_PRIO 3
34#define IFE_META_QMAP 4 34#define IFE_META_QMAP 4
35#define IFE_META_TCINDEX 5
35/*Can be overridden at runtime by module option*/ 36/*Can be overridden at runtime by module option*/
36#define __IFE_META_MAX 5 37#define __IFE_META_MAX 6
37#define IFE_META_MAX (__IFE_META_MAX - 1) 38#define IFE_META_MAX (__IFE_META_MAX - 1)
38 39
39#endif 40#endif
diff --git a/include/uapi/linux/tc_act/tc_skbmod.h b/include/uapi/linux/tc_act/tc_skbmod.h
new file mode 100644
index 000000000000..10fc07da6c69
--- /dev/null
+++ b/include/uapi/linux/tc_act/tc_skbmod.h
@@ -0,0 +1,39 @@
1/*
2 * Copyright (c) 2016, Jamal Hadi Salim
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8*/
9
10#ifndef __LINUX_TC_SKBMOD_H
11#define __LINUX_TC_SKBMOD_H
12
13#include <linux/pkt_cls.h>
14
15#define TCA_ACT_SKBMOD 15
16
17#define SKBMOD_F_DMAC 0x1
18#define SKBMOD_F_SMAC 0x2
19#define SKBMOD_F_ETYPE 0x4
20#define SKBMOD_F_SWAPMAC 0x8
21
22struct tc_skbmod {
23 tc_gen;
24 __u64 flags;
25};
26
27enum {
28 TCA_SKBMOD_UNSPEC,
29 TCA_SKBMOD_TM,
30 TCA_SKBMOD_PARMS,
31 TCA_SKBMOD_DMAC,
32 TCA_SKBMOD_SMAC,
33 TCA_SKBMOD_ETYPE,
34 TCA_SKBMOD_PAD,
35 __TCA_SKBMOD_MAX
36};
37#define TCA_SKBMOD_MAX (__TCA_SKBMOD_MAX - 1)
38
39#endif
diff --git a/include/uapi/linux/tc_act/tc_tunnel_key.h b/include/uapi/linux/tc_act/tc_tunnel_key.h
new file mode 100644
index 000000000000..890106ff16e6
--- /dev/null
+++ b/include/uapi/linux/tc_act/tc_tunnel_key.h
@@ -0,0 +1,41 @@
1/*
2 * Copyright (c) 2016, Amir Vadai <amir@vadai.me>
3 * Copyright (c) 2016, Mellanox Technologies. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 */
10
11#ifndef __LINUX_TC_TUNNEL_KEY_H
12#define __LINUX_TC_TUNNEL_KEY_H
13
14#include <linux/pkt_cls.h>
15
16#define TCA_ACT_TUNNEL_KEY 17
17
18#define TCA_TUNNEL_KEY_ACT_SET 1
19#define TCA_TUNNEL_KEY_ACT_RELEASE 2
20
21struct tc_tunnel_key {
22 tc_gen;
23 int t_action;
24};
25
26enum {
27 TCA_TUNNEL_KEY_UNSPEC,
28 TCA_TUNNEL_KEY_TM,
29 TCA_TUNNEL_KEY_PARMS,
30 TCA_TUNNEL_KEY_ENC_IPV4_SRC, /* be32 */
31 TCA_TUNNEL_KEY_ENC_IPV4_DST, /* be32 */
32 TCA_TUNNEL_KEY_ENC_IPV6_SRC, /* struct in6_addr */
33 TCA_TUNNEL_KEY_ENC_IPV6_DST, /* struct in6_addr */
34 TCA_TUNNEL_KEY_ENC_KEY_ID, /* be64 */
35 TCA_TUNNEL_KEY_PAD,
36 __TCA_TUNNEL_KEY_MAX,
37};
38
39#define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
40
41#endif
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
index 31151ff6264f..bddb272b843f 100644
--- a/include/uapi/linux/tc_act/tc_vlan.h
+++ b/include/uapi/linux/tc_act/tc_vlan.h
@@ -16,6 +16,7 @@
16 16
17#define TCA_VLAN_ACT_POP 1 17#define TCA_VLAN_ACT_POP 1
18#define TCA_VLAN_ACT_PUSH 2 18#define TCA_VLAN_ACT_PUSH 2
19#define TCA_VLAN_ACT_MODIFY 3
19 20
20struct tc_vlan { 21struct tc_vlan {
21 tc_gen; 22 tc_gen;
@@ -29,6 +30,7 @@ enum {
29 TCA_VLAN_PUSH_VLAN_ID, 30 TCA_VLAN_PUSH_VLAN_ID,
30 TCA_VLAN_PUSH_VLAN_PROTOCOL, 31 TCA_VLAN_PUSH_VLAN_PROTOCOL,
31 TCA_VLAN_PAD, 32 TCA_VLAN_PAD,
33 TCA_VLAN_PUSH_VLAN_PRIORITY,
32 __TCA_VLAN_MAX, 34 __TCA_VLAN_MAX,
33}; 35};
34#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1) 36#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index 482898fc433a..73ac0db487f8 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -167,6 +167,7 @@ struct tcp_info {
167 __u8 tcpi_backoff; 167 __u8 tcpi_backoff;
168 __u8 tcpi_options; 168 __u8 tcpi_options;
169 __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4; 169 __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
170 __u8 tcpi_delivery_rate_app_limited:1;
170 171
171 __u32 tcpi_rto; 172 __u32 tcpi_rto;
172 __u32 tcpi_ato; 173 __u32 tcpi_ato;
@@ -211,6 +212,8 @@ struct tcp_info {
211 __u32 tcpi_min_rtt; 212 __u32 tcpi_min_rtt;
212 __u32 tcpi_data_segs_in; /* RFC4898 tcpEStatsDataSegsIn */ 213 __u32 tcpi_data_segs_in; /* RFC4898 tcpEStatsDataSegsIn */
213 __u32 tcpi_data_segs_out; /* RFC4898 tcpEStatsDataSegsOut */ 214 __u32 tcpi_data_segs_out; /* RFC4898 tcpEStatsDataSegsOut */
215
216 __u64 tcpi_delivery_rate;
214}; 217};
215 218
216/* for TCP_MD5SIG socket option */ 219/* for TCP_MD5SIG socket option */
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
index 5f3f6d09fb79..f9edd20fe9ba 100644
--- a/include/uapi/linux/tipc_netlink.h
+++ b/include/uapi/linux/tipc_netlink.h
@@ -59,6 +59,9 @@ enum {
59 TIPC_NL_MON_SET, 59 TIPC_NL_MON_SET,
60 TIPC_NL_MON_GET, 60 TIPC_NL_MON_GET,
61 TIPC_NL_MON_PEER_GET, 61 TIPC_NL_MON_PEER_GET,
62 TIPC_NL_PEER_REMOVE,
63 TIPC_NL_BEARER_ADD,
64 TIPC_NL_UDP_GET_REMOTEIP,
62 65
63 __TIPC_NL_CMD_MAX, 66 __TIPC_NL_CMD_MAX,
64 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1 67 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
@@ -98,6 +101,7 @@ enum {
98 TIPC_NLA_UDP_UNSPEC, 101 TIPC_NLA_UDP_UNSPEC,
99 TIPC_NLA_UDP_LOCAL, /* sockaddr_storage */ 102 TIPC_NLA_UDP_LOCAL, /* sockaddr_storage */
100 TIPC_NLA_UDP_REMOTE, /* sockaddr_storage */ 103 TIPC_NLA_UDP_REMOTE, /* sockaddr_storage */
104 TIPC_NLA_UDP_MULTI_REMOTEIP, /* flag */
101 105
102 __TIPC_NLA_UDP_MAX, 106 __TIPC_NLA_UDP_MAX,
103 TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1 107 TIPC_NLA_UDP_MAX = __TIPC_NLA_UDP_MAX - 1
diff --git a/include/uapi/linux/xfrm.h b/include/uapi/linux/xfrm.h
index 143338978b48..1fc62b239f1b 100644
--- a/include/uapi/linux/xfrm.h
+++ b/include/uapi/linux/xfrm.h
@@ -298,7 +298,7 @@ enum xfrm_attr_type_t {
298 XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */ 298 XFRMA_ALG_AUTH_TRUNC, /* struct xfrm_algo_auth */
299 XFRMA_MARK, /* struct xfrm_mark */ 299 XFRMA_MARK, /* struct xfrm_mark */
300 XFRMA_TFCPAD, /* __u32 */ 300 XFRMA_TFCPAD, /* __u32 */
301 XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_esn */ 301 XFRMA_REPLAY_ESN_VAL, /* struct xfrm_replay_state_esn */
302 XFRMA_SA_EXTRA_FLAGS, /* __u32 */ 302 XFRMA_SA_EXTRA_FLAGS, /* __u32 */
303 XFRMA_PROTO, /* __u8 */ 303 XFRMA_PROTO, /* __u8 */
304 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */ 304 XFRMA_ADDRESS_FILTER, /* struct xfrm_address_filter */