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