1*de1e4e89SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */ 2*de1e4e89SAndroid Build Coastguard Worker /* 3*de1e4e89SAndroid Build Coastguard Worker * Linux ethernet bridge 4*de1e4e89SAndroid Build Coastguard Worker * 5*de1e4e89SAndroid Build Coastguard Worker * Authors: 6*de1e4e89SAndroid Build Coastguard Worker * Lennert Buytenhek <[email protected]> 7*de1e4e89SAndroid Build Coastguard Worker * 8*de1e4e89SAndroid Build Coastguard Worker * This program is free software; you can redistribute it and/or 9*de1e4e89SAndroid Build Coastguard Worker * modify it under the terms of the GNU General Public License 10*de1e4e89SAndroid Build Coastguard Worker * as published by the Free Software Foundation; either version 11*de1e4e89SAndroid Build Coastguard Worker * 2 of the License, or (at your option) any later version. 12*de1e4e89SAndroid Build Coastguard Worker */ 13*de1e4e89SAndroid Build Coastguard Worker 14*de1e4e89SAndroid Build Coastguard Worker #ifndef _LINUX_IF_BRIDGE_H 15*de1e4e89SAndroid Build Coastguard Worker #define _LINUX_IF_BRIDGE_H 16*de1e4e89SAndroid Build Coastguard Worker 17*de1e4e89SAndroid Build Coastguard Worker #include <linux/types.h> 18*de1e4e89SAndroid Build Coastguard Worker #include <linux/if_ether.h> 19*de1e4e89SAndroid Build Coastguard Worker #include <linux/in6.h> 20*de1e4e89SAndroid Build Coastguard Worker 21*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_ATTR "bridge" 22*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_FDB "brforward" 23*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_SUBDIR "brif" 24*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_ATTR "brport" 25*de1e4e89SAndroid Build Coastguard Worker #define SYSFS_BRIDGE_PORT_LINK "bridge" 26*de1e4e89SAndroid Build Coastguard Worker 27*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_VERSION 1 28*de1e4e89SAndroid Build Coastguard Worker 29*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_VERSION 0 30*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGES 1 31*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_ADD_BRIDGE 2 32*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_DEL_BRIDGE 3 33*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_ADD_IF 4 34*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_DEL_IF 5 35*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_BRIDGE_INFO 6 36*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_LIST 7 37*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 38*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_HELLO_TIME 9 39*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_MAX_AGE 10 40*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_AGEING_TIME 11 41*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_GC_INTERVAL 12 42*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_PORT_INFO 13 43*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_STP_STATE 14 44*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_BRIDGE_PRIORITY 15 45*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_PORT_PRIORITY 16 46*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_SET_PATH_COST 17 47*de1e4e89SAndroid Build Coastguard Worker #define BRCTL_GET_FDB_ENTRIES 18 48*de1e4e89SAndroid Build Coastguard Worker 49*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_DISABLED 0 50*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_LISTENING 1 51*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_LEARNING 2 52*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_FORWARDING 3 53*de1e4e89SAndroid Build Coastguard Worker #define BR_STATE_BLOCKING 4 54*de1e4e89SAndroid Build Coastguard Worker 55*de1e4e89SAndroid Build Coastguard Worker struct __bridge_info { 56*de1e4e89SAndroid Build Coastguard Worker __u64 designated_root; 57*de1e4e89SAndroid Build Coastguard Worker __u64 bridge_id; 58*de1e4e89SAndroid Build Coastguard Worker __u32 root_path_cost; 59*de1e4e89SAndroid Build Coastguard Worker __u32 max_age; 60*de1e4e89SAndroid Build Coastguard Worker __u32 hello_time; 61*de1e4e89SAndroid Build Coastguard Worker __u32 forward_delay; 62*de1e4e89SAndroid Build Coastguard Worker __u32 bridge_max_age; 63*de1e4e89SAndroid Build Coastguard Worker __u32 bridge_hello_time; 64*de1e4e89SAndroid Build Coastguard Worker __u32 bridge_forward_delay; 65*de1e4e89SAndroid Build Coastguard Worker __u8 topology_change; 66*de1e4e89SAndroid Build Coastguard Worker __u8 topology_change_detected; 67*de1e4e89SAndroid Build Coastguard Worker __u8 root_port; 68*de1e4e89SAndroid Build Coastguard Worker __u8 stp_enabled; 69*de1e4e89SAndroid Build Coastguard Worker __u32 ageing_time; 70*de1e4e89SAndroid Build Coastguard Worker __u32 gc_interval; 71*de1e4e89SAndroid Build Coastguard Worker __u32 hello_timer_value; 72*de1e4e89SAndroid Build Coastguard Worker __u32 tcn_timer_value; 73*de1e4e89SAndroid Build Coastguard Worker __u32 topology_change_timer_value; 74*de1e4e89SAndroid Build Coastguard Worker __u32 gc_timer_value; 75*de1e4e89SAndroid Build Coastguard Worker }; 76*de1e4e89SAndroid Build Coastguard Worker 77*de1e4e89SAndroid Build Coastguard Worker struct __port_info { 78*de1e4e89SAndroid Build Coastguard Worker __u64 designated_root; 79*de1e4e89SAndroid Build Coastguard Worker __u64 designated_bridge; 80*de1e4e89SAndroid Build Coastguard Worker __u16 port_id; 81*de1e4e89SAndroid Build Coastguard Worker __u16 designated_port; 82*de1e4e89SAndroid Build Coastguard Worker __u32 path_cost; 83*de1e4e89SAndroid Build Coastguard Worker __u32 designated_cost; 84*de1e4e89SAndroid Build Coastguard Worker __u8 state; 85*de1e4e89SAndroid Build Coastguard Worker __u8 top_change_ack; 86*de1e4e89SAndroid Build Coastguard Worker __u8 config_pending; 87*de1e4e89SAndroid Build Coastguard Worker __u8 unused0; 88*de1e4e89SAndroid Build Coastguard Worker __u32 message_age_timer_value; 89*de1e4e89SAndroid Build Coastguard Worker __u32 forward_delay_timer_value; 90*de1e4e89SAndroid Build Coastguard Worker __u32 hold_timer_value; 91*de1e4e89SAndroid Build Coastguard Worker }; 92*de1e4e89SAndroid Build Coastguard Worker 93*de1e4e89SAndroid Build Coastguard Worker struct __fdb_entry { 94*de1e4e89SAndroid Build Coastguard Worker __u8 mac_addr[ETH_ALEN]; 95*de1e4e89SAndroid Build Coastguard Worker __u8 port_no; 96*de1e4e89SAndroid Build Coastguard Worker __u8 is_local; 97*de1e4e89SAndroid Build Coastguard Worker __u32 ageing_timer_value; 98*de1e4e89SAndroid Build Coastguard Worker __u8 port_hi; 99*de1e4e89SAndroid Build Coastguard Worker __u8 pad0; 100*de1e4e89SAndroid Build Coastguard Worker __u16 unused; 101*de1e4e89SAndroid Build Coastguard Worker }; 102*de1e4e89SAndroid Build Coastguard Worker 103*de1e4e89SAndroid Build Coastguard Worker /* Bridge Flags */ 104*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_MASTER 1 /* Bridge command to/from master */ 105*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_FLAGS_SELF 2 /* Bridge command to/from lowerdev */ 106*de1e4e89SAndroid Build Coastguard Worker 107*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEB 0 /* Default loopback mode */ 108*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_VEPA 1 /* 802.1Qbg defined VEPA mode */ 109*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_MODE_UNDEF 0xFFFF /* mode undefined */ 110*de1e4e89SAndroid Build Coastguard Worker 111*de1e4e89SAndroid Build Coastguard Worker /* Bridge management nested attributes 112*de1e4e89SAndroid Build Coastguard Worker * [IFLA_AF_SPEC] = { 113*de1e4e89SAndroid Build Coastguard Worker * [IFLA_BRIDGE_FLAGS] 114*de1e4e89SAndroid Build Coastguard Worker * [IFLA_BRIDGE_MODE] 115*de1e4e89SAndroid Build Coastguard Worker * [IFLA_BRIDGE_VLAN_INFO] 116*de1e4e89SAndroid Build Coastguard Worker * } 117*de1e4e89SAndroid Build Coastguard Worker */ 118*de1e4e89SAndroid Build Coastguard Worker enum { 119*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_FLAGS, 120*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_MODE, 121*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_INFO, 122*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_INFO, 123*de1e4e89SAndroid Build Coastguard Worker __IFLA_BRIDGE_MAX, 124*de1e4e89SAndroid Build Coastguard Worker }; 125*de1e4e89SAndroid Build Coastguard Worker #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1) 126*de1e4e89SAndroid Build Coastguard Worker 127*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_MASTER (1<<0) /* Operate on Bridge device as well */ 128*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_PVID (1<<1) /* VLAN is PVID, ingress untagged */ 129*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_UNTAGGED (1<<2) /* VLAN egresses untagged */ 130*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_BEGIN (1<<3) /* VLAN is start of vlan range */ 131*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_RANGE_END (1<<4) /* VLAN is end of vlan range */ 132*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_VLAN_INFO_BRENTRY (1<<5) /* Global bridge VLAN entry */ 133*de1e4e89SAndroid Build Coastguard Worker 134*de1e4e89SAndroid Build Coastguard Worker struct bridge_vlan_info { 135*de1e4e89SAndroid Build Coastguard Worker __u16 flags; 136*de1e4e89SAndroid Build Coastguard Worker __u16 vid; 137*de1e4e89SAndroid Build Coastguard Worker }; 138*de1e4e89SAndroid Build Coastguard Worker 139*de1e4e89SAndroid Build Coastguard Worker enum { 140*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC, 141*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_ID, 142*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_VID, 143*de1e4e89SAndroid Build Coastguard Worker IFLA_BRIDGE_VLAN_TUNNEL_FLAGS, 144*de1e4e89SAndroid Build Coastguard Worker __IFLA_BRIDGE_VLAN_TUNNEL_MAX, 145*de1e4e89SAndroid Build Coastguard Worker }; 146*de1e4e89SAndroid Build Coastguard Worker 147*de1e4e89SAndroid Build Coastguard Worker #define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1) 148*de1e4e89SAndroid Build Coastguard Worker 149*de1e4e89SAndroid Build Coastguard Worker struct bridge_vlan_xstats { 150*de1e4e89SAndroid Build Coastguard Worker __u64 rx_bytes; 151*de1e4e89SAndroid Build Coastguard Worker __u64 rx_packets; 152*de1e4e89SAndroid Build Coastguard Worker __u64 tx_bytes; 153*de1e4e89SAndroid Build Coastguard Worker __u64 tx_packets; 154*de1e4e89SAndroid Build Coastguard Worker __u16 vid; 155*de1e4e89SAndroid Build Coastguard Worker __u16 flags; 156*de1e4e89SAndroid Build Coastguard Worker __u32 pad2; 157*de1e4e89SAndroid Build Coastguard Worker }; 158*de1e4e89SAndroid Build Coastguard Worker 159*de1e4e89SAndroid Build Coastguard Worker /* Bridge multicast database attributes 160*de1e4e89SAndroid Build Coastguard Worker * [MDBA_MDB] = { 161*de1e4e89SAndroid Build Coastguard Worker * [MDBA_MDB_ENTRY] = { 162*de1e4e89SAndroid Build Coastguard Worker * [MDBA_MDB_ENTRY_INFO] { 163*de1e4e89SAndroid Build Coastguard Worker * struct br_mdb_entry 164*de1e4e89SAndroid Build Coastguard Worker * [MDBA_MDB_EATTR attributes] 165*de1e4e89SAndroid Build Coastguard Worker * } 166*de1e4e89SAndroid Build Coastguard Worker * } 167*de1e4e89SAndroid Build Coastguard Worker * } 168*de1e4e89SAndroid Build Coastguard Worker * [MDBA_ROUTER] = { 169*de1e4e89SAndroid Build Coastguard Worker * [MDBA_ROUTER_PORT] = { 170*de1e4e89SAndroid Build Coastguard Worker * u32 ifindex 171*de1e4e89SAndroid Build Coastguard Worker * [MDBA_ROUTER_PATTR attributes] 172*de1e4e89SAndroid Build Coastguard Worker * } 173*de1e4e89SAndroid Build Coastguard Worker * } 174*de1e4e89SAndroid Build Coastguard Worker */ 175*de1e4e89SAndroid Build Coastguard Worker enum { 176*de1e4e89SAndroid Build Coastguard Worker MDBA_UNSPEC, 177*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB, 178*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER, 179*de1e4e89SAndroid Build Coastguard Worker __MDBA_MAX, 180*de1e4e89SAndroid Build Coastguard Worker }; 181*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MAX (__MDBA_MAX - 1) 182*de1e4e89SAndroid Build Coastguard Worker 183*de1e4e89SAndroid Build Coastguard Worker enum { 184*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_UNSPEC, 185*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_ENTRY, 186*de1e4e89SAndroid Build Coastguard Worker __MDBA_MDB_MAX, 187*de1e4e89SAndroid Build Coastguard Worker }; 188*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_MAX (__MDBA_MDB_MAX - 1) 189*de1e4e89SAndroid Build Coastguard Worker 190*de1e4e89SAndroid Build Coastguard Worker enum { 191*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_ENTRY_UNSPEC, 192*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_ENTRY_INFO, 193*de1e4e89SAndroid Build Coastguard Worker __MDBA_MDB_ENTRY_MAX, 194*de1e4e89SAndroid Build Coastguard Worker }; 195*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_ENTRY_MAX (__MDBA_MDB_ENTRY_MAX - 1) 196*de1e4e89SAndroid Build Coastguard Worker 197*de1e4e89SAndroid Build Coastguard Worker /* per mdb entry additional attributes */ 198*de1e4e89SAndroid Build Coastguard Worker enum { 199*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_EATTR_UNSPEC, 200*de1e4e89SAndroid Build Coastguard Worker MDBA_MDB_EATTR_TIMER, 201*de1e4e89SAndroid Build Coastguard Worker __MDBA_MDB_EATTR_MAX 202*de1e4e89SAndroid Build Coastguard Worker }; 203*de1e4e89SAndroid Build Coastguard Worker #define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1) 204*de1e4e89SAndroid Build Coastguard Worker 205*de1e4e89SAndroid Build Coastguard Worker /* multicast router types */ 206*de1e4e89SAndroid Build Coastguard Worker enum { 207*de1e4e89SAndroid Build Coastguard Worker MDB_RTR_TYPE_DISABLED, 208*de1e4e89SAndroid Build Coastguard Worker MDB_RTR_TYPE_TEMP_QUERY, 209*de1e4e89SAndroid Build Coastguard Worker MDB_RTR_TYPE_PERM, 210*de1e4e89SAndroid Build Coastguard Worker MDB_RTR_TYPE_TEMP 211*de1e4e89SAndroid Build Coastguard Worker }; 212*de1e4e89SAndroid Build Coastguard Worker 213*de1e4e89SAndroid Build Coastguard Worker enum { 214*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER_UNSPEC, 215*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER_PORT, 216*de1e4e89SAndroid Build Coastguard Worker __MDBA_ROUTER_MAX, 217*de1e4e89SAndroid Build Coastguard Worker }; 218*de1e4e89SAndroid Build Coastguard Worker #define MDBA_ROUTER_MAX (__MDBA_ROUTER_MAX - 1) 219*de1e4e89SAndroid Build Coastguard Worker 220*de1e4e89SAndroid Build Coastguard Worker /* router port attributes */ 221*de1e4e89SAndroid Build Coastguard Worker enum { 222*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_UNSPEC, 223*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_TIMER, 224*de1e4e89SAndroid Build Coastguard Worker MDBA_ROUTER_PATTR_TYPE, 225*de1e4e89SAndroid Build Coastguard Worker __MDBA_ROUTER_PATTR_MAX 226*de1e4e89SAndroid Build Coastguard Worker }; 227*de1e4e89SAndroid Build Coastguard Worker #define MDBA_ROUTER_PATTR_MAX (__MDBA_ROUTER_PATTR_MAX - 1) 228*de1e4e89SAndroid Build Coastguard Worker 229*de1e4e89SAndroid Build Coastguard Worker struct br_port_msg { 230*de1e4e89SAndroid Build Coastguard Worker __u8 family; 231*de1e4e89SAndroid Build Coastguard Worker __u32 ifindex; 232*de1e4e89SAndroid Build Coastguard Worker }; 233*de1e4e89SAndroid Build Coastguard Worker 234*de1e4e89SAndroid Build Coastguard Worker struct br_mdb_entry { 235*de1e4e89SAndroid Build Coastguard Worker __u32 ifindex; 236*de1e4e89SAndroid Build Coastguard Worker #define MDB_TEMPORARY 0 237*de1e4e89SAndroid Build Coastguard Worker #define MDB_PERMANENT 1 238*de1e4e89SAndroid Build Coastguard Worker __u8 state; 239*de1e4e89SAndroid Build Coastguard Worker #define MDB_FLAGS_OFFLOAD (1 << 0) 240*de1e4e89SAndroid Build Coastguard Worker __u8 flags; 241*de1e4e89SAndroid Build Coastguard Worker __u16 vid; 242*de1e4e89SAndroid Build Coastguard Worker struct { 243*de1e4e89SAndroid Build Coastguard Worker union { 244*de1e4e89SAndroid Build Coastguard Worker __be32 ip4; 245*de1e4e89SAndroid Build Coastguard Worker struct in6_addr ip6; 246*de1e4e89SAndroid Build Coastguard Worker } u; 247*de1e4e89SAndroid Build Coastguard Worker __be16 proto; 248*de1e4e89SAndroid Build Coastguard Worker } addr; 249*de1e4e89SAndroid Build Coastguard Worker }; 250*de1e4e89SAndroid Build Coastguard Worker 251*de1e4e89SAndroid Build Coastguard Worker enum { 252*de1e4e89SAndroid Build Coastguard Worker MDBA_SET_ENTRY_UNSPEC, 253*de1e4e89SAndroid Build Coastguard Worker MDBA_SET_ENTRY, 254*de1e4e89SAndroid Build Coastguard Worker __MDBA_SET_ENTRY_MAX, 255*de1e4e89SAndroid Build Coastguard Worker }; 256*de1e4e89SAndroid Build Coastguard Worker #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1) 257*de1e4e89SAndroid Build Coastguard Worker 258*de1e4e89SAndroid Build Coastguard Worker /* Embedded inside LINK_XSTATS_TYPE_BRIDGE */ 259*de1e4e89SAndroid Build Coastguard Worker enum { 260*de1e4e89SAndroid Build Coastguard Worker BRIDGE_XSTATS_UNSPEC, 261*de1e4e89SAndroid Build Coastguard Worker BRIDGE_XSTATS_VLAN, 262*de1e4e89SAndroid Build Coastguard Worker BRIDGE_XSTATS_MCAST, 263*de1e4e89SAndroid Build Coastguard Worker BRIDGE_XSTATS_PAD, 264*de1e4e89SAndroid Build Coastguard Worker __BRIDGE_XSTATS_MAX 265*de1e4e89SAndroid Build Coastguard Worker }; 266*de1e4e89SAndroid Build Coastguard Worker #define BRIDGE_XSTATS_MAX (__BRIDGE_XSTATS_MAX - 1) 267*de1e4e89SAndroid Build Coastguard Worker 268*de1e4e89SAndroid Build Coastguard Worker enum { 269*de1e4e89SAndroid Build Coastguard Worker BR_MCAST_DIR_RX, 270*de1e4e89SAndroid Build Coastguard Worker BR_MCAST_DIR_TX, 271*de1e4e89SAndroid Build Coastguard Worker BR_MCAST_DIR_SIZE 272*de1e4e89SAndroid Build Coastguard Worker }; 273*de1e4e89SAndroid Build Coastguard Worker 274*de1e4e89SAndroid Build Coastguard Worker /* IGMP/MLD statistics */ 275*de1e4e89SAndroid Build Coastguard Worker struct br_mcast_stats { 276*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v1queries[BR_MCAST_DIR_SIZE]; 277*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v2queries[BR_MCAST_DIR_SIZE]; 278*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v3queries[BR_MCAST_DIR_SIZE]; 279*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_leaves[BR_MCAST_DIR_SIZE]; 280*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v1reports[BR_MCAST_DIR_SIZE]; 281*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v2reports[BR_MCAST_DIR_SIZE]; 282*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_v3reports[BR_MCAST_DIR_SIZE]; 283*de1e4e89SAndroid Build Coastguard Worker __u64 igmp_parse_errors; 284*de1e4e89SAndroid Build Coastguard Worker 285*de1e4e89SAndroid Build Coastguard Worker __u64 mld_v1queries[BR_MCAST_DIR_SIZE]; 286*de1e4e89SAndroid Build Coastguard Worker __u64 mld_v2queries[BR_MCAST_DIR_SIZE]; 287*de1e4e89SAndroid Build Coastguard Worker __u64 mld_leaves[BR_MCAST_DIR_SIZE]; 288*de1e4e89SAndroid Build Coastguard Worker __u64 mld_v1reports[BR_MCAST_DIR_SIZE]; 289*de1e4e89SAndroid Build Coastguard Worker __u64 mld_v2reports[BR_MCAST_DIR_SIZE]; 290*de1e4e89SAndroid Build Coastguard Worker __u64 mld_parse_errors; 291*de1e4e89SAndroid Build Coastguard Worker 292*de1e4e89SAndroid Build Coastguard Worker __u64 mcast_bytes[BR_MCAST_DIR_SIZE]; 293*de1e4e89SAndroid Build Coastguard Worker __u64 mcast_packets[BR_MCAST_DIR_SIZE]; 294*de1e4e89SAndroid Build Coastguard Worker }; 295*de1e4e89SAndroid Build Coastguard Worker #endif /* _LINUX_IF_BRIDGE_H */ 296