OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [net/] [bridge/] [br_private.h] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 *      Linux ethernet bridge
3
 *
4
 *      Authors:
5
 *      Lennert Buytenhek               <buytenh@gnu.org>
6
 *
7
 *      $Id: br_private.h,v 1.1.1.1 2004-04-15 01:16:27 phoenix Exp $
8
 *
9
 *      This program is free software; you can redistribute it and/or
10
 *      modify it under the terms of the GNU General Public License
11
 *      as published by the Free Software Foundation; either version
12
 *      2 of the License, or (at your option) any later version.
13
 */
14
 
15
#ifndef _BR_PRIVATE_H
16
#define _BR_PRIVATE_H
17
 
18
#include <linux/netdevice.h>
19
#include <linux/miscdevice.h>
20
#include <linux/if_bridge.h>
21
#include "br_private_timer.h"
22
 
23
#define BR_HASH_BITS 8
24
#define BR_HASH_SIZE (1 << BR_HASH_BITS)
25
 
26
#define BR_HOLD_TIME (1*HZ)
27
 
28
typedef struct bridge_id bridge_id;
29
typedef struct mac_addr mac_addr;
30
typedef __u16 port_id;
31
 
32
struct bridge_id
33
{
34
        unsigned char   prio[2];
35
        unsigned char   addr[6];
36
};
37
 
38
struct mac_addr
39
{
40
        unsigned char   addr[6];
41
        unsigned char   pad[2];
42
};
43
 
44
struct net_bridge_fdb_entry
45
{
46
        struct net_bridge_fdb_entry     *next_hash;
47
        struct net_bridge_fdb_entry     **pprev_hash;
48
        atomic_t                        use_count;
49
        mac_addr                        addr;
50
        struct net_bridge_port          *dst;
51
        unsigned long                   ageing_timer;
52
        unsigned                        is_local:1;
53
        unsigned                        is_static:1;
54
};
55
 
56
struct net_bridge_port
57
{
58
        struct net_bridge_port          *next;
59
        struct net_bridge               *br;
60
        struct net_device               *dev;
61
        int                             port_no;
62
 
63
        /* STP */
64
        port_id                         port_id;
65
        int                             state;
66
        int                             path_cost;
67
        bridge_id                       designated_root;
68
        int                             designated_cost;
69
        bridge_id                       designated_bridge;
70
        port_id                         designated_port;
71
        unsigned                        topology_change_ack:1;
72
        unsigned                        config_pending:1;
73
        int                             priority;
74
 
75
        struct br_timer                 forward_delay_timer;
76
        struct br_timer                 hold_timer;
77
        struct br_timer                 message_age_timer;
78
};
79
 
80
struct net_bridge
81
{
82
        struct net_bridge               *next;
83
        rwlock_t                        lock;
84
        struct net_bridge_port          *port_list;
85
        struct net_device               dev;
86
        struct net_device_stats         statistics;
87
        rwlock_t                        hash_lock;
88
        struct net_bridge_fdb_entry     *hash[BR_HASH_SIZE];
89
        struct timer_list               tick;
90
 
91
        /* STP */
92
        bridge_id                       designated_root;
93
        int                             root_path_cost;
94
        int                             root_port;
95
        int                             max_age;
96
        int                             hello_time;
97
        int                             forward_delay;
98
        bridge_id                       bridge_id;
99
        int                             bridge_max_age;
100
        int                             bridge_hello_time;
101
        int                             bridge_forward_delay;
102
        unsigned                        stp_enabled:1;
103
        unsigned                        topology_change:1;
104
        unsigned                        topology_change_detected:1;
105
 
106
        struct br_timer                 hello_timer;
107
        struct br_timer                 tcn_timer;
108
        struct br_timer                 topology_change_timer;
109
        struct br_timer                 gc_timer;
110
 
111
        int                             ageing_time;
112
        int                             gc_interval;
113
};
114
 
115
extern struct notifier_block br_device_notifier;
116
extern unsigned char bridge_ula[6];
117
 
