patch-2.1.30 linux/net/bridge/br.c
Next file: linux/net/bridge/br_tree.c
Previous file: linux/net/ax25/sysctl_net_ax25.c
Back to the patch index
Back to the overall index
- Lines: 660
- Date:
Mon Mar 10 15:51:10 1997
- Orig file:
v2.1.29/linux/net/bridge/br.c
- Orig date:
Thu Dec 19 00:32:56 1996
diff -u --recursive --new-file v2.1.29/linux/net/bridge/br.c linux/net/bridge/br.c
@@ -31,6 +31,7 @@
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/in.h>
+
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/timer.h>
@@ -45,26 +46,83 @@
#include <asm/system.h>
#include <net/br.h>
+static void transmit_config(int port_no);
+static int root_bridge(void);
+static int supersedes_port_info(int port_no, Config_bpdu *config);
+static void record_config_information(int port_no, Config_bpdu *config);
+static void record_config_timeout_values(Config_bpdu *config);
+static void config_bpdu_generation(void);
+static int designated_port(int port_no);
+static void reply(int port_no);
+static void transmit_tcn(void);
+static void configuration_update(void);
+static void root_selection(void);
+static void designated_port_selection(void);
+static void become_designated_port(int port_no);
+static void port_state_selection(void);
+static void make_forwarding(int port_no);
+static void topology_change_detection(void);
+static void topology_change_acknowledged(void);
+static void acknowledge_topology_change(int port_no);
+static void make_blocking(int port_no);
+static void set_port_state(int port_no, int state);
+static void received_config_bpdu(int port_no, Config_bpdu *config);
+static void received_tcn_bpdu(int port_no, Tcn_bpdu *tcn);
+static void hello_timer_expiry(void);
+static void message_age_timer_expiry(int port_no);
+static void forward_delay_timer_expiry(int port_no);
+static int designated_for_some_port(void);
+static void tcn_timer_expiry(void);
+static void topology_change_timer_expiry(void);
+static void hold_timer_expiry(int port_no);
+static void br_init_port(int port_no);
+static void enable_port(int port_no);
+static void disable_port(int port_no);
+static void set_bridge_priority(bridge_id_t *new_bridge_id);
+static void set_port_priority(int port_no, unsigned short new_port_id);
+static void set_path_cost(int port_no, unsigned short path_cost);
+static void start_hello_timer(void);
+static void stop_hello_timer(void);
+static int hello_timer_expired(void);
+static void start_tcn_timer(void);
+static void stop_tcn_timer(void);
+static int tcn_timer_expired(void);
+static void start_topology_change_timer(void);
+static void stop_topology_change_timer(void);
+static int topology_change_timer_expired(void);
+static void start_message_age_timer(int port_no, unsigned short message_age);
+static void stop_message_age_timer(int port_no);
+static int message_age_timer_expired(int port_no);
+static void start_forward_delay_timer(int port_no);
+static void stop_forward_delay_timer(int port_no);
+static int forward_delay_timer_expired(int port_no);
+static void start_hold_timer(int port_no);
+static void stop_hold_timer(int port_no);
+static int hold_timer_expired(int port_no);
static int br_device_event(struct notifier_block *dnot, unsigned long event, void *ptr);
static void br_tick(unsigned long arg);
-int br_forward(struct sk_buff *skb, int port); /* 3.7 */
-int br_port_cost(struct device *dev); /* 4.10.2 */
-void br_bpdu(struct sk_buff *skb); /* consumes skb */
-int br_tx_frame(struct sk_buff *skb);
-int br_cmp(unsigned int *a, unsigned int *b);
-
-unsigned char bridge_ula[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
+static int br_forward(struct sk_buff *skb, int port); /* 3.7 */
+static int br_port_cost(struct device *dev); /* 4.10.2 */
+static void br_bpdu(struct sk_buff *skb); /* consumes skb */
+static int br_cmp(unsigned int *a, unsigned int *b);
+static int send_tcn_bpdu(int port_no, Tcn_bpdu *bpdu);
+static int send_config_bpdu(int port_no, Config_bpdu *config_bpdu);
+static int find_port(struct device *dev);
+static int br_flood(struct sk_buff *skb, int port);
+static int br_drop(struct sk_buff *skb);
+static int br_learn(struct sk_buff *skb, int port); /* 3.8 */
-Bridge_data bridge_info; /* (4.5.3) */
+static unsigned char bridge_ula[ETH_ALEN] = { 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 };
+static Bridge_data bridge_info; /* (4.5.3) */
Port_data port_info[All_ports]; /* (4.5.5) */
Config_bpdu config_bpdu[All_ports];
Tcn_bpdu tcn_bpdu[All_ports];
-Timer hello_timer; /* (4.5.4.1) */
-Timer tcn_timer; /* (4.5.4.2) */
-Timer topology_change_timer; /* (4.5.4.3) */
-Timer message_age_timer[All_ports]; /* (4.5.6.1) */
-Timer forward_delay_timer[All_ports]; /* (4.5.6.2) */
-Timer hold_timer[All_ports]; /* (4.5.6.3) */
+static Timer hello_timer; /* (4.5.4.1) */
+static Timer tcn_timer; /* (4.5.4.2) */
+static Timer topology_change_timer; /* (4.5.4.3) */
+static Timer message_age_timer[All_ports]; /* (4.5.6.1) */
+static Timer forward_delay_timer[All_ports]; /* (4.5.6.2) */
+static Timer hold_timer[All_ports]; /* (4.5.6.3) */
/* entries timeout after this many seconds */
unsigned int fdb_aging_time = FDB_TIMEOUT;
@@ -118,7 +176,7 @@
/* Add a protocol to be handled opposite to the standard policy of the bridge */
-int br_add_exempt_protocol(unsigned short p)
+static int br_add_exempt_protocol(unsigned short p)
{
unsigned x;
if (p == 0) return -EINVAL;
@@ -134,7 +192,7 @@
}
/* Valid Policies are 0=No Protocols bridged 1=Bridge all protocols */
-int br_set_policy(int policy)
+static int br_set_policy(int policy)
{
if (policy>1) return -EINVAL;
br_stats.policy=policy;
@@ -155,7 +213,7 @@
* 802.1d bridging protocol.
*/
-void transmit_config(int port_no) /* (4.6.1) */
+static void transmit_config(int port_no) /* (4.6.1) */
{
if (hold_timer[port_no].active) { /* (4.6.1.3.1) */
port_info[port_no].config_pending = TRUE; /* (4.6.1.3.1) */
@@ -198,13 +256,13 @@
}
}
-int root_bridge(void)
+static int root_bridge(void)
{
return (br_cmp(bridge_info.designated_root.BRIDGE_ID,
bridge_info.bridge_id.BRIDGE_ID)?FALSE:TRUE);
}
-int supersedes_port_info(int port_no, Config_bpdu *config) /* (4.6.2.2) */
+static int supersedes_port_info(int port_no, Config_bpdu *config) /* (4.6.2.2) */
{
return (
(br_cmp(config->root_id.BRIDGE_ID,
@@ -241,7 +299,7 @@
);
}
-void record_config_information(int port_no, Config_bpdu *config) /* (4.6.2) */
+static void record_config_information(int port_no, Config_bpdu *config) /* (4.6.2) */
{
port_info[port_no].designated_root = config->root_id; /* (4.6.2.3.1) */
port_info[port_no].designated_cost = config->root_path_cost;
@@ -250,7 +308,7 @@
start_message_age_timer(port_no, config->message_age); /* (4.6.2.3.2) */
}
-void record_config_timeout_values(Config_bpdu *config) /* (4.6.3) */
+static void record_config_timeout_values(Config_bpdu *config) /* (4.6.3) */
{
bridge_info.max_age = config->max_age; /* (4.6.3.3) */
bridge_info.hello_time = config->hello_time;
@@ -259,7 +317,7 @@
bridge_info.top_change = 1;
}
-void config_bpdu_generation(void)
+static void config_bpdu_generation(void)
{ /* (4.6.4) */
int port_no;
for (port_no = One; port_no <= No_of_ports; port_no++) { /* (4.6.4.3) */
@@ -272,7 +330,7 @@
}
}
-int designated_port(int port_no)
+static int designated_port(int port_no)
{
return ((br_cmp(port_info[port_no].designated_bridge.BRIDGE_ID,
bridge_info.bridge_id.BRIDGE_ID) == 0
@@ -284,12 +342,12 @@
);
}
-void reply(int port_no) /* (4.6.5) */
+static void reply(int port_no) /* (4.6.5) */
{
transmit_config(port_no); /* (4.6.5.3) */
}
-void transmit_tcn(void)
+static void transmit_tcn(void)
{ /* (4.6.6) */
int port_no;
@@ -298,7 +356,7 @@
send_tcn_bpdu(port_no, &tcn_bpdu[bridge_info.root_port]); /* (4.6.6.3) */
}
-void configuration_update(void) /* (4.6.7) */
+static void configuration_update(void) /* (4.6.7) */
{
root_selection(); /* (4.6.7.3.1) */
/* (4.6.8.2) */
@@ -306,7 +364,7 @@
/* (4.6.9.2) */
}
-void root_selection(void)
+static void root_selection(void)
{ /* (4.6.8) */
int root_port;
int port_no;
@@ -386,7 +444,7 @@
}
}
-void designated_port_selection(void)
+static void designated_port_selection(void)
{ /* (4.6.9) */
int port_no;
@@ -423,7 +481,7 @@
}
}
-void become_designated_port(int port_no)
+static void become_designated_port(int port_no)
{ /* (4.6.10) */
/* (4.6.10.3.1) */
@@ -436,7 +494,7 @@
port_info[port_no].designated_port = port_info[port_no].port_id;
}
-void port_state_selection(void)
+static void port_state_selection(void)
{ /* (4.6.11) */
int port_no;
for (port_no = One; port_no <= No_of_ports; port_no++) {
@@ -456,7 +514,7 @@
}
-void make_forwarding(int port_no)
+static void make_forwarding(int port_no)
{ /* (4.6.12) */
if (port_info[port_no].state == Blocking) { /* (4.6.12.3) */
set_port_state(port_no, Listening); /* (4.6.12.3.1) */
@@ -464,7 +522,7 @@
}
}
-void topology_change_detection(void)
+static void topology_change_detection(void)
{ /* (4.6.14) */
if (root_bridge()) { /* (4.6.14.3.1) */
bridge_info.top_change = 1;
@@ -476,19 +534,19 @@
bridge_info.top_change = 1;
}
-void topology_change_acknowledged(void)
+static void topology_change_acknowledged(void)
{ /* (4.6.15) */
bridge_info.top_change_detected = 0;
stop_tcn_timer(); /* (4.6.15.3.2) */
}
-void acknowledge_topology_change(int port_no)
+static void acknowledge_topology_change(int port_no)
{ /* (4.6.16) */
port_info[port_no].top_change_ack = 1;
transmit_config(port_no); /* (4.6.16.3.2) */
}
-void make_blocking(int port_no) /* (4.6.13) */
+static void make_blocking(int port_no) /* (4.6.13) */
{
if ((port_info[port_no].state != Disabled)
@@ -508,12 +566,12 @@
}
}
-void set_port_state(int port_no, int state)
+static void set_port_state(int port_no, int state)
{
port_info[port_no].state = state;
}
-void received_config_bpdu(int port_no, Config_bpdu *config) /* (4.7.1) */
+static void received_config_bpdu(int port_no, Config_bpdu *config) /* (4.7.1) */
{
int root;
@@ -550,7 +608,7 @@
}
}
-void received_tcn_bpdu(int port_no, Tcn_bpdu *tcn) /* (4.7.2) */
+static void received_tcn_bpdu(int port_no, Tcn_bpdu *tcn) /* (4.7.2) */
{
if (port_info[port_no].state != Disabled) {
if (designated_port(port_no)) {
@@ -561,13 +619,13 @@
}
}
-void hello_timer_expiry(void)
+static void hello_timer_expiry(void)
{ /* (4.7.3) */
config_bpdu_generation(); /* (4.6.4.2.2) */
start_hello_timer();
}
-void message_age_timer_expiry(int port_no) /* (4.7.4) */
+static void message_age_timer_expiry(int port_no) /* (4.7.4) */
{
int root;
root = root_bridge();
@@ -592,7 +650,7 @@
}
}
-void forward_delay_timer_expiry(int port_no) /* (4.7.5) */
+static void forward_delay_timer_expiry(int port_no) /* (4.7.5) */
{
if (port_info[port_no].state == Listening) { /* (4.7.5.1) */
set_port_state(port_no, Learning); /* (4.7.5.1.1) */
@@ -606,7 +664,7 @@
}
}
-int designated_for_some_port(void)
+static int designated_for_some_port(void)
{
int port_no;
@@ -621,20 +679,20 @@
return (FALSE);
}
-void tcn_timer_expiry(void)
+static void tcn_timer_expiry(void)
{ /* (4.7.6) */
transmit_tcn(); /* (4.7.6.1) */
start_tcn_timer(); /* (4.7.6.2) */
}
-void topology_change_timer_expiry(void)
+static void topology_change_timer_expiry(void)
{ /* (4.7.7) */
bridge_info.top_change_detected = 0;
bridge_info.top_change = 0;
/* (4.7.7.2) */
}
-void hold_timer_expiry(int port_no) /* (4.7.8) */
+static void hold_timer_expiry(int port_no) /* (4.7.8) */
{
if (port_info[port_no].config_pending) {
transmit_config(port_no); /* (4.7.8.1) */
@@ -682,7 +740,7 @@
/*start_hello_timer();*/
}
-void br_init_port(int port_no)
+static void br_init_port(int port_no)
{
become_designated_port(port_no); /* (4.8.1.4.1) */
set_port_state(port_no, Blocking); /* (4.8.1.4.2) */
@@ -693,13 +751,13 @@
stop_hold_timer(port_no); /* (4.8.1.4.7) */
}
-void enable_port(int port_no) /* (4.8.2) */
+static void enable_port(int port_no) /* (4.8.2) */
{
br_init_port(port_no);
port_state_selection(); /* (4.8.2.7) */
} /* */
-void disable_port(int port_no) /* (4.8.3) */
+static void disable_port(int port_no) /* (4.8.3) */
{
int root;
@@ -724,7 +782,8 @@
}
-void set_bridge_priority(bridge_id_t *new_bridge_id) /* (4.8.4) */
+static void set_bridge_priority(bridge_id_t *new_bridge_id)
+ /* (4.8.4) */
{
int root;
@@ -750,7 +809,8 @@
}
}
-void set_port_priority(int port_no, unsigned short new_port_id) /* (4.8.5) */
+static void set_port_priority(int port_no, unsigned short new_port_id)
+ /* (4.8.5) */
{
if (designated_port(port_no)) { /* (4.8.5.2) */
port_info[port_no].designated_port = new_port_id;
@@ -770,7 +830,8 @@
}
}
-void set_path_cost(int port_no, unsigned short path_cost) /* (4.8.6) */
+static void set_path_cost(int port_no, unsigned short path_cost)
+ /* (4.8.6) */
{
port_info[port_no].path_cost = path_cost; /* (4.8.6.1) */
configuration_update(); /* (4.8.6.2) */
@@ -807,18 +868,18 @@
add_timer(&tl);
}
-void start_hello_timer(void)
+static void start_hello_timer(void)
{
hello_timer.value = 0;
hello_timer.active = TRUE;
}
-void stop_hello_timer(void)
+static void stop_hello_timer(void)
{
hello_timer.active = FALSE;
}
-int hello_timer_expired(void)
+static int hello_timer_expired(void)
{
if (hello_timer.active && (++hello_timer.value >= bridge_info.hello_time)) {
hello_timer.active = FALSE;
@@ -827,18 +888,18 @@
return (FALSE);
}
-void start_tcn_timer(void)
+static void start_tcn_timer(void)
{
tcn_timer.value = 0;
tcn_timer.active = TRUE;
}
-void stop_tcn_timer(void)
+static void stop_tcn_timer(void)
{
tcn_timer.active = FALSE;
}
-int tcn_timer_expired(void)
+static int tcn_timer_expired(void)
{
if (tcn_timer.active && (++tcn_timer.value >=
bridge_info.bridge_hello_time)) {
@@ -849,18 +910,18 @@
}
-void start_topology_change_timer(void)
+static void start_topology_change_timer(void)
{
topology_change_timer.value = 0;
topology_change_timer.active = TRUE;
}
-void stop_topology_change_timer(void)
+static void stop_topology_change_timer(void)
{
topology_change_timer.active = FALSE;
}
-int topology_change_timer_expired(void)
+static int topology_change_timer_expired(void)
{
if (topology_change_timer.active
&& (++topology_change_timer.value
@@ -872,18 +933,18 @@
return (FALSE);
}
-void start_message_age_timer(int port_no, unsigned short message_age)
+static void start_message_age_timer(int port_no, unsigned short message_age)
{
message_age_timer[port_no].value = message_age;
message_age_timer[port_no].active = TRUE;
}
-void stop_message_age_timer(int port_no)
+static void stop_message_age_timer(int port_no)
{
message_age_timer[port_no].active = FALSE;
}
-int message_age_timer_expired(int port_no)
+static int message_age_timer_expired(int port_no)
{
if (message_age_timer[port_no].active &&
(++message_age_timer[port_no].value >= bridge_info.max_age)) {
@@ -893,18 +954,18 @@
return (FALSE);
}
-void start_forward_delay_timer(int port_no)
+static void start_forward_delay_timer(int port_no)
{
forward_delay_timer[port_no].value = 0;
forward_delay_timer[port_no].active = TRUE;
}
-void stop_forward_delay_timer(int port_no)
+static void stop_forward_delay_timer(int port_no)
{
forward_delay_timer[port_no].active = FALSE;
}
-int forward_delay_timer_expired(int port_no)
+static int forward_delay_timer_expired(int port_no)
{
if (forward_delay_timer[port_no].active &&
(++forward_delay_timer[port_no].value >= bridge_info.forward_delay)) {
@@ -914,19 +975,18 @@
return (FALSE);
}
-void start_hold_timer(int port_no)
+static void start_hold_timer(int port_no)
{
hold_timer[port_no].value = 0;
hold_timer[port_no].active = TRUE;
}
-void stop_hold_timer(int port_no)
+static void stop_hold_timer(int port_no)
{
hold_timer[port_no].active = FALSE;
}
-
-int hold_timer_expired(int port_no)
+static int hold_timer_expired(int port_no)
{
if (hold_timer[port_no].active &&
(++hold_timer[port_no].value >= bridge_info.hold_time)) {
@@ -937,7 +997,7 @@
}
-int send_config_bpdu(int port_no, Config_bpdu *config_bpdu)
+static int send_config_bpdu(int port_no, Config_bpdu *config_bpdu)
{
struct sk_buff *skb;
struct device *dev = port_info[port_no].dev;
@@ -996,7 +1056,7 @@
return(0);
}
-int send_tcn_bpdu(int port_no, Tcn_bpdu *bpdu)
+static int send_tcn_bpdu(int port_no, Tcn_bpdu *bpdu)
{
struct sk_buff *skb;
struct device *dev = port_info[port_no].dev;
@@ -1281,7 +1341,7 @@
* state or lack of resources...
*/
-int br_learn(struct sk_buff *skb, int port) /* 3.8 */
+static int br_learn(struct sk_buff *skb, int port) /* 3.8 */
{
struct fdb *f;
@@ -1330,7 +1390,7 @@
* this routine always consumes the frame
*/
-int br_drop(struct sk_buff *skb)
+static int br_drop(struct sk_buff *skb)
{
kfree_skb(skb, 0);
return(1);
@@ -1340,7 +1400,7 @@
* this routine always consumes the frame
*/
-int br_dev_drop(struct sk_buff *skb)
+static int br_dev_drop(struct sk_buff *skb)
{
dev_kfree_skb(skb, 0);
return(1);
@@ -1355,7 +1415,7 @@
* if not...
*/
-int br_forward(struct sk_buff *skb, int port) /* 3.7 */
+static int br_forward(struct sk_buff *skb, int port) /* 3.7 */
{
struct fdb *f;
@@ -1438,7 +1498,7 @@
* consumes the original frame.
*/
-int br_flood(struct sk_buff *skb, int port)
+static int br_flood(struct sk_buff *skb, int port)
{
int i;
struct sk_buff *nskb;
@@ -1469,7 +1529,7 @@
return(0);
}
-int find_port(struct device *dev)
+static int find_port(struct device *dev)
{
int i;
@@ -1480,7 +1540,7 @@
return(0);
}
-int br_port_cost(struct device *dev) /* 4.10.2 */
+static int br_port_cost(struct device *dev) /* 4.10.2 */
{
if (strncmp(dev->name, "eth", 3) == 0) /* ethernet */
return(100);
@@ -1495,7 +1555,7 @@
* this routine always consumes the skb
*/
-void br_bpdu(struct sk_buff *skb) /* consumes skb */
+static void br_bpdu(struct sk_buff *skb) /* consumes skb */
{
Tcn_bpdu *bpdu;
int port;
@@ -1624,7 +1684,7 @@
return 0;
}
-int br_cmp(unsigned int *a, unsigned int *b)
+static int br_cmp(unsigned int *a, unsigned int *b)
{
int i;
for (i=0; i<2; i++)
@@ -1638,4 +1698,3 @@
}
return(0);
}
-
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov