1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2*4dc78e53SAndroid Build Coastguard Worker /* 3*4dc78e53SAndroid Build Coastguard Worker * Linux ethernet bridge 4*4dc78e53SAndroid Build Coastguard Worker * 5*4dc78e53SAndroid Build Coastguard Worker * Authors: 6*4dc78e53SAndroid Build Coastguard Worker * Lennert Buytenhek <[email protected]> 7*4dc78e53SAndroid Build Coastguard Worker * 8*4dc78e53SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 9*4dc78e53SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 10*4dc78e53SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 11*4dc78e53SAndroid Build Coastguard Worker * 2 of the License, or (at your option) any later version. 12*4dc78e53SAndroid Build Coastguard Worker */ 13*4dc78e53SAndroid Build Coastguard Worker 14*4dc78e53SAndroid Build Coastguard Worker #ifndef _LINUX_IF_BRIDGE_H 15*4dc78e53SAndroid Build Coastguard Worker #define _LINUX_IF_BRIDGE_H 16*4dc78e53SAndroid Build Coastguard Worker 17*4dc78e53SAndroid Build Coastguard Worker #include <linux/types.h> 18*4dc78e53SAndroid Build Coastguard Worker #include <linux/if_ether.h> 19*4dc78e53SAndroid Build Coastguard Worker #include <linux/in6.h> 20*4dc78e53SAndroid Build Coastguard Worker 21*4dc78e53SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_ATTR "bridge" 22*4dc78e53SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_FDB "brforward" 23*4dc78e53SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_SUBDIR "brif" 24*4dc78e53SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_ATTR "brport" 25*4dc78e53SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_LINK "bridge" 26*4dc78e53SAndroid Build Coastguard Worker 27*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_VERSION 1 28*4dc78e53SAndroid Build Coastguard Worker 29*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_VERSION 0 30*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGES 1 31*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_ADD_BRIDGE 2 32*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_DEL_BRIDGE 3 33*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_ADD_IF 4 34*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_DEL_IF 5 35*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGE_INFO 6 36*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_LIST 7 37*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 38*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_HELLO_TIME 9 39*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_MAX_AGE 10 40*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_AGEING_TIME 11 41*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_GC_INTERVAL 12 42*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_INFO 13 43*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_STP_STATE 14 44*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_PRIORITY 15 45*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_PORT_PRIORITY 16 46*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_SET_PATH_COST 17 47*4dc78e53SAndroid Build Coastguard Worker #define BRCTL_GET_FDB_ENTRIES 18 48*4dc78e53SAndroid Build Coastguard Worker 49*4dc78e53SAndroid Build Coastguard Worker #define BR_STATE_DISABLED 0 50*4dc78e53SAndroid Build Coastguard Worker #define BR_STATE_LISTENING 1 51*4dc78e53SAndroid Build Coastguard Worker #define BR_STATE_LEARNING 2 52*4dc78e53SAndroid Build Coastguard Worker #define BR_STATE_FORWARDING 3 53*4dc78e53SAndroid Build Coastguard Worker #define BR_STATE_BLOCKING 4 54*4dc78e53SAndroid Build Coastguard Worker 55*4dc78e53SAndroid Build Coastguard Worker struct __bridge_info { 56*4dc78e53SAndroid Build Coastguard Worker __u64 designated_root; 57*4dc78e53SAndroid Build Coastguard Worker __u64 bridge_id; 58*4dc78e53SAndroid Build Coastguard Worker __u32 root_path_cost; 59*4dc78e53SAndroid Build Coastguard Worker __u32 max_age; 60*4dc78e53SAndroid Build Coastguard Worker __u32 hello_time; 61*4dc78e53SAndroid Build Coastguard Worker __u32 forward_delay; 62*4dc78e53SAndroid Build Coastguard Worker __u32 bridge_max_age; 63*4dc78e53SAndroid Build Coastguard Worker __u32 bridge_hello_time; 64*4dc78e53SAndroid Build Coastguard Worker __u32 bridge_forward_delay; 65*4dc78e53SAndroid Build Coastguard Worker __u8 topology_change; 66*4dc78e53SAndroid Build Coastguard Worker __u8 topology_change_detected; 67*4dc78e53SAndroid Build Coastguard Worker __u8 root_port; 68*4dc78e53SAndroid Build Coastguard Worker __u8 stp_enabled; 69*4dc78e53SAndroid Build Coastguard Worker __u32 ageing_time; 70*4dc78e53SAndroid Build Coastguard Worker __u32 gc_interval; 71*4dc78e53SAndroid Build Coastguard Worker __u32 hello_timer_value; 72*4dc78e53SAndroid Build Coastguard Worker __u32 tcn_timer_value; 73*4dc78e53SAndroid Build Coastguard Worker __u32 topology_change_timer_value; 74*4dc78e53SAndroid Build Coastguard Worker __u32 gc_timer_value; 75*4dc78e53SAndroid Build Coastguard Worker }; 76*4dc78e53SAndroid Build Coastguard Worker 77*4dc78e53SAndroid Build Coastguard Worker struct __port_info { 78*4dc78e53SAndroid Build Coastguard Worker __u64 designated_root; 79*4dc78e53SAndroid Build Coastguard Worker __u64 designated_bridge; 80*4dc78e53SAndroid Build Coastguard Worker __u16 port_id; 81*4dc78e53SAndroid Build Coastguard Worker __u16 designated_port; 82*4dc78e53SAndroid Build Coastguard Worker __u32 path_cost; 83*4dc78e53SAndroid Build Coastguard Worker __u32 designated_cost; 84*4dc78e53SAndroid Build Coastguard Worker __u8 state; 85*4dc78e53SAndroid Build Coastguard Worker __u8 top_change_ack; 86*4dc78e53SAndroid Build Coastguard Worker __u8 config_pending; 87*4dc78e53SAndroid Build Coastguard Worker __u8 unused0; 88*4dc78e53SAndroid Build Coastguard Worker __u32 message_age_timer_value; 89*4dc78e53SAndroid Build Coastguard Worker __u32 forward_delay_timer_value; 90*4dc78e53SAndroid Build Coastguard Worker __u32 hold_timer_value; 91*4dc78e53SAndroid Build Coastguard Worker }; 92*4dc78e53SAndroid Build Coastguard Worker 93*4dc78e53SAndroid Build Coastguard Worker struct __fdb_entry { 94*4dc78e53SAndroid Build Coastguard Worker __u8 mac_addr[ETH_ALEN]; 95*4dc78e53SAndroid Build Coastguard Worker __u8 port_no; 96*4dc78e53SAndroid Build Coastguard Worker __u8 is_local; 97*4dc78e53SAndroid Build Coastguard Worker __u32 ageing_timer_value; 98*4dc78e53SAndroid Build Coastguard Worker __u8 port_hi; 99*4dc78e53SAndroid Build Coastguard Worker __u8 pad0; 100*4dc78e53SAndroid Build Coastguard Worker __u16 unused; 101*4dc78e53SAndroid Build Coastguard Worker }; 102*4dc78e53SAndroid Build Coastguard Worker 103*4dc78e53SAndroid Build Coastguard Worker /* Bridge Flags */ 104*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_MASTER 1 /* Bridge command to/from master */ 105*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_SELF 2 /* Bridge command to/from lowerdev */ 106*4dc78e53SAndroid Build Coastguard Worker 107*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEB 0 /* Default loopback mode */ 108*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEPA 1 /* 802.1Qbg defined VEPA mode */ 109*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_MODE_UNDEF 0xFFFF /* mode undefined */ 110*4dc78e53SAndroid Build Coastguard Worker 111*4dc78e53SAndroid Build Coastguard Worker /* Bridge management nested attributes 112*4dc78e53SAndroid Build Coastguard Worker * [IFLA_AF_SPEC] = { 113*4dc78e53SAndroid Build Coastguard Worker * [IFLA_BRIDGE_FLAGS] 114*4dc78e53SAndroid Build Coastguard Worker * [IFLA_BRIDGE_MODE] 115*4dc78e53SAndroid Build Coastguard Worker * [IFLA_BRIDGE_VLAN_INFO] 116*4dc78e53SAndroid Build Coastguard Worker * } 117*4dc78e53SAndroid Build Coastguard Worker */ 118*4dc78e53SAndroid Build Coastguard Worker enum { 119*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_FLAGS, 120*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MODE, 121*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_INFO, 122*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_INFO, 123*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP, 124*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM, 125*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST, 126*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MAX, 127*4dc78e53SAndroid Build Coastguard Worker }; 128*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1) 129*4dc78e53SAndroid Build Coastguard Worker 130*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_MASTER (1<<0) /* Operate on Bridge device as well */ 131*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_PVID (1<<1) /* VLAN is PVID, ingress untagged */ 132*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_UNTAGGED (1<<2) /* VLAN egresses untagged */ 133*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_BEGIN (1<<3) /* VLAN is start of vlan range */ 134*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_END (1<<4) /* VLAN is end of vlan range */ 135*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_BRENTRY (1<<5) /* Global bridge VLAN entry */ 136*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_ONLY_OPTS (1<<6) /* Skip create/delete/flags */ 137*4dc78e53SAndroid Build Coastguard Worker 138*4dc78e53SAndroid Build Coastguard Worker struct bridge_vlan_info { 139*4dc78e53SAndroid Build Coastguard Worker __u16 flags; 140*4dc78e53SAndroid Build Coastguard Worker __u16 vid; 141*4dc78e53SAndroid Build Coastguard Worker }; 142*4dc78e53SAndroid Build Coastguard Worker 143*4dc78e53SAndroid Build Coastguard Worker enum { 144*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC, 145*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_ID, 146*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_VID, 147*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_FLAGS, 148*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_VLAN_TUNNEL_MAX, 149*4dc78e53SAndroid Build Coastguard Worker }; 150*4dc78e53SAndroid Build Coastguard Worker 151*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1) 152*4dc78e53SAndroid Build Coastguard Worker 153*4dc78e53SAndroid Build Coastguard Worker struct bridge_vlan_xstats { 154*4dc78e53SAndroid Build Coastguard Worker __u64 rx_bytes; 155*4dc78e53SAndroid Build Coastguard Worker __u64 rx_packets; 156*4dc78e53SAndroid Build Coastguard Worker __u64 tx_bytes; 157*4dc78e53SAndroid Build Coastguard Worker __u64 tx_packets; 158*4dc78e53SAndroid Build Coastguard Worker __u16 vid; 159*4dc78e53SAndroid Build Coastguard Worker __u16 flags; 160*4dc78e53SAndroid Build Coastguard Worker __u32 pad2; 161*4dc78e53SAndroid Build Coastguard Worker }; 162*4dc78e53SAndroid Build Coastguard Worker 163*4dc78e53SAndroid Build Coastguard Worker enum { 164*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_UNSPEC, 165*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE, 166*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_STATE, 167*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_ROLE, 168*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_STATE, 169*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_ROLE, 170*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST, 171*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO, 172*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE, 173*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_STATE, 174*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST, 175*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_MAX, 176*4dc78e53SAndroid Build Coastguard Worker }; 177*4dc78e53SAndroid Build Coastguard Worker 178*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_MAX (__IFLA_BRIDGE_MRP_MAX - 1) 179*4dc78e53SAndroid Build Coastguard Worker 180*4dc78e53SAndroid Build Coastguard Worker enum { 181*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE_UNSPEC, 182*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE_RING_ID, 183*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE_P_IFINDEX, 184*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE_S_IFINDEX, 185*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INSTANCE_PRIO, 186*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_INSTANCE_MAX, 187*4dc78e53SAndroid Build Coastguard Worker }; 188*4dc78e53SAndroid Build Coastguard Worker 189*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_INSTANCE_MAX (__IFLA_BRIDGE_MRP_INSTANCE_MAX - 1) 190*4dc78e53SAndroid Build Coastguard Worker 191*4dc78e53SAndroid Build Coastguard Worker enum { 192*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_STATE_UNSPEC, 193*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_STATE_STATE, 194*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_PORT_STATE_MAX, 195*4dc78e53SAndroid Build Coastguard Worker }; 196*4dc78e53SAndroid Build Coastguard Worker 197*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_PORT_STATE_MAX (__IFLA_BRIDGE_MRP_PORT_STATE_MAX - 1) 198*4dc78e53SAndroid Build Coastguard Worker 199*4dc78e53SAndroid Build Coastguard Worker enum { 200*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_ROLE_UNSPEC, 201*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_PORT_ROLE_ROLE, 202*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_PORT_ROLE_MAX, 203*4dc78e53SAndroid Build Coastguard Worker }; 204*4dc78e53SAndroid Build Coastguard Worker 205*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_PORT_ROLE_MAX (__IFLA_BRIDGE_MRP_PORT_ROLE_MAX - 1) 206*4dc78e53SAndroid Build Coastguard Worker 207*4dc78e53SAndroid Build Coastguard Worker enum { 208*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_STATE_UNSPEC, 209*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_STATE_RING_ID, 210*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_STATE_STATE, 211*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_RING_STATE_MAX, 212*4dc78e53SAndroid Build Coastguard Worker }; 213*4dc78e53SAndroid Build Coastguard Worker 214*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_RING_STATE_MAX (__IFLA_BRIDGE_MRP_RING_STATE_MAX - 1) 215*4dc78e53SAndroid Build Coastguard Worker 216*4dc78e53SAndroid Build Coastguard Worker enum { 217*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_ROLE_UNSPEC, 218*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_ROLE_RING_ID, 219*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_RING_ROLE_ROLE, 220*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_RING_ROLE_MAX, 221*4dc78e53SAndroid Build Coastguard Worker }; 222*4dc78e53SAndroid Build Coastguard Worker 223*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_RING_ROLE_MAX (__IFLA_BRIDGE_MRP_RING_ROLE_MAX - 1) 224*4dc78e53SAndroid Build Coastguard Worker 225*4dc78e53SAndroid Build Coastguard Worker enum { 226*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_UNSPEC, 227*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_RING_ID, 228*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_INTERVAL, 229*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_MAX_MISS, 230*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_PERIOD, 231*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_TEST_MONITOR, 232*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_START_TEST_MAX, 233*4dc78e53SAndroid Build Coastguard Worker }; 234*4dc78e53SAndroid Build Coastguard Worker 235*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_START_TEST_MAX (__IFLA_BRIDGE_MRP_START_TEST_MAX - 1) 236*4dc78e53SAndroid Build Coastguard Worker 237*4dc78e53SAndroid Build Coastguard Worker enum { 238*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_UNSPEC, 239*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_RING_ID, 240*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_P_IFINDEX, 241*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_S_IFINDEX, 242*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_PRIO, 243*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_RING_STATE, 244*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_RING_ROLE, 245*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_TEST_INTERVAL, 246*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_TEST_MAX_MISS, 247*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_TEST_MONITOR, 248*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_I_IFINDEX, 249*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_IN_STATE, 250*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_IN_ROLE, 251*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_IN_TEST_INTERVAL, 252*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_INFO_IN_TEST_MAX_MISS, 253*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_INFO_MAX, 254*4dc78e53SAndroid Build Coastguard Worker }; 255*4dc78e53SAndroid Build Coastguard Worker 256*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_INFO_MAX (__IFLA_BRIDGE_MRP_INFO_MAX - 1) 257*4dc78e53SAndroid Build Coastguard Worker 258*4dc78e53SAndroid Build Coastguard Worker enum { 259*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_STATE_UNSPEC, 260*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_STATE_IN_ID, 261*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_STATE_STATE, 262*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_IN_STATE_MAX, 263*4dc78e53SAndroid Build Coastguard Worker }; 264*4dc78e53SAndroid Build Coastguard Worker 265*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_IN_STATE_MAX (__IFLA_BRIDGE_MRP_IN_STATE_MAX - 1) 266*4dc78e53SAndroid Build Coastguard Worker 267*4dc78e53SAndroid Build Coastguard Worker enum { 268*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE_UNSPEC, 269*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE_RING_ID, 270*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE_IN_ID, 271*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE_ROLE, 272*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_IN_ROLE_I_IFINDEX, 273*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_IN_ROLE_MAX, 274*4dc78e53SAndroid Build Coastguard Worker }; 275*4dc78e53SAndroid Build Coastguard Worker 276*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_IN_ROLE_MAX (__IFLA_BRIDGE_MRP_IN_ROLE_MAX - 1) 277*4dc78e53SAndroid Build Coastguard Worker 278*4dc78e53SAndroid Build Coastguard Worker enum { 279*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST_UNSPEC, 280*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST_IN_ID, 281*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST_INTERVAL, 282*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST_MAX_MISS, 283*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MRP_START_IN_TEST_PERIOD, 284*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MRP_START_IN_TEST_MAX, 285*4dc78e53SAndroid Build Coastguard Worker }; 286*4dc78e53SAndroid Build Coastguard Worker 287*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MRP_START_IN_TEST_MAX (__IFLA_BRIDGE_MRP_START_IN_TEST_MAX - 1) 288*4dc78e53SAndroid Build Coastguard Worker 289*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_instance { 290*4dc78e53SAndroid Build Coastguard Worker __u32 ring_id; 291*4dc78e53SAndroid Build Coastguard Worker __u32 p_ifindex; 292*4dc78e53SAndroid Build Coastguard Worker __u32 s_ifindex; 293*4dc78e53SAndroid Build Coastguard Worker __u16 prio; 294*4dc78e53SAndroid Build Coastguard Worker }; 295*4dc78e53SAndroid Build Coastguard Worker 296*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_ring_state { 297*4dc78e53SAndroid Build Coastguard Worker __u32 ring_id; 298*4dc78e53SAndroid Build Coastguard Worker __u32 ring_state; 299*4dc78e53SAndroid Build Coastguard Worker }; 300*4dc78e53SAndroid Build Coastguard Worker 301*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_ring_role { 302*4dc78e53SAndroid Build Coastguard Worker __u32 ring_id; 303*4dc78e53SAndroid Build Coastguard Worker __u32 ring_role; 304*4dc78e53SAndroid Build Coastguard Worker }; 305*4dc78e53SAndroid Build Coastguard Worker 306*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_start_test { 307*4dc78e53SAndroid Build Coastguard Worker __u32 ring_id; 308*4dc78e53SAndroid Build Coastguard Worker __u32 interval; 309*4dc78e53SAndroid Build Coastguard Worker __u32 max_miss; 310*4dc78e53SAndroid Build Coastguard Worker __u32 period; 311*4dc78e53SAndroid Build Coastguard Worker __u32 monitor; 312*4dc78e53SAndroid Build Coastguard Worker }; 313*4dc78e53SAndroid Build Coastguard Worker 314*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_in_state { 315*4dc78e53SAndroid Build Coastguard Worker __u32 in_state; 316*4dc78e53SAndroid Build Coastguard Worker __u16 in_id; 317*4dc78e53SAndroid Build Coastguard Worker }; 318*4dc78e53SAndroid Build Coastguard Worker 319*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_in_role { 320*4dc78e53SAndroid Build Coastguard Worker __u32 ring_id; 321*4dc78e53SAndroid Build Coastguard Worker __u32 in_role; 322*4dc78e53SAndroid Build Coastguard Worker __u32 i_ifindex; 323*4dc78e53SAndroid Build Coastguard Worker __u16 in_id; 324*4dc78e53SAndroid Build Coastguard Worker }; 325*4dc78e53SAndroid Build Coastguard Worker 326*4dc78e53SAndroid Build Coastguard Worker struct br_mrp_start_in_test { 327*4dc78e53SAndroid Build Coastguard Worker __u32 interval; 328*4dc78e53SAndroid Build Coastguard Worker __u32 max_miss; 329*4dc78e53SAndroid Build Coastguard Worker __u32 period; 330*4dc78e53SAndroid Build Coastguard Worker __u16 in_id; 331*4dc78e53SAndroid Build Coastguard Worker }; 332*4dc78e53SAndroid Build Coastguard Worker 333*4dc78e53SAndroid Build Coastguard Worker enum { 334*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_UNSPEC, 335*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE, 336*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_DELETE, 337*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG, 338*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG, 339*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD, 340*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE, 341*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_RDI, 342*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX, 343*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_INFO, 344*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_INFO, 345*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_INFO, 346*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_RDI_INFO, 347*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_INFO, 348*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO, 349*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_INFO, 350*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO, 351*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_MAX, 352*4dc78e53SAndroid Build Coastguard Worker }; 353*4dc78e53SAndroid Build Coastguard Worker 354*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1) 355*4dc78e53SAndroid Build Coastguard Worker 356*4dc78e53SAndroid Build Coastguard Worker enum { 357*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC, 358*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE, 359*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN, 360*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION, 361*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX, 362*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_MEP_CREATE_MAX, 363*4dc78e53SAndroid Build Coastguard Worker }; 364*4dc78e53SAndroid Build Coastguard Worker 365*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1) 366*4dc78e53SAndroid Build Coastguard Worker 367*4dc78e53SAndroid Build Coastguard Worker enum { 368*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC, 369*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE, 370*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_MEP_DELETE_MAX, 371*4dc78e53SAndroid Build Coastguard Worker }; 372*4dc78e53SAndroid Build Coastguard Worker 373*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1) 374*4dc78e53SAndroid Build Coastguard Worker 375*4dc78e53SAndroid Build Coastguard Worker enum { 376*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC, 377*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE, 378*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC, 379*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL, 380*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID, 381*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_MEP_CONFIG_MAX, 382*4dc78e53SAndroid Build Coastguard Worker }; 383*4dc78e53SAndroid Build Coastguard Worker 384*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1) 385*4dc78e53SAndroid Build Coastguard Worker 386*4dc78e53SAndroid Build Coastguard Worker enum { 387*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC, 388*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE, 389*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE, 390*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL, 391*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID, 392*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_CC_CONFIG_MAX, 393*4dc78e53SAndroid Build Coastguard Worker }; 394*4dc78e53SAndroid Build Coastguard Worker 395*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1) 396*4dc78e53SAndroid Build Coastguard Worker 397*4dc78e53SAndroid Build Coastguard Worker enum { 398*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC, 399*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE, 400*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_MEPID, 401*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX, 402*4dc78e53SAndroid Build Coastguard Worker }; 403*4dc78e53SAndroid Build Coastguard Worker 404*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1) 405*4dc78e53SAndroid Build Coastguard Worker 406*4dc78e53SAndroid Build Coastguard Worker enum { 407*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_RDI_UNSPEC, 408*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_RDI_INSTANCE, 409*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_RDI_RDI, 410*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_CC_RDI_MAX, 411*4dc78e53SAndroid Build Coastguard Worker }; 412*4dc78e53SAndroid Build Coastguard Worker 413*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1) 414*4dc78e53SAndroid Build Coastguard Worker 415*4dc78e53SAndroid Build Coastguard Worker enum { 416*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC, 417*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE, 418*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC, 419*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE, 420*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD, 421*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV, 422*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE, 423*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV, 424*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE, 425*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_CC_CCM_TX_MAX, 426*4dc78e53SAndroid Build Coastguard Worker }; 427*4dc78e53SAndroid Build Coastguard Worker 428*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1) 429*4dc78e53SAndroid Build Coastguard Worker 430*4dc78e53SAndroid Build Coastguard Worker enum { 431*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC, 432*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE, 433*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN, 434*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN, 435*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN, 436*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_MEP_STATUS_MAX, 437*4dc78e53SAndroid Build Coastguard Worker }; 438*4dc78e53SAndroid Build Coastguard Worker 439*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1) 440*4dc78e53SAndroid Build Coastguard Worker 441*4dc78e53SAndroid Build Coastguard Worker enum { 442*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC, 443*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE, 444*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID, 445*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT, 446*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI, 447*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE, 448*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE, 449*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN, 450*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN, 451*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN, 452*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX, 453*4dc78e53SAndroid Build Coastguard Worker }; 454*4dc78e53SAndroid Build Coastguard Worker 455*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1) 456*4dc78e53SAndroid Build Coastguard Worker 457*4dc78e53SAndroid Build Coastguard Worker enum { 458*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST_UNSPEC, 459*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST_ENTRY, 460*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MST_MAX, 461*4dc78e53SAndroid Build Coastguard Worker }; 462*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1) 463*4dc78e53SAndroid Build Coastguard Worker 464*4dc78e53SAndroid Build Coastguard Worker enum { 465*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST_ENTRY_UNSPEC, 466*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST_ENTRY_MSTI, 467*4dc78e53SAndroid Build Coastguard Worker IFLA_BRIDGE_MST_ENTRY_STATE, 468*4dc78e53SAndroid Build Coastguard Worker __IFLA_BRIDGE_MST_ENTRY_MAX, 469*4dc78e53SAndroid Build Coastguard Worker }; 470*4dc78e53SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1) 471*4dc78e53SAndroid Build Coastguard Worker 472*4dc78e53SAndroid Build Coastguard Worker struct bridge_stp_xstats { 473*4dc78e53SAndroid Build Coastguard Worker __u64 transition_blk; 474*4dc78e53SAndroid Build Coastguard Worker __u64 transition_fwd; 475*4dc78e53SAndroid Build Coastguard Worker __u64 rx_bpdu; 476*4dc78e53SAndroid Build Coastguard Worker __u64 tx_bpdu; 477*4dc78e53SAndroid Build Coastguard Worker __u64 rx_tcn; 478*4dc78e53SAndroid Build Coastguard Worker __u64 tx_tcn; 479*4dc78e53SAndroid Build Coastguard Worker }; 480*4dc78e53SAndroid Build Coastguard Worker 481*4dc78e53SAndroid Build Coastguard Worker /* Bridge vlan RTM header */ 482*4dc78e53SAndroid Build Coastguard Worker struct br_vlan_msg { 483*4dc78e53SAndroid Build Coastguard Worker __u8 family; 484*4dc78e53SAndroid Build Coastguard Worker __u8 reserved1; 485*4dc78e53SAndroid Build Coastguard Worker __u16 reserved2; 486*4dc78e53SAndroid Build Coastguard Worker __u32 ifindex; 487*4dc78e53SAndroid Build Coastguard Worker }; 488*4dc78e53SAndroid Build Coastguard Worker 489*4dc78e53SAndroid Build Coastguard Worker enum { 490*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_DUMP_UNSPEC, 491*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_DUMP_FLAGS, 492*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_DUMP_MAX, 493*4dc78e53SAndroid Build Coastguard Worker }; 494*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_DUMP_MAX (__BRIDGE_VLANDB_DUMP_MAX - 1) 495*4dc78e53SAndroid Build Coastguard Worker 496*4dc78e53SAndroid Build Coastguard Worker /* flags used in BRIDGE_VLANDB_DUMP_FLAGS attribute to affect dumps */ 497*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_DUMPF_STATS (1 << 0) /* Include stats in the dump */ 498*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_DUMPF_GLOBAL (1 << 1) /* Dump global vlan options only */ 499*4dc78e53SAndroid Build Coastguard Worker 500*4dc78e53SAndroid Build Coastguard Worker /* Bridge vlan RTM attributes 501*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_ENTRY] = { 502*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_ENTRY_INFO] 503*4dc78e53SAndroid Build Coastguard Worker * ... 504*4dc78e53SAndroid Build Coastguard Worker * } 505*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_GLOBAL_OPTIONS] = { 506*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_GOPTS_ID] 507*4dc78e53SAndroid Build Coastguard Worker * ... 508*4dc78e53SAndroid Build Coastguard Worker * } 509*4dc78e53SAndroid Build Coastguard Worker */ 510*4dc78e53SAndroid Build Coastguard Worker enum { 511*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_UNSPEC, 512*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY, 513*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GLOBAL_OPTIONS, 514*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_MAX, 515*4dc78e53SAndroid Build Coastguard Worker }; 516*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_MAX (__BRIDGE_VLANDB_MAX - 1) 517*4dc78e53SAndroid Build Coastguard Worker 518*4dc78e53SAndroid Build Coastguard Worker enum { 519*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_UNSPEC, 520*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_INFO, 521*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_RANGE, 522*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_STATE, 523*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_TUNNEL_INFO, 524*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_STATS, 525*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_MCAST_ROUTER, 526*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS, 527*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS, 528*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS, 529*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_ENTRY_MAX, 530*4dc78e53SAndroid Build Coastguard Worker }; 531*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1) 532*4dc78e53SAndroid Build Coastguard Worker 533*4dc78e53SAndroid Build Coastguard Worker /* [BRIDGE_VLANDB_ENTRY] = { 534*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_ENTRY_TUNNEL_INFO] = { 535*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_TINFO_ID] 536*4dc78e53SAndroid Build Coastguard Worker * ... 537*4dc78e53SAndroid Build Coastguard Worker * } 538*4dc78e53SAndroid Build Coastguard Worker * } 539*4dc78e53SAndroid Build Coastguard Worker */ 540*4dc78e53SAndroid Build Coastguard Worker enum { 541*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_TINFO_UNSPEC, 542*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_TINFO_ID, 543*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_TINFO_CMD, 544*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_TINFO_MAX, 545*4dc78e53SAndroid Build Coastguard Worker }; 546*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_TINFO_MAX (__BRIDGE_VLANDB_TINFO_MAX - 1) 547*4dc78e53SAndroid Build Coastguard Worker 548*4dc78e53SAndroid Build Coastguard Worker /* [BRIDGE_VLANDB_ENTRY] = { 549*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_ENTRY_STATS] = { 550*4dc78e53SAndroid Build Coastguard Worker * [BRIDGE_VLANDB_STATS_RX_BYTES] 551*4dc78e53SAndroid Build Coastguard Worker * ... 552*4dc78e53SAndroid Build Coastguard Worker * } 553*4dc78e53SAndroid Build Coastguard Worker * ... 554*4dc78e53SAndroid Build Coastguard Worker * } 555*4dc78e53SAndroid Build Coastguard Worker */ 556*4dc78e53SAndroid Build Coastguard Worker enum { 557*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_UNSPEC, 558*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_RX_BYTES, 559*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_RX_PACKETS, 560*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_TX_BYTES, 561*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_TX_PACKETS, 562*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_STATS_PAD, 563*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_STATS_MAX, 564*4dc78e53SAndroid Build Coastguard Worker }; 565*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_STATS_MAX (__BRIDGE_VLANDB_STATS_MAX - 1) 566*4dc78e53SAndroid Build Coastguard Worker 567*4dc78e53SAndroid Build Coastguard Worker enum { 568*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_UNSPEC, 569*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_ID, 570*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_RANGE, 571*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_SNOOPING, 572*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_IGMP_VERSION, 573*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_MLD_VERSION, 574*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_CNT, 575*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_CNT, 576*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_LAST_MEMBER_INTVL, 577*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_PAD, 578*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_MEMBERSHIP_INTVL, 579*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_INTVL, 580*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_QUERY_INTVL, 581*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_QUERY_RESPONSE_INTVL, 582*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_STARTUP_QUERY_INTVL, 583*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_QUERIER, 584*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS, 585*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE, 586*4dc78e53SAndroid Build Coastguard Worker BRIDGE_VLANDB_GOPTS_MSTI, 587*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_VLANDB_GOPTS_MAX 588*4dc78e53SAndroid Build Coastguard Worker }; 589*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1) 590*4dc78e53SAndroid Build Coastguard Worker 591*4dc78e53SAndroid Build Coastguard Worker /* Bridge multicast database attributes 592*4dc78e53SAndroid Build Coastguard Worker * [MDBA_MDB] = { 593*4dc78e53SAndroid Build Coastguard Worker * [MDBA_MDB_ENTRY] = { 594*4dc78e53SAndroid Build Coastguard Worker * [MDBA_MDB_ENTRY_INFO] { 595*4dc78e53SAndroid Build Coastguard Worker * struct br_mdb_entry 596*4dc78e53SAndroid Build Coastguard Worker * [MDBA_MDB_EATTR attributes] 597*4dc78e53SAndroid Build Coastguard Worker * } 598*4dc78e53SAndroid Build Coastguard Worker * } 599*4dc78e53SAndroid Build Coastguard Worker * } 600*4dc78e53SAndroid Build Coastguard Worker * [MDBA_ROUTER] = { 601*4dc78e53SAndroid Build Coastguard Worker * [MDBA_ROUTER_PORT] = { 602*4dc78e53SAndroid Build Coastguard Worker * u32 ifindex 603*4dc78e53SAndroid Build Coastguard Worker * [MDBA_ROUTER_PATTR attributes] 604*4dc78e53SAndroid Build Coastguard Worker * } 605*4dc78e53SAndroid Build Coastguard Worker * } 606*4dc78e53SAndroid Build Coastguard Worker */ 607*4dc78e53SAndroid Build Coastguard Worker enum { 608*4dc78e53SAndroid Build Coastguard Worker MDBA_UNSPEC, 609*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB, 610*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER, 611*4dc78e53SAndroid Build Coastguard Worker __MDBA_MAX, 612*4dc78e53SAndroid Build Coastguard Worker }; 613*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MAX (__MDBA_MAX - 1) 614*4dc78e53SAndroid Build Coastguard Worker 615*4dc78e53SAndroid Build Coastguard Worker enum { 616*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_UNSPEC, 617*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_ENTRY, 618*4dc78e53SAndroid Build Coastguard Worker __MDBA_MDB_MAX, 619*4dc78e53SAndroid Build Coastguard Worker }; 620*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1) 621*4dc78e53SAndroid Build Coastguard Worker 622*4dc78e53SAndroid Build Coastguard Worker enum { 623*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_ENTRY_UNSPEC, 624*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_ENTRY_INFO, 625*4dc78e53SAndroid Build Coastguard Worker __MDBA_MDB_ENTRY_MAX, 626*4dc78e53SAndroid Build Coastguard Worker }; 627*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1) 628*4dc78e53SAndroid Build Coastguard Worker 629*4dc78e53SAndroid Build Coastguard Worker /* per mdb entry additional attributes */ 630*4dc78e53SAndroid Build Coastguard Worker enum { 631*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_UNSPEC, 632*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_TIMER, 633*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_SRC_LIST, 634*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_GROUP_MODE, 635*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_SOURCE, 636*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_RTPROT, 637*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_DST, 638*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_DST_PORT, 639*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_VNI, 640*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_IFINDEX, 641*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_EATTR_SRC_VNI, 642*4dc78e53SAndroid Build Coastguard Worker __MDBA_MDB_EATTR_MAX 643*4dc78e53SAndroid Build Coastguard Worker }; 644*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1) 645*4dc78e53SAndroid Build Coastguard Worker 646*4dc78e53SAndroid Build Coastguard Worker /* per mdb entry source */ 647*4dc78e53SAndroid Build Coastguard Worker enum { 648*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_SRCLIST_UNSPEC, 649*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_SRCLIST_ENTRY, 650*4dc78e53SAndroid Build Coastguard Worker __MDBA_MDB_SRCLIST_MAX 651*4dc78e53SAndroid Build Coastguard Worker }; 652*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MDB_SRCLIST_MAX (__MDBA_MDB_SRCLIST_MAX - 1) 653*4dc78e53SAndroid Build Coastguard Worker 654*4dc78e53SAndroid Build Coastguard Worker /* per mdb entry per source attributes 655*4dc78e53SAndroid Build Coastguard Worker * these are embedded in MDBA_MDB_SRCLIST_ENTRY 656*4dc78e53SAndroid Build Coastguard Worker */ 657*4dc78e53SAndroid Build Coastguard Worker enum { 658*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_SRCATTR_UNSPEC, 659*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_SRCATTR_ADDRESS, 660*4dc78e53SAndroid Build Coastguard Worker MDBA_MDB_SRCATTR_TIMER, 661*4dc78e53SAndroid Build Coastguard Worker __MDBA_MDB_SRCATTR_MAX 662*4dc78e53SAndroid Build Coastguard Worker }; 663*4dc78e53SAndroid Build Coastguard Worker #define MDBA_MDB_SRCATTR_MAX (__MDBA_MDB_SRCATTR_MAX - 1) 664*4dc78e53SAndroid Build Coastguard Worker 665*4dc78e53SAndroid Build Coastguard Worker /* multicast router types */ 666*4dc78e53SAndroid Build Coastguard Worker enum { 667*4dc78e53SAndroid Build Coastguard Worker MDB_RTR_TYPE_DISABLED, 668*4dc78e53SAndroid Build Coastguard Worker MDB_RTR_TYPE_TEMP_QUERY, 669*4dc78e53SAndroid Build Coastguard Worker MDB_RTR_TYPE_PERM, 670*4dc78e53SAndroid Build Coastguard Worker MDB_RTR_TYPE_TEMP 671*4dc78e53SAndroid Build Coastguard Worker }; 672*4dc78e53SAndroid Build Coastguard Worker 673*4dc78e53SAndroid Build Coastguard Worker enum { 674*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_UNSPEC, 675*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PORT, 676*4dc78e53SAndroid Build Coastguard Worker __MDBA_ROUTER_MAX, 677*4dc78e53SAndroid Build Coastguard Worker }; 678*4dc78e53SAndroid Build Coastguard Worker #define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1) 679*4dc78e53SAndroid Build Coastguard Worker 680*4dc78e53SAndroid Build Coastguard Worker /* router port attributes */ 681*4dc78e53SAndroid Build Coastguard Worker enum { 682*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_UNSPEC, 683*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_TIMER, 684*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_TYPE, 685*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_INET_TIMER, 686*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_INET6_TIMER, 687*4dc78e53SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_VID, 688*4dc78e53SAndroid Build Coastguard Worker __MDBA_ROUTER_PATTR_MAX 689*4dc78e53SAndroid Build Coastguard Worker }; 690*4dc78e53SAndroid Build Coastguard Worker #define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1) 691*4dc78e53SAndroid Build Coastguard Worker 692*4dc78e53SAndroid Build Coastguard Worker struct br_port_msg { 693*4dc78e53SAndroid Build Coastguard Worker __u8 family; 694*4dc78e53SAndroid Build Coastguard Worker __u32 ifindex; 695*4dc78e53SAndroid Build Coastguard Worker }; 696*4dc78e53SAndroid Build Coastguard Worker 697*4dc78e53SAndroid Build Coastguard Worker struct br_mdb_entry { 698*4dc78e53SAndroid Build Coastguard Worker __u32 ifindex; 699*4dc78e53SAndroid Build Coastguard Worker #define MDB_TEMPORARY 0 700*4dc78e53SAndroid Build Coastguard Worker #define MDB_PERMANENT 1 701*4dc78e53SAndroid Build Coastguard Worker __u8 state; 702*4dc78e53SAndroid Build Coastguard Worker #define MDB_FLAGS_OFFLOAD (1 << 0) 703*4dc78e53SAndroid Build Coastguard Worker #define MDB_FLAGS_FAST_LEAVE (1 << 1) 704*4dc78e53SAndroid Build Coastguard Worker #define MDB_FLAGS_STAR_EXCL (1 << 2) 705*4dc78e53SAndroid Build Coastguard Worker #define MDB_FLAGS_BLOCKED (1 << 3) 706*4dc78e53SAndroid Build Coastguard Worker __u8 flags; 707*4dc78e53SAndroid Build Coastguard Worker __u16 vid; 708*4dc78e53SAndroid Build Coastguard Worker struct { 709*4dc78e53SAndroid Build Coastguard Worker union { 710*4dc78e53SAndroid Build Coastguard Worker __be32 ip4; 711*4dc78e53SAndroid Build Coastguard Worker struct in6_addr ip6; 712*4dc78e53SAndroid Build Coastguard Worker unsigned char mac_addr[ETH_ALEN]; 713*4dc78e53SAndroid Build Coastguard Worker } u; 714*4dc78e53SAndroid Build Coastguard Worker __be16 proto; 715*4dc78e53SAndroid Build Coastguard Worker } addr; 716*4dc78e53SAndroid Build Coastguard Worker }; 717*4dc78e53SAndroid Build Coastguard Worker 718*4dc78e53SAndroid Build Coastguard Worker enum { 719*4dc78e53SAndroid Build Coastguard Worker MDBA_SET_ENTRY_UNSPEC, 720*4dc78e53SAndroid Build Coastguard Worker MDBA_SET_ENTRY, 721*4dc78e53SAndroid Build Coastguard Worker MDBA_SET_ENTRY_ATTRS, 722*4dc78e53SAndroid Build Coastguard Worker __MDBA_SET_ENTRY_MAX, 723*4dc78e53SAndroid Build Coastguard Worker }; 724*4dc78e53SAndroid Build Coastguard Worker #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1) 725*4dc78e53SAndroid Build Coastguard Worker 726*4dc78e53SAndroid Build Coastguard Worker /* [MDBA_SET_ENTRY_ATTRS] = { 727*4dc78e53SAndroid Build Coastguard Worker * [MDBE_ATTR_xxx] 728*4dc78e53SAndroid Build Coastguard Worker * ... 729*4dc78e53SAndroid Build Coastguard Worker * } 730*4dc78e53SAndroid Build Coastguard Worker */ 731*4dc78e53SAndroid Build Coastguard Worker enum { 732*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_UNSPEC, 733*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_SOURCE, 734*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_SRC_LIST, 735*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_GROUP_MODE, 736*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_RTPROT, 737*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_DST, 738*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_DST_PORT, 739*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_VNI, 740*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_IFINDEX, 741*4dc78e53SAndroid Build Coastguard Worker MDBE_ATTR_SRC_VNI, 742*4dc78e53SAndroid Build Coastguard Worker __MDBE_ATTR_MAX, 743*4dc78e53SAndroid Build Coastguard Worker }; 744*4dc78e53SAndroid Build Coastguard Worker #define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1) 745*4dc78e53SAndroid Build Coastguard Worker 746*4dc78e53SAndroid Build Coastguard Worker /* per mdb entry source */ 747*4dc78e53SAndroid Build Coastguard Worker enum { 748*4dc78e53SAndroid Build Coastguard Worker MDBE_SRC_LIST_UNSPEC, 749*4dc78e53SAndroid Build Coastguard Worker MDBE_SRC_LIST_ENTRY, 750*4dc78e53SAndroid Build Coastguard Worker __MDBE_SRC_LIST_MAX, 751*4dc78e53SAndroid Build Coastguard Worker }; 752*4dc78e53SAndroid Build Coastguard Worker #define MDBE_SRC_LIST_MAX (__MDBE_SRC_LIST_MAX - 1) 753*4dc78e53SAndroid Build Coastguard Worker 754*4dc78e53SAndroid Build Coastguard Worker /* per mdb entry per source attributes 755*4dc78e53SAndroid Build Coastguard Worker * these are embedded in MDBE_SRC_LIST_ENTRY 756*4dc78e53SAndroid Build Coastguard Worker */ 757*4dc78e53SAndroid Build Coastguard Worker enum { 758*4dc78e53SAndroid Build Coastguard Worker MDBE_SRCATTR_UNSPEC, 759*4dc78e53SAndroid Build Coastguard Worker MDBE_SRCATTR_ADDRESS, 760*4dc78e53SAndroid Build Coastguard Worker __MDBE_SRCATTR_MAX, 761*4dc78e53SAndroid Build Coastguard Worker }; 762*4dc78e53SAndroid Build Coastguard Worker #define MDBE_SRCATTR_MAX (__MDBE_SRCATTR_MAX - 1) 763*4dc78e53SAndroid Build Coastguard Worker 764*4dc78e53SAndroid Build Coastguard Worker /* Embedded inside LINK_XSTATS_TYPE_BRIDGE */ 765*4dc78e53SAndroid Build Coastguard Worker enum { 766*4dc78e53SAndroid Build Coastguard Worker BRIDGE_XSTATS_UNSPEC, 767*4dc78e53SAndroid Build Coastguard Worker BRIDGE_XSTATS_VLAN, 768*4dc78e53SAndroid Build Coastguard Worker BRIDGE_XSTATS_MCAST, 769*4dc78e53SAndroid Build Coastguard Worker BRIDGE_XSTATS_PAD, 770*4dc78e53SAndroid Build Coastguard Worker BRIDGE_XSTATS_STP, 771*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_XSTATS_MAX 772*4dc78e53SAndroid Build Coastguard Worker }; 773*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1) 774*4dc78e53SAndroid Build Coastguard Worker 775*4dc78e53SAndroid Build Coastguard Worker enum { 776*4dc78e53SAndroid Build Coastguard Worker BR_MCAST_DIR_RX, 777*4dc78e53SAndroid Build Coastguard Worker BR_MCAST_DIR_TX, 778*4dc78e53SAndroid Build Coastguard Worker BR_MCAST_DIR_SIZE 779*4dc78e53SAndroid Build Coastguard Worker }; 780*4dc78e53SAndroid Build Coastguard Worker 781*4dc78e53SAndroid Build Coastguard Worker /* IGMP/MLD statistics */ 782*4dc78e53SAndroid Build Coastguard Worker struct br_mcast_stats { 783*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v1queries[BR_MCAST_DIR_SIZE]; 784*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v2queries[BR_MCAST_DIR_SIZE]; 785*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v3queries[BR_MCAST_DIR_SIZE]; 786*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_leaves[BR_MCAST_DIR_SIZE]; 787*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v1reports[BR_MCAST_DIR_SIZE]; 788*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v2reports[BR_MCAST_DIR_SIZE]; 789*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_v3reports[BR_MCAST_DIR_SIZE]; 790*4dc78e53SAndroid Build Coastguard Worker __u64 igmp_parse_errors; 791*4dc78e53SAndroid Build Coastguard Worker 792*4dc78e53SAndroid Build Coastguard Worker __u64 mld_v1queries[BR_MCAST_DIR_SIZE]; 793*4dc78e53SAndroid Build Coastguard Worker __u64 mld_v2queries[BR_MCAST_DIR_SIZE]; 794*4dc78e53SAndroid Build Coastguard Worker __u64 mld_leaves[BR_MCAST_DIR_SIZE]; 795*4dc78e53SAndroid Build Coastguard Worker __u64 mld_v1reports[BR_MCAST_DIR_SIZE]; 796*4dc78e53SAndroid Build Coastguard Worker __u64 mld_v2reports[BR_MCAST_DIR_SIZE]; 797*4dc78e53SAndroid Build Coastguard Worker __u64 mld_parse_errors; 798*4dc78e53SAndroid Build Coastguard Worker 799*4dc78e53SAndroid Build Coastguard Worker __u64 mcast_bytes[BR_MCAST_DIR_SIZE]; 800*4dc78e53SAndroid Build Coastguard Worker __u64 mcast_packets[BR_MCAST_DIR_SIZE]; 801*4dc78e53SAndroid Build Coastguard Worker }; 802*4dc78e53SAndroid Build Coastguard Worker 803*4dc78e53SAndroid Build Coastguard Worker /* bridge boolean options 804*4dc78e53SAndroid Build Coastguard Worker * BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets 805*4dc78e53SAndroid Build Coastguard Worker * BR_BOOLOPT_MCAST_VLAN_SNOOPING - control vlan multicast snooping 806*4dc78e53SAndroid Build Coastguard Worker * 807*4dc78e53SAndroid Build Coastguard Worker * IMPORTANT: if adding a new option do not forget to handle 808*4dc78e53SAndroid Build Coastguard Worker * it in br_boolopt_toggle/get and bridge sysfs 809*4dc78e53SAndroid Build Coastguard Worker */ 810*4dc78e53SAndroid Build Coastguard Worker enum br_boolopt_id { 811*4dc78e53SAndroid Build Coastguard Worker BR_BOOLOPT_NO_LL_LEARN, 812*4dc78e53SAndroid Build Coastguard Worker BR_BOOLOPT_MCAST_VLAN_SNOOPING, 813*4dc78e53SAndroid Build Coastguard Worker BR_BOOLOPT_MST_ENABLE, 814*4dc78e53SAndroid Build Coastguard Worker BR_BOOLOPT_MAX 815*4dc78e53SAndroid Build Coastguard Worker }; 816*4dc78e53SAndroid Build Coastguard Worker 817*4dc78e53SAndroid Build Coastguard Worker /* struct br_boolopt_multi - change multiple bridge boolean options 818*4dc78e53SAndroid Build Coastguard Worker * 819*4dc78e53SAndroid Build Coastguard Worker * @optval: new option values (bit per option) 820*4dc78e53SAndroid Build Coastguard Worker * @optmask: options to change (bit per option) 821*4dc78e53SAndroid Build Coastguard Worker */ 822*4dc78e53SAndroid Build Coastguard Worker struct br_boolopt_multi { 823*4dc78e53SAndroid Build Coastguard Worker __u32 optval; 824*4dc78e53SAndroid Build Coastguard Worker __u32 optmask; 825*4dc78e53SAndroid Build Coastguard Worker }; 826*4dc78e53SAndroid Build Coastguard Worker 827*4dc78e53SAndroid Build Coastguard Worker enum { 828*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_UNSPEC, 829*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IP_ADDRESS, 830*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IP_PORT, 831*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IP_OTHER_TIMER, 832*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_PAD, 833*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IPV6_ADDRESS, 834*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IPV6_PORT, 835*4dc78e53SAndroid Build Coastguard Worker BRIDGE_QUERIER_IPV6_OTHER_TIMER, 836*4dc78e53SAndroid Build Coastguard Worker __BRIDGE_QUERIER_MAX 837*4dc78e53SAndroid Build Coastguard Worker }; 838*4dc78e53SAndroid Build Coastguard Worker #define BRIDGE_QUERIER_MAX (__BRIDGE_QUERIER_MAX - 1) 839*4dc78e53SAndroid Build Coastguard Worker #endif /* _LINUX_IF_BRIDGE_H */ 840