118
/* br.c */
119
extern void br_dec_use_count(void);
120
extern void br_inc_use_count(void);
121
 
122
/* br_device.c */
123
extern void br_dev_setup(struct net_device *dev);
124
extern int br_dev_xmit(struct sk_buff *skb, struct net_device *dev);
125
 
126
/* br_fdb.c */
127
extern void br_fdb_changeaddr(struct net_bridge_port *p,
128
                       unsigned char *newaddr);
129
extern void br_fdb_cleanup(struct net_bridge *br);
130
extern void br_fdb_delete_by_port(struct net_bridge *br,
131
                           struct net_bridge_port *p);
132
extern struct net_bridge_fdb_entry *br_fdb_get(struct net_bridge *br,
133
                                        unsigned char *addr);
134
extern void br_fdb_put(struct net_bridge_fdb_entry *ent);
135
extern int  br_fdb_get_entries(struct net_bridge *br,
136
                        unsigned char *_buf,
137
                        int maxnum,
138
                        int offset);
139
extern void br_fdb_insert(struct net_bridge *br,
140
                   struct net_bridge_port *source,
141
                   unsigned char *addr,
142
                   int is_local);
143
 
144
/* br_forward.c */
145
extern void br_deliver(struct net_bridge_port *to,
146
                struct sk_buff *skb);
147
extern void br_forward(struct net_bridge_port *to,
148
                struct sk_buff *skb);
149
extern void br_flood_deliver(struct net_bridge *br,
150
                      struct sk_buff *skb,
151
                      int clone);
152
extern void br_flood_forward(struct net_bridge *br,
153
                      struct sk_buff *skb,
154
                      int clone);
155
 
156
/* br_if.c */
157
extern int br_add_bridge(char *name);
158
extern int br_del_bridge(char *name);
159
extern int br_add_if(struct net_bridge *br,
160
              struct net_device *dev);
161
extern int br_del_if(struct net_bridge *br,
162
              struct net_device *dev);
163
extern int br_get_bridge_ifindices(int *indices,
164
                            int num);
165
extern void br_get_port_ifindices(struct net_bridge *br,
166
                           int *ifindices);
167
 
168
/* br_input.c */
169
extern void br_handle_frame(struct sk_buff *skb);
170
 
171
/* br_ioctl.c */
172
extern void br_call_ioctl_atomic(void (*fn)(void));
173
extern int br_ioctl(struct net_bridge *br,
174
             unsigned int cmd,
175
             unsigned long arg0,
176
             unsigned long arg1,
177
             unsigned long arg2);
178
extern int br_ioctl_deviceless_stub(unsigned long arg);
179
 
180
/* br_stp.c */
181
extern int br_is_root_bridge(struct net_bridge *br);
182
extern struct net_bridge_port *br_get_port(struct net_bridge *br,
183
                                    int port_no);
184
extern void br_init_port(struct net_bridge_port *p);
185
extern port_id br_make_port_id(struct net_bridge_port *p);
186
extern void br_become_designated_port(struct net_bridge_port *p);
187
 
188
/* br_stp_if.c */
189
extern void br_stp_enable_bridge(struct net_bridge *br);
190
extern void br_stp_disable_bridge(struct net_bridge *br);
191
extern void br_stp_enable_port(struct net_bridge_port *p);
192
extern void br_stp_disable_port(struct net_bridge_port *p);
193
extern void br_stp_recalculate_bridge_id(struct net_bridge *br);
194
extern void br_stp_set_bridge_priority(struct net_bridge *br,
195
                                int newprio);
196
extern void br_stp_set_port_priority(struct net_bridge_port *p,
197
                              int newprio);
198
extern void br_stp_set_path_cost(struct net_bridge_port *p,
199
                          int path_cost);
200
 
201
/* br_stp_bpdu.c */
202
extern int br_stp_handle_bpdu(struct sk_buff *skb);
203
 
204
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.