1607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_LINK_H 2607ca46eSDavid Howells #define _UAPI_LINUX_IF_LINK_H 3607ca46eSDavid Howells 4607ca46eSDavid Howells #include <linux/types.h> 5607ca46eSDavid Howells #include <linux/netlink.h> 6607ca46eSDavid Howells 7607ca46eSDavid Howells /* This struct should be in sync with struct rtnl_link_stats64 */ 8607ca46eSDavid Howells struct rtnl_link_stats { 9607ca46eSDavid Howells __u32 rx_packets; /* total packets received */ 10607ca46eSDavid Howells __u32 tx_packets; /* total packets transmitted */ 11607ca46eSDavid Howells __u32 rx_bytes; /* total bytes received */ 12607ca46eSDavid Howells __u32 tx_bytes; /* total bytes transmitted */ 13607ca46eSDavid Howells __u32 rx_errors; /* bad packets received */ 14607ca46eSDavid Howells __u32 tx_errors; /* packet transmit problems */ 15607ca46eSDavid Howells __u32 rx_dropped; /* no space in linux buffers */ 16607ca46eSDavid Howells __u32 tx_dropped; /* no space available in linux */ 17607ca46eSDavid Howells __u32 multicast; /* multicast packets received */ 18607ca46eSDavid Howells __u32 collisions; 19607ca46eSDavid Howells 20607ca46eSDavid Howells /* detailed rx_errors: */ 21607ca46eSDavid Howells __u32 rx_length_errors; 22607ca46eSDavid Howells __u32 rx_over_errors; /* receiver ring buff overflow */ 23607ca46eSDavid Howells __u32 rx_crc_errors; /* recved pkt with crc error */ 24607ca46eSDavid Howells __u32 rx_frame_errors; /* recv'd frame alignment error */ 25607ca46eSDavid Howells __u32 rx_fifo_errors; /* recv'r fifo overrun */ 26607ca46eSDavid Howells __u32 rx_missed_errors; /* receiver missed packet */ 27607ca46eSDavid Howells 28607ca46eSDavid Howells /* detailed tx_errors */ 29607ca46eSDavid Howells __u32 tx_aborted_errors; 30607ca46eSDavid Howells __u32 tx_carrier_errors; 31607ca46eSDavid Howells __u32 tx_fifo_errors; 32607ca46eSDavid Howells __u32 tx_heartbeat_errors; 33607ca46eSDavid Howells __u32 tx_window_errors; 34607ca46eSDavid Howells 35607ca46eSDavid Howells /* for cslip etc */ 36607ca46eSDavid Howells __u32 rx_compressed; 37607ca46eSDavid Howells __u32 tx_compressed; 38607ca46eSDavid Howells }; 39607ca46eSDavid Howells 40607ca46eSDavid Howells /* The main device statistics structure */ 41607ca46eSDavid Howells struct rtnl_link_stats64 { 42607ca46eSDavid Howells __u64 rx_packets; /* total packets received */ 43607ca46eSDavid Howells __u64 tx_packets; /* total packets transmitted */ 44607ca46eSDavid Howells __u64 rx_bytes; /* total bytes received */ 45607ca46eSDavid Howells __u64 tx_bytes; /* total bytes transmitted */ 46607ca46eSDavid Howells __u64 rx_errors; /* bad packets received */ 47607ca46eSDavid Howells __u64 tx_errors; /* packet transmit problems */ 48607ca46eSDavid Howells __u64 rx_dropped; /* no space in linux buffers */ 49607ca46eSDavid Howells __u64 tx_dropped; /* no space available in linux */ 50607ca46eSDavid Howells __u64 multicast; /* multicast packets received */ 51607ca46eSDavid Howells __u64 collisions; 52607ca46eSDavid Howells 53607ca46eSDavid Howells /* detailed rx_errors: */ 54607ca46eSDavid Howells __u64 rx_length_errors; 55607ca46eSDavid Howells __u64 rx_over_errors; /* receiver ring buff overflow */ 56607ca46eSDavid Howells __u64 rx_crc_errors; /* recved pkt with crc error */ 57607ca46eSDavid Howells __u64 rx_frame_errors; /* recv'd frame alignment error */ 58607ca46eSDavid Howells __u64 rx_fifo_errors; /* recv'r fifo overrun */ 59607ca46eSDavid Howells __u64 rx_missed_errors; /* receiver missed packet */ 60607ca46eSDavid Howells 61607ca46eSDavid Howells /* detailed tx_errors */ 62607ca46eSDavid Howells __u64 tx_aborted_errors; 63607ca46eSDavid Howells __u64 tx_carrier_errors; 64607ca46eSDavid Howells __u64 tx_fifo_errors; 65607ca46eSDavid Howells __u64 tx_heartbeat_errors; 66607ca46eSDavid Howells __u64 tx_window_errors; 67607ca46eSDavid Howells 68607ca46eSDavid Howells /* for cslip etc */ 69607ca46eSDavid Howells __u64 rx_compressed; 70607ca46eSDavid Howells __u64 tx_compressed; 71607ca46eSDavid Howells }; 72607ca46eSDavid Howells 73607ca46eSDavid Howells /* The struct should be in sync with struct ifmap */ 74607ca46eSDavid Howells struct rtnl_link_ifmap { 75607ca46eSDavid Howells __u64 mem_start; 76607ca46eSDavid Howells __u64 mem_end; 77607ca46eSDavid Howells __u64 base_addr; 78607ca46eSDavid Howells __u16 irq; 79607ca46eSDavid Howells __u8 dma; 80607ca46eSDavid Howells __u8 port; 81607ca46eSDavid Howells }; 82607ca46eSDavid Howells 83607ca46eSDavid Howells /* 84607ca46eSDavid Howells * IFLA_AF_SPEC 85607ca46eSDavid Howells * Contains nested attributes for address family specific attributes. 86607ca46eSDavid Howells * Each address family may create a attribute with the address family 87607ca46eSDavid Howells * number as type and create its own attribute structure in it. 88607ca46eSDavid Howells * 89607ca46eSDavid Howells * Example: 90607ca46eSDavid Howells * [IFLA_AF_SPEC] = { 91607ca46eSDavid Howells * [AF_INET] = { 92607ca46eSDavid Howells * [IFLA_INET_CONF] = ..., 93607ca46eSDavid Howells * }, 94607ca46eSDavid Howells * [AF_INET6] = { 95607ca46eSDavid Howells * [IFLA_INET6_FLAGS] = ..., 96607ca46eSDavid Howells * [IFLA_INET6_CONF] = ..., 97607ca46eSDavid Howells * } 98607ca46eSDavid Howells * } 99607ca46eSDavid Howells */ 100607ca46eSDavid Howells 101607ca46eSDavid Howells enum { 102607ca46eSDavid Howells IFLA_UNSPEC, 103607ca46eSDavid Howells IFLA_ADDRESS, 104607ca46eSDavid Howells IFLA_BROADCAST, 105607ca46eSDavid Howells IFLA_IFNAME, 106607ca46eSDavid Howells IFLA_MTU, 107607ca46eSDavid Howells IFLA_LINK, 108607ca46eSDavid Howells IFLA_QDISC, 109607ca46eSDavid Howells IFLA_STATS, 110607ca46eSDavid Howells IFLA_COST, 111607ca46eSDavid Howells #define IFLA_COST IFLA_COST 112607ca46eSDavid Howells IFLA_PRIORITY, 113607ca46eSDavid Howells #define IFLA_PRIORITY IFLA_PRIORITY 114607ca46eSDavid Howells IFLA_MASTER, 115607ca46eSDavid Howells #define IFLA_MASTER IFLA_MASTER 116607ca46eSDavid Howells IFLA_WIRELESS, /* Wireless Extension event - see wireless.h */ 117607ca46eSDavid Howells #define IFLA_WIRELESS IFLA_WIRELESS 118607ca46eSDavid Howells IFLA_PROTINFO, /* Protocol specific information for a link */ 119607ca46eSDavid Howells #define IFLA_PROTINFO IFLA_PROTINFO 120607ca46eSDavid Howells IFLA_TXQLEN, 121607ca46eSDavid Howells #define IFLA_TXQLEN IFLA_TXQLEN 122607ca46eSDavid Howells IFLA_MAP, 123607ca46eSDavid Howells #define IFLA_MAP IFLA_MAP 124607ca46eSDavid Howells IFLA_WEIGHT, 125607ca46eSDavid Howells #define IFLA_WEIGHT IFLA_WEIGHT 126607ca46eSDavid Howells IFLA_OPERSTATE, 127607ca46eSDavid Howells IFLA_LINKMODE, 128607ca46eSDavid Howells IFLA_LINKINFO, 129607ca46eSDavid Howells #define IFLA_LINKINFO IFLA_LINKINFO 130607ca46eSDavid Howells IFLA_NET_NS_PID, 131607ca46eSDavid Howells IFLA_IFALIAS, 132607ca46eSDavid Howells IFLA_NUM_VF, /* Number of VFs if device is SR-IOV PF */ 133607ca46eSDavid Howells IFLA_VFINFO_LIST, 134607ca46eSDavid Howells IFLA_STATS64, 135607ca46eSDavid Howells IFLA_VF_PORTS, 136607ca46eSDavid Howells IFLA_PORT_SELF, 137607ca46eSDavid Howells IFLA_AF_SPEC, 138607ca46eSDavid Howells IFLA_GROUP, /* Group the device belongs to */ 139607ca46eSDavid Howells IFLA_NET_NS_FD, 140607ca46eSDavid Howells IFLA_EXT_MASK, /* Extended info mask, VFs, etc */ 141607ca46eSDavid Howells IFLA_PROMISCUITY, /* Promiscuity count: > 0 means acts PROMISC */ 142607ca46eSDavid Howells #define IFLA_PROMISCUITY IFLA_PROMISCUITY 143607ca46eSDavid Howells IFLA_NUM_TX_QUEUES, 144607ca46eSDavid Howells IFLA_NUM_RX_QUEUES, 1459a57247fSJiri Pirko IFLA_CARRIER, 14666cae9edSJiri Pirko IFLA_PHYS_PORT_ID, 1472d3b479dSdavid decotigny IFLA_CARRIER_CHANGES, 14882f28412SJiri Pirko IFLA_PHYS_SWITCH_ID, 149d37512a2SNicolas Dichtel IFLA_LINK_NETNSID, 150db24a904SDavid Ahern IFLA_PHYS_PORT_NAME, 15188d6378bSAnuradha Karuppiah IFLA_PROTO_DOWN, 152607ca46eSDavid Howells __IFLA_MAX 153607ca46eSDavid Howells }; 154607ca46eSDavid Howells 155607ca46eSDavid Howells 156607ca46eSDavid Howells #define IFLA_MAX (__IFLA_MAX - 1) 157607ca46eSDavid Howells 158607ca46eSDavid Howells /* backwards compatibility for userspace */ 159607ca46eSDavid Howells #ifndef __KERNEL__ 160607ca46eSDavid Howells #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg)))) 161607ca46eSDavid Howells #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg)) 162607ca46eSDavid Howells #endif 163607ca46eSDavid Howells 164607ca46eSDavid Howells enum { 165607ca46eSDavid Howells IFLA_INET_UNSPEC, 166607ca46eSDavid Howells IFLA_INET_CONF, 167607ca46eSDavid Howells __IFLA_INET_MAX, 168607ca46eSDavid Howells }; 169607ca46eSDavid Howells 170607ca46eSDavid Howells #define IFLA_INET_MAX (__IFLA_INET_MAX - 1) 171607ca46eSDavid Howells 172607ca46eSDavid Howells /* ifi_flags. 173607ca46eSDavid Howells 174607ca46eSDavid Howells IFF_* flags. 175607ca46eSDavid Howells 176607ca46eSDavid Howells The only change is: 177607ca46eSDavid Howells IFF_LOOPBACK, IFF_BROADCAST and IFF_POINTOPOINT are 178607ca46eSDavid Howells more not changeable by user. They describe link media 179607ca46eSDavid Howells characteristics and set by device driver. 180607ca46eSDavid Howells 181607ca46eSDavid Howells Comments: 182607ca46eSDavid Howells - Combination IFF_BROADCAST|IFF_POINTOPOINT is invalid 183607ca46eSDavid Howells - If neither of these three flags are set; 184607ca46eSDavid Howells the interface is NBMA. 185607ca46eSDavid Howells 186607ca46eSDavid Howells - IFF_MULTICAST does not mean anything special: 187607ca46eSDavid Howells multicasts can be used on all not-NBMA links. 188607ca46eSDavid Howells IFF_MULTICAST means that this media uses special encapsulation 189607ca46eSDavid Howells for multicast frames. Apparently, all IFF_POINTOPOINT and 190607ca46eSDavid Howells IFF_BROADCAST devices are able to use multicasts too. 191607ca46eSDavid Howells */ 192607ca46eSDavid Howells 193607ca46eSDavid Howells /* IFLA_LINK. 194607ca46eSDavid Howells For usual devices it is equal ifi_index. 195607ca46eSDavid Howells If it is a "virtual interface" (f.e. tunnel), ifi_link 196607ca46eSDavid Howells can point to real physical interface (f.e. for bandwidth calculations), 197607ca46eSDavid Howells or maybe 0, what means, that real media is unknown (usual 198607ca46eSDavid Howells for IPIP tunnels, when route to endpoint is allowed to change) 199607ca46eSDavid Howells */ 200607ca46eSDavid Howells 201607ca46eSDavid Howells /* Subtype attributes for IFLA_PROTINFO */ 202607ca46eSDavid Howells enum { 203607ca46eSDavid Howells IFLA_INET6_UNSPEC, 204607ca46eSDavid Howells IFLA_INET6_FLAGS, /* link flags */ 205607ca46eSDavid Howells IFLA_INET6_CONF, /* sysctl parameters */ 206607ca46eSDavid Howells IFLA_INET6_STATS, /* statistics */ 207607ca46eSDavid Howells IFLA_INET6_MCAST, /* MC things. What of them? */ 208607ca46eSDavid Howells IFLA_INET6_CACHEINFO, /* time values and max reasm size */ 209607ca46eSDavid Howells IFLA_INET6_ICMP6STATS, /* statistics (icmpv6) */ 210f53adae4SDaniel Borkmann IFLA_INET6_TOKEN, /* device token */ 211bc91b0f0SJiri Pirko IFLA_INET6_ADDR_GEN_MODE, /* implicit address generator mode */ 212607ca46eSDavid Howells __IFLA_INET6_MAX 213607ca46eSDavid Howells }; 214607ca46eSDavid Howells 215607ca46eSDavid Howells #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1) 216607ca46eSDavid Howells 217bc91b0f0SJiri Pirko enum in6_addr_gen_mode { 218bc91b0f0SJiri Pirko IN6_ADDR_GEN_MODE_EUI64, 219bc91b0f0SJiri Pirko IN6_ADDR_GEN_MODE_NONE, 220622c81d5SHannes Frederic Sowa IN6_ADDR_GEN_MODE_STABLE_PRIVACY, 221bc91b0f0SJiri Pirko }; 222bc91b0f0SJiri Pirko 223e5c3ea5cSJiri Pirko /* Bridge section */ 224e5c3ea5cSJiri Pirko 225e5c3ea5cSJiri Pirko enum { 226e5c3ea5cSJiri Pirko IFLA_BR_UNSPEC, 227e5c3ea5cSJiri Pirko IFLA_BR_FORWARD_DELAY, 228e5c3ea5cSJiri Pirko IFLA_BR_HELLO_TIME, 229e5c3ea5cSJiri Pirko IFLA_BR_MAX_AGE, 230af615762SJörg Thalheim IFLA_BR_AGEING_TIME, 231af615762SJörg Thalheim IFLA_BR_STP_STATE, 232af615762SJörg Thalheim IFLA_BR_PRIORITY, 233a7854037SNikolay Aleksandrov IFLA_BR_VLAN_FILTERING, 234d2d427b3SToshiaki Makita IFLA_BR_VLAN_PROTOCOL, 2357910228bSNikolay Aleksandrov IFLA_BR_GROUP_FWD_MASK, 2365127c81fSNikolay Aleksandrov IFLA_BR_ROOT_ID, 2377599a220SNikolay Aleksandrov IFLA_BR_BRIDGE_ID, 2388762ba68SNikolay Aleksandrov IFLA_BR_ROOT_PORT, 239684dd248SNikolay Aleksandrov IFLA_BR_ROOT_PATH_COST, 240*ed416309SNikolay Aleksandrov IFLA_BR_TOPOLOGY_CHANGE, 241*ed416309SNikolay Aleksandrov IFLA_BR_TOPOLOGY_CHANGE_DETECTED, 242e5c3ea5cSJiri Pirko __IFLA_BR_MAX, 243e5c3ea5cSJiri Pirko }; 244e5c3ea5cSJiri Pirko 245e5c3ea5cSJiri Pirko #define IFLA_BR_MAX (__IFLA_BR_MAX - 1) 246e5c3ea5cSJiri Pirko 2475127c81fSNikolay Aleksandrov struct ifla_bridge_id { 2485127c81fSNikolay Aleksandrov __u8 prio[2]; 2495127c81fSNikolay Aleksandrov __u8 addr[6]; /* ETH_ALEN */ 2505127c81fSNikolay Aleksandrov }; 2515127c81fSNikolay Aleksandrov 25225c71c75Sstephen hemminger enum { 25325c71c75Sstephen hemminger BRIDGE_MODE_UNSPEC, 25425c71c75Sstephen hemminger BRIDGE_MODE_HAIRPIN, 25525c71c75Sstephen hemminger }; 25625c71c75Sstephen hemminger 25725c71c75Sstephen hemminger enum { 25825c71c75Sstephen hemminger IFLA_BRPORT_UNSPEC, 25925c71c75Sstephen hemminger IFLA_BRPORT_STATE, /* Spanning tree state */ 26025c71c75Sstephen hemminger IFLA_BRPORT_PRIORITY, /* " priority */ 26125c71c75Sstephen hemminger IFLA_BRPORT_COST, /* " cost */ 26225c71c75Sstephen hemminger IFLA_BRPORT_MODE, /* mode (hairpin) */ 263a2e01a65Sstephen hemminger IFLA_BRPORT_GUARD, /* bpdu guard */ 2641007dd1aSstephen hemminger IFLA_BRPORT_PROTECT, /* root port protection */ 265c2d3babfSDavid S. Miller IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave */ 2669ba18891SVlad Yasevich IFLA_BRPORT_LEARNING, /* mac learning */ 267867a5943SVlad Yasevich IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */ 26895850116SKyeyoon Park IFLA_BRPORT_PROXYARP, /* proxy ARP */ 269efacacdaSScott Feldman IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */ 270842a9ae0SJouni Malinen IFLA_BRPORT_PROXYARP_WIFI, /* proxy ARP for Wi-Fi */ 27125c71c75Sstephen hemminger __IFLA_BRPORT_MAX 27225c71c75Sstephen hemminger }; 27325c71c75Sstephen hemminger #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 27425c71c75Sstephen hemminger 275607ca46eSDavid Howells struct ifla_cacheinfo { 276607ca46eSDavid Howells __u32 max_reasm_len; 277607ca46eSDavid Howells __u32 tstamp; /* ipv6InterfaceTable updated timestamp */ 278607ca46eSDavid Howells __u32 reachable_time; 279607ca46eSDavid Howells __u32 retrans_time; 280607ca46eSDavid Howells }; 281607ca46eSDavid Howells 282607ca46eSDavid Howells enum { 283607ca46eSDavid Howells IFLA_INFO_UNSPEC, 284607ca46eSDavid Howells IFLA_INFO_KIND, 285607ca46eSDavid Howells IFLA_INFO_DATA, 286607ca46eSDavid Howells IFLA_INFO_XSTATS, 287ba7d49b1SJiri Pirko IFLA_INFO_SLAVE_KIND, 288ba7d49b1SJiri Pirko IFLA_INFO_SLAVE_DATA, 289607ca46eSDavid Howells __IFLA_INFO_MAX, 290607ca46eSDavid Howells }; 291607ca46eSDavid Howells 292607ca46eSDavid Howells #define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1) 293607ca46eSDavid Howells 294607ca46eSDavid Howells /* VLAN section */ 295607ca46eSDavid Howells 296607ca46eSDavid Howells enum { 297607ca46eSDavid Howells IFLA_VLAN_UNSPEC, 298607ca46eSDavid Howells IFLA_VLAN_ID, 299607ca46eSDavid Howells IFLA_VLAN_FLAGS, 300607ca46eSDavid Howells IFLA_VLAN_EGRESS_QOS, 301607ca46eSDavid Howells IFLA_VLAN_INGRESS_QOS, 3028ad227ffSPatrick McHardy IFLA_VLAN_PROTOCOL, 303607ca46eSDavid Howells __IFLA_VLAN_MAX, 304607ca46eSDavid Howells }; 305607ca46eSDavid Howells 306607ca46eSDavid Howells #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1) 307607ca46eSDavid Howells 308607ca46eSDavid Howells struct ifla_vlan_flags { 309607ca46eSDavid Howells __u32 flags; 310607ca46eSDavid Howells __u32 mask; 311607ca46eSDavid Howells }; 312607ca46eSDavid Howells 313607ca46eSDavid Howells enum { 314607ca46eSDavid Howells IFLA_VLAN_QOS_UNSPEC, 315607ca46eSDavid Howells IFLA_VLAN_QOS_MAPPING, 316607ca46eSDavid Howells __IFLA_VLAN_QOS_MAX 317607ca46eSDavid Howells }; 318607ca46eSDavid Howells 319607ca46eSDavid Howells #define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1) 320607ca46eSDavid Howells 321607ca46eSDavid Howells struct ifla_vlan_qos_mapping { 322607ca46eSDavid Howells __u32 from; 323607ca46eSDavid Howells __u32 to; 324607ca46eSDavid Howells }; 325607ca46eSDavid Howells 326607ca46eSDavid Howells /* MACVLAN section */ 327607ca46eSDavid Howells enum { 328607ca46eSDavid Howells IFLA_MACVLAN_UNSPEC, 329607ca46eSDavid Howells IFLA_MACVLAN_MODE, 330607ca46eSDavid Howells IFLA_MACVLAN_FLAGS, 33179cf79abSMichael Braun IFLA_MACVLAN_MACADDR_MODE, 33279cf79abSMichael Braun IFLA_MACVLAN_MACADDR, 33379cf79abSMichael Braun IFLA_MACVLAN_MACADDR_DATA, 33479cf79abSMichael Braun IFLA_MACVLAN_MACADDR_COUNT, 335607ca46eSDavid Howells __IFLA_MACVLAN_MAX, 336607ca46eSDavid Howells }; 337607ca46eSDavid Howells 338607ca46eSDavid Howells #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1) 339607ca46eSDavid Howells 340607ca46eSDavid Howells enum macvlan_mode { 341607ca46eSDavid Howells MACVLAN_MODE_PRIVATE = 1, /* don't talk to other macvlans */ 342607ca46eSDavid Howells MACVLAN_MODE_VEPA = 2, /* talk to other ports through ext bridge */ 343607ca46eSDavid Howells MACVLAN_MODE_BRIDGE = 4, /* talk to bridge ports directly */ 344607ca46eSDavid Howells MACVLAN_MODE_PASSTHRU = 8,/* take over the underlying device */ 34579cf79abSMichael Braun MACVLAN_MODE_SOURCE = 16,/* use source MAC address list to assign */ 34679cf79abSMichael Braun }; 34779cf79abSMichael Braun 34879cf79abSMichael Braun enum macvlan_macaddr_mode { 34979cf79abSMichael Braun MACVLAN_MACADDR_ADD, 35079cf79abSMichael Braun MACVLAN_MACADDR_DEL, 35179cf79abSMichael Braun MACVLAN_MACADDR_FLUSH, 35279cf79abSMichael Braun MACVLAN_MACADDR_SET, 353607ca46eSDavid Howells }; 354607ca46eSDavid Howells 355607ca46eSDavid Howells #define MACVLAN_FLAG_NOPROMISC 1 356607ca46eSDavid Howells 3574e3c8992SDavid Ahern /* VRF section */ 3584e3c8992SDavid Ahern enum { 3594e3c8992SDavid Ahern IFLA_VRF_UNSPEC, 3604e3c8992SDavid Ahern IFLA_VRF_TABLE, 3614e3c8992SDavid Ahern __IFLA_VRF_MAX 3624e3c8992SDavid Ahern }; 3634e3c8992SDavid Ahern 3644e3c8992SDavid Ahern #define IFLA_VRF_MAX (__IFLA_VRF_MAX - 1) 3654e3c8992SDavid Ahern 3662ad7bf36SMahesh Bandewar /* IPVLAN section */ 3672ad7bf36SMahesh Bandewar enum { 3682ad7bf36SMahesh Bandewar IFLA_IPVLAN_UNSPEC, 3692ad7bf36SMahesh Bandewar IFLA_IPVLAN_MODE, 3702ad7bf36SMahesh Bandewar __IFLA_IPVLAN_MAX 3712ad7bf36SMahesh Bandewar }; 3722ad7bf36SMahesh Bandewar 3732ad7bf36SMahesh Bandewar #define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1) 3742ad7bf36SMahesh Bandewar 3752ad7bf36SMahesh Bandewar enum ipvlan_mode { 3762ad7bf36SMahesh Bandewar IPVLAN_MODE_L2 = 0, 3772ad7bf36SMahesh Bandewar IPVLAN_MODE_L3, 3782ad7bf36SMahesh Bandewar IPVLAN_MODE_MAX 3792ad7bf36SMahesh Bandewar }; 3802ad7bf36SMahesh Bandewar 381607ca46eSDavid Howells /* VXLAN section */ 382607ca46eSDavid Howells enum { 383607ca46eSDavid Howells IFLA_VXLAN_UNSPEC, 384607ca46eSDavid Howells IFLA_VXLAN_ID, 3855d174dd8Sstephen hemminger IFLA_VXLAN_GROUP, /* group or remote address */ 386607ca46eSDavid Howells IFLA_VXLAN_LINK, 387607ca46eSDavid Howells IFLA_VXLAN_LOCAL, 388607ca46eSDavid Howells IFLA_VXLAN_TTL, 389607ca46eSDavid Howells IFLA_VXLAN_TOS, 390607ca46eSDavid Howells IFLA_VXLAN_LEARNING, 391607ca46eSDavid Howells IFLA_VXLAN_AGEING, 392607ca46eSDavid Howells IFLA_VXLAN_LIMIT, 393823aa873Sstephen hemminger IFLA_VXLAN_PORT_RANGE, /* source port */ 394e4f67addSDavid Stevens IFLA_VXLAN_PROXY, 395e4f67addSDavid Stevens IFLA_VXLAN_RSC, 396e4f67addSDavid Stevens IFLA_VXLAN_L2MISS, 397e4f67addSDavid Stevens IFLA_VXLAN_L3MISS, 398823aa873Sstephen hemminger IFLA_VXLAN_PORT, /* destination port */ 399e4c7ed41SCong Wang IFLA_VXLAN_GROUP6, 400e4c7ed41SCong Wang IFLA_VXLAN_LOCAL6, 401359a0ea9STom Herbert IFLA_VXLAN_UDP_CSUM, 402359a0ea9STom Herbert IFLA_VXLAN_UDP_ZERO_CSUM6_TX, 403359a0ea9STom Herbert IFLA_VXLAN_UDP_ZERO_CSUM6_RX, 404dfd8645eSTom Herbert IFLA_VXLAN_REMCSUM_TX, 405dfd8645eSTom Herbert IFLA_VXLAN_REMCSUM_RX, 4063511494cSThomas Graf IFLA_VXLAN_GBP, 4070ace2ca8STom Herbert IFLA_VXLAN_REMCSUM_NOPARTIAL, 408f8a9b1bcSAlexei Starovoitov IFLA_VXLAN_COLLECT_METADATA, 409607ca46eSDavid Howells __IFLA_VXLAN_MAX 410607ca46eSDavid Howells }; 411607ca46eSDavid Howells #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) 412607ca46eSDavid Howells 413607ca46eSDavid Howells struct ifla_vxlan_port_range { 414607ca46eSDavid Howells __be16 low; 415607ca46eSDavid Howells __be16 high; 416607ca46eSDavid Howells }; 417607ca46eSDavid Howells 4182d07dc79SJohn W. Linville /* GENEVE section */ 4192d07dc79SJohn W. Linville enum { 4202d07dc79SJohn W. Linville IFLA_GENEVE_UNSPEC, 4212d07dc79SJohn W. Linville IFLA_GENEVE_ID, 4222d07dc79SJohn W. Linville IFLA_GENEVE_REMOTE, 4238760ce58SJohn W. Linville IFLA_GENEVE_TTL, 424d8951125SJohn W. Linville IFLA_GENEVE_TOS, 425cd7918b3SPravin B Shelar IFLA_GENEVE_PORT, /* destination port */ 426e305ac6cSPravin B Shelar IFLA_GENEVE_COLLECT_METADATA, 4272d07dc79SJohn W. Linville __IFLA_GENEVE_MAX 4282d07dc79SJohn W. Linville }; 4292d07dc79SJohn W. Linville #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1) 4302d07dc79SJohn W. Linville 43190af2311SJiri Pirko /* Bonding section */ 43290af2311SJiri Pirko 43390af2311SJiri Pirko enum { 43490af2311SJiri Pirko IFLA_BOND_UNSPEC, 43590af2311SJiri Pirko IFLA_BOND_MODE, 436ec76aa49SJiri Pirko IFLA_BOND_ACTIVE_SLAVE, 437eecdaa6eSsfeldma@cumulusnetworks.com IFLA_BOND_MIIMON, 43825852e29Ssfeldma@cumulusnetworks.com IFLA_BOND_UPDELAY, 439c7461f9bSsfeldma@cumulusnetworks.com IFLA_BOND_DOWNDELAY, 4409f53e14eSsfeldma@cumulusnetworks.com IFLA_BOND_USE_CARRIER, 44106151dbcSsfeldma@cumulusnetworks.com IFLA_BOND_ARP_INTERVAL, 4427f28fa10Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_IP_TARGET, 44329c49482Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_VALIDATE, 444d5c84254Ssfeldma@cumulusnetworks.com IFLA_BOND_ARP_ALL_TARGETS, 4450a98a0d1Ssfeldma@cumulusnetworks.com IFLA_BOND_PRIMARY, 4468a41ae44Ssfeldma@cumulusnetworks.com IFLA_BOND_PRIMARY_RESELECT, 44789901972Ssfeldma@cumulusnetworks.com IFLA_BOND_FAIL_OVER_MAC, 448f70161c6Ssfeldma@cumulusnetworks.com IFLA_BOND_XMIT_HASH_POLICY, 449d8838de7Ssfeldma@cumulusnetworks.com IFLA_BOND_RESEND_IGMP, 4502c9839c1Ssfeldma@cumulusnetworks.com IFLA_BOND_NUM_PEER_NOTIF, 4511cc0b1e3Ssfeldma@cumulusnetworks.com IFLA_BOND_ALL_SLAVES_ACTIVE, 4527d101008Ssfeldma@cumulusnetworks.com IFLA_BOND_MIN_LINKS, 4538d836d09Ssfeldma@cumulusnetworks.com IFLA_BOND_LP_INTERVAL, 454c13ab3ffSsfeldma@cumulusnetworks.com IFLA_BOND_PACKETS_PER_SLAVE, 455998e40bbSsfeldma@cumulusnetworks.com IFLA_BOND_AD_LACP_RATE, 456ec029facSsfeldma@cumulusnetworks.com IFLA_BOND_AD_SELECT, 4574ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO, 458171a42c3SAndy Gospodarek IFLA_BOND_AD_ACTOR_SYS_PRIO, 459171a42c3SAndy Gospodarek IFLA_BOND_AD_USER_PORT_KEY, 460171a42c3SAndy Gospodarek IFLA_BOND_AD_ACTOR_SYSTEM, 4610f7bffd9SNikolay Aleksandrov IFLA_BOND_TLB_DYNAMIC_LB, 46290af2311SJiri Pirko __IFLA_BOND_MAX, 46390af2311SJiri Pirko }; 46490af2311SJiri Pirko 46590af2311SJiri Pirko #define IFLA_BOND_MAX (__IFLA_BOND_MAX - 1) 46690af2311SJiri Pirko 4674ee7ac75Ssfeldma@cumulusnetworks.com enum { 468237266f7SJiri Pirko IFLA_BOND_AD_INFO_UNSPEC, 4694ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_AGGREGATOR, 4704ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_NUM_PORTS, 4714ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_ACTOR_KEY, 4724ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_PARTNER_KEY, 4734ee7ac75Ssfeldma@cumulusnetworks.com IFLA_BOND_AD_INFO_PARTNER_MAC, 4744ee7ac75Ssfeldma@cumulusnetworks.com __IFLA_BOND_AD_INFO_MAX, 4754ee7ac75Ssfeldma@cumulusnetworks.com }; 4764ee7ac75Ssfeldma@cumulusnetworks.com 4774ee7ac75Ssfeldma@cumulusnetworks.com #define IFLA_BOND_AD_INFO_MAX (__IFLA_BOND_AD_INFO_MAX - 1) 4784ee7ac75Ssfeldma@cumulusnetworks.com 4791d3ee88aSsfeldma@cumulusnetworks.com enum { 480df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_UNSPEC, 481df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_STATE, 482df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_MII_STATUS, 483df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_LINK_FAILURE_COUNT, 484df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_PERM_HWADDR, 485df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_QUEUE_ID, 486df7dbcbbSJiri Pirko IFLA_BOND_SLAVE_AD_AGGREGATOR_ID, 487254cb6dbSNikolay Aleksandrov IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE, 48846ea297eSNikolay Aleksandrov IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE, 489df7dbcbbSJiri Pirko __IFLA_BOND_SLAVE_MAX, 4901d3ee88aSsfeldma@cumulusnetworks.com }; 4911d3ee88aSsfeldma@cumulusnetworks.com 492df7dbcbbSJiri Pirko #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1) 4931d3ee88aSsfeldma@cumulusnetworks.com 494607ca46eSDavid Howells /* SR-IOV virtual function management section */ 495607ca46eSDavid Howells 496607ca46eSDavid Howells enum { 497607ca46eSDavid Howells IFLA_VF_INFO_UNSPEC, 498607ca46eSDavid Howells IFLA_VF_INFO, 499607ca46eSDavid Howells __IFLA_VF_INFO_MAX, 500607ca46eSDavid Howells }; 501607ca46eSDavid Howells 502607ca46eSDavid Howells #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1) 503607ca46eSDavid Howells 504607ca46eSDavid Howells enum { 505607ca46eSDavid Howells IFLA_VF_UNSPEC, 506607ca46eSDavid Howells IFLA_VF_MAC, /* Hardware queue specific attributes */ 507607ca46eSDavid Howells IFLA_VF_VLAN, 508ed616689SSucheta Chakraborty IFLA_VF_TX_RATE, /* Max TX Bandwidth Allocation */ 509607ca46eSDavid Howells IFLA_VF_SPOOFCHK, /* Spoof Checking on/off switch */ 5101d8faf48SRony Efraim IFLA_VF_LINK_STATE, /* link state enable/disable/auto switch */ 511ed616689SSucheta Chakraborty IFLA_VF_RATE, /* Min and Max TX Bandwidth Allocation */ 51201a3d796SVlad Zolotarov IFLA_VF_RSS_QUERY_EN, /* RSS Redirection Table and Hash Key query 51301a3d796SVlad Zolotarov * on/off switch 51401a3d796SVlad Zolotarov */ 5153b766cd8SEran Ben Elisha IFLA_VF_STATS, /* network device statistics */ 516607ca46eSDavid Howells __IFLA_VF_MAX, 517607ca46eSDavid Howells }; 518607ca46eSDavid Howells 519607ca46eSDavid Howells #define IFLA_VF_MAX (__IFLA_VF_MAX - 1) 520607ca46eSDavid Howells 521607ca46eSDavid Howells struct ifla_vf_mac { 522607ca46eSDavid Howells __u32 vf; 523607ca46eSDavid Howells __u8 mac[32]; /* MAX_ADDR_LEN */ 524607ca46eSDavid Howells }; 525607ca46eSDavid Howells 526607ca46eSDavid Howells struct ifla_vf_vlan { 527607ca46eSDavid Howells __u32 vf; 528607ca46eSDavid Howells __u32 vlan; /* 0 - 4095, 0 disables VLAN filter */ 529607ca46eSDavid Howells __u32 qos; 530607ca46eSDavid Howells }; 531607ca46eSDavid Howells 532607ca46eSDavid Howells struct ifla_vf_tx_rate { 533607ca46eSDavid Howells __u32 vf; 534607ca46eSDavid Howells __u32 rate; /* Max TX bandwidth in Mbps, 0 disables throttling */ 535607ca46eSDavid Howells }; 536607ca46eSDavid Howells 537ed616689SSucheta Chakraborty struct ifla_vf_rate { 538ed616689SSucheta Chakraborty __u32 vf; 539ed616689SSucheta Chakraborty __u32 min_tx_rate; /* Min Bandwidth in Mbps */ 540ed616689SSucheta Chakraborty __u32 max_tx_rate; /* Max Bandwidth in Mbps */ 541ed616689SSucheta Chakraborty }; 542ed616689SSucheta Chakraborty 543607ca46eSDavid Howells struct ifla_vf_spoofchk { 544607ca46eSDavid Howells __u32 vf; 545607ca46eSDavid Howells __u32 setting; 546607ca46eSDavid Howells }; 547607ca46eSDavid Howells 5481d8faf48SRony Efraim enum { 5491d8faf48SRony Efraim IFLA_VF_LINK_STATE_AUTO, /* link state of the uplink */ 5501d8faf48SRony Efraim IFLA_VF_LINK_STATE_ENABLE, /* link always up */ 5511d8faf48SRony Efraim IFLA_VF_LINK_STATE_DISABLE, /* link always down */ 5521d8faf48SRony Efraim __IFLA_VF_LINK_STATE_MAX, 5531d8faf48SRony Efraim }; 5541d8faf48SRony Efraim 5551d8faf48SRony Efraim struct ifla_vf_link_state { 5561d8faf48SRony Efraim __u32 vf; 5571d8faf48SRony Efraim __u32 link_state; 5581d8faf48SRony Efraim }; 5591d8faf48SRony Efraim 56001a3d796SVlad Zolotarov struct ifla_vf_rss_query_en { 56101a3d796SVlad Zolotarov __u32 vf; 56201a3d796SVlad Zolotarov __u32 setting; 56301a3d796SVlad Zolotarov }; 56401a3d796SVlad Zolotarov 5653b766cd8SEran Ben Elisha enum { 5663b766cd8SEran Ben Elisha IFLA_VF_STATS_RX_PACKETS, 5673b766cd8SEran Ben Elisha IFLA_VF_STATS_TX_PACKETS, 5683b766cd8SEran Ben Elisha IFLA_VF_STATS_RX_BYTES, 5693b766cd8SEran Ben Elisha IFLA_VF_STATS_TX_BYTES, 5703b766cd8SEran Ben Elisha IFLA_VF_STATS_BROADCAST, 5713b766cd8SEran Ben Elisha IFLA_VF_STATS_MULTICAST, 5723b766cd8SEran Ben Elisha __IFLA_VF_STATS_MAX, 5733b766cd8SEran Ben Elisha }; 5743b766cd8SEran Ben Elisha 5753b766cd8SEran Ben Elisha #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1) 5763b766cd8SEran Ben Elisha 577607ca46eSDavid Howells /* VF ports management section 578607ca46eSDavid Howells * 579607ca46eSDavid Howells * Nested layout of set/get msg is: 580607ca46eSDavid Howells * 581607ca46eSDavid Howells * [IFLA_NUM_VF] 582607ca46eSDavid Howells * [IFLA_VF_PORTS] 583607ca46eSDavid Howells * [IFLA_VF_PORT] 584607ca46eSDavid Howells * [IFLA_PORT_*], ... 585607ca46eSDavid Howells * [IFLA_VF_PORT] 586607ca46eSDavid Howells * [IFLA_PORT_*], ... 587607ca46eSDavid Howells * ... 588607ca46eSDavid Howells * [IFLA_PORT_SELF] 589607ca46eSDavid Howells * [IFLA_PORT_*], ... 590607ca46eSDavid Howells */ 591607ca46eSDavid Howells 592607ca46eSDavid Howells enum { 593607ca46eSDavid Howells IFLA_VF_PORT_UNSPEC, 594607ca46eSDavid Howells IFLA_VF_PORT, /* nest */ 595607ca46eSDavid Howells __IFLA_VF_PORT_MAX, 596607ca46eSDavid Howells }; 597607ca46eSDavid Howells 598607ca46eSDavid Howells #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1) 599607ca46eSDavid Howells 600607ca46eSDavid Howells enum { 601607ca46eSDavid Howells IFLA_PORT_UNSPEC, 602607ca46eSDavid Howells IFLA_PORT_VF, /* __u32 */ 603607ca46eSDavid Howells IFLA_PORT_PROFILE, /* string */ 604607ca46eSDavid Howells IFLA_PORT_VSI_TYPE, /* 802.1Qbg (pre-)standard VDP */ 605607ca46eSDavid Howells IFLA_PORT_INSTANCE_UUID, /* binary UUID */ 606607ca46eSDavid Howells IFLA_PORT_HOST_UUID, /* binary UUID */ 607607ca46eSDavid Howells IFLA_PORT_REQUEST, /* __u8 */ 608607ca46eSDavid Howells IFLA_PORT_RESPONSE, /* __u16, output only */ 609607ca46eSDavid Howells __IFLA_PORT_MAX, 610607ca46eSDavid Howells }; 611607ca46eSDavid Howells 612607ca46eSDavid Howells #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1) 613607ca46eSDavid Howells 614607ca46eSDavid Howells #define PORT_PROFILE_MAX 40 615607ca46eSDavid Howells #define PORT_UUID_MAX 16 616607ca46eSDavid Howells #define PORT_SELF_VF -1 617607ca46eSDavid Howells 618607ca46eSDavid Howells enum { 619607ca46eSDavid Howells PORT_REQUEST_PREASSOCIATE = 0, 620607ca46eSDavid Howells PORT_REQUEST_PREASSOCIATE_RR, 621607ca46eSDavid Howells PORT_REQUEST_ASSOCIATE, 622607ca46eSDavid Howells PORT_REQUEST_DISASSOCIATE, 623607ca46eSDavid Howells }; 624607ca46eSDavid Howells 625607ca46eSDavid Howells enum { 626607ca46eSDavid Howells PORT_VDP_RESPONSE_SUCCESS = 0, 627607ca46eSDavid Howells PORT_VDP_RESPONSE_INVALID_FORMAT, 628607ca46eSDavid Howells PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES, 629607ca46eSDavid Howells PORT_VDP_RESPONSE_UNUSED_VTID, 630607ca46eSDavid Howells PORT_VDP_RESPONSE_VTID_VIOLATION, 631607ca46eSDavid Howells PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION, 632607ca46eSDavid Howells PORT_VDP_RESPONSE_OUT_OF_SYNC, 633607ca46eSDavid Howells /* 0x08-0xFF reserved for future VDP use */ 634607ca46eSDavid Howells PORT_PROFILE_RESPONSE_SUCCESS = 0x100, 635607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INPROGRESS, 636607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INVALID, 637607ca46eSDavid Howells PORT_PROFILE_RESPONSE_BADSTATE, 638607ca46eSDavid Howells PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES, 639607ca46eSDavid Howells PORT_PROFILE_RESPONSE_ERROR, 640607ca46eSDavid Howells }; 641607ca46eSDavid Howells 642607ca46eSDavid Howells struct ifla_port_vsi { 643607ca46eSDavid Howells __u8 vsi_mgr_id; 644607ca46eSDavid Howells __u8 vsi_type_id[3]; 645607ca46eSDavid Howells __u8 vsi_type_version; 646607ca46eSDavid Howells __u8 pad[3]; 647607ca46eSDavid Howells }; 648607ca46eSDavid Howells 649607ca46eSDavid Howells 650607ca46eSDavid Howells /* IPoIB section */ 651607ca46eSDavid Howells 652607ca46eSDavid Howells enum { 653607ca46eSDavid Howells IFLA_IPOIB_UNSPEC, 654607ca46eSDavid Howells IFLA_IPOIB_PKEY, 655607ca46eSDavid Howells IFLA_IPOIB_MODE, 656607ca46eSDavid Howells IFLA_IPOIB_UMCAST, 657607ca46eSDavid Howells __IFLA_IPOIB_MAX 658607ca46eSDavid Howells }; 659607ca46eSDavid Howells 660607ca46eSDavid Howells enum { 661607ca46eSDavid Howells IPOIB_MODE_DATAGRAM = 0, /* using unreliable datagram QPs */ 662607ca46eSDavid Howells IPOIB_MODE_CONNECTED = 1, /* using connected QPs */ 663607ca46eSDavid Howells }; 664607ca46eSDavid Howells 665607ca46eSDavid Howells #define IFLA_IPOIB_MAX (__IFLA_IPOIB_MAX - 1) 666607ca46eSDavid Howells 667f421436aSArvid Brodin 668f421436aSArvid Brodin /* HSR section */ 669f421436aSArvid Brodin 670f421436aSArvid Brodin enum { 671f421436aSArvid Brodin IFLA_HSR_UNSPEC, 672f421436aSArvid Brodin IFLA_HSR_SLAVE1, 673f421436aSArvid Brodin IFLA_HSR_SLAVE2, 67498bf8362SArvid Brodin IFLA_HSR_MULTICAST_SPEC, /* Last byte of supervision addr */ 67598bf8362SArvid Brodin IFLA_HSR_SUPERVISION_ADDR, /* Supervision frame multicast addr */ 67698bf8362SArvid Brodin IFLA_HSR_SEQ_NR, 677f421436aSArvid Brodin __IFLA_HSR_MAX, 678f421436aSArvid Brodin }; 679f421436aSArvid Brodin 680f421436aSArvid Brodin #define IFLA_HSR_MAX (__IFLA_HSR_MAX - 1) 681f421436aSArvid Brodin 682607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_LINK_H */ 683