1e2be04c7SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2607ca46eSDavid Howells /* 3607ca46eSDavid Howells * Linux ethernet bridge 4607ca46eSDavid Howells * 5607ca46eSDavid Howells * Authors: 6607ca46eSDavid Howells * Lennert Buytenhek <buytenh@gnu.org> 7607ca46eSDavid Howells * 8607ca46eSDavid Howells * This program is free software; you can redistribute it and/or 9607ca46eSDavid Howells * modify it under the terms of the GNU General Public License 10607ca46eSDavid Howells * as published by the Free Software Foundation; either version 11607ca46eSDavid Howells * 2 of the License, or (at your option) any later version. 12607ca46eSDavid Howells */ 13607ca46eSDavid Howells 14607ca46eSDavid Howells #ifndef _UAPI_LINUX_IF_BRIDGE_H 15607ca46eSDavid Howells #define _UAPI_LINUX_IF_BRIDGE_H 16607ca46eSDavid Howells 17607ca46eSDavid Howells #include <linux/types.h> 18e216975aSJoe Perches #include <linux/if_ether.h> 1966f1c448SGregory Fong #include <linux/in6.h> 20607ca46eSDavid Howells 21607ca46eSDavid Howells #define SYSFS_BRIDGE_ATTR "bridge" 22607ca46eSDavid Howells #define SYSFS_BRIDGE_FDB "brforward" 23607ca46eSDavid Howells #define SYSFS_BRIDGE_PORT_SUBDIR "brif" 24607ca46eSDavid Howells #define SYSFS_BRIDGE_PORT_ATTR "brport" 25607ca46eSDavid Howells #define SYSFS_BRIDGE_PORT_LINK "bridge" 26607ca46eSDavid Howells 27607ca46eSDavid Howells #define BRCTL_VERSION 1 28607ca46eSDavid Howells 29607ca46eSDavid Howells #define BRCTL_GET_VERSION 0 30607ca46eSDavid Howells #define BRCTL_GET_BRIDGES 1 31607ca46eSDavid Howells #define BRCTL_ADD_BRIDGE 2 32607ca46eSDavid Howells #define BRCTL_DEL_BRIDGE 3 33607ca46eSDavid Howells #define BRCTL_ADD_IF 4 34607ca46eSDavid Howells #define BRCTL_DEL_IF 5 35607ca46eSDavid Howells #define BRCTL_GET_BRIDGE_INFO 6 36607ca46eSDavid Howells #define BRCTL_GET_PORT_LIST 7 37607ca46eSDavid Howells #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 38607ca46eSDavid Howells #define BRCTL_SET_BRIDGE_HELLO_TIME 9 39607ca46eSDavid Howells #define BRCTL_SET_BRIDGE_MAX_AGE 10 40607ca46eSDavid Howells #define BRCTL_SET_AGEING_TIME 11 41607ca46eSDavid Howells #define BRCTL_SET_GC_INTERVAL 12 42607ca46eSDavid Howells #define BRCTL_GET_PORT_INFO 13 43607ca46eSDavid Howells #define BRCTL_SET_BRIDGE_STP_STATE 14 44607ca46eSDavid Howells #define BRCTL_SET_BRIDGE_PRIORITY 15 45607ca46eSDavid Howells #define BRCTL_SET_PORT_PRIORITY 16 46607ca46eSDavid Howells #define BRCTL_SET_PATH_COST 17 47607ca46eSDavid Howells #define BRCTL_GET_FDB_ENTRIES 18 48607ca46eSDavid Howells 49607ca46eSDavid Howells #define BR_STATE_DISABLED 0 50607ca46eSDavid Howells #define BR_STATE_LISTENING 1 51607ca46eSDavid Howells #define BR_STATE_LEARNING 2 52607ca46eSDavid Howells #define BR_STATE_FORWARDING 3 53607ca46eSDavid Howells #define BR_STATE_BLOCKING 4 54607ca46eSDavid Howells 55607ca46eSDavid Howells struct __bridge_info { 56607ca46eSDavid Howells __u64 designated_root; 57607ca46eSDavid Howells __u64 bridge_id; 58607ca46eSDavid Howells __u32 root_path_cost; 59607ca46eSDavid Howells __u32 max_age; 60607ca46eSDavid Howells __u32 hello_time; 61607ca46eSDavid Howells __u32 forward_delay; 62607ca46eSDavid Howells __u32 bridge_max_age; 63607ca46eSDavid Howells __u32 bridge_hello_time; 64607ca46eSDavid Howells __u32 bridge_forward_delay; 65607ca46eSDavid Howells __u8 topology_change; 66607ca46eSDavid Howells __u8 topology_change_detected; 67607ca46eSDavid Howells __u8 root_port; 68607ca46eSDavid Howells __u8 stp_enabled; 69607ca46eSDavid Howells __u32 ageing_time; 70607ca46eSDavid Howells __u32 gc_interval; 71607ca46eSDavid Howells __u32 hello_timer_value; 72607ca46eSDavid Howells __u32 tcn_timer_value; 73607ca46eSDavid Howells __u32 topology_change_timer_value; 74607ca46eSDavid Howells __u32 gc_timer_value; 75607ca46eSDavid Howells }; 76607ca46eSDavid Howells 77607ca46eSDavid Howells struct __port_info { 78607ca46eSDavid Howells __u64 designated_root; 79607ca46eSDavid Howells __u64 designated_bridge; 80607ca46eSDavid Howells __u16 port_id; 81607ca46eSDavid Howells __u16 designated_port; 82607ca46eSDavid Howells __u32 path_cost; 83607ca46eSDavid Howells __u32 designated_cost; 84607ca46eSDavid Howells __u8 state; 85607ca46eSDavid Howells __u8 top_change_ack; 86607ca46eSDavid Howells __u8 config_pending; 87607ca46eSDavid Howells __u8 unused0; 88607ca46eSDavid Howells __u32 message_age_timer_value; 89607ca46eSDavid Howells __u32 forward_delay_timer_value; 90607ca46eSDavid Howells __u32 hold_timer_value; 91607ca46eSDavid Howells }; 92607ca46eSDavid Howells 93607ca46eSDavid Howells struct __fdb_entry { 94e216975aSJoe Perches __u8 mac_addr[ETH_ALEN]; 95607ca46eSDavid Howells __u8 port_no; 96607ca46eSDavid Howells __u8 is_local; 97607ca46eSDavid Howells __u32 ageing_timer_value; 98607ca46eSDavid Howells __u8 port_hi; 99607ca46eSDavid Howells __u8 pad0; 100607ca46eSDavid Howells __u16 unused; 101607ca46eSDavid Howells }; 102607ca46eSDavid Howells 1032469ffd7SJohn Fastabend /* Bridge Flags */ 1042469ffd7SJohn Fastabend #define BRIDGE_FLAGS_MASTER 1 /* Bridge command to/from master */ 1052469ffd7SJohn Fastabend #define BRIDGE_FLAGS_SELF 2 /* Bridge command to/from lowerdev */ 106607ca46eSDavid Howells 1072469ffd7SJohn Fastabend #define BRIDGE_MODE_VEB 0 /* Default loopback mode */ 1082469ffd7SJohn Fastabend #define BRIDGE_MODE_VEPA 1 /* 802.1Qbg defined VEPA mode */ 109fc0bdbbcSRoopa Prabhu #define BRIDGE_MODE_UNDEF 0xFFFF /* mode undefined */ 1102469ffd7SJohn Fastabend 1112469ffd7SJohn Fastabend /* Bridge management nested attributes 1122469ffd7SJohn Fastabend * [IFLA_AF_SPEC] = { 1132469ffd7SJohn Fastabend * [IFLA_BRIDGE_FLAGS] 1142469ffd7SJohn Fastabend * [IFLA_BRIDGE_MODE] 115407af329SVlad Yasevich * [IFLA_BRIDGE_VLAN_INFO] 1162469ffd7SJohn Fastabend * } 1172469ffd7SJohn Fastabend */ 1182469ffd7SJohn Fastabend enum { 1192469ffd7SJohn Fastabend IFLA_BRIDGE_FLAGS, 1202469ffd7SJohn Fastabend IFLA_BRIDGE_MODE, 121407af329SVlad Yasevich IFLA_BRIDGE_VLAN_INFO, 122b3c7ef0aSRoopa Prabhu IFLA_BRIDGE_VLAN_TUNNEL_INFO, 1234714d137SHoratiu Vultur IFLA_BRIDGE_MRP, 1242be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM, 125122c2948STobias Waldekranz IFLA_BRIDGE_MST, 1262469ffd7SJohn Fastabend __IFLA_BRIDGE_MAX, 1272469ffd7SJohn Fastabend }; 1282469ffd7SJohn Fastabend #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1) 129ee07c6e7SCong Wang 130407af329SVlad Yasevich #define BRIDGE_VLAN_INFO_MASTER (1<<0) /* Operate on Bridge device as well */ 131552406c4SVlad Yasevich #define BRIDGE_VLAN_INFO_PVID (1<<1) /* VLAN is PVID, ingress untagged */ 13235e03f3aSVlad Yasevich #define BRIDGE_VLAN_INFO_UNTAGGED (1<<2) /* VLAN egresses untagged */ 133bdced7efSRoopa Prabhu #define BRIDGE_VLAN_INFO_RANGE_BEGIN (1<<3) /* VLAN is start of vlan range */ 134bdced7efSRoopa Prabhu #define BRIDGE_VLAN_INFO_RANGE_END (1<<4) /* VLAN is end of vlan range */ 1352594e906SNikolay Aleksandrov #define BRIDGE_VLAN_INFO_BRENTRY (1<<5) /* Global bridge VLAN entry */ 136a5d29ae2SNikolay Aleksandrov #define BRIDGE_VLAN_INFO_ONLY_OPTS (1<<6) /* Skip create/delete/flags */ 137407af329SVlad Yasevich 138407af329SVlad Yasevich struct bridge_vlan_info { 1399f89ec82SCong Wang __u16 flags; 1409f89ec82SCong Wang __u16 vid; 141407af329SVlad Yasevich }; 142407af329SVlad Yasevich 143b3c7ef0aSRoopa Prabhu enum { 144b3c7ef0aSRoopa Prabhu IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC, 145b3c7ef0aSRoopa Prabhu IFLA_BRIDGE_VLAN_TUNNEL_ID, 146b3c7ef0aSRoopa Prabhu IFLA_BRIDGE_VLAN_TUNNEL_VID, 147b3c7ef0aSRoopa Prabhu IFLA_BRIDGE_VLAN_TUNNEL_FLAGS, 148b3c7ef0aSRoopa Prabhu __IFLA_BRIDGE_VLAN_TUNNEL_MAX, 149b3c7ef0aSRoopa Prabhu }; 150b3c7ef0aSRoopa Prabhu 151b3c7ef0aSRoopa Prabhu #define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1) 152b3c7ef0aSRoopa Prabhu 153a60c0903SNikolay Aleksandrov struct bridge_vlan_xstats { 154a60c0903SNikolay Aleksandrov __u64 rx_bytes; 155a60c0903SNikolay Aleksandrov __u64 rx_packets; 156a60c0903SNikolay Aleksandrov __u64 tx_bytes; 157a60c0903SNikolay Aleksandrov __u64 tx_packets; 158a60c0903SNikolay Aleksandrov __u16 vid; 15961ba1a2dSNikolay Aleksandrov __u16 flags; 160a60c0903SNikolay Aleksandrov __u32 pad2; 161a60c0903SNikolay Aleksandrov }; 162a60c0903SNikolay Aleksandrov 1634714d137SHoratiu Vultur enum { 1644714d137SHoratiu Vultur IFLA_BRIDGE_MRP_UNSPEC, 1654714d137SHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE, 1664714d137SHoratiu Vultur IFLA_BRIDGE_MRP_PORT_STATE, 1674714d137SHoratiu Vultur IFLA_BRIDGE_MRP_PORT_ROLE, 1684714d137SHoratiu Vultur IFLA_BRIDGE_MRP_RING_STATE, 1694714d137SHoratiu Vultur IFLA_BRIDGE_MRP_RING_ROLE, 1704714d137SHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST, 171e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO, 17228017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE, 17328017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_STATE, 17428017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST, 1754714d137SHoratiu Vultur __IFLA_BRIDGE_MRP_MAX, 1764714d137SHoratiu Vultur }; 1774714d137SHoratiu Vultur 17820f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1) 17920f6a05eSHoratiu Vultur 18020f6a05eSHoratiu Vultur enum { 18120f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE_UNSPEC, 18220f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE_RING_ID, 18320f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX, 18420f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX, 1854b3a61b0SHoratiu Vultur IFLA_BRIDGE_MRP_INSTANCE_PRIO, 18620f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_INSTANCE_MAX, 18720f6a05eSHoratiu Vultur }; 18820f6a05eSHoratiu Vultur 18920f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1) 19020f6a05eSHoratiu Vultur 19120f6a05eSHoratiu Vultur enum { 19220f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC, 19320f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_PORT_STATE_STATE, 19420f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_PORT_STATE_MAX, 19520f6a05eSHoratiu Vultur }; 19620f6a05eSHoratiu Vultur 19720f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1) 19820f6a05eSHoratiu Vultur 19920f6a05eSHoratiu Vultur enum { 20020f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC, 20120f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_PORT_ROLE_ROLE, 20220f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_PORT_ROLE_MAX, 20320f6a05eSHoratiu Vultur }; 20420f6a05eSHoratiu Vultur 20520f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1) 20620f6a05eSHoratiu Vultur 20720f6a05eSHoratiu Vultur enum { 20820f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_STATE_UNSPEC, 20920f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_STATE_RING_ID, 21020f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_STATE_STATE, 21120f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_RING_STATE_MAX, 21220f6a05eSHoratiu Vultur }; 21320f6a05eSHoratiu Vultur 21420f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1) 21520f6a05eSHoratiu Vultur 21620f6a05eSHoratiu Vultur enum { 21720f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC, 21820f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_ROLE_RING_ID, 21920f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_RING_ROLE_ROLE, 22020f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_RING_ROLE_MAX, 22120f6a05eSHoratiu Vultur }; 22220f6a05eSHoratiu Vultur 22320f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1) 22420f6a05eSHoratiu Vultur 22520f6a05eSHoratiu Vultur enum { 22620f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_UNSPEC, 22720f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_RING_ID, 22820f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_INTERVAL, 22920f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_MAX_MISS, 23020f6a05eSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_PERIOD, 231c6676e7dSHoratiu Vultur IFLA_BRIDGE_MRP_START_TEST_MONITOR, 23220f6a05eSHoratiu Vultur __IFLA_BRIDGE_MRP_START_TEST_MAX, 23320f6a05eSHoratiu Vultur }; 23420f6a05eSHoratiu Vultur 23520f6a05eSHoratiu Vultur #define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1) 23620f6a05eSHoratiu Vultur 237e4266b99SHoratiu Vultur enum { 238e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_UNSPEC, 239e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_RING_ID, 240e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_P_IFINDEX, 241e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_S_IFINDEX, 242e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_PRIO, 243e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_RING_STATE, 244e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_RING_ROLE, 245e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL, 246e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS, 247e4266b99SHoratiu Vultur IFLA_BRIDGE_MRP_INFO_TEST_MONITOR, 248559139cbSHoratiu Vultur IFLA_BRIDGE_MRP_INFO_I_IFINDEX, 249559139cbSHoratiu Vultur IFLA_BRIDGE_MRP_INFO_IN_STATE, 250559139cbSHoratiu Vultur IFLA_BRIDGE_MRP_INFO_IN_ROLE, 251559139cbSHoratiu Vultur IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL, 252559139cbSHoratiu Vultur IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS, 253e4266b99SHoratiu Vultur __IFLA_BRIDGE_MRP_INFO_MAX, 254e4266b99SHoratiu Vultur }; 255e4266b99SHoratiu Vultur 256e4266b99SHoratiu Vultur #define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1) 257e4266b99SHoratiu Vultur 25828017583SHoratiu Vultur enum { 25928017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_STATE_UNSPEC, 26028017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_STATE_IN_ID, 26128017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_STATE_STATE, 26228017583SHoratiu Vultur __IFLA_BRIDGE_MRP_IN_STATE_MAX, 26328017583SHoratiu Vultur }; 26428017583SHoratiu Vultur 26528017583SHoratiu Vultur #define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1) 26628017583SHoratiu Vultur 26728017583SHoratiu Vultur enum { 26828017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC, 26928017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE_RING_ID, 27028017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE_IN_ID, 27128017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE_ROLE, 27228017583SHoratiu Vultur IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX, 27328017583SHoratiu Vultur __IFLA_BRIDGE_MRP_IN_ROLE_MAX, 27428017583SHoratiu Vultur }; 27528017583SHoratiu Vultur 27628017583SHoratiu Vultur #define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1) 27728017583SHoratiu Vultur 27828017583SHoratiu Vultur enum { 27928017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC, 28028017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID, 28128017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL, 28228017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS, 28328017583SHoratiu Vultur IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD, 28428017583SHoratiu Vultur __IFLA_BRIDGE_MRP_START_IN_TEST_MAX, 28528017583SHoratiu Vultur }; 28628017583SHoratiu Vultur 28728017583SHoratiu Vultur #define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1) 28828017583SHoratiu Vultur 2894714d137SHoratiu Vultur struct br_mrp_instance { 2904714d137SHoratiu Vultur __u32 ring_id; 2914714d137SHoratiu Vultur __u32 p_ifindex; 2924714d137SHoratiu Vultur __u32 s_ifindex; 2934b3a61b0SHoratiu Vultur __u16 prio; 2944714d137SHoratiu Vultur }; 2954714d137SHoratiu Vultur 2964714d137SHoratiu Vultur struct br_mrp_ring_state { 2974714d137SHoratiu Vultur __u32 ring_id; 2984714d137SHoratiu Vultur __u32 ring_state; 2994714d137SHoratiu Vultur }; 3004714d137SHoratiu Vultur 3014714d137SHoratiu Vultur struct br_mrp_ring_role { 3024714d137SHoratiu Vultur __u32 ring_id; 3034714d137SHoratiu Vultur __u32 ring_role; 3044714d137SHoratiu Vultur }; 3054714d137SHoratiu Vultur 3064714d137SHoratiu Vultur struct br_mrp_start_test { 3074714d137SHoratiu Vultur __u32 ring_id; 3084714d137SHoratiu Vultur __u32 interval; 3094714d137SHoratiu Vultur __u32 max_miss; 3104714d137SHoratiu Vultur __u32 period; 311c6676e7dSHoratiu Vultur __u32 monitor; 3124714d137SHoratiu Vultur }; 3134714d137SHoratiu Vultur 31428017583SHoratiu Vultur struct br_mrp_in_state { 31528017583SHoratiu Vultur __u32 in_state; 31628017583SHoratiu Vultur __u16 in_id; 31728017583SHoratiu Vultur }; 31828017583SHoratiu Vultur 31928017583SHoratiu Vultur struct br_mrp_in_role { 32028017583SHoratiu Vultur __u32 ring_id; 32128017583SHoratiu Vultur __u32 in_role; 32228017583SHoratiu Vultur __u32 i_ifindex; 32328017583SHoratiu Vultur __u16 in_id; 32428017583SHoratiu Vultur }; 32528017583SHoratiu Vultur 32628017583SHoratiu Vultur struct br_mrp_start_in_test { 32728017583SHoratiu Vultur __u32 interval; 32828017583SHoratiu Vultur __u32 max_miss; 32928017583SHoratiu Vultur __u32 period; 33028017583SHoratiu Vultur __u16 in_id; 33128017583SHoratiu Vultur }; 33228017583SHoratiu Vultur 3332be665c3SHenrik Bjoernlund enum { 3342be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_UNSPEC, 3352be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE, 3362be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_DELETE, 3372be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG, 3382be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG, 3392be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD, 3402be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE, 3412be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_RDI, 3422be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX, 3435e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_INFO, 3445e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_INFO, 3455e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_INFO, 3465e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_RDI_INFO, 3475e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_INFO, 3485e312fc0SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO, 349e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_INFO, 350e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO, 3512be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_MAX, 3522be665c3SHenrik Bjoernlund }; 3532be665c3SHenrik Bjoernlund 3542be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1) 3552be665c3SHenrik Bjoernlund 3562be665c3SHenrik Bjoernlund enum { 3572be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC, 3582be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE, 3592be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN, 3602be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION, 3612be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX, 3622be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_MEP_CREATE_MAX, 3632be665c3SHenrik Bjoernlund }; 3642be665c3SHenrik Bjoernlund 3652be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1) 3662be665c3SHenrik Bjoernlund 3672be665c3SHenrik Bjoernlund enum { 3682be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC, 3692be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE, 3702be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_MEP_DELETE_MAX, 3712be665c3SHenrik Bjoernlund }; 3722be665c3SHenrik Bjoernlund 3732be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1) 3742be665c3SHenrik Bjoernlund 3752be665c3SHenrik Bjoernlund enum { 3762be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC, 3772be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE, 3782be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC, 3792be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL, 3802be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID, 3812be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_MEP_CONFIG_MAX, 3822be665c3SHenrik Bjoernlund }; 3832be665c3SHenrik Bjoernlund 3842be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1) 3852be665c3SHenrik Bjoernlund 3862be665c3SHenrik Bjoernlund enum { 3872be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC, 3882be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE, 3892be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE, 3902be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL, 3912be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID, 3922be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_CC_CONFIG_MAX, 3932be665c3SHenrik Bjoernlund }; 3942be665c3SHenrik Bjoernlund 3952be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1) 3962be665c3SHenrik Bjoernlund 3972be665c3SHenrik Bjoernlund enum { 3982be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC, 3992be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE, 4002be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_MEPID, 4012be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX, 4022be665c3SHenrik Bjoernlund }; 4032be665c3SHenrik Bjoernlund 4042be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1) 4052be665c3SHenrik Bjoernlund 4062be665c3SHenrik Bjoernlund enum { 4072be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_RDI_UNSPEC, 4082be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_RDI_INSTANCE, 4092be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_RDI_RDI, 4102be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_CC_RDI_MAX, 4112be665c3SHenrik Bjoernlund }; 4122be665c3SHenrik Bjoernlund 4132be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1) 4142be665c3SHenrik Bjoernlund 4152be665c3SHenrik Bjoernlund enum { 4162be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC, 4172be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE, 4182be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC, 4192be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE, 4202be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD, 4212be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV, 4222be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE, 4232be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV, 4242be665c3SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE, 4252be665c3SHenrik Bjoernlund __IFLA_BRIDGE_CFM_CC_CCM_TX_MAX, 4262be665c3SHenrik Bjoernlund }; 4272be665c3SHenrik Bjoernlund 4282be665c3SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1) 4292be665c3SHenrik Bjoernlund 430e77824d8SHenrik Bjoernlund enum { 431e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC, 432e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE, 433e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN, 434e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN, 435e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN, 436e77824d8SHenrik Bjoernlund __IFLA_BRIDGE_CFM_MEP_STATUS_MAX, 437e77824d8SHenrik Bjoernlund }; 438e77824d8SHenrik Bjoernlund 439e77824d8SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1) 440e77824d8SHenrik Bjoernlund 441e77824d8SHenrik Bjoernlund enum { 442e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC, 443e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE, 444e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID, 445e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT, 446e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI, 447e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE, 448e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE, 449e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN, 450e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN, 451e77824d8SHenrik Bjoernlund IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN, 452e77824d8SHenrik Bjoernlund __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX, 453e77824d8SHenrik Bjoernlund }; 454e77824d8SHenrik Bjoernlund 455e77824d8SHenrik Bjoernlund #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1) 456e77824d8SHenrik Bjoernlund 457122c2948STobias Waldekranz enum { 458122c2948STobias Waldekranz IFLA_BRIDGE_MST_UNSPEC, 459122c2948STobias Waldekranz IFLA_BRIDGE_MST_ENTRY, 460122c2948STobias Waldekranz __IFLA_BRIDGE_MST_MAX, 461122c2948STobias Waldekranz }; 462122c2948STobias Waldekranz #define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1) 463122c2948STobias Waldekranz 464122c2948STobias Waldekranz enum { 465122c2948STobias Waldekranz IFLA_BRIDGE_MST_ENTRY_UNSPEC, 466122c2948STobias Waldekranz IFLA_BRIDGE_MST_ENTRY_MSTI, 467122c2948STobias Waldekranz IFLA_BRIDGE_MST_ENTRY_STATE, 468122c2948STobias Waldekranz __IFLA_BRIDGE_MST_ENTRY_MAX, 469122c2948STobias Waldekranz }; 470122c2948STobias Waldekranz #define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1) 471122c2948STobias Waldekranz 472de179966SVivien Didelot struct bridge_stp_xstats { 473de179966SVivien Didelot __u64 transition_blk; 474de179966SVivien Didelot __u64 transition_fwd; 475de179966SVivien Didelot __u64 rx_bpdu; 476de179966SVivien Didelot __u64 tx_bpdu; 477de179966SVivien Didelot __u64 rx_tcn; 478de179966SVivien Didelot __u64 tx_tcn; 479de179966SVivien Didelot }; 480de179966SVivien Didelot 4818dcea187SNikolay Aleksandrov /* Bridge vlan RTM header */ 4828dcea187SNikolay Aleksandrov struct br_vlan_msg { 4838dcea187SNikolay Aleksandrov __u8 family; 4848dcea187SNikolay Aleksandrov __u8 reserved1; 4858dcea187SNikolay Aleksandrov __u16 reserved2; 4868dcea187SNikolay Aleksandrov __u32 ifindex; 4878dcea187SNikolay Aleksandrov }; 4888dcea187SNikolay Aleksandrov 48956d09976SNikolay Aleksandrov enum { 49056d09976SNikolay Aleksandrov BRIDGE_VLANDB_DUMP_UNSPEC, 49156d09976SNikolay Aleksandrov BRIDGE_VLANDB_DUMP_FLAGS, 49256d09976SNikolay Aleksandrov __BRIDGE_VLANDB_DUMP_MAX, 49356d09976SNikolay Aleksandrov }; 49456d09976SNikolay Aleksandrov #define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1) 49556d09976SNikolay Aleksandrov 49656d09976SNikolay Aleksandrov /* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */ 49756d09976SNikolay Aleksandrov #define BRIDGE_VLANDB_DUMPF_STATS (1 << 0) /* Include stats in the dump */ 498743a53d9SNikolay Aleksandrov #define BRIDGE_VLANDB_DUMPF_GLOBAL (1 << 1) /* Dump global vlan options only */ 49956d09976SNikolay Aleksandrov 5008dcea187SNikolay Aleksandrov /* Bridge vlan RTM attributes 5018dcea187SNikolay Aleksandrov * [BRIDGE_VLANDB_ENTRY] = { 5028dcea187SNikolay Aleksandrov * [BRIDGE_VLANDB_ENTRY_INFO] 5038dcea187SNikolay Aleksandrov * ... 5048dcea187SNikolay Aleksandrov * } 50547ecd2dbSNikolay Aleksandrov * [BRIDGE_VLANDB_GLOBAL_OPTIONS] = { 50647ecd2dbSNikolay Aleksandrov * [BRIDGE_VLANDB_GOPTS_ID] 50747ecd2dbSNikolay Aleksandrov * ... 50847ecd2dbSNikolay Aleksandrov * } 5098dcea187SNikolay Aleksandrov */ 5108dcea187SNikolay Aleksandrov enum { 5118dcea187SNikolay Aleksandrov BRIDGE_VLANDB_UNSPEC, 5128dcea187SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY, 51347ecd2dbSNikolay Aleksandrov BRIDGE_VLANDB_GLOBAL_OPTIONS, 5148dcea187SNikolay Aleksandrov __BRIDGE_VLANDB_MAX, 5158dcea187SNikolay Aleksandrov }; 5168dcea187SNikolay Aleksandrov #define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1) 5178dcea187SNikolay Aleksandrov 5188dcea187SNikolay Aleksandrov enum { 5198dcea187SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_UNSPEC, 5208dcea187SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_INFO, 5210ab55879SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_RANGE, 522a580c76dSNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_STATE, 523fa388f29SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_TUNNEL_INFO, 52456d09976SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_STATS, 5252796d846SNikolay Aleksandrov BRIDGE_VLANDB_ENTRY_MCAST_ROUTER, 526a1aee20dSPetr Machata BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS, 527a1aee20dSPetr Machata BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS, 52883f6d600SIdo Schimmel BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS, 5298dcea187SNikolay Aleksandrov __BRIDGE_VLANDB_ENTRY_MAX, 5308dcea187SNikolay Aleksandrov }; 5318dcea187SNikolay Aleksandrov #define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1) 5328dcea187SNikolay Aleksandrov 53356d09976SNikolay Aleksandrov /* [BRIDGE_VLANDB_ENTRY] = { 534fa388f29SNikolay Aleksandrov * [BRIDGE_VLANDB_ENTRY_TUNNEL_INFO] = { 535fa388f29SNikolay Aleksandrov * [BRIDGE_VLANDB_TINFO_ID] 536fa388f29SNikolay Aleksandrov * ... 537fa388f29SNikolay Aleksandrov * } 538fa388f29SNikolay Aleksandrov * } 539fa388f29SNikolay Aleksandrov */ 540fa388f29SNikolay Aleksandrov enum { 541fa388f29SNikolay Aleksandrov BRIDGE_VLANDB_TINFO_UNSPEC, 542fa388f29SNikolay Aleksandrov BRIDGE_VLANDB_TINFO_ID, 543c443758bSNikolay Aleksandrov BRIDGE_VLANDB_TINFO_CMD, 544fa388f29SNikolay Aleksandrov __BRIDGE_VLANDB_TINFO_MAX, 545fa388f29SNikolay Aleksandrov }; 546fa388f29SNikolay Aleksandrov #define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1) 547fa388f29SNikolay Aleksandrov 548fa388f29SNikolay Aleksandrov /* [BRIDGE_VLANDB_ENTRY] = { 54956d09976SNikolay Aleksandrov * [BRIDGE_VLANDB_ENTRY_STATS] = { 55056d09976SNikolay Aleksandrov * [BRIDGE_VLANDB_STATS_RX_BYTES] 55156d09976SNikolay Aleksandrov * ... 55256d09976SNikolay Aleksandrov * } 55356d09976SNikolay Aleksandrov * ... 55456d09976SNikolay Aleksandrov * } 55556d09976SNikolay Aleksandrov */ 55656d09976SNikolay Aleksandrov enum { 55756d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_UNSPEC, 55856d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_RX_BYTES, 55956d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_RX_PACKETS, 56056d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_TX_BYTES, 56156d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_TX_PACKETS, 56256d09976SNikolay Aleksandrov BRIDGE_VLANDB_STATS_PAD, 56356d09976SNikolay Aleksandrov __BRIDGE_VLANDB_STATS_MAX, 56456d09976SNikolay Aleksandrov }; 56556d09976SNikolay Aleksandrov #define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1) 56656d09976SNikolay Aleksandrov 56747ecd2dbSNikolay Aleksandrov enum { 56847ecd2dbSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_UNSPEC, 56947ecd2dbSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_ID, 57047ecd2dbSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_RANGE, 5719dee572cSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING, 572df271cd6SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION, 573df271cd6SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION, 574931ba87dSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT, 57550725f6eSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT, 57677f6ababSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL, 57777f6ababSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_PAD, 5782da0aea2SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL, 579cd9269d4SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL, 580d6c08abaSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL, 58142521450SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL, 582941121eeSNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL, 58362938182SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_QUERIER, 584dc002875SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS, 585ddc649d1SNikolay Aleksandrov BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE, 5868c678d60STobias Waldekranz BRIDGE_VLANDB_GOPTS_MSTI, 58747ecd2dbSNikolay Aleksandrov __BRIDGE_VLANDB_GOPTS_MAX 58847ecd2dbSNikolay Aleksandrov }; 58947ecd2dbSNikolay Aleksandrov #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1) 59047ecd2dbSNikolay Aleksandrov 591ee07c6e7SCong Wang /* Bridge multicast database attributes 592ee07c6e7SCong Wang * [MDBA_MDB] = { 593ee07c6e7SCong Wang * [MDBA_MDB_ENTRY] = { 59421257156SNikolay Aleksandrov * [MDBA_MDB_ENTRY_INFO] { 59521257156SNikolay Aleksandrov * struct br_mdb_entry 59621257156SNikolay Aleksandrov * [MDBA_MDB_EATTR attributes] 59721257156SNikolay Aleksandrov * } 598ee07c6e7SCong Wang * } 599ee07c6e7SCong Wang * } 600ee07c6e7SCong Wang * [MDBA_ROUTER] = { 60159f78f9fSNikolay Aleksandrov * [MDBA_ROUTER_PORT] = { 60259f78f9fSNikolay Aleksandrov * u32 ifindex 60359f78f9fSNikolay Aleksandrov * [MDBA_ROUTER_PATTR attributes] 60459f78f9fSNikolay Aleksandrov * } 605ee07c6e7SCong Wang * } 606ee07c6e7SCong Wang */ 607ee07c6e7SCong Wang enum { 608ee07c6e7SCong Wang MDBA_UNSPEC, 609ee07c6e7SCong Wang MDBA_MDB, 610ee07c6e7SCong Wang MDBA_ROUTER, 611ee07c6e7SCong Wang __MDBA_MAX, 612ee07c6e7SCong Wang }; 613ee07c6e7SCong Wang #define MDBA_MAX (__MDBA_MAX - 1) 614ee07c6e7SCong Wang 615ee07c6e7SCong Wang enum { 616ee07c6e7SCong Wang MDBA_MDB_UNSPEC, 617ee07c6e7SCong Wang MDBA_MDB_ENTRY, 618ee07c6e7SCong Wang __MDBA_MDB_MAX, 619ee07c6e7SCong Wang }; 620ee07c6e7SCong Wang #define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1) 621ee07c6e7SCong Wang 622ee07c6e7SCong Wang enum { 623ee07c6e7SCong Wang MDBA_MDB_ENTRY_UNSPEC, 624ee07c6e7SCong Wang MDBA_MDB_ENTRY_INFO, 625ee07c6e7SCong Wang __MDBA_MDB_ENTRY_MAX, 626ee07c6e7SCong Wang }; 627ee07c6e7SCong Wang #define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1) 628ee07c6e7SCong Wang 62921257156SNikolay Aleksandrov /* per mdb entry additional attributes */ 63021257156SNikolay Aleksandrov enum { 63121257156SNikolay Aleksandrov MDBA_MDB_EATTR_UNSPEC, 63221257156SNikolay Aleksandrov MDBA_MDB_EATTR_TIMER, 6335205e919SNikolay Aleksandrov MDBA_MDB_EATTR_SRC_LIST, 6345205e919SNikolay Aleksandrov MDBA_MDB_EATTR_GROUP_MODE, 63588d4bd18SNikolay Aleksandrov MDBA_MDB_EATTR_SOURCE, 6368f8cb77eSNikolay Aleksandrov MDBA_MDB_EATTR_RTPROT, 637a3a48de5SIdo Schimmel MDBA_MDB_EATTR_DST, 638a3a48de5SIdo Schimmel MDBA_MDB_EATTR_DST_PORT, 639a3a48de5SIdo Schimmel MDBA_MDB_EATTR_VNI, 640a3a48de5SIdo Schimmel MDBA_MDB_EATTR_IFINDEX, 641a3a48de5SIdo Schimmel MDBA_MDB_EATTR_SRC_VNI, 64221257156SNikolay Aleksandrov __MDBA_MDB_EATTR_MAX 64321257156SNikolay Aleksandrov }; 64421257156SNikolay Aleksandrov #define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1) 64521257156SNikolay Aleksandrov 6465205e919SNikolay Aleksandrov /* per mdb entry source */ 6475205e919SNikolay Aleksandrov enum { 6485205e919SNikolay Aleksandrov MDBA_MDB_SRCLIST_UNSPEC, 6495205e919SNikolay Aleksandrov MDBA_MDB_SRCLIST_ENTRY, 6505205e919SNikolay Aleksandrov __MDBA_MDB_SRCLIST_MAX 6515205e919SNikolay Aleksandrov }; 6525205e919SNikolay Aleksandrov #define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1) 6535205e919SNikolay Aleksandrov 6545205e919SNikolay Aleksandrov /* per mdb entry per source attributes 6555205e919SNikolay Aleksandrov * these are embedded in MDBA_MDB_SRCLIST_ENTRY 6565205e919SNikolay Aleksandrov */ 6575205e919SNikolay Aleksandrov enum { 6585205e919SNikolay Aleksandrov MDBA_MDB_SRCATTR_UNSPEC, 6595205e919SNikolay Aleksandrov MDBA_MDB_SRCATTR_ADDRESS, 6605205e919SNikolay Aleksandrov MDBA_MDB_SRCATTR_TIMER, 6615205e919SNikolay Aleksandrov __MDBA_MDB_SRCATTR_MAX 6625205e919SNikolay Aleksandrov }; 6635205e919SNikolay Aleksandrov #define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1) 6645205e919SNikolay Aleksandrov 6657f0aec7aSNikolay Aleksandrov /* multicast router types */ 6667f0aec7aSNikolay Aleksandrov enum { 6677f0aec7aSNikolay Aleksandrov MDB_RTR_TYPE_DISABLED, 6687f0aec7aSNikolay Aleksandrov MDB_RTR_TYPE_TEMP_QUERY, 6697f0aec7aSNikolay Aleksandrov MDB_RTR_TYPE_PERM, 670a55d8246SNikolay Aleksandrov MDB_RTR_TYPE_TEMP 6717f0aec7aSNikolay Aleksandrov }; 6727f0aec7aSNikolay Aleksandrov 673ee07c6e7SCong Wang enum { 674ee07c6e7SCong Wang MDBA_ROUTER_UNSPEC, 675ee07c6e7SCong Wang MDBA_ROUTER_PORT, 676ee07c6e7SCong Wang __MDBA_ROUTER_MAX, 677ee07c6e7SCong Wang }; 678ee07c6e7SCong Wang #define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1) 679ee07c6e7SCong Wang 68059f78f9fSNikolay Aleksandrov /* router port attributes */ 68159f78f9fSNikolay Aleksandrov enum { 68259f78f9fSNikolay Aleksandrov MDBA_ROUTER_PATTR_UNSPEC, 68359f78f9fSNikolay Aleksandrov MDBA_ROUTER_PATTR_TIMER, 68459f78f9fSNikolay Aleksandrov MDBA_ROUTER_PATTR_TYPE, 685b7fb0916SLinus Lüssing MDBA_ROUTER_PATTR_INET_TIMER, 686b7fb0916SLinus Lüssing MDBA_ROUTER_PATTR_INET6_TIMER, 6871e9ca456SNikolay Aleksandrov MDBA_ROUTER_PATTR_VID, 68859f78f9fSNikolay Aleksandrov __MDBA_ROUTER_PATTR_MAX 68959f78f9fSNikolay Aleksandrov }; 69059f78f9fSNikolay Aleksandrov #define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1) 69159f78f9fSNikolay Aleksandrov 692ee07c6e7SCong Wang struct br_port_msg { 693cfd56754SCong Wang __u8 family; 694ee07c6e7SCong Wang __u32 ifindex; 695ee07c6e7SCong Wang }; 696ee07c6e7SCong Wang 697ee07c6e7SCong Wang struct br_mdb_entry { 698ee07c6e7SCong Wang __u32 ifindex; 699ccb1c31aSAmerigo Wang #define MDB_TEMPORARY 0 700ccb1c31aSAmerigo Wang #define MDB_PERMANENT 1 701ccb1c31aSAmerigo Wang __u8 state; 702157ede67SElad Raz #define MDB_FLAGS_OFFLOAD (1 << 0) 7033247b272SNikolay Aleksandrov #define MDB_FLAGS_FAST_LEAVE (1 << 1) 7048266a049SNikolay Aleksandrov #define MDB_FLAGS_STAR_EXCL (1 << 2) 7059116ffbfSNikolay Aleksandrov #define MDB_FLAGS_BLOCKED (1 << 3) 706157ede67SElad Raz __u8 flags; 70774fe61f1SNikolay Aleksandrov __u16 vid; 708ee07c6e7SCong Wang struct { 709ee07c6e7SCong Wang union { 710ee07c6e7SCong Wang __be32 ip4; 711ee07c6e7SCong Wang struct in6_addr ip6; 712955062b0SNikolay Aleksandrov unsigned char mac_addr[ETH_ALEN]; 713ee07c6e7SCong Wang } u; 714ee07c6e7SCong Wang __be16 proto; 715ee07c6e7SCong Wang } addr; 716ee07c6e7SCong Wang }; 717ee07c6e7SCong Wang 718cfd56754SCong Wang enum { 719cfd56754SCong Wang MDBA_SET_ENTRY_UNSPEC, 720cfd56754SCong Wang MDBA_SET_ENTRY, 7219c4258c7SNikolay Aleksandrov MDBA_SET_ENTRY_ATTRS, 722cfd56754SCong Wang __MDBA_SET_ENTRY_MAX, 723cfd56754SCong Wang }; 724cfd56754SCong Wang #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1) 725cfd56754SCong Wang 72683c1bbebSIdo Schimmel /* [MDBA_GET_ENTRY] = { 72783c1bbebSIdo Schimmel * struct br_mdb_entry 72883c1bbebSIdo Schimmel * [MDBA_GET_ENTRY_ATTRS] = { 72983c1bbebSIdo Schimmel * [MDBE_ATTR_SOURCE] 73083c1bbebSIdo Schimmel * struct in_addr / struct in6_addr 73183c1bbebSIdo Schimmel * [MDBE_ATTR_SRC_VNI] 73283c1bbebSIdo Schimmel * u32 73383c1bbebSIdo Schimmel * } 73483c1bbebSIdo Schimmel * } 73583c1bbebSIdo Schimmel */ 73683c1bbebSIdo Schimmel enum { 73783c1bbebSIdo Schimmel MDBA_GET_ENTRY_UNSPEC, 73883c1bbebSIdo Schimmel MDBA_GET_ENTRY, 73983c1bbebSIdo Schimmel MDBA_GET_ENTRY_ATTRS, 74083c1bbebSIdo Schimmel __MDBA_GET_ENTRY_MAX, 74183c1bbebSIdo Schimmel }; 74283c1bbebSIdo Schimmel #define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1) 74383c1bbebSIdo Schimmel 7449c4258c7SNikolay Aleksandrov /* [MDBA_SET_ENTRY_ATTRS] = { 7459c4258c7SNikolay Aleksandrov * [MDBE_ATTR_xxx] 7469c4258c7SNikolay Aleksandrov * ... 7479c4258c7SNikolay Aleksandrov * } 7489c4258c7SNikolay Aleksandrov */ 7499c4258c7SNikolay Aleksandrov enum { 7509c4258c7SNikolay Aleksandrov MDBE_ATTR_UNSPEC, 75188d4bd18SNikolay Aleksandrov MDBE_ATTR_SOURCE, 7526afaae6dSIdo Schimmel MDBE_ATTR_SRC_LIST, 7536afaae6dSIdo Schimmel MDBE_ATTR_GROUP_MODE, 7541d7b66a7SIdo Schimmel MDBE_ATTR_RTPROT, 755a3a48de5SIdo Schimmel MDBE_ATTR_DST, 756a3a48de5SIdo Schimmel MDBE_ATTR_DST_PORT, 757a3a48de5SIdo Schimmel MDBE_ATTR_VNI, 758a3a48de5SIdo Schimmel MDBE_ATTR_IFINDEX, 759a3a48de5SIdo Schimmel MDBE_ATTR_SRC_VNI, 760*e37a11fcSIdo Schimmel MDBE_ATTR_STATE_MASK, 7619c4258c7SNikolay Aleksandrov __MDBE_ATTR_MAX, 7629c4258c7SNikolay Aleksandrov }; 7639c4258c7SNikolay Aleksandrov #define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1) 7649c4258c7SNikolay Aleksandrov 7656afaae6dSIdo Schimmel /* per mdb entry source */ 7666afaae6dSIdo Schimmel enum { 7676afaae6dSIdo Schimmel MDBE_SRC_LIST_UNSPEC, 7686afaae6dSIdo Schimmel MDBE_SRC_LIST_ENTRY, 7696afaae6dSIdo Schimmel __MDBE_SRC_LIST_MAX, 7706afaae6dSIdo Schimmel }; 7716afaae6dSIdo Schimmel #define MDBE_SRC_LIST_MAX (__MDBE_SRC_LIST_MAX - 1) 7726afaae6dSIdo Schimmel 7736afaae6dSIdo Schimmel /* per mdb entry per source attributes 7746afaae6dSIdo Schimmel * these are embedded in MDBE_SRC_LIST_ENTRY 7756afaae6dSIdo Schimmel */ 7766afaae6dSIdo Schimmel enum { 7776afaae6dSIdo Schimmel MDBE_SRCATTR_UNSPEC, 7786afaae6dSIdo Schimmel MDBE_SRCATTR_ADDRESS, 7796afaae6dSIdo Schimmel __MDBE_SRCATTR_MAX, 7806afaae6dSIdo Schimmel }; 7816afaae6dSIdo Schimmel #define MDBE_SRCATTR_MAX (__MDBE_SRCATTR_MAX - 1) 7826afaae6dSIdo Schimmel 783a60c0903SNikolay Aleksandrov /* Embedded inside LINK_XSTATS_TYPE_BRIDGE */ 784a60c0903SNikolay Aleksandrov enum { 785a60c0903SNikolay Aleksandrov BRIDGE_XSTATS_UNSPEC, 786a60c0903SNikolay Aleksandrov BRIDGE_XSTATS_VLAN, 7871080ab95SNikolay Aleksandrov BRIDGE_XSTATS_MCAST, 7881080ab95SNikolay Aleksandrov BRIDGE_XSTATS_PAD, 789de179966SVivien Didelot BRIDGE_XSTATS_STP, 790a60c0903SNikolay Aleksandrov __BRIDGE_XSTATS_MAX 791a60c0903SNikolay Aleksandrov }; 792a60c0903SNikolay Aleksandrov #define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1) 793a60c0903SNikolay Aleksandrov 7941080ab95SNikolay Aleksandrov enum { 7951080ab95SNikolay Aleksandrov BR_MCAST_DIR_RX, 7961080ab95SNikolay Aleksandrov BR_MCAST_DIR_TX, 7971080ab95SNikolay Aleksandrov BR_MCAST_DIR_SIZE 7981080ab95SNikolay Aleksandrov }; 7991080ab95SNikolay Aleksandrov 8001080ab95SNikolay Aleksandrov /* IGMP/MLD statistics */ 8011080ab95SNikolay Aleksandrov struct br_mcast_stats { 802a65056ecSNikolay Aleksandrov __u64 igmp_v1queries[BR_MCAST_DIR_SIZE]; 803a65056ecSNikolay Aleksandrov __u64 igmp_v2queries[BR_MCAST_DIR_SIZE]; 804a65056ecSNikolay Aleksandrov __u64 igmp_v3queries[BR_MCAST_DIR_SIZE]; 8051080ab95SNikolay Aleksandrov __u64 igmp_leaves[BR_MCAST_DIR_SIZE]; 8061080ab95SNikolay Aleksandrov __u64 igmp_v1reports[BR_MCAST_DIR_SIZE]; 8071080ab95SNikolay Aleksandrov __u64 igmp_v2reports[BR_MCAST_DIR_SIZE]; 8081080ab95SNikolay Aleksandrov __u64 igmp_v3reports[BR_MCAST_DIR_SIZE]; 8091080ab95SNikolay Aleksandrov __u64 igmp_parse_errors; 8101080ab95SNikolay Aleksandrov 811a65056ecSNikolay Aleksandrov __u64 mld_v1queries[BR_MCAST_DIR_SIZE]; 812a65056ecSNikolay Aleksandrov __u64 mld_v2queries[BR_MCAST_DIR_SIZE]; 8131080ab95SNikolay Aleksandrov __u64 mld_leaves[BR_MCAST_DIR_SIZE]; 8141080ab95SNikolay Aleksandrov __u64 mld_v1reports[BR_MCAST_DIR_SIZE]; 8151080ab95SNikolay Aleksandrov __u64 mld_v2reports[BR_MCAST_DIR_SIZE]; 8161080ab95SNikolay Aleksandrov __u64 mld_parse_errors; 8171080ab95SNikolay Aleksandrov 8181080ab95SNikolay Aleksandrov __u64 mcast_bytes[BR_MCAST_DIR_SIZE]; 8191080ab95SNikolay Aleksandrov __u64 mcast_packets[BR_MCAST_DIR_SIZE]; 8201080ab95SNikolay Aleksandrov }; 821a428afe8SNikolay Aleksandrov 822a428afe8SNikolay Aleksandrov /* bridge boolean options 82370e4272bSNikolay Aleksandrov * BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets 824f4b7002aSNikolay Aleksandrov * BR_BOOLOPT_MCAST_VLAN_SNOOPING - control vlan multicast snooping 82570e4272bSNikolay Aleksandrov * 826a428afe8SNikolay Aleksandrov * IMPORTANT: if adding a new option do not forget to handle 827a428afe8SNikolay Aleksandrov * it in br_boolopt_toggle/get and bridge sysfs 828a428afe8SNikolay Aleksandrov */ 829a428afe8SNikolay Aleksandrov enum br_boolopt_id { 83070e4272bSNikolay Aleksandrov BR_BOOLOPT_NO_LL_LEARN, 831f4b7002aSNikolay Aleksandrov BR_BOOLOPT_MCAST_VLAN_SNOOPING, 832ec7328b5STobias Waldekranz BR_BOOLOPT_MST_ENABLE, 833a428afe8SNikolay Aleksandrov BR_BOOLOPT_MAX 834a428afe8SNikolay Aleksandrov }; 835a428afe8SNikolay Aleksandrov 836a428afe8SNikolay Aleksandrov /* struct br_boolopt_multi - change multiple bridge boolean options 837a428afe8SNikolay Aleksandrov * 838a428afe8SNikolay Aleksandrov * @optval: new option values (bit per option) 839a428afe8SNikolay Aleksandrov * @optmask: options to change (bit per option) 840a428afe8SNikolay Aleksandrov */ 841a428afe8SNikolay Aleksandrov struct br_boolopt_multi { 842a428afe8SNikolay Aleksandrov __u32 optval; 843a428afe8SNikolay Aleksandrov __u32 optmask; 844a428afe8SNikolay Aleksandrov }; 845c7fa1d9bSNikolay Aleksandrov 846c7fa1d9bSNikolay Aleksandrov enum { 847c7fa1d9bSNikolay Aleksandrov BRIDGE_QUERIER_UNSPEC, 848c7fa1d9bSNikolay Aleksandrov BRIDGE_QUERIER_IP_ADDRESS, 849c7fa1d9bSNikolay Aleksandrov BRIDGE_QUERIER_IP_PORT, 850c7fa1d9bSNikolay Aleksandrov BRIDGE_QUERIER_IP_OTHER_TIMER, 851c7fa1d9bSNikolay Aleksandrov BRIDGE_QUERIER_PAD, 85285b41082SNikolay Aleksandrov BRIDGE_QUERIER_IPV6_ADDRESS, 85385b41082SNikolay Aleksandrov BRIDGE_QUERIER_IPV6_PORT, 85485b41082SNikolay Aleksandrov BRIDGE_QUERIER_IPV6_OTHER_TIMER, 855c7fa1d9bSNikolay Aleksandrov __BRIDGE_QUERIER_MAX 856c7fa1d9bSNikolay Aleksandrov }; 857c7fa1d9bSNikolay Aleksandrov #define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1) 858607ca46eSDavid Howells #endif /* _UAPI_LINUX_IF_BRIDGE_H */ 859