sphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget%/translations/zh_CN/networking/bridgemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/zh_TW/networking/bridgemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/it_IT/networking/bridgemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/ja_JP/networking/bridgemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/ko_KR/networking/bridgemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget%/translations/sp_SP/networking/bridgemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhh?/var/lib/git/docbuild/linux/Documentation/networking/bridge.rsthKubhsection)}(hhh](htitle)}(hEthernet Bridgingh]hEthernet Bridging}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hXThe IEEE 802.1Q-2022 (Bridges and Bridged Networks) standard defines the operation of bridges in computer networks. A bridge, in the context of this standard, is a device that connects two or more network segments and operates at the data link layer (Layer 2) of the OSI (Open Systems Interconnection) model. The purpose of a bridge is to filter and forward frames between different segments based on the destination MAC (Media Access Control) address.h]hXThe IEEE 802.1Q-2022 (Bridges and Bridged Networks) standard defines the operation of bridges in computer networks. A bridge, in the context of this standard, is a device that connects two or more network segments and operates at the data link layer (Layer 2) of the OSI (Open Systems Interconnection) model. The purpose of a bridge is to filter and forward frames between different segments based on the destination MAC (Media Access Control) address.}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Bridge kAPIh]h Bridge kAPI}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh)}(hoHere are some core structures of bridge code. Note that the kAPI is *unstable*, and can be changed at any time.h](hDHere are some core structures of bridge code. Note that the kAPI is }(hjhhhNhNubhemphasis)}(h *unstable*h]hunstable}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh!, and can be changed at any time.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](singlenet_bridge_vlan (C struct)c.net_bridge_vlanhNtauh1j%hhhhhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhNubhdesc)}(hhh](hdesc_signature)}(hnet_bridge_vlanh]hdesc_signature_line)}(hstruct net_bridge_vlanh](hdesc_sig_keyword)}(hstructh]hstruct}(hjJhhhNhNubah}(h]h ]kah"]h$]h&]uh1jHhjDhhhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKubhdesc_sig_space)}(h h]h }(hj\hhhNhNubah}(h]h ]wah"]h$]h&]uh1jZhjDhhhjYhKubh desc_name)}(hnet_bridge_vlanh]h desc_sig_name)}(hj@h]hnet_bridge_vlan}(hjshhhNhNubah}(h]h ]nah"]h$]h&]uh1jqhjmubah}(h]h ](sig-namedescnameeh"]h$]h&]hhuh1jkhjDhhhjYhKubeh}(h]h ]h"]h$]h&]hh add_permalinkuh1jBsphinx_line_type declaratorhj>hhhjYhKubah}(h]j4ah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1j<hjYhKhj9hhubh desc_content)}(hhh]h)}(hper-vlan entryh]hper-vlan entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjhhubah}(h]h ]h"]h$]h&]uh1jhj9hhhjYhKubeh}(h]h ](cstructeh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1j7hhhhhj6hNubh container)}(hX**Definition**:: struct net_bridge_vlan { struct rhash_head vnode; struct rhash_head tnode; u16 vid; u16 flags; u16 priv_flags; u8 state; struct pcpu_sw_netstats __percpu *stats; union { struct net_bridge *br; struct net_bridge_port *port; }; union { refcount_t refcnt; struct net_bridge_vlan *brvlan; }; struct br_tunnel_info tinfo; union { struct net_bridge_mcast br_mcast_ctx; struct net_bridge_mcast_port port_mcast_ctx; }; u16 msti; struct list_head vlist; struct rcu_head rcu; }; **Members** ``vnode`` rhashtable member ``tnode`` rhashtable member ``vid`` VLAN id ``flags`` bridge vlan flags ``priv_flags`` private (in-kernel) bridge vlan flags ``state`` STP state (e.g. blocking, learning, forwarding) ``stats`` per-cpu VLAN statistics ``{unnamed_union}`` anonymous ``br`` if MASTER flag set, this points to a bridge struct ``port`` if MASTER flag unset, this points to a port struct ``{unnamed_union}`` anonymous ``refcnt`` if MASTER flag set, this is bumped for each port referencing it ``brvlan`` if MASTER flag unset, this points to the global per-VLAN context for this VLAN entry ``tinfo`` bridge tunnel info ``{unnamed_union}`` anonymous ``br_mcast_ctx`` if MASTER flag set, this is the global vlan multicast context ``port_mcast_ctx`` if MASTER flag unset, this is the per-port/vlan multicast context ``msti`` if MASTER flag set, this holds the VLANs MST instance ``vlist`` sorted list of VLAN entries ``rcu`` used for entry destructionh](h)}(h**Definition**::h](hstrong)}(h**Definition**h]h Definition}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh:}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubh literal_block)}(hXstruct net_bridge_vlan { struct rhash_head vnode; struct rhash_head tnode; u16 vid; u16 flags; u16 priv_flags; u8 state; struct pcpu_sw_netstats __percpu *stats; union { struct net_bridge *br; struct net_bridge_port *port; }; union { refcount_t refcnt; struct net_bridge_vlan *brvlan; }; struct br_tunnel_info tinfo; union { struct net_bridge_mcast br_mcast_ctx; struct net_bridge_mcast_port port_mcast_ctx; }; u16 msti; struct list_head vlist; struct rcu_head rcu; };h]hXstruct net_bridge_vlan { struct rhash_head vnode; struct rhash_head tnode; u16 vid; u16 flags; u16 priv_flags; u8 state; struct pcpu_sw_netstats __percpu *stats; union { struct net_bridge *br; struct net_bridge_port *port; }; union { refcount_t refcnt; struct net_bridge_vlan *brvlan; }; struct br_tunnel_info tinfo; union { struct net_bridge_mcast br_mcast_ctx; struct net_bridge_mcast_port port_mcast_ctx; }; u16 msti; struct list_head vlist; struct rcu_head rcu; };}hjsbah}(h]h ]h"]h$]h&]hhuh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubh)}(h **Members**h]j)}(hjh]hMembers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubhdefinition_list)}(hhh](hdefinition_list_item)}(h``vnode`` rhashtable member h](hterm)}(h ``vnode``h]hliteral)}(hj"h]hvnode}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubh definition)}(hhh]h)}(hrhashtable memberh]hrhashtable member}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj9hKhj<ubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj9hKhjubj)}(h``tnode`` rhashtable member h](j)}(h ``tnode``h]j%)}(hj_h]htnode}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj]ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjYubj;)}(hhh]h)}(hrhashtable memberh]hrhashtable member}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjthKhjuubah}(h]h ]h"]h$]h&]uh1j:hjYubeh}(h]h ]h"]h$]h&]uh1jhjthKhjubj)}(h``vid`` VLAN id h](j)}(h``vid``h]j%)}(hjh]hvid}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(hVLAN idh]hVLAN id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``flags`` bridge vlan flags h](j)}(h ``flags``h]j%)}(hjh]hflags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(hbridge vlan flagsh]hbridge vlan flags}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h5``priv_flags`` private (in-kernel) bridge vlan flags h](j)}(h``priv_flags``h]j%)}(hj h]h priv_flags}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(h%private (in-kernel) bridge vlan flagsh]h%private (in-kernel) bridge vlan flags}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhj ubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h:``state`` STP state (e.g. blocking, learning, forwarding) h](j)}(h ``state``h]j%)}(hjCh]hstate}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjAubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhj=ubj;)}(hhh]h)}(h/STP state (e.g. blocking, learning, forwarding)h]h/STP state (e.g. blocking, learning, forwarding)}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhKhjYubah}(h]h ]h"]h$]h&]uh1j:hj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhKhjubj)}(h"``stats`` per-cpu VLAN statistics h](j)}(h ``stats``h]j%)}(hj|h]hstats}(hj~hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjzubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjvubj;)}(hhh]h)}(hper-cpu VLAN statisticsh]hper-cpu VLAN statistics}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjvubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j%)}(hjh]h{unnamed_union}}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(h anonymoush]h anonymous}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h:``br`` if MASTER flag set, this points to a bridge struct h](j)}(h``br``h]j%)}(hjh]hbr}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(h2if MASTER flag set, this points to a bridge structh]h2if MASTER flag set, this points to a bridge struct}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h<``port`` if MASTER flag unset, this points to a port struct h](j)}(h``port``h]j%)}(hj'h]hport}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj%ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhj!ubj;)}(hhh]h)}(h2if MASTER flag unset, this points to a port structh]h2if MASTER flag unset, this points to a port struct}(hj@hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hKhj=ubah}(h]h ]h"]h$]h&]uh1j:hj!ubeh}(h]h ]h"]h$]h&]uh1jhj<hKhjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j%)}(hj`h]h{unnamed_union}}(hjbhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj^ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjZubj;)}(hhh]h)}(h anonymoush]h anonymous}(hjyhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjuhKhjvubah}(h]h ]h"]h$]h&]uh1j:hjZubeh}(h]h ]h"]h$]h&]uh1jhjuhKhjubj)}(hK``refcnt`` if MASTER flag set, this is bumped for each port referencing it h](j)}(h ``refcnt``h]j%)}(hjh]hrefcnt}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(h?if MASTER flag set, this is bumped for each port referencing ith]h?if MASTER flag set, this is bumped for each port referencing it}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h```brvlan`` if MASTER flag unset, this points to the global per-VLAN context for this VLAN entry h](j)}(h ``brvlan``h]j%)}(hjh]hbrvlan}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(hTif MASTER flag unset, this points to the global per-VLAN context for this VLAN entryh]hTif MASTER flag unset, this points to the global per-VLAN context for this VLAN entry}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h``tinfo`` bridge tunnel info h](j)}(h ``tinfo``h]j%)}(hj h]htinfo}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(hbridge tunnel infoh]hbridge tunnel info}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hKhj"ubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj!hKhjubj)}(h``{unnamed_union}`` anonymous h](j)}(h``{unnamed_union}``h]j%)}(hjEh]h{unnamed_union}}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjCubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhj?ubj;)}(hhh]h)}(h anonymoush]h anonymous}(hj^hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZhKhj[ubah}(h]h ]h"]h$]h&]uh1j:hj?ubeh}(h]h ]h"]h$]h&]uh1jhjZhKhjubj)}(hO``br_mcast_ctx`` if MASTER flag set, this is the global vlan multicast context h](j)}(h``br_mcast_ctx``h]j%)}(hj~h]h br_mcast_ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj|ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjxubj;)}(hhh]h)}(h=if MASTER flag set, this is the global vlan multicast contexth]h=if MASTER flag set, this is the global vlan multicast context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjxubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(hU``port_mcast_ctx`` if MASTER flag unset, this is the per-port/vlan multicast context h](j)}(h``port_mcast_ctx``h]j%)}(hjh]hport_mcast_ctx}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(hAif MASTER flag unset, this is the per-port/vlan multicast contexth]hAif MASTER flag unset, this is the per-port/vlan multicast context}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h?``msti`` if MASTER flag set, this holds the VLANs MST instance h](j)}(h``msti``h]j%)}(hjh]hmsti}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjubj;)}(hhh]h)}(h5if MASTER flag set, this holds the VLANs MST instanceh]h5if MASTER flag set, this holds the VLANs MST instance}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhKhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhKhjubj)}(h&``vlist`` sorted list of VLAN entries h](j)}(h ``vlist``h]j%)}(hj*h]hvlist}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj(ubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhj$ubj;)}(hhh]h)}(hsorted list of VLAN entriesh]hsorted list of VLAN entries}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhj?hKhj@ubah}(h]h ]h"]h$]h&]uh1j:hj$ubeh}(h]h ]h"]h$]h&]uh1jhj?hKhjubj)}(h"``rcu`` used for entry destructionh](j)}(h``rcu``h]j%)}(hjch]hrcu}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjaubah}(h]h ]h"]h$]h&]uh1jhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhj]ubj;)}(hhh]h)}(hused for entry destructionh]hused for entry destruction}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhjyubah}(h]h ]h"]h$]h&]uh1j:hj]ubeh}(h]h ]h"]h$]h&]uh1jhjxhKhjubeh}(h]h ]h"]h$]h&]uh1jhjubeh}(h]h ] kernelindentah"]h$]h&]uh1jhhhhhj6hNubh)}(h**Description**h]j)}(hjh]h Description}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhhhhubh)}(hThis structure is shared between the global per-VLAN entries contained in the bridge rhashtable and the local per-port per-VLAN entries contained in the port's rhashtable. The union entries should be interpreted depending on the entry flags that are set.h]hXThis structure is shared between the global per-VLAN entries contained in the bridge rhashtable and the local per-port per-VLAN entries contained in the port’s rhashtable. The union entries should be interpreted depending on the entry flags that are set.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhY/var/lib/git/docbuild/linux/Documentation/networking/bridge:23: ./net/bridge/br_private.hhKhhhhubeh}(h] bridge-kapiah ]h"] bridge kapiah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Bridge uAPIh]h Bridge uAPI}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh)}(hModern Linux bridge uAPI is accessed via Netlink interface. You can find below files where the bridge and bridge port netlink attributes are defined.h]hModern Linux bridge uAPI is accessed via Netlink interface. You can find below files where the bridge and bridge port netlink attributes are defined.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hhh](h)}(hBridge netlink attributesh]hBridge netlink attributes}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK!ubh)}(hPlease *note* that the timer values in the following section are expected in clock_t format, which is seconds multiplied by USER_HZ (generally defined as 100).h](hPlease }(hjhhhNhNubj )}(h*note*h]hnote}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh that the timer values in the following section are expected in clock_t format, which is seconds multiplied by USER_HZ (generally defined as 100).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjhhubj)}(hhh](j)}(hX2**IFLA_BR_FORWARD_DELAY** The bridge forwarding delay is the time spent in LISTENING state (before moving to LEARNING) and in LEARNING state (before moving to FORWARDING). Only relevant if STP is enabled. The valid values are between (2 * USER_HZ) and (30 * USER_HZ). The default value is (15 * USER_HZ). h](j)}(h**IFLA_BR_FORWARD_DELAY**h]j)}(hj-h]hIFLA_BR_FORWARD_DELAY}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj+ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj'ubj;)}(hhh](h)}(hThe bridge forwarding delay is the time spent in LISTENING state (before moving to LEARNING) and in LEARNING state (before moving to FORWARDING). Only relevant if STP is enabled.h]hThe bridge forwarding delay is the time spent in LISTENING state (before moving to LEARNING) and in LEARNING state (before moving to FORWARDING). Only relevant if STP is enabled.}(hjFhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjCubh)}(hcThe valid values are between (2 * USER_HZ) and (30 * USER_HZ). The default value is (15 * USER_HZ).h]hcThe valid values are between (2 * USER_HZ) and (30 * USER_HZ). The default value is (15 * USER_HZ).}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjCubeh}(h]h ]h"]h$]h&]uh1j:hj'ubeh}(h]h ]h"]h$]h&]uh1jhjBhMhj$ubj)}(hX**IFLA_BR_HELLO_TIME** The time between hello packets sent by the bridge, when it is a root bridge or a designated bridge. Only relevant if STP is enabled. The valid values are between (1 * USER_HZ) and (10 * USER_HZ). The default value is (2 * USER_HZ). h](j)}(h**IFLA_BR_HELLO_TIME**h]j)}(hjvh]hIFLA_BR_HELLO_TIME}(hjxhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjtubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjpubj;)}(hhh](h)}(hThe time between hello packets sent by the bridge, when it is a root bridge or a designated bridge. Only relevant if STP is enabled.h]hThe time between hello packets sent by the bridge, when it is a root bridge or a designated bridge. Only relevant if STP is enabled.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(hbThe valid values are between (1 * USER_HZ) and (10 * USER_HZ). The default value is (2 * USER_HZ).h]hbThe valid values are between (1 * USER_HZ) and (10 * USER_HZ). The default value is (2 * USER_HZ).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjpubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hX+**IFLA_BR_MAX_AGE** The hello packet timeout is the time until another bridge in the spanning tree is assumed to be dead, after reception of its last hello message. Only relevant if STP is enabled. The valid values are between (6 * USER_HZ) and (40 * USER_HZ). The default value is (20 * USER_HZ). h](j)}(h**IFLA_BR_MAX_AGE**h]j)}(hjh]hIFLA_BR_MAX_AGE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hThe hello packet timeout is the time until another bridge in the spanning tree is assumed to be dead, after reception of its last hello message. Only relevant if STP is enabled.h]hThe hello packet timeout is the time until another bridge in the spanning tree is assumed to be dead, after reception of its last hello message. Only relevant if STP is enabled.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(hcThe valid values are between (6 * USER_HZ) and (40 * USER_HZ). The default value is (20 * USER_HZ).h]hcThe valid values are between (6 * USER_HZ) and (40 * USER_HZ). The default value is (20 * USER_HZ).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hX**IFLA_BR_AGEING_TIME** Configure the bridge's FDB entries aging time. It is the time a MAC address will be kept in the FDB after a packet has been received from that address. After this time has passed, entries are cleaned up. Allow values outside the 802.1 standard specification for special cases: * 0 - entry never ages (all permanent) * 1 - entry disappears (no persistence) The default value is (300 * USER_HZ). h](j)}(h**IFLA_BR_AGEING_TIME**h]j)}(hjh]hIFLA_BR_AGEING_TIME}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hXConfigure the bridge's FDB entries aging time. It is the time a MAC address will be kept in the FDB after a packet has been received from that address. After this time has passed, entries are cleaned up. Allow values outside the 802.1 standard specification for special cases:h]hXConfigure the bridge’s FDB entries aging time. It is the time a MAC address will be kept in the FDB after a packet has been received from that address. After this time has passed, entries are cleaned up. Allow values outside the 802.1 standard specification for special cases:}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh block_quote)}(hO* 0 - entry never ages (all permanent) * 1 - entry disappears (no persistence) h]h bullet_list)}(hhh](h list_item)}(h$0 - entry never ages (all permanent)h]h)}(hj?h]h$0 - entry never ages (all permanent)}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj=ubah}(h]h ]h"]h$]h&]uh1j;hj8ubj<)}(h&1 - entry disappears (no persistence) h]h)}(h%1 - entry disappears (no persistence)h]h%1 - entry disappears (no persistence)}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjUubah}(h]h ]h"]h$]h&]uh1j;hj8ubeh}(h]h ]h"]h$]h&]bullet*uh1j6hjNhMhj2ubah}(h]h ]h"]h$]h&]uh1j0hjNhMhjubh)}(h%The default value is (300 * USER_HZ).h]h%The default value is (300 * USER_HZ).}(hj|hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_STP_STATE** Turn spanning tree protocol on (*IFLA_BR_STP_STATE* > 0) or off (*IFLA_BR_STP_STATE* == 0) for this bridge. The default value is 0 (disabled). h](j)}(h**IFLA_BR_STP_STATE**h]j)}(hjh]hIFLA_BR_STP_STATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hkTurn spanning tree protocol on (*IFLA_BR_STP_STATE* > 0) or off (*IFLA_BR_STP_STATE* == 0) for this bridge.h](h Turn spanning tree protocol on (}(hjhhhNhNubj )}(h*IFLA_BR_STP_STATE*h]hIFLA_BR_STP_STATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh > 0) or off (}(hjhhhNhNubj )}(h*IFLA_BR_STP_STATE*h]hIFLA_BR_STP_STATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh == 0) for this bridge.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_PRIORITY** Set this bridge's spanning tree priority, used during STP root bridge election. The valid values are between 0 and 65535. h](j)}(h**IFLA_BR_PRIORITY**h]j)}(hj h]hIFLA_BR_PRIORITY}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh](h)}(hOSet this bridge's spanning tree priority, used during STP root bridge election.h]hQSet this bridge’s spanning tree priority, used during STP root bridge election.}(hj! hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubh)}(h)The valid values are between 0 and 65535.h]h)The valid values are between 0 and 65535.}(hj0 hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj$ubj)}(h**IFLA_BR_VLAN_FILTERING** Turn VLAN filtering on (*IFLA_BR_VLAN_FILTERING* > 0) or off (*IFLA_BR_VLAN_FILTERING* == 0). When disabled, the bridge will not consider the VLAN tag when handling packets. The default value is 0 (disabled). h](j)}(h**IFLA_BR_VLAN_FILTERING**h]j)}(hjP h]hIFLA_BR_VLAN_FILTERING}(hjR hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjN ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM hjJ ubj;)}(hhh](h)}(hTurn VLAN filtering on (*IFLA_BR_VLAN_FILTERING* > 0) or off (*IFLA_BR_VLAN_FILTERING* == 0). When disabled, the bridge will not consider the VLAN tag when handling packets.h](hTurn VLAN filtering on (}(hji hhhNhNubj )}(h*IFLA_BR_VLAN_FILTERING*h]hIFLA_BR_VLAN_FILTERING}(hjq hhhNhNubah}(h]h ]h"]h$]h&]uh1j hji ubh > 0) or off (}(hji hhhNhNubj )}(h*IFLA_BR_VLAN_FILTERING*h]hIFLA_BR_VLAN_FILTERING}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hji ubhW == 0). When disabled, the bridge will not consider the VLAN tag when handling packets.}(hji hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjf ubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhje hM hjf ubeh}(h]h ]h"]h$]h&]uh1j:hjJ ubeh}(h]h ]h"]h$]h&]uh1jhje hM hj$ubj)}(h**IFLA_BR_VLAN_PROTOCOL** Set the protocol used for VLAN filtering. The valid values are 0x8100(802.1Q) or 0x88A8(802.1AD). The default value is 0x8100(802.1Q). h](j)}(h**IFLA_BR_VLAN_PROTOCOL**h]j)}(hj h]hIFLA_BR_VLAN_PROTOCOL}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh](h)}(h)Set the protocol used for VLAN filtering.h]h)Set the protocol used for VLAN filtering.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM hj ubh)}(h\The valid values are 0x8100(802.1Q) or 0x88A8(802.1AD). The default value is 0x8100(802.1Q).h]h\The valid values are 0x8100(802.1Q) or 0x88A8(802.1AD). The default value is 0x8100(802.1Q).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj$ubj)}(hX5**IFLA_BR_GROUP_FWD_MASK** The group forwarding mask. This is the bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses (of the form 01:80:C2:00:00:0X). The default value is 0, which means the bridge does not forward any link-local frames coming on this port. h](j)}(h**IFLA_BR_GROUP_FWD_MASK**h]j)}(hj h]hIFLA_BR_GROUP_FWD_MASK}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh](h)}(hThe group forwarding mask. This is the bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses (of the form 01:80:C2:00:00:0X).h]hThe group forwarding mask. This is the bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses (of the form 01:80:C2:00:00:0X).}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubh)}(hjThe default value is 0, which means the bridge does not forward any link-local frames coming on this port.h]hjThe default value is 0, which means the bridge does not forward any link-local frames coming on this port.}(hj- hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj$ubj)}(h3**IFLA_BR_ROOT_ID** The bridge root id, read only. h](j)}(h**IFLA_BR_ROOT_ID**h]j)}(hjN h]hIFLA_BR_ROOT_ID}(hjP hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjL ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjH ubj;)}(hhh]h)}(hThe bridge root id, read only.h]hThe bridge root id, read only.}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjc hMhjd ubah}(h]h ]h"]h$]h&]uh1j:hjH ubeh}(h]h ]h"]h$]h&]uh1jhjc hMhj$ubj)}(h0**IFLA_BR_BRIDGE_ID** The bridge id, read only. h](j)}(h**IFLA_BR_BRIDGE_ID**h]j)}(hj h]hIFLA_BR_BRIDGE_ID}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh]h)}(hThe bridge id, read only.h]hThe bridge id, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMhj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMhj$ubj)}(h7**IFLA_BR_ROOT_PORT** The bridge root port, read only. h](j)}(h**IFLA_BR_ROOT_PORT**h]j)}(hj h]hIFLA_BR_ROOT_PORT}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM!hj ubj;)}(hhh]h)}(h The bridge root port, read only.h]h The bridge root port, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM!hj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM!hj$ubj)}(hA**IFLA_BR_ROOT_PATH_COST** The bridge root path cost, read only. h](j)}(h**IFLA_BR_ROOT_PATH_COST**h]j)}(hj h]hIFLA_BR_ROOT_PATH_COST}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM$hj ubj;)}(hhh]h)}(h%The bridge root path cost, read only.h]h%The bridge root path cost, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM$hj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM$hj$ubj)}(hC**IFLA_BR_TOPOLOGY_CHANGE** The bridge topology change, read only. h](j)}(h**IFLA_BR_TOPOLOGY_CHANGE**h]j)}(hj2 h]hIFLA_BR_TOPOLOGY_CHANGE}(hj4 hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj0 ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM'hj, ubj;)}(hhh]h)}(h&The bridge topology change, read only.h]h&The bridge topology change, read only.}(hjK hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjG hM'hjH ubah}(h]h ]h"]h$]h&]uh1j:hj, ubeh}(h]h ]h"]h$]h&]uh1jhjG hM'hj$ubj)}(hU**IFLA_BR_TOPOLOGY_CHANGE_DETECTED** The bridge topology change detected, read only. h](j)}(h$**IFLA_BR_TOPOLOGY_CHANGE_DETECTED**h]j)}(hjk h]h IFLA_BR_TOPOLOGY_CHANGE_DETECTED}(hjm hhhNhNubah}(h]h ]h"]h$]h&]uh1jhji ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM*hje ubj;)}(hhh]h)}(h/The bridge topology change detected, read only.h]h/The bridge topology change detected, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM*hj ubah}(h]h ]h"]h$]h&]uh1j:hje ubeh}(h]h ]h"]h$]h&]uh1jhj hM*hj$ubj)}(h;**IFLA_BR_HELLO_TIMER** The bridge hello timer, read only. h](j)}(h**IFLA_BR_HELLO_TIMER**h]j)}(hj h]hIFLA_BR_HELLO_TIMER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM-hj ubj;)}(hhh]h)}(h"The bridge hello timer, read only.h]h"The bridge hello timer, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM-hj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM-hj$ubj)}(h7**IFLA_BR_TCN_TIMER** The bridge tcn timer, read only. h](j)}(h**IFLA_BR_TCN_TIMER**h]j)}(hj h]hIFLA_BR_TCN_TIMER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM0hj ubj;)}(hhh]h)}(h The bridge tcn timer, read only.h]h The bridge tcn timer, read only.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM0hj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM0hj$ubj)}(hO**IFLA_BR_TOPOLOGY_CHANGE_TIMER** The bridge topology change timer, read only. h](j)}(h!**IFLA_BR_TOPOLOGY_CHANGE_TIMER**h]j)}(hj h]hIFLA_BR_TOPOLOGY_CHANGE_TIMER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM3hj ubj;)}(hhh]h)}(h,The bridge topology change timer, read only.h]h,The bridge topology change timer, read only.}(hj/ hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj+ hM3hj, ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj+ hM3hj$ubj)}(h5**IFLA_BR_GC_TIMER** The bridge gc timer, read only. h](j)}(h**IFLA_BR_GC_TIMER**h]j)}(hjO h]hIFLA_BR_GC_TIMER}(hjQ hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjM ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM6hjI ubj;)}(hhh]h)}(hThe bridge gc timer, read only.h]hThe bridge gc timer, read only.}(hjh hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjd hM6hje ubah}(h]h ]h"]h$]h&]uh1j:hjI ubeh}(h]h ]h"]h$]h&]uh1jhjd hM6hj$ubj)}(hX **IFLA_BR_GROUP_ADDR** Set the MAC address of the multicast group this bridge uses for STP. The address must be a link-local address in standard Ethernet MAC address format. It is an address of the form 01:80:C2:00:00:0X, with X in [0, 4..f]. The default value is 0. h](j)}(h**IFLA_BR_GROUP_ADDR**h]j)}(hj h]hIFLA_BR_GROUP_ADDR}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM=hj ubj;)}(hhh](h)}(hSet the MAC address of the multicast group this bridge uses for STP. The address must be a link-local address in standard Ethernet MAC address format. It is an address of the form 01:80:C2:00:00:0X, with X in [0, 4..f].h]hSet the MAC address of the multicast group this bridge uses for STP. The address must be a link-local address in standard Ethernet MAC address format. It is an address of the form 01:80:C2:00:00:0X, with X in [0, 4..f].}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM9hj ubh)}(hThe default value is 0.h]hThe default value is 0.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM=hj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM=hj$ubj)}(h:**IFLA_BR_FDB_FLUSH** Flush bridge's fdb dynamic entries. h](j)}(h**IFLA_BR_FDB_FLUSH**h]j)}(hj h]hIFLA_BR_FDB_FLUSH}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM@hj ubj;)}(hhh]h)}(h#Flush bridge's fdb dynamic entries.h]h%Flush bridge’s fdb dynamic entries.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hM@hj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM@hj$ubj)}(h**IFLA_BR_MCAST_ROUTER** Set bridge's multicast router if IGMP snooping is enabled. The valid values are: * 0 - disabled. * 1 - automatic (queried). * 2 - permanently enabled. The default value is 1. h](j)}(h**IFLA_BR_MCAST_ROUTER**h]j)}(hj h]hIFLA_BR_MCAST_ROUTER}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMJhj ubj;)}(hhh](h)}(hPSet bridge's multicast router if IGMP snooping is enabled. The valid values are:h]hRSet bridge’s multicast router if IGMP snooping is enabled. The valid values are:}(hj" hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMChj ubj1)}(hF* 0 - disabled. * 1 - automatic (queried). * 2 - permanently enabled. h]j7)}(hhh](j<)}(h 0 - disabled.h]h)}(hj: h]h 0 - disabled.}(hj< hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMFhj8 ubah}(h]h ]h"]h$]h&]uh1j;hj5 ubj<)}(h1 - automatic (queried).h]h)}(hjR h]h1 - automatic (queried).}(hjT hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMGhjP ubah}(h]h ]h"]h$]h&]uh1j;hj5 ubj<)}(h2 - permanently enabled. h]h)}(h2 - permanently enabled.h]h2 - permanently enabled.}(hjl hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMHhjh ubah}(h]h ]h"]h$]h&]uh1j;hj5 ubeh}(h]h ]h"]h$]h&]jtjuuh1j6hjI hMFhj1 ubah}(h]h ]h"]h$]h&]uh1j0hjI hMFhj ubh)}(hThe default value is 1.h]hThe default value is 1.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMJhj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMJhj$ubj)}(h**IFLA_BR_MCAST_SNOOPING** Turn multicast snooping on (*IFLA_BR_MCAST_SNOOPING* > 0) or off (*IFLA_BR_MCAST_SNOOPING* == 0). The default value is 1. h](j)}(h**IFLA_BR_MCAST_SNOOPING**h]j)}(hj h]hIFLA_BR_MCAST_SNOOPING}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMPhj ubj;)}(hhh](h)}(haTurn multicast snooping on (*IFLA_BR_MCAST_SNOOPING* > 0) or off (*IFLA_BR_MCAST_SNOOPING* == 0).h](hTurn multicast snooping on (}(hj hhhNhNubj )}(h*IFLA_BR_MCAST_SNOOPING*h]hIFLA_BR_MCAST_SNOOPING}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh > 0) or off (}(hj hhhNhNubj )}(h*IFLA_BR_MCAST_SNOOPING*h]hIFLA_BR_MCAST_SNOOPING}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh == 0).}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMMhj ubh)}(hThe default value is 1.h]hThe default value is 1.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj hMPhj ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hMPhj$ubj)}(h**IFLA_BR_MCAST_QUERY_USE_IFADDR** If enabled use the bridge's own IP address as source address for IGMP queries (*IFLA_BR_MCAST_QUERY_USE_IFADDR* > 0) or the default of 0.0.0.0 (*IFLA_BR_MCAST_QUERY_USE_IFADDR* == 0). The default value is 0 (disabled). h](j)}(h"**IFLA_BR_MCAST_QUERY_USE_IFADDR**h]j)}(hjh]hIFLA_BR_MCAST_QUERY_USE_IFADDR}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMWhjubj;)}(hhh](h)}(hIf enabled use the bridge's own IP address as source address for IGMP queries (*IFLA_BR_MCAST_QUERY_USE_IFADDR* > 0) or the default of 0.0.0.0 (*IFLA_BR_MCAST_QUERY_USE_IFADDR* == 0).h](hQIf enabled use the bridge’s own IP address as source address for IGMP queries (}(hj2hhhNhNubj )}(h *IFLA_BR_MCAST_QUERY_USE_IFADDR*h]hIFLA_BR_MCAST_QUERY_USE_IFADDR}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubh! > 0) or the default of 0.0.0.0 (}(hj2hhhNhNubj )}(h *IFLA_BR_MCAST_QUERY_USE_IFADDR*h]hIFLA_BR_MCAST_QUERY_USE_IFADDR}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj2ubh == 0).}(hj2hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMShj/ubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhj.hMWhj/ubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj.hMWhj$ubj)}(h**IFLA_BR_MCAST_QUERIER** Enable (*IFLA_BR_MULTICAST_QUERIER* > 0) or disable (*IFLA_BR_MULTICAST_QUERIER* == 0) IGMP querier, ie sending of multicast queries by the bridge. The default value is 0 (disabled). h](j)}(h**IFLA_BR_MCAST_QUERIER**h]j)}(hjh]hIFLA_BR_MCAST_QUERIER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM^hjubj;)}(hhh](h)}(hEnable (*IFLA_BR_MULTICAST_QUERIER* > 0) or disable (*IFLA_BR_MULTICAST_QUERIER* == 0) IGMP querier, ie sending of multicast queries by the bridge.h](hEnable (}(hjhhhNhNubj )}(h*IFLA_BR_MULTICAST_QUERIER*h]hIFLA_BR_MULTICAST_QUERIER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh > 0) or disable (}(hjhhhNhNubj )}(h*IFLA_BR_MULTICAST_QUERIER*h]hIFLA_BR_MULTICAST_QUERIER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhC == 0) IGMP querier, ie sending of multicast queries by the bridge.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMZhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhM^hjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhM^hj$ubj)}(h**IFLA_BR_MCAST_HASH_ELASTICITY** Set multicast database hash elasticity, It is the maximum chain length in the multicast hash table. This attribute is *deprecated* and the value is always 16. h](j)}(h!**IFLA_BR_MCAST_HASH_ELASTICITY**h]j)}(hjh]hIFLA_BR_MCAST_HASH_ELASTICITY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMchjubj;)}(hhh]h)}(hSet multicast database hash elasticity, It is the maximum chain length in the multicast hash table. This attribute is *deprecated* and the value is always 16.h](hvSet multicast database hash elasticity, It is the maximum chain length in the multicast hash table. This attribute is }(hj hhhNhNubj )}(h *deprecated*h]h deprecated}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj ubh and the value is always 16.}(hj hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMahjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMchj$ubj)}(h**IFLA_BR_MCAST_HASH_MAX** Set maximum size of the multicast hash table The default value is 4096, the value must be a power of 2. h](j)}(h**IFLA_BR_MCAST_HASH_MAX**h]j)}(hj=h]hIFLA_BR_MCAST_HASH_MAX}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj;ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhhj7ubj;)}(hhh](h)}(h,Set maximum size of the multicast hash tableh]h,Set maximum size of the multicast hash table}(hjVhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMfhjSubh)}(h:The default value is 4096, the value must be a power of 2.h]h:The default value is 4096, the value must be a power of 2.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hhjRhMhhjSubeh}(h]h ]h"]h$]h&]uh1j:hj7ubeh}(h]h ]h"]h$]h&]uh1jhjRhMhhj$ubj)}(hX]**IFLA_BR_MCAST_LAST_MEMBER_CNT** The Last Member Query Count is the number of Group-Specific Queries sent before the router assumes there are no local members. The Last Member Query Count is also the number of Group-and-Source-Specific Queries sent before the router assumes there are no listeners for a particular source. The default value is 2. h](j)}(h!**IFLA_BR_MCAST_LAST_MEMBER_CNT**h]j)}(hjh]hIFLA_BR_MCAST_LAST_MEMBER_CNT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMqhjubj;)}(hhh](h)}(hX!The Last Member Query Count is the number of Group-Specific Queries sent before the router assumes there are no local members. The Last Member Query Count is also the number of Group-and-Source-Specific Queries sent before the router assumes there are no listeners for a particular source.h]hX!The Last Member Query Count is the number of Group-Specific Queries sent before the router assumes there are no local members. The Last Member Query Count is also the number of Group-and-Source-Specific Queries sent before the router assumes there are no listeners for a particular source.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMkhjubh)}(hThe default value is 2.h]hThe default value is 2.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMqhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMqhj$ubj)}(h**IFLA_BR_MCAST_STARTUP_QUERY_CNT** The Startup Query Count is the number of Queries sent out on startup, separated by the Startup Query Interval. The default value is 2. h](j)}(h#**IFLA_BR_MCAST_STARTUP_QUERY_CNT**h]j)}(hjh]hIFLA_BR_MCAST_STARTUP_QUERY_CNT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMwhjubj;)}(hhh](h)}(hnThe Startup Query Count is the number of Queries sent out on startup, separated by the Startup Query Interval.h]hnThe Startup Query Count is the number of Queries sent out on startup, separated by the Startup Query Interval.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMthjubh)}(hThe default value is 2.h]hThe default value is 2.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMwhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMwhj$ubj)}(hX**IFLA_BR_MCAST_LAST_MEMBER_INTVL** The Last Member Query Interval is the Max Response Time inserted into Group-Specific Queries sent in response to Leave Group messages, and is also the amount of time between Group-Specific Query messages. The default value is (1 * USER_HZ). h](j)}(h#**IFLA_BR_MCAST_LAST_MEMBER_INTVL**h]j)}(hjh]hIFLA_BR_MCAST_LAST_MEMBER_INTVL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhM~hjubj;)}(hhh](h)}(hThe Last Member Query Interval is the Max Response Time inserted into Group-Specific Queries sent in response to Leave Group messages, and is also the amount of time between Group-Specific Query messages.h]hThe Last Member Query Interval is the Max Response Time inserted into Group-Specific Queries sent in response to Leave Group messages, and is also the amount of time between Group-Specific Query messages.}(hj.hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMzhj+ubh)}(h#The default value is (1 * USER_HZ).h]h#The default value is (1 * USER_HZ).}(hj=hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj*hM~hj+ubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj*hM~hj$ubj)}(h**IFLA_BR_MCAST_MEMBERSHIP_INTVL** The interval after which the bridge will leave a group, if no membership reports for this group are received. The default value is (260 * USER_HZ). h](j)}(h"**IFLA_BR_MCAST_MEMBERSHIP_INTVL**h]j)}(hj]h]hIFLA_BR_MCAST_MEMBERSHIP_INTVL}(hj_hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj[ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjWubj;)}(hhh](h)}(hmThe interval after which the bridge will leave a group, if no membership reports for this group are received.h]hmThe interval after which the bridge will leave a group, if no membership reports for this group are received.}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjsubh)}(h%The default value is (260 * USER_HZ).h]h%The default value is (260 * USER_HZ).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhMhjsubeh}(h]h ]h"]h$]h&]uh1j:hjWubeh}(h]h ]h"]h$]h&]uh1jhjrhMhj$ubj)}(hX**IFLA_BR_MCAST_QUERIER_INTVL** The interval between queries sent by other routers. if no queries are seen after this delay has passed, the bridge will start to send its own queries (as if *IFLA_BR_MCAST_QUERIER_INTVL* was enabled). The default value is (255 * USER_HZ). h](j)}(h**IFLA_BR_MCAST_QUERIER_INTVL**h]j)}(hjh]hIFLA_BR_MCAST_QUERIER_INTVL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hThe interval between queries sent by other routers. if no queries are seen after this delay has passed, the bridge will start to send its own queries (as if *IFLA_BR_MCAST_QUERIER_INTVL* was enabled).h](hThe interval between queries sent by other routers. if no queries are seen after this delay has passed, the bridge will start to send its own queries (as if }(hjhhhNhNubj )}(h*IFLA_BR_MCAST_QUERIER_INTVL*h]hIFLA_BR_MCAST_QUERIER_INTVL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh was enabled).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h%The default value is (255 * USER_HZ).h]h%The default value is (255 * USER_HZ).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj$ubj)}(h**IFLA_BR_MCAST_QUERY_INTVL** The Query Interval is the interval between General Queries sent by the Querier. The default value is (125 * USER_HZ). The minimum value is (1 * USER_HZ). h](j)}(h**IFLA_BR_MCAST_QUERY_INTVL**h]j)}(hjh]hIFLA_BR_MCAST_QUERY_INTVL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hOThe Query Interval is the interval between General Queries sent by the Querier.h]hOThe Query Interval is the interval between General Queries sent by the Querier.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(hIThe default value is (125 * USER_HZ). The minimum value is (1 * USER_HZ).h]hIThe default value is (125 * USER_HZ). The minimum value is (1 * USER_HZ).}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_MCAST_QUERY_RESPONSE_INTVL** The Max Response Time used to calculate the Max Resp Code inserted into the periodic General Queries. The default value is (10 * USER_HZ). h](j)}(h&**IFLA_BR_MCAST_QUERY_RESPONSE_INTVL**h]j)}(hjGh]h"IFLA_BR_MCAST_QUERY_RESPONSE_INTVL}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjEubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjAubj;)}(hhh](h)}(heThe Max Response Time used to calculate the Max Resp Code inserted into the periodic General Queries.h]heThe Max Response Time used to calculate the Max Resp Code inserted into the periodic General Queries.}(hj`hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj]ubh)}(h$The default value is (10 * USER_HZ).h]h$The default value is (10 * USER_HZ).}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1hhj\hMhj]ubeh}(h]h ]h"]h$]h&]uh1j:hjAubeh}(h]h ]h"]h$]h&]uh1jhj\hMhj$ubj)}(h**IFLA_BR_MCAST_STARTUP_QUERY_INTVL** The interval between queries in the startup phase. The default value is (125 * USER_HZ) / 4. The minimum value is (1 * USER_HZ). h](j)}(h%**IFLA_BR_MCAST_STARTUP_QUERY_INTVL**h]j)}(hjh]h!IFLA_BR_MCAST_STARTUP_QUERY_INTVL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(h2The interval between queries in the startup phase.h]h2The interval between queries in the startup phase.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(hMThe default value is (125 * USER_HZ) / 4. The minimum value is (1 * USER_HZ).h]hMThe default value is (125 * USER_HZ) / 4. The minimum value is (1 * USER_HZ).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_NF_CALL_IPTABLES** Enable (*NF_CALL_IPTABLES* > 0) or disable (*NF_CALL_IPTABLES* == 0) iptables hooks on the bridge. The default value is 0 (disabled). h](j)}(h**IFLA_BR_NF_CALL_IPTABLES**h]j)}(hjh]hIFLA_BR_NF_CALL_IPTABLES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hbEnable (*NF_CALL_IPTABLES* > 0) or disable (*NF_CALL_IPTABLES* == 0) iptables hooks on the bridge.h](hEnable (}(hjhhhNhNubj )}(h*NF_CALL_IPTABLES*h]hNF_CALL_IPTABLES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh > 0) or disable (}(hjhhhNhNubj )}(h*NF_CALL_IPTABLES*h]hNF_CALL_IPTABLES}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh$ == 0) iptables hooks on the bridge.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_NF_CALL_IP6TABLES** Enable (*NF_CALL_IP6TABLES* > 0) or disable (*NF_CALL_IP6TABLES* == 0) ip6tables hooks on the bridge. The default value is 0 (disabled). h](j)}(h**IFLA_BR_NF_CALL_IP6TABLES**h]j)}(hjCh]hIFLA_BR_NF_CALL_IP6TABLES}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj=ubj;)}(hhh](h)}(heEnable (*NF_CALL_IP6TABLES* > 0) or disable (*NF_CALL_IP6TABLES* == 0) ip6tables hooks on the bridge.h](hEnable (}(hj\hhhNhNubj )}(h*NF_CALL_IP6TABLES*h]hNF_CALL_IP6TABLES}(hjdhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\ubh > 0) or disable (}(hj\hhhNhNubj )}(h*NF_CALL_IP6TABLES*h]hNF_CALL_IP6TABLES}(hjvhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj\ubh% == 0) ip6tables hooks on the bridge.}(hj\hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjYubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjXhMhjYubeh}(h]h ]h"]h$]h&]uh1j:hj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhMhj$ubj)}(h**IFLA_BR_NF_CALL_ARPTABLES** Enable (*NF_CALL_ARPTABLES* > 0) or disable (*NF_CALL_ARPTABLES* == 0) arptables hooks on the bridge. The default value is 0 (disabled). h](j)}(h**IFLA_BR_NF_CALL_ARPTABLES**h]j)}(hjh]hIFLA_BR_NF_CALL_ARPTABLES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(heEnable (*NF_CALL_ARPTABLES* > 0) or disable (*NF_CALL_ARPTABLES* == 0) arptables hooks on the bridge.h](hEnable (}(hjhhhNhNubj )}(h*NF_CALL_ARPTABLES*h]hNF_CALL_ARPTABLES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh > 0) or disable (}(hjhhhNhNubj )}(h*NF_CALL_ARPTABLES*h]hNF_CALL_ARPTABLES}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh% == 0) arptables hooks on the bridge.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hX**IFLA_BR_VLAN_DEFAULT_PVID** VLAN ID applied to untagged and priority-tagged incoming packets. The default value is 1. Setting to the special value 0 makes all ports of this bridge not have a PVID by default, which means that they will not accept VLAN-untagged traffic. h](j)}(h**IFLA_BR_VLAN_DEFAULT_PVID**h]j)}(hjh]hIFLA_BR_VLAN_DEFAULT_PVID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hAVLAN ID applied to untagged and priority-tagged incoming packets.h]hAVLAN ID applied to untagged and priority-tagged incoming packets.}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj1ubh)}(hThe default value is 1. Setting to the special value 0 makes all ports of this bridge not have a PVID by default, which means that they will not accept VLAN-untagged traffic.h]hThe default value is 1. Setting to the special value 0 makes all ports of this bridge not have a PVID by default, which means that they will not accept VLAN-untagged traffic.}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj1ubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj0hMhj$ubj)}(hC**IFLA_BR_PAD** Bridge attribute padding type for netlink message. h](j)}(h**IFLA_BR_PAD**h]j)}(hjdh]h IFLA_BR_PAD}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjbubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj^ubj;)}(hhh]h)}(h2Bridge attribute padding type for netlink message.h]h2Bridge attribute padding type for netlink message.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjyhMhjzubah}(h]h ]h"]h$]h&]uh1j:hj^ubeh}(h]h ]h"]h$]h&]uh1jhjyhMhj$ubj)}(h**IFLA_BR_VLAN_STATS_ENABLED** Enable (*IFLA_BR_VLAN_STATS_ENABLED* == 1) or disable (*IFLA_BR_VLAN_STATS_ENABLED* == 0) per-VLAN stats accounting. The default value is 0 (disabled). h](j)}(h**IFLA_BR_VLAN_STATS_ENABLED**h]j)}(hjh]hIFLA_BR_VLAN_STATS_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(htEnable (*IFLA_BR_VLAN_STATS_ENABLED* == 1) or disable (*IFLA_BR_VLAN_STATS_ENABLED* == 0) per-VLAN stats accounting.h](hEnable (}(hjhhhNhNubj )}(h*IFLA_BR_VLAN_STATS_ENABLED*h]hIFLA_BR_VLAN_STATS_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh == 1) or disable (}(hjhhhNhNubj )}(h*IFLA_BR_VLAN_STATS_ENABLED*h]hIFLA_BR_VLAN_STATS_ENABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh! == 0) per-VLAN stats accounting.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_MCAST_STATS_ENABLED** Enable (*IFLA_BR_MCAST_STATS_ENABLED* > 0) or disable (*IFLA_BR_MCAST_STATS_ENABLED* == 0) multicast (IGMP/MLD) stats accounting. The default value is 0 (disabled). h](j)}(h**IFLA_BR_MCAST_STATS_ENABLED**h]j)}(hj h]hIFLA_BR_MCAST_STATS_ENABLED}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hEnable (*IFLA_BR_MCAST_STATS_ENABLED* > 0) or disable (*IFLA_BR_MCAST_STATS_ENABLED* == 0) multicast (IGMP/MLD) stats accounting.h](hEnable (}(hj"hhhNhNubj )}(h*IFLA_BR_MCAST_STATS_ENABLED*h]hIFLA_BR_MCAST_STATS_ENABLED}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubh > 0) or disable (}(hj"hhhNhNubj )}(h*IFLA_BR_MCAST_STATS_ENABLED*h]hIFLA_BR_MCAST_STATS_ENABLED}(hj<hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj"ubh- == 0) multicast (IGMP/MLD) stats accounting.}(hj"hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hl**IFLA_BR_MCAST_IGMP_VERSION** Set the IGMP version. The valid values are 2 and 3. The default value is 2. h](j)}(h**IFLA_BR_MCAST_IGMP_VERSION**h]j)}(hjuh]hIFLA_BR_MCAST_IGMP_VERSION}(hjwhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjsubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjoubj;)}(hhh](h)}(hSet the IGMP version.h]hSet the IGMP version.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h5The valid values are 2 and 3. The default value is 2.h]h5The valid values are 2 and 3. The default value is 2.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjoubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hj**IFLA_BR_MCAST_MLD_VERSION** Set the MLD version. The valid values are 1 and 2. The default value is 1. h](j)}(h**IFLA_BR_MCAST_MLD_VERSION**h]j)}(hjh]hIFLA_BR_MCAST_MLD_VERSION}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hSet the MLD version.h]hSet the MLD version.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h5The valid values are 1 and 2. The default value is 1.h]h5The valid values are 1 and 2. The default value is 1.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hX**IFLA_BR_VLAN_STATS_PER_PORT** Enable (*IFLA_BR_VLAN_STATS_PER_PORT* == 1) or disable (*IFLA_BR_VLAN_STATS_PER_PORT* == 0) per-VLAN per-port stats accounting. Can be changed only when there are no port VLANs configured. The default value is 0 (disabled). h](j)}(h**IFLA_BR_VLAN_STATS_PER_PORT**h]j)}(hjh]hIFLA_BR_VLAN_STATS_PER_PORT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hEnable (*IFLA_BR_VLAN_STATS_PER_PORT* == 1) or disable (*IFLA_BR_VLAN_STATS_PER_PORT* == 0) per-VLAN per-port stats accounting. Can be changed only when there are no port VLANs configured.h](hEnable (}(hjhhhNhNubj )}(h*IFLA_BR_VLAN_STATS_PER_PORT*h]hIFLA_BR_VLAN_STATS_PER_PORT}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh == 1) or disable (}(hjhhhNhNubj )}(h*IFLA_BR_VLAN_STATS_PER_PORT*h]hIFLA_BR_VLAN_STATS_PER_PORT}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhg == 0) per-VLAN per-port stats accounting. Can be changed only when there are no port VLANs configured.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubh)}(h"The default value is 0 (disabled).h]h"The default value is 0 (disabled).}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(h**IFLA_BR_MULTI_BOOLOPT** The multi_boolopt is used to control new boolean options to avoid adding new netlink attributes. You can look at ``enum br_boolopt_id`` for those options. h](j)}(h**IFLA_BR_MULTI_BOOLOPT**h]j)}(hjqh]hIFLA_BR_MULTI_BOOLOPT}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1jhjoubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjkubj;)}(hhh]h)}(hThe multi_boolopt is used to control new boolean options to avoid adding new netlink attributes. You can look at ``enum br_boolopt_id`` for those options.h](hqThe multi_boolopt is used to control new boolean options to avoid adding new netlink attributes. You can look at }(hjhhhNhNubj%)}(h``enum br_boolopt_id``h]henum br_boolopt_id}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j$hjubh for those options.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjkubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hH**IFLA_BR_MCAST_QUERIER_STATE** Bridge mcast querier states, read only. h](j)}(h**IFLA_BR_MCAST_QUERIER_STATE**h]j)}(hjh]hIFLA_BR_MCAST_QUERIER_STATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(h'Bridge mcast querier states, read only.h]h'Bridge mcast querier states, read only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj$ubj)}(hk**IFLA_BR_FDB_N_LEARNED** The number of dynamically learned FDB entries for the current bridge, read only. h](j)}(h**IFLA_BR_FDB_N_LEARNED**h]j)}(hjh]hIFLA_BR_FDB_N_LEARNED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(hPThe number of dynamically learned FDB entries for the current bridge, read only.h]hPThe number of dynamically learned FDB entries for the current bridge, read only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj ubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj hMhj$ubj)}(hj**IFLA_BR_FDB_MAX_LEARNED** Set the number of max dynamically learned FDB entries for the current bridge. h](j)}(h**IFLA_BR_FDB_MAX_LEARNED**h]j)}(hj0h]hIFLA_BR_FDB_MAX_LEARNED}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj.ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhj*ubj;)}(hhh]h)}(hMSet the number of max dynamically learned FDB entries for the current bridge.h]hMSet the number of max dynamically learned FDB entries for the current bridge.}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:35: ./include/uapi/linux/if_link.hhMhjFubah}(h]h ]h"]h$]h&]uh1j:hj*ubeh}(h]h ]h"]h$]h&]uh1jhjEhMhj$ubeh}(h]h ]h"]h$]h&]uh1jhjhhhNhNubeh}(h]bridge-netlink-attributesah ]h"]bridge netlink attributesah$]h&]uh1hhjhhhhhK!ubh)}(hhh](h)}(hBridge port netlink attributesh]hBridge port netlink attributes}(hjuhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjrhhhhhK'ubj)}(hhh](j)}(hX**IFLA_BRPORT_STATE** The operation state of the port. Here are the valid values. * 0 - port is in STP *DISABLED* state. Make this port completely inactive for STP. This is also called BPDU filter and could be used to disable STP on an untrusted port, like a leaf virtual device. The traffic forwarding is also stopped on this port. * 1 - port is in STP *LISTENING* state. Only valid if STP is enabled on the bridge. In this state the port listens for STP BPDUs and drops all other traffic frames. * 2 - port is in STP *LEARNING* state. Only valid if STP is enabled on the bridge. In this state the port will accept traffic only for the purpose of updating MAC address tables. * 3 - port is in STP *FORWARDING* state. Port is fully active. * 4 - port is in STP *BLOCKING* state. Only valid if STP is enabled on the bridge. This state is used during the STP election process. In this state, port will only process STP BPDUs. h](j)}(h**IFLA_BRPORT_STATE**h]j)}(hjh]hIFLA_BRPORT_STATE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMGhjubj;)}(hhh](h)}(h;The operation state of the port. Here are the valid values.h]h;The operation state of the port. Here are the valid values.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM8hjubj1)}(hX\* 0 - port is in STP *DISABLED* state. Make this port completely inactive for STP. This is also called BPDU filter and could be used to disable STP on an untrusted port, like a leaf virtual device. The traffic forwarding is also stopped on this port. * 1 - port is in STP *LISTENING* state. Only valid if STP is enabled on the bridge. In this state the port listens for STP BPDUs and drops all other traffic frames. * 2 - port is in STP *LEARNING* state. Only valid if STP is enabled on the bridge. In this state the port will accept traffic only for the purpose of updating MAC address tables. * 3 - port is in STP *FORWARDING* state. Port is fully active. * 4 - port is in STP *BLOCKING* state. Only valid if STP is enabled on the bridge. This state is used during the STP election process. In this state, port will only process STP BPDUs. h]j7)}(hhh](j<)}(h0 - port is in STP *DISABLED* state. Make this port completely inactive for STP. This is also called BPDU filter and could be used to disable STP on an untrusted port, like a leaf virtual device. The traffic forwarding is also stopped on this port.h]h)}(h0 - port is in STP *DISABLED* state. Make this port completely inactive for STP. This is also called BPDU filter and could be used to disable STP on an untrusted port, like a leaf virtual device. The traffic forwarding is also stopped on this port.h](h0 - port is in STP }(hjhhhNhNubj )}(h *DISABLED*h]hDISABLED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh state. Make this port completely inactive for STP. This is also called BPDU filter and could be used to disable STP on an untrusted port, like a leaf virtual device. The traffic forwarding is also stopped on this port.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM:hjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h1 - port is in STP *LISTENING* state. Only valid if STP is enabled on the bridge. In this state the port listens for STP BPDUs and drops all other traffic frames.h]h)}(h1 - port is in STP *LISTENING* state. Only valid if STP is enabled on the bridge. In this state the port listens for STP BPDUs and drops all other traffic frames.h](h1 - port is in STP }(hjhhhNhNubj )}(h *LISTENING*h]h LISTENING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh state. Only valid if STP is enabled on the bridge. In this state the port listens for STP BPDUs and drops all other traffic frames.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM>hjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h2 - port is in STP *LEARNING* state. Only valid if STP is enabled on the bridge. In this state the port will accept traffic only for the purpose of updating MAC address tables.h]h)}(h2 - port is in STP *LEARNING* state. Only valid if STP is enabled on the bridge. In this state the port will accept traffic only for the purpose of updating MAC address tables.h](h2 - port is in STP }(hjhhhNhNubj )}(h *LEARNING*h]hLEARNING}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh state. Only valid if STP is enabled on the bridge. In this state the port will accept traffic only for the purpose of updating MAC address tables.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMAhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h<3 - port is in STP *FORWARDING* state. Port is fully active.h]h)}(hj>h](h3 - port is in STP }(hj@hhhNhNubj )}(h *FORWARDING*h]h FORWARDING}(hjGhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj@ubh state. Port is fully active.}(hj@hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMDhj<ubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h4 - port is in STP *BLOCKING* state. Only valid if STP is enabled on the bridge. This state is used during the STP election process. In this state, port will only process STP BPDUs. h]h)}(h4 - port is in STP *BLOCKING* state. Only valid if STP is enabled on the bridge. This state is used during the STP election process. In this state, port will only process STP BPDUs.h](h4 - port is in STP }(hjjhhhNhNubj )}(h *BLOCKING*h]hBLOCKING}(hjrhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjjubh state. Only valid if STP is enabled on the bridge. This state is used during the STP election process. In this state, port will only process STP BPDUs.}(hjjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMEhjfubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jtjuuh1j6hjhM:hjubah}(h]h ]h"]h$]h&]uh1j0hjhM:hjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMGhjubj)}(hX**IFLA_BRPORT_PRIORITY** The STP port priority. The valid values are between 0 and 255. h](j)}(h**IFLA_BRPORT_PRIORITY**h]j)}(hjh]hIFLA_BRPORT_PRIORITY}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMJhjubj;)}(hhh]h)}(h>The STP port priority. The valid values are between 0 and 255.h]h>The STP port priority. The valid values are between 0 and 255.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMJhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMJhjubj)}(h^**IFLA_BRPORT_COST** The STP path cost of the port. The valid values are between 1 and 65535. h](j)}(h**IFLA_BRPORT_COST**h]j)}(hjh]hIFLA_BRPORT_COST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMMhjubj;)}(hhh]h)}(hHThe STP path cost of the port. The valid values are between 1 and 65535.h]hHThe STP path cost of the port. The valid values are between 1 and 65535.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMMhjubj)}(h[**IFLA_BRPORT_MODE** Set the bridge port mode. See *BRIDGE_MODE_HAIRPIN* for more details. h](j)}(h**IFLA_BRPORT_MODE**h]j)}(hj!h]hIFLA_BRPORT_MODE}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMPhjubj;)}(hhh]h)}(hESet the bridge port mode. See *BRIDGE_MODE_HAIRPIN* for more details.h](hSet the bridge port mode. See }(hj:hhhNhNubj )}(h*BRIDGE_MODE_HAIRPIN*h]hBRIDGE_MODE_HAIRPIN}(hjBhhhNhNubah}(h]h ]h"]h$]h&]uh1j hj:ubh for more details.}(hj:hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhj6hMPhj7ubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj6hMPhjubj)}(hX**IFLA_BRPORT_GUARD** Controls whether STP BPDUs will be processed by the bridge port. By default, the flag is turned off to allow BPDU processing. Turning this flag on will disable the bridge port if a STP BPDU packet is received. If the bridge has Spanning Tree enabled, hostile devices on the network may send BPDU on a port and cause network failure. Setting *guard on* will detect and stop this by disabling the port. The port will be restarted if the link is brought down, or removed and reattached. h](j)}(h**IFLA_BRPORT_GUARD**h]j)}(hjlh]hIFLA_BRPORT_GUARD}(hjnhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMZhjfubj;)}(hhh](h)}(hControls whether STP BPDUs will be processed by the bridge port. By default, the flag is turned off to allow BPDU processing. Turning this flag on will disable the bridge port if a STP BPDU packet is received.h]hControls whether STP BPDUs will be processed by the bridge port. By default, the flag is turned off to allow BPDU processing. Turning this flag on will disable the bridge port if a STP BPDU packet is received.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMShjubh)}(hXIf the bridge has Spanning Tree enabled, hostile devices on the network may send BPDU on a port and cause network failure. Setting *guard on* will detect and stop this by disabling the port. The port will be restarted if the link is brought down, or removed and reattached.h](hIf the bridge has Spanning Tree enabled, hostile devices on the network may send BPDU on a port and cause network failure. Setting }(hjhhhNhNubj )}(h *guard on*h]hguard on}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubh will detect and stop this by disabling the port. The port will be restarted if the link is brought down, or removed and reattached.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMWhjubeh}(h]h ]h"]h$]h&]uh1j:hjfubeh}(h]h ]h"]h$]h&]uh1jhjhMZhjubj)}(hX**IFLA_BRPORT_PROTECT** Controls whether a given port is allowed to become a root port or not. Only used when STP is enabled on the bridge. By default the flag is off. This feature is also called root port guard. If BPDU is received from a leaf (edge) port, it should not be elected as root port. This could be used if using STP on a bridge and the downstream bridges are not fully trusted; this prevents a hostile guest from rerouting traffic. h](j)}(h**IFLA_BRPORT_PROTECT**h]j)}(hjh]hIFLA_BRPORT_PROTECT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMchjubj;)}(hhh](h)}(hControls whether a given port is allowed to become a root port or not. Only used when STP is enabled on the bridge. By default the flag is off.h]hControls whether a given port is allowed to become a root port or not. Only used when STP is enabled on the bridge. By default the flag is off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM]hjubh)}(hXThis feature is also called root port guard. If BPDU is received from a leaf (edge) port, it should not be elected as root port. This could be used if using STP on a bridge and the downstream bridges are not fully trusted; this prevents a hostile guest from rerouting traffic.h]hXThis feature is also called root port guard. If BPDU is received from a leaf (edge) port, it should not be elected as root port. This could be used if using STP on a bridge and the downstream bridges are not fully trusted; this prevents a hostile guest from rerouting traffic.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM`hjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMchjubj)}(h**IFLA_BRPORT_FAST_LEAVE** This flag allows the bridge to immediately stop multicast traffic forwarding on a port that receives an IGMP Leave message. It is only used when IGMP snooping is enabled on the bridge. By default the flag is off. h](j)}(h**IFLA_BRPORT_FAST_LEAVE**h]j)}(hjh]hIFLA_BRPORT_FAST_LEAVE}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhhj ubj;)}(hhh]h)}(hThis flag allows the bridge to immediately stop multicast traffic forwarding on a port that receives an IGMP Leave message. It is only used when IGMP snooping is enabled on the bridge. By default the flag is off.h]hThis flag allows the bridge to immediately stop multicast traffic forwarding on a port that receives an IGMP Leave message. It is only used when IGMP snooping is enabled on the bridge. By default the flag is off.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMfhj&ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj%hMhhjubj)}(hX **IFLA_BRPORT_LEARNING** Controls whether a given port will learn *source* MAC addresses from received traffic or not. Also controls whether dynamic FDB entries (which can also be added by software) will be refreshed by incoming traffic. By default this flag is on. h](j)}(h**IFLA_BRPORT_LEARNING**h]j)}(hjJh]hIFLA_BRPORT_LEARNING}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjHubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMnhjDubj;)}(hhh]h)}(hControls whether a given port will learn *source* MAC addresses from received traffic or not. Also controls whether dynamic FDB entries (which can also be added by software) will be refreshed by incoming traffic. By default this flag is on.h](h)Controls whether a given port will learn }(hjchhhNhNubj )}(h*source*h]hsource}(hjkhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjcubh MAC addresses from received traffic or not. Also controls whether dynamic FDB entries (which can also be added by software) will be refreshed by incoming traffic. By default this flag is on.}(hjchhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMkhj`ubah}(h]h ]h"]h$]h&]uh1j:hjDubeh}(h]h ]h"]h$]h&]uh1jhj_hMnhjubj)}(h**IFLA_BRPORT_UNICAST_FLOOD** Controls whether unicast traffic for which there is no FDB entry will be flooded towards this port. By default this flag is on. h](j)}(h**IFLA_BRPORT_UNICAST_FLOOD**h]j)}(hjh]hIFLA_BRPORT_UNICAST_FLOOD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMrhjubj;)}(hhh]h)}(hControls whether unicast traffic for which there is no FDB entry will be flooded towards this port. By default this flag is on.h]hControls whether unicast traffic for which there is no FDB entry will be flooded towards this port. By default this flag is on.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMqhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMrhjubj)}(h8**IFLA_BRPORT_PROXYARP** Enable proxy ARP on this port. h](j)}(h**IFLA_BRPORT_PROXYARP**h]j)}(hjh]hIFLA_BRPORT_PROXYARP}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMuhjubj;)}(hhh]h)}(hEnable proxy ARP on this port.h]hEnable proxy ARP on this port.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMuhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMuhjubj)}(hz**IFLA_BRPORT_LEARNING_SYNC** Controls whether a given port will sync MAC addresses learned on device port to bridge FDB. h](j)}(h**IFLA_BRPORT_LEARNING_SYNC**h]j)}(hj h]hIFLA_BRPORT_LEARNING_SYNC}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMyhjubj;)}(hhh]h)}(h[Controls whether a given port will sync MAC addresses learned on device port to bridge FDB.h]h[Controls whether a given port will sync MAC addresses learned on device port to bridge FDB.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMxhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMyhjubj)}(h**IFLA_BRPORT_PROXYARP_WIFI** Enable proxy ARP on this port which meets extended requirements by IEEE 802.11 and Hotspot 2.0 specifications. h](j)}(h**IFLA_BRPORT_PROXYARP_WIFI**h]j)}(hjCh]hIFLA_BRPORT_PROXYARP_WIFI}(hjEhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjAubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM}hj=ubj;)}(hhh]h)}(hnEnable proxy ARP on this port which meets extended requirements by IEEE 802.11 and Hotspot 2.0 specifications.h]hnEnable proxy ARP on this port which meets extended requirements by IEEE 802.11 and Hotspot 2.0 specifications.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM|hjYubah}(h]h ]h"]h$]h&]uh1j:hj=ubeh}(h]h ]h"]h$]h&]uh1jhjXhM}hjubeh}(h]h ]h"]h$]h&]uh1jhjrhhhNhNubh)}(h**IFLA_BRPORT_ROOT_ID**h]j)}(hjh]hIFLA_BRPORT_ROOT_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj}ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_BRIDGE_ID**h]j)}(hjh]hIFLA_BRPORT_BRIDGE_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_DESIGNATED_PORT**h]j)}(hjh]hIFLA_BRPORT_DESIGNATED_PORT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_DESIGNATED_COST**h]j)}(hjh]hIFLA_BRPORT_DESIGNATED_COST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_ID**h]j)}(hjh]hIFLA_BRPORT_ID}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_NO**h]j)}(hjh]hIFLA_BRPORT_NO}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h#**IFLA_BRPORT_TOPOLOGY_CHANGE_ACK**h]j)}(hjh]hIFLA_BRPORT_TOPOLOGY_CHANGE_ACK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_CONFIG_PENDING**h]j)}(hj'h]hIFLA_BRPORT_CONFIG_PENDING}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj%ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h!**IFLA_BRPORT_MESSAGE_AGE_TIMER**h]j)}(hj?h]hIFLA_BRPORT_MESSAGE_AGE_TIMER}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1jhj=ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h#**IFLA_BRPORT_FORWARD_DELAY_TIMER**h]j)}(hjWh]hIFLA_BRPORT_FORWARD_DELAY_TIMER}(hjYhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjUubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_HOLD_TIMER**h]j)}(hjoh]hIFLA_BRPORT_HOLD_TIMER}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjmubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubj)}(hhh](j)}(h?**IFLA_BRPORT_FLUSH** Flush bridge ports' fdb dynamic entries. h](j)}(h**IFLA_BRPORT_FLUSH**h]j)}(hjh]hIFLA_BRPORT_FLUSH}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(h(Flush bridge ports' fdb dynamic entries.h]h*Flush bridge ports’ fdb dynamic entries.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hX**IFLA_BRPORT_MULTICAST_ROUTER** Configure the port's multicast router presence. A port with a multicast router will receive all multicast traffic. The valid values are: * 0 disable multicast routers on this port * 1 let the system detect the presence of routers (default) * 2 permanently enable multicast traffic forwarding on this port * 3 enable multicast routers temporarily on this port, not depending on incoming queries. h](j)}(h **IFLA_BRPORT_MULTICAST_ROUTER**h]j)}(hjh]hIFLA_BRPORT_MULTICAST_ROUTER}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hConfigure the port's multicast router presence. A port with a multicast router will receive all multicast traffic. The valid values are:h]hConfigure the port’s multicast router presence. A port with a multicast router will receive all multicast traffic. The valid values are:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj1)}(hX* 0 disable multicast routers on this port * 1 let the system detect the presence of routers (default) * 2 permanently enable multicast traffic forwarding on this port * 3 enable multicast routers temporarily on this port, not depending on incoming queries. h]j7)}(hhh](j<)}(h(0 disable multicast routers on this porth]h)}(hjh]h(0 disable multicast routers on this port}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h91 let the system detect the presence of routers (default)h]h)}(hjh]h91 let the system detect the presence of routers (default)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(h>2 permanently enable multicast traffic forwarding on this porth]h)}(hj(h]h>2 permanently enable multicast traffic forwarding on this port}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj&ubah}(h]h ]h"]h$]h&]uh1j;hjubj<)}(hZ3 enable multicast routers temporarily on this port, not depending on incoming queries. h]j)}(hhh]j)}(hX3 enable multicast routers temporarily on this port, not depending on incoming queries. h](j)}(hB3 enable multicast routers temporarily on this port, not dependingh]hB3 enable multicast routers temporarily on this port, not depending}(hjIhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjhMhjEubj;)}(hhh]h)}(hon incoming queries.h]hon incoming queries.}(hjZhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjWubah}(h]h ]h"]h$]h&]uh1j:hjEubeh}(h]h ]h"]h$]h&]uh1jhjhMhjBubah}(h]h ]h"]h$]h&]uh1jhj>ubah}(h]h ]h"]h$]h&]uh1j;hjubeh}(h]h ]h"]h$]h&]jtjuuh1j6hjhMhjubah}(h]h ]h"]h$]h&]uh1j0hjhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjrhhhNhNubh)}(h**IFLA_BRPORT_PAD**h]j)}(hjh]hIFLA_BRPORT_PAD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubj)}(hhh](j)}(h**IFLA_BRPORT_MCAST_FLOOD** Controls whether a given port will flood multicast traffic for which there is no MDB entry. By default this flag is on. h](j)}(h**IFLA_BRPORT_MCAST_FLOOD**h]j)}(hjh]hIFLA_BRPORT_MCAST_FLOOD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(hwControls whether a given port will flood multicast traffic for which there is no MDB entry. By default this flag is on.h]hwControls whether a given port will flood multicast traffic for which there is no MDB entry. By default this flag is on.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hX**IFLA_BRPORT_MCAST_TO_UCAST** Controls whether a given port will replicate packets using unicast instead of multicast. By default this flag is off. This is done by copying the packet per host and changing the multicast destination MAC to a unicast one accordingly. *mcast_to_unicast* works on top of the multicast snooping feature of the bridge. Which means unicast copies are only delivered to hosts which are interested in unicast and signaled this via IGMP/MLD reports previously. This feature is intended for interface types which have a more reliable and/or efficient way to deliver unicast packets than broadcast ones (e.g. WiFi). However, it should only be enabled on interfaces where no IGMPv2/MLDv1 report suppression takes place. IGMP/MLD report suppression issue is usually overcome by the network daemon (supplicant) enabling AP isolation and by that separating all STAs. Delivery of STA-to-STA IP multicast is made possible again by enabling and utilizing the bridge hairpin mode, which considers the incoming port as a potential outgoing port, too (see *BRIDGE_MODE_HAIRPIN* option). Hairpin mode is performed after multicast snooping, therefore leading to only deliver reports to STAs running a multicast router. h](j)}(h**IFLA_BRPORT_MCAST_TO_UCAST**h]j)}(hjh]hIFLA_BRPORT_MCAST_TO_UCAST}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(huControls whether a given port will replicate packets using unicast instead of multicast. By default this flag is off.h]huControls whether a given port will replicate packets using unicast instead of multicast. By default this flag is off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(htThis is done by copying the packet per host and changing the multicast destination MAC to a unicast one accordingly.h]htThis is done by copying the packet per host and changing the multicast destination MAC to a unicast one accordingly.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(h*mcast_to_unicast* works on top of the multicast snooping feature of the bridge. Which means unicast copies are only delivered to hosts which are interested in unicast and signaled this via IGMP/MLD reports previously.h](j )}(h*mcast_to_unicast*h]hmcast_to_unicast}(hj4hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj0ubh works on top of the multicast snooping feature of the bridge. Which means unicast copies are only delivered to hosts which are interested in unicast and signaled this via IGMP/MLD reports previously.}(hj0hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(hThis feature is intended for interface types which have a more reliable and/or efficient way to deliver unicast packets than broadcast ones (e.g. WiFi).h]hThis feature is intended for interface types which have a more reliable and/or efficient way to deliver unicast packets than broadcast ones (e.g. WiFi).}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(hHowever, it should only be enabled on interfaces where no IGMPv2/MLDv1 report suppression takes place. IGMP/MLD report suppression issue is usually overcome by the network daemon (supplicant) enabling AP isolation and by that separating all STAs.h]hHowever, it should only be enabled on interfaces where no IGMPv2/MLDv1 report suppression takes place. IGMP/MLD report suppression issue is usually overcome by the network daemon (supplicant) enabling AP isolation and by that separating all STAs.}(hj\hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(hXWDelivery of STA-to-STA IP multicast is made possible again by enabling and utilizing the bridge hairpin mode, which considers the incoming port as a potential outgoing port, too (see *BRIDGE_MODE_HAIRPIN* option). Hairpin mode is performed after multicast snooping, therefore leading to only deliver reports to STAs running a multicast router.h](hDelivery of STA-to-STA IP multicast is made possible again by enabling and utilizing the bridge hairpin mode, which considers the incoming port as a potential outgoing port, too (see }(hjkhhhNhNubj )}(h*BRIDGE_MODE_HAIRPIN*h]hBRIDGE_MODE_HAIRPIN}(hjshhhNhNubah}(h]h ]h"]h$]h&]uh1j hjkubh option). Hairpin mode is performed after multicast snooping, therefore leading to only deliver reports to STAs running a multicast router.}(hjkhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hy**IFLA_BRPORT_VLAN_TUNNEL** Controls whether vlan to tunnel mapping is enabled on the port. By default this flag is off. h](j)}(h**IFLA_BRPORT_VLAN_TUNNEL**h]j)}(hjh]hIFLA_BRPORT_VLAN_TUNNEL}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(h\Controls whether vlan to tunnel mapping is enabled on the port. By default this flag is off.h]h\Controls whether vlan to tunnel mapping is enabled on the port. By default this flag is off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hr**IFLA_BRPORT_BCAST_FLOOD** Controls flooding of broadcast traffic on the given port. By default this flag is on. h](j)}(h**IFLA_BRPORT_BCAST_FLOOD**h]j)}(hjh]hIFLA_BRPORT_BCAST_FLOOD}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(hUControls flooding of broadcast traffic on the given port. By default this flag is on.h]hUControls flooding of broadcast traffic on the given port. By default this flag is on.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(hX@**IFLA_BRPORT_GROUP_FWD_MASK** Set the group forward mask. This is a bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses. The addresses of the form are 01:80:C2:00:00:0X (defaults to 0, which means the bridge does not forward any link-local frames coming on this port). h](j)}(h**IFLA_BRPORT_GROUP_FWD_MASK**h]j)}(hjh]hIFLA_BRPORT_GROUP_FWD_MASK}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh]h)}(hX Set the group forward mask. This is a bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses. The addresses of the form are 01:80:C2:00:00:0X (defaults to 0, which means the bridge does not forward any link-local frames coming on this port).h]hX Set the group forward mask. This is a bitmask that is applied to decide whether to forward incoming frames destined to link-local addresses. The addresses of the form are 01:80:C2:00:00:0X (defaults to 0, which means the bridge does not forward any link-local frames coming on this port).}(hj+hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj(ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj'hMhjubj)}(h**IFLA_BRPORT_NEIGH_SUPPRESS** Controls whether neighbor discovery (arp and nd) proxy and suppression is enabled on the port. By default this flag is off. h](j)}(h**IFLA_BRPORT_NEIGH_SUPPRESS**h]j)}(hjLh]hIFLA_BRPORT_NEIGH_SUPPRESS}(hjNhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjJubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjFubj;)}(hhh]h)}(h{Controls whether neighbor discovery (arp and nd) proxy and suppression is enabled on the port. By default this flag is off.h]h{Controls whether neighbor discovery (arp and nd) proxy and suppression is enabled on the port. By default this flag is off.}(hjehhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjbubah}(h]h ]h"]h$]h&]uh1j:hjFubeh}(h]h ]h"]h$]h&]uh1jhjahMhjubj)}(h**IFLA_BRPORT_ISOLATED** Controls whether a given port will be isolated, which means it will be able to communicate with non-isolated ports only. By default this flag is off. h](j)}(h**IFLA_BRPORT_ISOLATED**h]j)}(hjh]hIFLA_BRPORT_ISOLATED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(hControls whether a given port will be isolated, which means it will be able to communicate with non-isolated ports only. By default this flag is off.h]hControls whether a given port will be isolated, which means it will be able to communicate with non-isolated ports only. By default this flag is off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubj)}(h**IFLA_BRPORT_BACKUP_PORT** Set a backup port. If the port loses carrier all traffic will be redirected to the configured backup port. Set the value to 0 to disable it. h](j)}(h**IFLA_BRPORT_BACKUP_PORT**h]j)}(hjh]hIFLA_BRPORT_BACKUP_PORT}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh]h)}(hSet a backup port. If the port loses carrier all traffic will be redirected to the configured backup port. Set the value to 0 to disable it.h]hSet a backup port. If the port loses carrier all traffic will be redirected to the configured backup port. Set the value to 0 to disable it.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubah}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhjubeh}(h]h ]h"]h$]h&]uh1jhjrhhhNhNubh)}(h**IFLA_BRPORT_MRP_RING_OPEN**h]j)}(hjh]hIFLA_BRPORT_MRP_RING_OPEN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubh)}(h**IFLA_BRPORT_MRP_IN_OPEN**h]j)}(hjh]hIFLA_BRPORT_MRP_IN_OPEN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubj)}(hhh](j)}(h**IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT** The number of per-port EHT hosts limit. The default value is 512. Setting to 0 is not allowed. h](j)}(h%**IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT**h]j)}(hj3h]h!IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT}(hj5hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj1ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj-ubj;)}(hhh]h)}(h^The number of per-port EHT hosts limit. The default value is 512. Setting to 0 is not allowed.h]h^The number of per-port EHT hosts limit. The default value is 512. Setting to 0 is not allowed.}(hjLhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjIubah}(h]h ]h"]h$]h&]uh1j:hj-ubeh}(h]h ]h"]h$]h&]uh1jhjHhMhj*ubj)}(hT**IFLA_BRPORT_MCAST_EHT_HOSTS_CNT** The current number of tracked hosts, read only. h](j)}(h#**IFLA_BRPORT_MCAST_EHT_HOSTS_CNT**h]j)}(hjmh]hIFLA_BRPORT_MCAST_EHT_HOSTS_CNT}(hjohhhNhNubah}(h]h ]h"]h$]h&]uh1jhjkubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjgubj;)}(hhh]h)}(h/The current number of tracked hosts, read only.h]h/The current number of tracked hosts, read only.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhMhjubah}(h]h ]h"]h$]h&]uh1j:hjgubeh}(h]h ]h"]h$]h&]uh1jhjhMhj*ubj)}(hX9**IFLA_BRPORT_LOCKED** Controls whether a port will be locked, meaning that hosts behind the port will not be able to communicate through the port unless an FDB entry with the unit's MAC address is in the FDB. The common use case is that hosts are allowed access through authentication with the IEEE 802.1X protocol or based on whitelists. By default this flag is off. Please note that secure 802.1X deployments should always use the *BR_BOOLOPT_NO_LL_LEARN* flag, to not permit the bridge to populate its FDB based on link-local (EAPOL) traffic received on the port. h](j)}(h**IFLA_BRPORT_LOCKED**h]j)}(hjh]hIFLA_BRPORT_LOCKED}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hXYControls whether a port will be locked, meaning that hosts behind the port will not be able to communicate through the port unless an FDB entry with the unit's MAC address is in the FDB. The common use case is that hosts are allowed access through authentication with the IEEE 802.1X protocol or based on whitelists. By default this flag is off.h]hX[Controls whether a port will be locked, meaning that hosts behind the port will not be able to communicate through the port unless an FDB entry with the unit’s MAC address is in the FDB. The common use case is that hosts are allowed access through authentication with the IEEE 802.1X protocol or based on whitelists. By default this flag is off.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubh)}(hPlease note that secure 802.1X deployments should always use the *BR_BOOLOPT_NO_LL_LEARN* flag, to not permit the bridge to populate its FDB based on link-local (EAPOL) traffic received on the port.h](hAPlease note that secure 802.1X deployments should always use the }(hjhhhNhNubj )}(h*BR_BOOLOPT_NO_LL_LEARN*h]hBR_BOOLOPT_NO_LL_LEARN}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1j hjubhm flag, to not permit the bridge to populate its FDB based on link-local (EAPOL) traffic received on the port.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhjhMhj*ubj)}(hX5**IFLA_BRPORT_MAB** Controls whether a port will use MAC Authentication Bypass (MAB), a technique through which select MAC addresses may be allowed on a locked port, without using 802.1X authentication. Packets with an unknown source MAC address generates a "locked" FDB entry on the incoming bridge port. The common use case is for user space to react to these bridge FDB notifications and optionally replace the locked FDB entry with a normal one, allowing traffic to pass for whitelisted MAC addresses. Setting this flag also requires *IFLA_BRPORT_LOCKED* and *IFLA_BRPORT_LEARNING*. *IFLA_BRPORT_LOCKED* ensures that unauthorized data packets are dropped, and *IFLA_BRPORT_LEARNING* allows the dynamic FDB entries installed by user space (as replacements for the locked FDB entries) to be refreshed and/or aged out. h](j)}(h**IFLA_BRPORT_MAB**h]j)}(hj h]hIFLA_BRPORT_MAB}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjubj;)}(hhh](h)}(hXControls whether a port will use MAC Authentication Bypass (MAB), a technique through which select MAC addresses may be allowed on a locked port, without using 802.1X authentication. Packets with an unknown source MAC address generates a "locked" FDB entry on the incoming bridge port. The common use case is for user space to react to these bridge FDB notifications and optionally replace the locked FDB entry with a normal one, allowing traffic to pass for whitelisted MAC addresses.h]hXControls whether a port will use MAC Authentication Bypass (MAB), a technique through which select MAC addresses may be allowed on a locked port, without using 802.1X authentication. Packets with an unknown source MAC address generates a “locked” FDB entry on the incoming bridge port. The common use case is for user space to react to these bridge FDB notifications and optionally replace the locked FDB entry with a normal one, allowing traffic to pass for whitelisted MAC addresses.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj ubh)}(hX9Setting this flag also requires *IFLA_BRPORT_LOCKED* and *IFLA_BRPORT_LEARNING*. *IFLA_BRPORT_LOCKED* ensures that unauthorized data packets are dropped, and *IFLA_BRPORT_LEARNING* allows the dynamic FDB entries installed by user space (as replacements for the locked FDB entries) to be refreshed and/or aged out.h](h Setting this flag also requires }(hj) hhhNhNubj )}(h*IFLA_BRPORT_LOCKED*h]hIFLA_BRPORT_LOCKED}(hj1 hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj) ubh and }(hj) hhhNhNubj )}(h*IFLA_BRPORT_LEARNING*h]hIFLA_BRPORT_LEARNING}(hjC hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj) ubh. }(hj) hhhNhNubj )}(h*IFLA_BRPORT_LOCKED*h]hIFLA_BRPORT_LOCKED}(hjU hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj) ubh9 ensures that unauthorized data packets are dropped, and }(hj) hhhNhNubj )}(h*IFLA_BRPORT_LEARNING*h]hIFLA_BRPORT_LEARNING}(hjg hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj) ubh allows the dynamic FDB entries installed by user space (as replacements for the locked FDB entries) to be refreshed and/or aged out.}(hj) hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj ubeh}(h]h ]h"]h$]h&]uh1j:hjubeh}(h]h ]h"]h$]h&]uh1jhj hMhj*ubeh}(h]h ]h"]h$]h&]uh1jhjrhhhNhNubh)}(h**IFLA_BRPORT_MCAST_N_GROUPS**h]j)}(hj h]hIFLA_BRPORT_MCAST_N_GROUPS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjrhhubj)}(hhh](j)}(hXn**IFLA_BRPORT_MCAST_MAX_GROUPS** Sets the maximum number of MDB entries that can be registered for a given port. Attempts to register more MDB entries at the port than this limit allows will be rejected, whether they are done through netlink (e.g. the bridge tool), or IGMP or MLD membership reports. Setting a limit of 0 disables the limit. The default value is 0. h](j)}(h **IFLA_BRPORT_MCAST_MAX_GROUPS**h]j)}(hj h]hIFLA_BRPORT_MCAST_MAX_GROUPS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhM hj ubj;)}(hhh]h)}(hXLSets the maximum number of MDB entries that can be registered for a given port. Attempts to register more MDB entries at the port than this limit allows will be rejected, whether they are done through netlink (e.g. the bridge tool), or IGMP or MLD membership reports. Setting a limit of 0 disables the limit. The default value is 0.h]hXLSets the maximum number of MDB entries that can be registered for a given port. Attempts to register more MDB entries at the port than this limit allows will be rejected, whether they are done through netlink (e.g. the bridge tool), or IGMP or MLD membership reports. Setting a limit of 0 disables the limit. The default value is 0.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj ubah}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj hM hj ubj)}(hX **IFLA_BRPORT_NEIGH_VLAN_SUPPRESS** Controls whether neighbor discovery (arp and nd) proxy and suppression is enabled for a given port. By default this flag is off. Note that this option only takes effect when *IFLA_BRPORT_NEIGH_SUPPRESS* is enabled for a given port. h](j)}(h#**IFLA_BRPORT_NEIGH_VLAN_SUPPRESS**h]j)}(hj h]hIFLA_BRPORT_NEIGH_VLAN_SUPPRESS}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj ubj;)}(hhh](h)}(hControls whether neighbor discovery (arp and nd) proxy and suppression is enabled for a given port. By default this flag is off.h]hControls whether neighbor discovery (arp and nd) proxy and suppression is enabled for a given port. By default this flag is off.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj!ubh)}(hfNote that this option only takes effect when *IFLA_BRPORT_NEIGH_SUPPRESS* is enabled for a given port.h](h-Note that this option only takes effect when }(hj!hhhNhNubj )}(h*IFLA_BRPORT_NEIGH_SUPPRESS*h]hIFLA_BRPORT_NEIGH_SUPPRESS}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj!ubh is enabled for a given port.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj!ubeh}(h]h ]h"]h$]h&]uh1j:hj ubeh}(h]h ]h"]h$]h&]uh1jhj!hMhj ubj)}(hX**IFLA_BRPORT_BACKUP_NHID** The FDB nexthop object ID to attach to packets being redirected to a backup port that has VLAN tunnel mapping enabled (via the *IFLA_BRPORT_VLAN_TUNNEL* option). Setting a value of 0 (default) has the effect of not attaching any ID. h](j)}(h**IFLA_BRPORT_BACKUP_NHID**h]j)}(hjH!h]hIFLA_BRPORT_BACKUP_NHID}(hjJ!hhhNhNubah}(h]h ]h"]h$]h&]uh1jhjF!ubah}(h]h ]h"]h$]h&]uh1jh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhjB!ubj;)}(hhh]h)}(hThe FDB nexthop object ID to attach to packets being redirected to a backup port that has VLAN tunnel mapping enabled (via the *IFLA_BRPORT_VLAN_TUNNEL* option). Setting a value of 0 (default) has the effect of not attaching any ID.h](hThe FDB nexthop object ID to attach to packets being redirected to a backup port that has VLAN tunnel mapping enabled (via the }(hja!hhhNhNubj )}(h*IFLA_BRPORT_VLAN_TUNNEL*h]hIFLA_BRPORT_VLAN_TUNNEL}(hji!hhhNhNubah}(h]h ]h"]h$]h&]uh1j hja!ubhP option). Setting a value of 0 (default) has the effect of not attaching any ID.}(hja!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hh^/var/lib/git/docbuild/linux/Documentation/networking/bridge:41: ./include/uapi/linux/if_link.hhMhj^!ubah}(h]h ]h"]h$]h&]uh1j:hjB!ubeh}(h]h ]h"]h$]h&]uh1jhj]!hMhj ubeh}(h]h ]h"]h$]h&]uh1jhjrhhhNhNubeh}(h]bridge-port-netlink-attributesah ]h"]bridge port netlink attributesah$]h&]uh1hhjhhhhhK'ubh)}(hhh](h)}(h Bridge sysfsh]h Bridge sysfs}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hhhhhK-ubh)}(hVThe sysfs interface is deprecated and should not be extended if new options are added.h]hVThe sysfs interface is deprecated and should not be extended if new options are added.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK/hj!hhubeh}(h] bridge-sysfsah ]h"] bridge sysfsah$]h&]uh1hhjhhhhhK-ubeh}(h] bridge-uapiah ]h"] bridge uapiah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hSTPh]hSTP}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj!hhhhhK3ubh)}(hX#The STP (Spanning Tree Protocol) implementation in the Linux bridge driver is a critical feature that helps prevent loops and broadcast storms in Ethernet networks by identifying and disabling redundant links. In a Linux bridge context, STP is crucial for network stability and availability.h]hX#The STP (Spanning Tree Protocol) implementation in the Linux bridge driver is a critical feature that helps prevent loops and broadcast storms in Ethernet networks by identifying and disabling redundant links. In a Linux bridge context, STP is crucial for network stability and availability.}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hj!hhubh)}(hXWSTP is a Layer 2 protocol that operates at the Data Link Layer of the OSI model. It was originally developed as IEEE 802.1D and has since evolved into multiple versions, including Rapid Spanning Tree Protocol (RSTP) and `Multiple Spanning Tree Protocol (MSTP) `_.h](hSTP is a Layer 2 protocol that operates at the Data Link Layer of the OSI model. It was originally developed as IEEE 802.1D and has since evolved into multiple versions, including Rapid Spanning Tree Protocol (RSTP) and }(hj!hhhNhNubh reference)}(hz`Multiple Spanning Tree Protocol (MSTP) `_h]h&Multiple Spanning Tree Protocol (MSTP)}(hj!hhhNhNubah}(h]h ]h"]h$]h&]name&Multiple Spanning Tree Protocol (MSTP)refuriNhttps://lore.kernel.org/netdev/20220316150857.2442916-1-tobias@waldekranz.com/uh1j!hj!ubhtarget)}(hQ h]h}(h]$multiple-spanning-tree-protocol-mstpah ]h"]&multiple spanning tree protocol (mstp)ah$]h&]refurij"uh1j" referencedKhj!ubh.}(hj!hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK:hj!hhubh)}(hXVThe 802.1D-2004 removed the original Spanning Tree Protocol, instead incorporating the Rapid Spanning Tree Protocol (RSTP). By 2014, all the functionality defined by IEEE 802.1D has been incorporated into either IEEE 802.1Q (Bridges and Bridged Networks) or IEEE 802.1AC (MAC Service Definition). 802.1D has been officially withdrawn in 2022.h]hXVThe 802.1D-2004 removed the original Spanning Tree Protocol, instead incorporating the Rapid Spanning Tree Protocol (RSTP). By 2014, all the functionality defined by IEEE 802.1D has been incorporated into either IEEE 802.1Q (Bridges and Bridged Networks) or IEEE 802.1AC (MAC Service Definition). 802.1D has been officially withdrawn in 2022.}(hj "hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK@hj!hhubh)}(hhh](h)}(hBridge Ports and STP Statesh]hBridge Ports and STP States}(hj1"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj."hhhhhKGubj)}(hhh]j)}(hXIn the context of STP, bridge ports can be in one of the following states: * Blocking: The port is disabled for data traffic and only listens for BPDUs (Bridge Protocol Data Units) from other devices to determine the network topology. * Listening: The port begins to participate in the STP process and listens for BPDUs. * Learning: The port continues to listen for BPDUs and begins to learn MAC addresses from incoming frames but does not forward data frames. * Forwarding: The port is fully operational and forwards both BPDUs and data frames. * Disabled: The port is administratively disabled and does not participate in the STP process. The data frames forwarding are also disabled. h](j)}(hJIn the context of STP, bridge ports can be in one of the following states:h]hJIn the context of STP, bridge ports can be in one of the following states:}(hjF"hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKThjB"ubj;)}(hhh]j7)}(hhh](j<)}(hBlocking: The port is disabled for data traffic and only listens for BPDUs (Bridge Protocol Data Units) from other devices to determine the network topology.h]h)}(hBlocking: The port is disabled for data traffic and only listens for BPDUs (Bridge Protocol Data Units) from other devices to determine the network topology.h]hBlocking: The port is disabled for data traffic and only listens for BPDUs (Bridge Protocol Data Units) from other devices to determine the network topology.}(hj^"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKJhjZ"ubah}(h]h ]h"]h$]h&]uh1j;hjW"ubj<)}(hSListening: The port begins to participate in the STP process and listens for BPDUs.h]h)}(hSListening: The port begins to participate in the STP process and listens for BPDUs.h]hSListening: The port begins to participate in the STP process and listens for BPDUs.}(hjv"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKMhjr"ubah}(h]h ]h"]h$]h&]uh1j;hjW"ubj<)}(hLearning: The port continues to listen for BPDUs and begins to learn MAC addresses from incoming frames but does not forward data frames.h]h)}(hLearning: The port continues to listen for BPDUs and begins to learn MAC addresses from incoming frames but does not forward data frames.h]hLearning: The port continues to listen for BPDUs and begins to learn MAC addresses from incoming frames but does not forward data frames.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKOhj"ubah}(h]h ]h"]h$]h&]uh1j;hjW"ubj<)}(hRForwarding: The port is fully operational and forwards both BPDUs and data frames.h]h)}(hRForwarding: The port is fully operational and forwards both BPDUs and data frames.h]hRForwarding: The port is fully operational and forwards both BPDUs and data frames.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhj"ubah}(h]h ]h"]h$]h&]uh1j;hjW"ubj<)}(hDisabled: The port is administratively disabled and does not participate in the STP process. The data frames forwarding are also disabled. h]h)}(hDisabled: The port is administratively disabled and does not participate in the STP process. The data frames forwarding are also disabled.h]hDisabled: The port is administratively disabled and does not participate in the STP process. The data frames forwarding are also disabled.}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKShj"ubah}(h]h ]h"]h$]h&]uh1j;hjW"ubeh}(h]h ]h"]h$]h&]jtjuuh1j6hhhKJhjT"ubah}(h]h ]h"]h$]h&]uh1j:hjB"ubeh}(h]h ]h"]h$]h&]uh1jhhhKThj?"ubah}(h]h ]h"]h$]h&]uh1jhj."hhhNhNubeh}(h]bridge-ports-and-stp-statesah ]h"]bridge ports and stp statesah$]h&]uh1hhj!hhhhhKGubh)}(hhh](h)}(hRoot Bridge and Convergenceh]hRoot Bridge and Convergence}(hj"hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj"hhhhhKWubh)}(hIn the context of networking and Ethernet bridging in Linux, the root bridge is a designated switch in a bridged network that serves as a reference point for the spanning tree algorithm to create a loop-free topology.h]hIn the context of networking and Ethernet bridging in Linux, the root bridge is a designated switch in a bridged network that serves as a reference point for the spanning tree algorithm to create a loop-free topology.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKYhj"hhubj)}(hhh]j)}(hX Here's how the STP works and root bridge is chosen: 1. Bridge Priority: Each bridge running a spanning tree protocol, has a configurable Bridge Priority value. The lower the value, the higher the priority. By default, the Bridge Priority is set to a standard value (e.g., 32768). 2. Bridge ID: The Bridge ID is composed of two components: Bridge Priority and the MAC address of the bridge. It uniquely identifies each bridge in the network. The Bridge ID is used to compare the priorities of different bridges. 3. Bridge Election: When the network starts, all bridges initially assume that they are the root bridge. They start advertising Bridge Protocol Data Units (BPDU) to their neighbors, containing their Bridge ID and other information. 4. BPDU Comparison: Bridges exchange BPDUs to determine the root bridge. Each bridge examines the received BPDUs, including the Bridge Priority and Bridge ID, to determine if it should adjust its own priorities. The bridge with the lowest Bridge ID will become the root bridge. 5. Root Bridge Announcement: Once the root bridge is determined, it sends BPDUs with information about the root bridge to all other bridges in the network. This information is used by other bridges to calculate the shortest path to the root bridge and, in doing so, create a loop-free topology. 6. Forwarding Ports: After the root bridge is selected and the spanning tree topology is established, each bridge determines which of its ports should be in the forwarding state (used for data traffic) and which should be in the blocking state (used to prevent loops). The root bridge's ports are all in the forwarding state. while other bridges have some ports in the blocking state to avoid loops. 7. Root Ports: After the root bridge is selected and the spanning tree topology is established, each non-root bridge processes incoming BPDUs and determines which of its ports provides the shortest path to the root bridge based on the information in the received BPDUs. This port is designated as the root port. And it is in the Forwarding state, allowing it to actively forward network traffic. 8. Designated ports: A designated port is the port through which the non-root bridge will forward traffic towards the designated segment. Designated ports are placed in the Forwarding state. All other ports on the non-root bridge that are not designated for specific segments are placed in the Blocking state to prevent network loops. h](j)}(h3Here's how the STP works and root bridge is chosen:h]h5Here’s how the STP works and root bridge is chosen:}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1jhhhKhj#ubj;)}(hhh]henumerated_list)}(hhh](j<)}(hBridge Priority: Each bridge running a spanning tree protocol, has a configurable Bridge Priority value. The lower the value, the higher the priority. By default, the Bridge Priority is set to a standard value (e.g., 32768).h]h)}(hBridge Priority: Each bridge running a spanning tree protocol, has a configurable Bridge Priority value. The lower the value, the higher the priority. By default, the Bridge Priority is set to a standard value (e.g., 32768).h]hBridge Priority: Each bridge running a spanning tree protocol, has a configurable Bridge Priority value. The lower the value, the higher the priority. By default, the Bridge Priority is set to a standard value (e.g., 32768).}(hj2#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK^hj.#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hBridge ID: The Bridge ID is composed of two components: Bridge Priority and the MAC address of the bridge. It uniquely identifies each bridge in the network. The Bridge ID is used to compare the priorities of different bridges.h]h)}(hBridge ID: The Bridge ID is composed of two components: Bridge Priority and the MAC address of the bridge. It uniquely identifies each bridge in the network. The Bridge ID is used to compare the priorities of different bridges.h]hBridge ID: The Bridge ID is composed of two components: Bridge Priority and the MAC address of the bridge. It uniquely identifies each bridge in the network. The Bridge ID is used to compare the priorities of different bridges.}(hjJ#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjF#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hBridge Election: When the network starts, all bridges initially assume that they are the root bridge. They start advertising Bridge Protocol Data Units (BPDU) to their neighbors, containing their Bridge ID and other information.h]h)}(hBridge Election: When the network starts, all bridges initially assume that they are the root bridge. They start advertising Bridge Protocol Data Units (BPDU) to their neighbors, containing their Bridge ID and other information.h]hBridge Election: When the network starts, all bridges initially assume that they are the root bridge. They start advertising Bridge Protocol Data Units (BPDU) to their neighbors, containing their Bridge ID and other information.}(hjb#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhj^#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hXBPDU Comparison: Bridges exchange BPDUs to determine the root bridge. Each bridge examines the received BPDUs, including the Bridge Priority and Bridge ID, to determine if it should adjust its own priorities. The bridge with the lowest Bridge ID will become the root bridge.h]h)}(hXBPDU Comparison: Bridges exchange BPDUs to determine the root bridge. Each bridge examines the received BPDUs, including the Bridge Priority and Bridge ID, to determine if it should adjust its own priorities. The bridge with the lowest Bridge ID will become the root bridge.h]hXBPDU Comparison: Bridges exchange BPDUs to determine the root bridge. Each bridge examines the received BPDUs, including the Bridge Priority and Bridge ID, to determine if it should adjust its own priorities. The bridge with the lowest Bridge ID will become the root bridge.}(hjz#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKjhjv#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hX#Root Bridge Announcement: Once the root bridge is determined, it sends BPDUs with information about the root bridge to all other bridges in the network. This information is used by other bridges to calculate the shortest path to the root bridge and, in doing so, create a loop-free topology.h]h)}(hX#Root Bridge Announcement: Once the root bridge is determined, it sends BPDUs with information about the root bridge to all other bridges in the network. This information is used by other bridges to calculate the shortest path to the root bridge and, in doing so, create a loop-free topology.h]hX#Root Bridge Announcement: Once the root bridge is determined, it sends BPDUs with information about the root bridge to all other bridges in the network. This information is used by other bridges to calculate the shortest path to the root bridge and, in doing so, create a loop-free topology.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKnhj#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hXForwarding Ports: After the root bridge is selected and the spanning tree topology is established, each bridge determines which of its ports should be in the forwarding state (used for data traffic) and which should be in the blocking state (used to prevent loops). The root bridge's ports are all in the forwarding state. while other bridges have some ports in the blocking state to avoid loops.h]h)}(hXForwarding Ports: After the root bridge is selected and the spanning tree topology is established, each bridge determines which of its ports should be in the forwarding state (used for data traffic) and which should be in the blocking state (used to prevent loops). The root bridge's ports are all in the forwarding state. while other bridges have some ports in the blocking state to avoid loops.h]hXForwarding Ports: After the root bridge is selected and the spanning tree topology is established, each bridge determines which of its ports should be in the forwarding state (used for data traffic) and which should be in the blocking state (used to prevent loops). The root bridge’s ports are all in the forwarding state. while other bridges have some ports in the blocking state to avoid loops.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshj#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hXRoot Ports: After the root bridge is selected and the spanning tree topology is established, each non-root bridge processes incoming BPDUs and determines which of its ports provides the shortest path to the root bridge based on the information in the received BPDUs. This port is designated as the root port. And it is in the Forwarding state, allowing it to actively forward network traffic.h]h)}(hXRoot Ports: After the root bridge is selected and the spanning tree topology is established, each non-root bridge processes incoming BPDUs and determines which of its ports provides the shortest path to the root bridge based on the information in the received BPDUs. This port is designated as the root port. And it is in the Forwarding state, allowing it to actively forward network traffic.h]hXRoot Ports: After the root bridge is selected and the spanning tree topology is established, each non-root bridge processes incoming BPDUs and determines which of its ports provides the shortest path to the root bridge based on the information in the received BPDUs. This port is designated as the root port. And it is in the Forwarding state, allowing it to actively forward network traffic.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhj#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubj<)}(hXLDesignated ports: A designated port is the port through which the non-root bridge will forward traffic towards the designated segment. Designated ports are placed in the Forwarding state. All other ports on the non-root bridge that are not designated for specific segments are placed in the Blocking state to prevent network loops. h]h)}(hXKDesignated ports: A designated port is the port through which the non-root bridge will forward traffic towards the designated segment. Designated ports are placed in the Forwarding state. All other ports on the non-root bridge that are not designated for specific segments are placed in the Blocking state to prevent network loops.h]hXKDesignated ports: A designated port is the port through which the non-root bridge will forward traffic towards the designated segment. Designated ports are placed in the Forwarding state. All other ports on the non-root bridge that are not designated for specific segments are placed in the Blocking state to prevent network loops.}(hj#hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj#ubah}(h]h ]h"]h$]h&]uh1j;hj+#ubeh}(h]h ]h"]h$]h&]enumtypearabicprefixhsuffix.uh1j)#hj&#ubah}(h]h ]h"]h$]h&]uh1j:hj#ubeh}(h]h ]h"]h$]h&]uh1jhhhKhj#ubah}(h]h ]h"]h$]h&]uh1jhj"hhhNhNubh)}(hSTP ensures network convergence by calculating the shortest path and disabling redundant links. When network topology changes occur (e.g., a link failure), STP recalculates the network topology to restore connectivity while avoiding loops.h]hSTP ensures network convergence by calculating the shortest path and disabling redundant links. When network topology changes occur (e.g., a link failure), STP recalculates the network topology to restore connectivity while avoiding loops.}(hj $hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj"hhubh)}(hProper configuration of STP parameters, such as the bridge priority, can influence network performance, path selection and which bridge becomes the Root Bridge.h]hProper configuration of STP parameters, such as the bridge priority, can influence network performance, path selection and which bridge becomes the Root Bridge.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj"hhubeh}(h]root-bridge-and-convergenceah ]h"]root bridge and convergenceah$]h&]uh1hhj!hhhhhKWubh)}(hhh](h)}(hUser space STP helperh]hUser space STP helper}(hj2$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj/$hhhhhKubh)}(hXThe user space STP helper *bridge-stp* is a program to control whether to use user mode spanning tree. The ``/sbin/bridge-stp `` is called by the kernel when STP is enabled/disabled on a bridge (via ``brctl stp `` or ``ip link set type bridge stp_state <0|1>``). The kernel enables user_stp mode if that command returns 0, or enables kernel_stp mode if that command returns any other value.h](hThe user space STP helper }(hj@$hhhNhNubj )}(h *bridge-stp*h]h bridge-stp}(hjH$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj@$ubhE is a program to control whether to use user mode spanning tree. The }(hj@$hhhNhNubj%)}(h*``/sbin/bridge-stp ``h]h&/sbin/bridge-stp }(hjZ$hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj@$ubhG is called by the kernel when STP is enabled/disabled on a bridge (via }(hj@$hhhNhNubj%)}(h``brctl stp ``h]hbrctl stp }(hjl$hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj@$ubh or }(hj@$hhhNhNubj%)}(h4``ip link set type bridge stp_state <0|1>``h]h0ip link set type bridge stp_state <0|1>}(hj~$hhhNhNubah}(h]h ]h"]h$]h&]uh1j$hj@$ubh). The kernel enables user_stp mode if that command returns 0, or enables kernel_stp mode if that command returns any other value.}(hj@$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj/$hhubeh}(h]user-space-stp-helperah ]h"]user space stp helperah$]h&]uh1hhj!hhhhhKubeh}(h]stpah ]h"]stpah$]h&]uh1hhhhhhhhK3ubh)}(hhh](h)}(hVLANh]hVLAN}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj$hhhhhKubh)}(hX-A LAN (Local Area Network) is a network that covers a small geographic area, typically within a single building or a campus. LANs are used to connect computers, servers, printers, and other networked devices within a localized area. LANs can be wired (using Ethernet cables) or wireless (using Wi-Fi).h]hX-A LAN (Local Area Network) is a network that covers a small geographic area, typically within a single building or a campus. LANs are used to connect computers, servers, printers, and other networked devices within a localized area. LANs can be wired (using Ethernet cables) or wireless (using Wi-Fi).}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$hhubh)}(hX+A VLAN (Virtual Local Area Network) is a logical segmentation of a physical network into multiple isolated broadcast domains. VLANs are used to divide a single physical LAN into multiple virtual LANs, allowing different groups of devices to communicate as if they were on separate physical networks.h]hX+A VLAN (Virtual Local Area Network) is a logical segmentation of a physical network into multiple isolated broadcast domains. VLANs are used to divide a single physical LAN into multiple virtual LANs, allowing different groups of devices to communicate as if they were on separate physical networks.}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj$hhubh)}(hXTypically there are two VLAN implementations, IEEE 802.1Q and IEEE 802.1ad (also known as QinQ). IEEE 802.1Q is a standard for VLAN tagging in Ethernet networks. It allows network administrators to create logical VLANs on a physical network and tag Ethernet frames with VLAN information, which is called *VLAN-tagged frames*. IEEE 802.1ad, commonly known as QinQ or Double VLAN, is an extension of the IEEE 802.1Q standard. QinQ allows for the stacking of multiple VLAN tags within a single Ethernet frame. The Linux bridge supports both the IEEE 802.1Q and `802.1AD `_ protocol for VLAN tagging.h](hX0Typically there are two VLAN implementations, IEEE 802.1Q and IEEE 802.1ad (also known as QinQ). IEEE 802.1Q is a standard for VLAN tagging in Ethernet networks. It allows network administrators to create logical VLANs on a physical network and tag Ethernet frames with VLAN information, which is called }(hj$hhhNhNubj )}(h*VLAN-tagged frames*h]hVLAN-tagged frames}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj$ubh. IEEE 802.1ad, commonly known as QinQ or Double VLAN, is an extension of the IEEE 802.1Q standard. QinQ allows for the stacking of multiple VLAN tags within a single Ethernet frame. The Linux bridge supports both the IEEE 802.1Q and }(hj$hhhNhNubj!)}(hl`802.1AD `_h]h802.1AD}(hj$hhhNhNubah}(h]h ]h"]h$]h&]name802.1ADj"_https://lore.kernel.org/netdev/1402401565-15423-1-git-send-email-makita.toshiaki@lab.ntt.co.jp/uh1j!hj$ubj")}(hb h]h}(h]adah ]h"]802.1adah$]h&]refurij$uh1j"j"Khj$ubh protocol for VLAN tagging.}(hj$hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj$hhubh)}(hX;`VLAN filtering `_ on a bridge is disabled by default. After enabling VLAN filtering on a bridge, it will start forwarding frames to appropriate destinations based on their destination MAC address and VLAN tag (both must match).h](j!)}(hi`VLAN filtering `_h]hVLAN filtering}(hj%hhhNhNubah}(h]h ]h"]h$]h&]nameVLAN filteringj"Uhttps://lore.kernel.org/netdev/1360792820-14116-1-git-send-email-vyasevic@redhat.com/uh1j!hj%ubj")}(hX h]h}(h]vlan-filteringah ]h"]vlan filteringah$]h&]refurij)%uh1j"j"Khj%ubh on a bridge is disabled by default. After enabling VLAN filtering on a bridge, it will start forwarding frames to appropriate destinations based on their destination MAC address and VLAN tag (both must match).}(hj%hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj$hhubeh}(h]vlanah ]h"]vlanah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Multicasth]h Multicast}(hjL%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI%hhhhhKubh)}(hX The Linux bridge driver has multicast support allowing it to process Internet Group Management Protocol (IGMP) or Multicast Listener Discovery (MLD) messages, and to efficiently forward multicast data packets. The bridge driver supports IGMPv2/IGMPv3 and MLDv1/MLDv2.h]hX The Linux bridge driver has multicast support allowing it to process Internet Group Management Protocol (IGMP) or Multicast Listener Discovery (MLD) messages, and to efficiently forward multicast data packets. The bridge driver supports IGMPv2/IGMPv3 and MLDv1/MLDv2.}(hjZ%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjI%hhubh)}(hhh](h)}(hMulticast snoopingh]hMulticast snooping}(hjk%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjh%hhhhhKubh)}(hMulticast snooping is a networking technology that allows network switches to intelligently manage multicast traffic within a local area network (LAN).h]hMulticast snooping is a networking technology that allows network switches to intelligently manage multicast traffic within a local area network (LAN).}(hjy%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjh%hhubh)}(hXCThe switch maintains a multicast group table, which records the association between multicast group addresses and the ports where hosts have joined these groups. The group table is dynamically updated based on the IGMP/MLD messages received. With the multicast group information gathered through snooping, the switch optimizes the forwarding of multicast traffic. Instead of blindly broadcasting the multicast traffic to all ports, it sends the multicast traffic based on the destination MAC address only to ports which have subscribed the respective destination multicast group.h]hXCThe switch maintains a multicast group table, which records the association between multicast group addresses and the ports where hosts have joined these groups. The group table is dynamically updated based on the IGMP/MLD messages received. With the multicast group information gathered through snooping, the switch optimizes the forwarding of multicast traffic. Instead of blindly broadcasting the multicast traffic to all ports, it sends the multicast traffic based on the destination MAC address only to ports which have subscribed the respective destination multicast group.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjh%hhubh)}(hWhen created, the Linux bridge devices have multicast snooping enabled by default. It maintains a Multicast forwarding database (MDB) which keeps track of port and group relationships.h]hWhen created, the Linux bridge devices have multicast snooping enabled by default. It maintains a Multicast forwarding database (MDB) which keeps track of port and group relationships.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjh%hhubeh}(h]multicast-snoopingah ]h"]multicast snoopingah$]h&]uh1hhjI%hhhhhKubh)}(hhh](h)}(hIGMPv3/MLDv2 EHT supporth]hIGMPv3/MLDv2 EHT support}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj%hhhhhKubh)}(hThe Linux bridge supports IGMPv3/MLDv2 EHT (Explicit Host Tracking), which was added by `474ddb37fa3a ("net: bridge: multicast: add EHT allow/block handling") `_h](hXThe Linux bridge supports IGMPv3/MLDv2 EHT (Explicit Host Tracking), which was added by }(hj%hhhNhNubj!)}(h`474ddb37fa3a ("net: bridge: multicast: add EHT allow/block handling") `_h]hI474ddb37fa3a (“net: bridge: multicast: add EHT allow/block handling”)}(hj%hhhNhNubah}(h]h ]h"]h$]h&]nameE474ddb37fa3a ("net: bridge: multicast: add EHT allow/block handling")j"Lhttps://lore.kernel.org/netdev/20210120145203.1109140-1-razor@blackwall.org/uh1j!hj%ubj")}(hO h]h}(h];ddb37fa3a-net-bridge-multicast-add-eht-allow-block-handlingah ]h"]E474ddb37fa3a ("net: bridge: multicast: add eht allow/block handling")ah$]h&]refurij%uh1j"j"Khj%ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubh)}(hXThe explicit host tracking enables the device to keep track of each individual host that is joined to a particular group or channel. The main benefit of the explicit host tracking in IGMP is to allow minimal leave latencies when a host leaves a multicast group or channel.h]hXThe explicit host tracking enables the device to keep track of each individual host that is joined to a particular group or channel. The main benefit of the explicit host tracking in IGMP is to allow minimal leave latencies when a host leaves a multicast group or channel.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubh)}(hXThe length of time between a host wanting to leave and a device stopping traffic forwarding is called the IGMP leave latency. A device configured with IGMPv3 or MLDv2 and explicit tracking can immediately stop forwarding traffic if the last host to request to receive traffic from the device indicates that it no longer wants to receive traffic. The leave latency is thus bound only by the packet transmission latencies in the multiaccess network and the processing time in the device.h]hXThe length of time between a host wanting to leave and a device stopping traffic forwarding is called the IGMP leave latency. A device configured with IGMPv3 or MLDv2 and explicit tracking can immediately stop forwarding traffic if the last host to request to receive traffic from the device indicates that it no longer wants to receive traffic. The leave latency is thus bound only by the packet transmission latencies in the multiaccess network and the processing time in the device.}(hj%hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj%hhubeh}(h]igmpv3-mldv2-eht-supportah ]h"]igmpv3/mldv2 eht supportah$]h&]uh1hhjI%hhhhhKubh)}(hhh](h)}(hOther multicast featuresh]hOther multicast features}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj &hhhhhKubh)}(hXhThe Linux bridge also supports `per-VLAN multicast snooping `_, which is disabled by default but can be enabled. And `Multicast Router Discovery `_, which help identify the location of multicast routers.h](hThe Linux bridge also supports }(hj&hhhNhNubj!)}(hl`per-VLAN multicast snooping `_h]hper-VLAN multicast snooping}(hj%&hhhNhNubah}(h]h ]h"]h$]h&]nameper-VLAN multicast snoopingj"Khttps://lore.kernel.org/netdev/20210719170637.435541-1-razor@blackwall.org/uh1j!hj&ubj")}(hN h]h}(h]per-vlan-multicast-snoopingah ]h"]per-vlan multicast snoopingah$]h&]refurij5&uh1j"j"Khj&ubh7, which is disabled by default but can be enabled. And }(hj&hhhNhNubj!)}(hn`Multicast Router Discovery `_h]hMulticast Router Discovery}(hjG&hhhNhNubah}(h]h ]h"]h$]h&]nameMulticast Router Discoveryj"Nhttps://lore.kernel.org/netdev/20190121062628.2710-1-linus.luessing@c0d3.blue/uh1j!hj&ubj")}(hQ h]h}(h]multicast-router-discoveryah ]h"]multicast router discoveryah$]h&]refurijW&uh1j"j"Khj&ubh8, which help identify the location of multicast routers.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj &hhubeh}(h]other-multicast-featuresah ]h"]other multicast featuresah$]h&]uh1hhjI%hhhhhKubeh}(h] multicastah ]h"] multicastah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Switchdevh]h Switchdev}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hhhhhKubh)}(hXLinux Bridge Switchdev is a feature in the Linux kernel that extends the capabilities of the traditional Linux bridge to work more efficiently with hardware switches that support switchdev. With Linux Bridge Switchdev, certain networking functions like forwarding, filtering, and learning of Ethernet frames can be offloaded to a hardware switch. This offloading reduces the burden on the Linux kernel and CPU, leading to improved network performance and lower latency.h]hXLinux Bridge Switchdev is a feature in the Linux kernel that extends the capabilities of the traditional Linux bridge to work more efficiently with hardware switches that support switchdev. With Linux Bridge Switchdev, certain networking functions like forwarding, filtering, and learning of Ethernet frames can be offloaded to a hardware switch. This offloading reduces the burden on the Linux kernel and CPU, leading to improved network performance and lower latency.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj&hhubh)}(hTo use Linux Bridge Switchdev, you need hardware switches that support the switchdev interface. This means that the switch hardware needs to have the necessary drivers and functionality to work in conjunction with the Linux kernel.h]hTo use Linux Bridge Switchdev, you need hardware switches that support the switchdev interface. This means that the switch hardware needs to have the necessary drivers and functionality to work in conjunction with the Linux kernel.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj&hhubh)}(h:Please see the :ref:`switchdev` document for more details.h](hPlease see the }(hj&hhhNhNubh)}(h:ref:`switchdev`h]hinline)}(hj&h]h switchdev}(hj&hhhNhNubah}(h]h ](xrefstdstd-refeh"]h$]h&]uh1j&hj&ubah}(h]h ]h"]h$]h&]refdocnetworking/bridge refdomainj&reftyperef refexplicitrefwarn reftarget switchdevuh1hhhhKhj&ubh document for more details.}(hj&hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhj&hhubeh}(h] switchdevah ]h"] switchdevah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Netfilterh]h Netfilter}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj&hhhhhKubh)}(hThe bridge netfilter module is a legacy feature that allows to filter bridged packets with iptables and ip6tables. Its use is discouraged. Users should consider using nftables for packet filtering.h]hThe bridge netfilter module is a legacy feature that allows to filter bridged packets with iptables and ip6tables. Its use is discouraged. Users should consider using nftables for packet filtering.}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hThe older ebtables tool is more feature-limited compared to nftables, but just like nftables it doesn't need this module either to function.h]hThe older ebtables tool is more feature-limited compared to nftables, but just like nftables it doesn’t need this module either to function.}(hj 'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hX@The br_netfilter module intercepts packets entering the bridge, performs minimal sanity tests on ipv4 and ipv6 packets and then pretends that these packets are being routed, not bridged. br_netfilter then calls the ip and ipv6 netfilter hooks from the bridge layer, i.e. ip(6)tables rulesets will also see these packets.h]hX@The br_netfilter module intercepts packets entering the bridge, performs minimal sanity tests on ipv4 and ipv6 packets and then pretends that these packets are being routed, not bridged. br_netfilter then calls the ip and ipv6 netfilter hooks from the bridge layer, i.e. ip(6)tables rulesets will also see these packets.}(hj'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hbr_netfilter is also the reason for the iptables *physdev* match: This match is the only way to reliably tell routed and bridged packets apart in an iptables ruleset.h](h1br_netfilter is also the reason for the iptables }(hj&'hhhNhNubj )}(h *physdev*h]hphysdev}(hj.'hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj&'ubhl match: This match is the only way to reliably tell routed and bridged packets apart in an iptables ruleset.}(hj&'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hX>Note that ebtables and nftables will work fine without the br_netfilter module. iptables/ip6tables/arptables do not work for bridged traffic because they plug in the routing stack. nftables rules in ip/ip6/inet/arp families won't see traffic that is forwarded by a bridge either, but that's very much how it should be.h]hXBNote that ebtables and nftables will work fine without the br_netfilter module. iptables/ip6tables/arptables do not work for bridged traffic because they plug in the routing stack. nftables rules in ip/ip6/inet/arp families won’t see traffic that is forwarded by a bridge either, but that’s very much how it should be.}(hjF'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hXHistorically the feature set of ebtables was very limited (it still is), this module was added to pretend packets are routed and invoke the ipv4/ipv6 netfilter hooks from the bridge so users had access to the more feature-rich iptables matching capabilities (including conntrack). nftables doesn't have this limitation, pretty much all features work regardless of the protocol family.h]hXHistorically the feature set of ebtables was very limited (it still is), this module was added to pretend packets are routed and invoke the ipv4/ipv6 netfilter hooks from the bridge so users had access to the more feature-rich iptables matching capabilities (including conntrack). nftables doesn’t have this limitation, pretty much all features work regardless of the protocol family.}(hjT'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubh)}(hSo, br_netfilter is only needed if users, for some reason, need to use ip(6)tables to filter packets forwarded by the bridge, or NAT bridged traffic. For pure link layer filtering, this module isn't needed.h]hSo, br_netfilter is only needed if users, for some reason, need to use ip(6)tables to filter packets forwarded by the bridge, or NAT bridged traffic. For pure link layer filtering, this module isn’t needed.}(hjb'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhMhj&hhubeh}(h] netfilterah ]h"] netfilterah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(hOther Featuresh]hOther Features}(hj{'hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjx'hhhhhM#ubh)}(hXThe Linux bridge also supports `IEEE 802.11 Proxy ARP `_, `Media Redundancy Protocol (MRP) `_, `Media Redundancy Protocol (MRP) LC mode `_, `IEEE 802.1X port authentication `_, and `MAC Authentication Bypass (MAB) `_.h](hThe Linux bridge also supports }(hj'hhhNhNubj!)}(h`IEEE 802.11 Proxy ARP `_h]hIEEE 802.11 Proxy ARP}(hj'hhhNhNubah}(h]h ]h"]h$]h&]nameIEEE 802.11 Proxy ARPj"vhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=958501163ddd6ea22a98f94fa0e7ce6d4734e5c4uh1j!hj'ubj")}(hy h]h}(h]ieee-802-11-proxy-arpah ]h"]ieee 802.11 proxy arpah$]h&]refurij'uh1j"j"Khj'ubh, }(hj'hhhNhNubj!)}(hw`Media Redundancy Protocol (MRP) `_h]hMedia Redundancy Protocol (MRP)}(hj'hhhNhNubah}(h]h ]h"]h$]h&]nameMedia Redundancy Protocol (MRP)j"Rhttps://lore.kernel.org/netdev/20200426132208.3232-1-horatiu.vultur@microchip.com/uh1j!hj'ubj")}(hU h]h}(h]media-redundancy-protocol-mrpah ]h"]media redundancy protocol (mrp)ah$]h&]refurij'uh1j"j"Khj'ubh, }hj'sbj!)}(h{`Media Redundancy Protocol (MRP) LC mode `_h]h'Media Redundancy Protocol (MRP) LC mode}(hj'hhhNhNubah}(h]h ]h"]h$]h&]name'Media Redundancy Protocol (MRP) LC modej"Nhttps://lore.kernel.org/r/20201124082525.273820-1-horatiu.vultur@microchip.comuh1j!hj'ubj")}(hQ h]h}(h]%media-redundancy-protocol-mrp-lc-modeah ]h"]'media redundancy protocol (mrp) lc modeah$]h&]refurij'uh1j"j"Khj'ubh, }hj'sbj!)}(h{`IEEE 802.1X port authentication `_h]hIEEE 802.1X port authentication}(hj'hhhNhNubah}(h]h ]h"]h$]h&]nameIEEE 802.1X port authenticationj"Vhttps://lore.kernel.org/netdev/20220218155148.2329797-1-schultz.hans+netdev@gmail.com/uh1j!hj'ubj")}(hY h]h}(h]ieee-802-1x-port-authenticationah ]h"]ieee 802.1x port authenticationah$]h&]refurij(uh1j"j"Khj'ubh, and }(hj'hhhNhNubj!)}(ho`MAC Authentication Bypass (MAB) `_h]hMAC Authentication Bypass (MAB)}(hj(hhhNhNubah}(h]h ]h"]h$]h&]nameMAC Authentication Bypass (MAB)j"Jhttps://lore.kernel.org/netdev/20221101193922.2125323-2-idosch@nvidia.com/uh1j!hj'ubj")}(hM h]h}(h]mac-authentication-bypass-mabah ]h"]mac authentication bypass (mab)ah$]h&]refurij)(uh1j"j"Khj'ubh.}(hj'hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM%hjx'hhubeh}(h]other-featuresah ]h"]other featuresah$]h&]uh1hhhhhhhhM#ubh)}(hhh](h)}(hFAQh]hFAQ}(hjL(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjI(hhhhhM1ubh)}(hhh](h)}(hWhat does a bridge do?h]hWhat does a bridge do?}(hj](hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjZ(hhhhhM4ubh)}(hA bridge transparently forwards traffic between multiple network interfaces. In plain English this means that a bridge connects two or more physical Ethernet networks, to form one larger (logical) Ethernet network.h]hA bridge transparently forwards traffic between multiple network interfaces. In plain English this means that a bridge connects two or more physical Ethernet networks, to form one larger (logical) Ethernet network.}(hjk(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhM6hjZ(hhubeh}(h]what-does-a-bridge-doah ]h"]what does a bridge do?ah$]h&]uh1hhjI(hhhhhM4ubh)}(hhh](h)}(hIs it L3 protocol independent?h]hIs it L3 protocol independent?}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhM;ubh)}(hYes. The bridge sees all frames, but it *uses* only L2 headers/information. As such, the bridging functionality is protocol independent, and there should be no trouble forwarding IPX, NetBEUI, IP, IPv6, etc.h](h(Yes. The bridge sees all frames, but it }(hj(hhhNhNubj )}(h*uses*h]huses}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1j hj(ubh only L2 headers/information. As such, the bridging functionality is protocol independent, and there should be no trouble forwarding IPX, NetBEUI, IP, IPv6, etc.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhM=hj(hhubeh}(h]is-it-l3-protocol-independentah ]h"]is it l3 protocol independent?ah$]h&]uh1hhjI(hhhhhM;ubeh}(h]faqah ]h"]faqah$]h&]uh1hhhhhhhhM1ubh)}(hhh](h)}(h Contact Infoh]h Contact Info}(hj(hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj(hhhhhMBubh)}(hThe code is currently maintained by Roopa Prabhu and Nikolay Aleksandrov . Bridge bugs and enhancements are discussed on the linux-netdev mailing list netdev@vger.kernel.org and bridge@lists.linux.dev.h](h2The code is currently maintained by Roopa Prabhu <}(hj(hhhNhNubj!)}(hroopa@nvidia.comh]hroopa@nvidia.com}(hj(hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:roopa@nvidia.comuh1j!hj(ubh> and Nikolay Aleksandrov <}(hj(hhhNhNubj!)}(hrazor@blackwall.orgh]hrazor@blackwall.org}(hj(hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:razor@blackwall.orguh1j!hj(ubhO>. Bridge bugs and enhancements are discussed on the linux-netdev mailing list }(hj(hhhNhNubj!)}(hnetdev@vger.kernel.orgh]hnetdev@vger.kernel.org}(hj)hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:netdev@vger.kernel.orguh1j!hj(ubh and }(hj(hhhNhNubj!)}(hbridge@lists.linux.devh]hbridge@lists.linux.dev}(hj)hhhNhNubah}(h]h ]h"]h$]h&]refurimailto:bridge@lists.linux.devuh1j!hj(ubh.}(hj(hhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhMDhj(hhubh)}(hTThe list is open to anyone interested: http://vger.kernel.org/vger-lists.html#netdevh](h'The list is open to anyone interested: }(hj1)hhhNhNubj!)}(h-http://vger.kernel.org/vger-lists.html#netdevh]h-http://vger.kernel.org/vger-lists.html#netdev}(hj9)hhhNhNubah}(h]h ]h"]h$]h&]refurij;)uh1j!hj1)ubeh}(h]h ]h"]h$]h&]uh1hhhhMIhj(hhubeh}(h] contact-infoah ]h"] contact infoah$]h&]uh1hhhhhhhhMBubh)}(hhh](h)}(hExternal Linksh]hExternal Links}(hjY)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjV)hhhhhMLubh)}(hbThe old Documentation for Linux bridging is on: https://wiki.linuxfoundation.org/networking/bridgeh](h0The old Documentation for Linux bridging is on: }(hjg)hhhNhNubj!)}(h2https://wiki.linuxfoundation.org/networking/bridgeh]h2https://wiki.linuxfoundation.org/networking/bridge}(hjo)hhhNhNubah}(h]h ]h"]h$]h&]refurijq)uh1j!hjg)ubeh}(h]h ]h"]h$]h&]uh1hhhhMNhjV)hhubeh}(h]external-linksah ]h"]external linksah$]h&]uh1hhhhhhhhMLubeh}(h]ethernet-bridgingah ]h"]ethernet bridgingah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj)error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(j)j)hhjjj!j!jojlj!j!j!j!j$j$j"j"j"j"j,$j)$j$j$jF%jC%j%j%j3%j0%j|&jy&j%j%j &j&j%j%jt&jq&j?&j<&ja&j^&j&j&ju'jr'jF(jC(j'j'j'j'j'j'j(j(j3(j0(j(j(j~(j{(j(j(jS)jP)j)j)u nametypes}(j)hjj!joj!j!j$j"j"j,$j$jF%j%j3%j|&j%j &j%jt&j?&ja&j&ju'jF(j'j'j'j(j3(j(j~(j(jS)j)uh}(j)hhhjhj4j>j!jjljj!jrj!j!j$j!j"j"j"j."j)$j"j$j/$jC%j$j%j$j0%j*%jy&jI%j%jh%j&j%j%j%jq&j &j<&j6&j^&jX&j&j&jr'j&jC(jx'j'j'j'j'j'j'j(j(j0(j*(j(jI(j{(jZ(j(j(jP)j(j)jV)u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.