1*53ee8cc1Swenshuai.xi /* 2*53ee8cc1Swenshuai.xi * Linux ethernet bridge 3*53ee8cc1Swenshuai.xi * 4*53ee8cc1Swenshuai.xi * Authors: 5*53ee8cc1Swenshuai.xi * Lennert Buytenhek <buytenh@gnu.org> 6*53ee8cc1Swenshuai.xi * 7*53ee8cc1Swenshuai.xi * $Id: if_bridge.h,v 1.1 2000/02/18 16:47:01 davem Exp $ 8*53ee8cc1Swenshuai.xi * 9*53ee8cc1Swenshuai.xi * This program is free software; you can redistribute it and/or 10*53ee8cc1Swenshuai.xi * modify it under the terms of the GNU General Public License 11*53ee8cc1Swenshuai.xi * as published by the Free Software Foundation; either version 12*53ee8cc1Swenshuai.xi * 2 of the License, or (at your option) any later version. 13*53ee8cc1Swenshuai.xi */ 14*53ee8cc1Swenshuai.xi 15*53ee8cc1Swenshuai.xi #ifndef _LINUX_IF_BRIDGE_H 16*53ee8cc1Swenshuai.xi #define _LINUX_IF_BRIDGE_H 17*53ee8cc1Swenshuai.xi 18*53ee8cc1Swenshuai.xi #include <linux/types.h> 19*53ee8cc1Swenshuai.xi 20*53ee8cc1Swenshuai.xi #define SYSFS_BRIDGE_ATTR "bridge" 21*53ee8cc1Swenshuai.xi #define SYSFS_BRIDGE_FDB "brforward" 22*53ee8cc1Swenshuai.xi #define SYSFS_BRIDGE_PORT_SUBDIR "brif" 23*53ee8cc1Swenshuai.xi #define SYSFS_BRIDGE_PORT_ATTR "brport" 24*53ee8cc1Swenshuai.xi #define SYSFS_BRIDGE_PORT_LINK "bridge" 25*53ee8cc1Swenshuai.xi 26*53ee8cc1Swenshuai.xi #define BRCTL_VERSION 1 27*53ee8cc1Swenshuai.xi 28*53ee8cc1Swenshuai.xi #define BRCTL_GET_VERSION 0 29*53ee8cc1Swenshuai.xi #define BRCTL_GET_BRIDGES 1 30*53ee8cc1Swenshuai.xi #define BRCTL_ADD_BRIDGE 2 31*53ee8cc1Swenshuai.xi #define BRCTL_DEL_BRIDGE 3 32*53ee8cc1Swenshuai.xi #define BRCTL_ADD_IF 4 33*53ee8cc1Swenshuai.xi #define BRCTL_DEL_IF 5 34*53ee8cc1Swenshuai.xi #define BRCTL_GET_BRIDGE_INFO 6 35*53ee8cc1Swenshuai.xi #define BRCTL_GET_PORT_LIST 7 36*53ee8cc1Swenshuai.xi #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 37*53ee8cc1Swenshuai.xi #define BRCTL_SET_BRIDGE_HELLO_TIME 9 38*53ee8cc1Swenshuai.xi #define BRCTL_SET_BRIDGE_MAX_AGE 10 39*53ee8cc1Swenshuai.xi #define BRCTL_SET_AGEING_TIME 11 40*53ee8cc1Swenshuai.xi #define BRCTL_SET_GC_INTERVAL 12 41*53ee8cc1Swenshuai.xi #define BRCTL_GET_PORT_INFO 13 42*53ee8cc1Swenshuai.xi #define BRCTL_SET_BRIDGE_STP_STATE 14 43*53ee8cc1Swenshuai.xi #define BRCTL_SET_BRIDGE_PRIORITY 15 44*53ee8cc1Swenshuai.xi #define BRCTL_SET_PORT_PRIORITY 16 45*53ee8cc1Swenshuai.xi #define BRCTL_SET_PATH_COST 17 46*53ee8cc1Swenshuai.xi #define BRCTL_GET_FDB_ENTRIES 18 47*53ee8cc1Swenshuai.xi 48*53ee8cc1Swenshuai.xi #define BR_STATE_DISABLED 0 49*53ee8cc1Swenshuai.xi #define BR_STATE_LISTENING 1 50*53ee8cc1Swenshuai.xi #define BR_STATE_LEARNING 2 51*53ee8cc1Swenshuai.xi #define BR_STATE_FORWARDING 3 52*53ee8cc1Swenshuai.xi #define BR_STATE_BLOCKING 4 53*53ee8cc1Swenshuai.xi 54*53ee8cc1Swenshuai.xi struct __bridge_info 55*53ee8cc1Swenshuai.xi { 56*53ee8cc1Swenshuai.xi __u64 designated_root; 57*53ee8cc1Swenshuai.xi __u64 bridge_id; 58*53ee8cc1Swenshuai.xi __u32 root_path_cost; 59*53ee8cc1Swenshuai.xi __u32 max_age; 60*53ee8cc1Swenshuai.xi __u32 hello_time; 61*53ee8cc1Swenshuai.xi __u32 forward_delay; 62*53ee8cc1Swenshuai.xi __u32 bridge_max_age; 63*53ee8cc1Swenshuai.xi __u32 bridge_hello_time; 64*53ee8cc1Swenshuai.xi __u32 bridge_forward_delay; 65*53ee8cc1Swenshuai.xi __u8 topology_change; 66*53ee8cc1Swenshuai.xi __u8 topology_change_detected; 67*53ee8cc1Swenshuai.xi __u8 root_port; 68*53ee8cc1Swenshuai.xi __u8 stp_enabled; 69*53ee8cc1Swenshuai.xi __u32 ageing_time; 70*53ee8cc1Swenshuai.xi __u32 gc_interval; 71*53ee8cc1Swenshuai.xi __u32 hello_timer_value; 72*53ee8cc1Swenshuai.xi __u32 tcn_timer_value; 73*53ee8cc1Swenshuai.xi __u32 topology_change_timer_value; 74*53ee8cc1Swenshuai.xi __u32 gc_timer_value; 75*53ee8cc1Swenshuai.xi }; 76*53ee8cc1Swenshuai.xi 77*53ee8cc1Swenshuai.xi struct __port_info 78*53ee8cc1Swenshuai.xi { 79*53ee8cc1Swenshuai.xi __u64 designated_root; 80*53ee8cc1Swenshuai.xi __u64 designated_bridge; 81*53ee8cc1Swenshuai.xi __u16 port_id; 82*53ee8cc1Swenshuai.xi __u16 designated_port; 83*53ee8cc1Swenshuai.xi __u32 path_cost; 84*53ee8cc1Swenshuai.xi __u32 designated_cost; 85*53ee8cc1Swenshuai.xi __u8 state; 86*53ee8cc1Swenshuai.xi __u8 top_change_ack; 87*53ee8cc1Swenshuai.xi __u8 config_pending; 88*53ee8cc1Swenshuai.xi __u8 unused0; 89*53ee8cc1Swenshuai.xi __u32 message_age_timer_value; 90*53ee8cc1Swenshuai.xi __u32 forward_delay_timer_value; 91*53ee8cc1Swenshuai.xi __u32 hold_timer_value; 92*53ee8cc1Swenshuai.xi }; 93*53ee8cc1Swenshuai.xi 94*53ee8cc1Swenshuai.xi struct __fdb_entry 95*53ee8cc1Swenshuai.xi { 96*53ee8cc1Swenshuai.xi __u8 mac_addr[6]; 97*53ee8cc1Swenshuai.xi __u8 port_no; 98*53ee8cc1Swenshuai.xi __u8 is_local; 99*53ee8cc1Swenshuai.xi __u32 ageing_timer_value; 100*53ee8cc1Swenshuai.xi __u8 port_hi; 101*53ee8cc1Swenshuai.xi __u8 pad0; 102*53ee8cc1Swenshuai.xi __u16 unused; 103*53ee8cc1Swenshuai.xi }; 104*53ee8cc1Swenshuai.xi 105*53ee8cc1Swenshuai.xi 106*53ee8cc1Swenshuai.xi #endif 107