diff options
Diffstat (limited to 'net/tipc/bearer.h')
-rw-r--r-- | net/tipc/bearer.h | 71 |
1 files changed, 68 insertions, 3 deletions
diff --git a/net/tipc/bearer.h b/net/tipc/bearer.h index a850b389663e..85f451d5aacf 100644 --- a/net/tipc/bearer.h +++ b/net/tipc/bearer.h | |||
@@ -37,12 +37,50 @@ | |||
37 | #ifndef _TIPC_BEARER_H | 37 | #ifndef _TIPC_BEARER_H |
38 | #define _TIPC_BEARER_H | 38 | #define _TIPC_BEARER_H |
39 | 39 | ||
40 | #include "core.h" | ||
41 | #include "bcast.h" | 40 | #include "bcast.h" |
42 | 41 | ||
43 | #define MAX_BEARERS 8 | 42 | #define MAX_BEARERS 8 |
44 | #define MAX_MEDIA 4 | 43 | #define MAX_MEDIA 4 |
45 | 44 | ||
45 | /* | ||
46 | * Identifiers of supported TIPC media types | ||
47 | */ | ||
48 | #define TIPC_MEDIA_TYPE_ETH 1 | ||
49 | |||
50 | /* | ||
51 | * Destination address structure used by TIPC bearers when sending messages | ||
52 | * | ||
53 | * IMPORTANT: The fields of this structure MUST be stored using the specified | ||
54 | * byte order indicated below, as the structure is exchanged between nodes | ||
55 | * as part of a link setup process. | ||
56 | */ | ||
57 | struct tipc_media_addr { | ||
58 | __be32 type; /* bearer type (network byte order) */ | ||
59 | union { | ||
60 | __u8 eth_addr[6]; /* 48 bit Ethernet addr (byte array) */ | ||
61 | } dev_addr; | ||
62 | }; | ||
63 | |||
64 | /** | ||
65 | * struct tipc_bearer - TIPC bearer info available to media code | ||
66 | * @usr_handle: pointer to additional media-specific information about bearer | ||
67 | * @mtu: max packet size bearer can support | ||
68 | * @blocked: non-zero if bearer is blocked | ||
69 | * @lock: spinlock for controlling access to bearer | ||
70 | * @addr: media-specific address associated with bearer | ||
71 | * @name: bearer name (format = media:interface) | ||
72 | * | ||
73 | * Note: TIPC initializes "name" and "lock" fields; media code is responsible | ||
74 | * for initialization all other fields when a bearer is enabled. | ||
75 | */ | ||
76 | struct tipc_bearer { | ||
77 | void *usr_handle; | ||
78 | u32 mtu; | ||
79 | int blocked; | ||
80 | spinlock_t lock; | ||
81 | struct tipc_media_addr addr; | ||
82 | char name[TIPC_MAX_BEARER_NAME]; | ||
83 | }; | ||
46 | 84 | ||
47 | /** | 85 | /** |
48 | * struct media - TIPC media information available to internal users | 86 | * struct media - TIPC media information available to internal users |
@@ -55,7 +93,7 @@ | |||
55 | * @priority: default link (and bearer) priority | 93 | * @priority: default link (and bearer) priority |
56 | * @tolerance: default time (in ms) before declaring link failure | 94 | * @tolerance: default time (in ms) before declaring link failure |
57 | * @window: default window (in packets) before declaring link congestion | 95 | * @window: default window (in packets) before declaring link congestion |
58 | * @type_id: TIPC media identifier [defined in tipc_bearer.h] | 96 | * @type_id: TIPC media identifier |
59 | * @name: media name | 97 | * @name: media name |
60 | */ | 98 | */ |
61 | 99 | ||
@@ -116,6 +154,34 @@ struct link; | |||
116 | 154 | ||
117 | extern struct bearer tipc_bearers[]; | 155 | extern struct bearer tipc_bearers[]; |
118 | 156 | ||
157 | /* | ||
158 | * TIPC routines available to supported media types | ||
159 | */ | ||
160 | int tipc_register_media(u32 media_type, | ||
161 | char *media_name, int (*enable)(struct tipc_bearer *), | ||
162 | void (*disable)(struct tipc_bearer *), | ||
163 | int (*send_msg)(struct sk_buff *, | ||
164 | struct tipc_bearer *, struct tipc_media_addr *), | ||
165 | char *(*addr2str)(struct tipc_media_addr *a, | ||
166 | char *str_buf, int str_size), | ||
167 | struct tipc_media_addr *bcast_addr, const u32 bearer_priority, | ||
168 | const u32 link_tolerance, /* [ms] */ | ||
169 | const u32 send_window_limit); | ||
170 | |||
171 | void tipc_recv_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr); | ||
172 | |||
173 | int tipc_block_bearer(const char *name); | ||
174 | void tipc_continue(struct tipc_bearer *tb_ptr); | ||
175 | |||
176 | int tipc_enable_bearer(const char *bearer_name, u32 bcast_scope, u32 priority); | ||
177 | int tipc_disable_bearer(const char *name); | ||
178 | |||
179 | /* | ||
180 | * Routines made available to TIPC by supported media types | ||
181 | */ | ||
182 | int tipc_eth_media_start(void); | ||
183 | void tipc_eth_media_stop(void); | ||
184 | |||
119 | void tipc_media_addr_printf(struct print_buf *pb, struct tipc_media_addr *a); | 185 | void tipc_media_addr_printf(struct print_buf *pb, struct tipc_media_addr *a); |
120 | struct sk_buff *tipc_media_get_names(void); | 186 | struct sk_buff *tipc_media_get_names(void); |
121 | 187 | ||
@@ -126,7 +192,6 @@ void tipc_bearer_schedule(struct bearer *b_ptr, struct link *l_ptr); | |||
126 | struct bearer *tipc_bearer_find_interface(const char *if_name); | 192 | struct bearer *tipc_bearer_find_interface(const char *if_name); |
127 | int tipc_bearer_resolve_congestion(struct bearer *b_ptr, struct link *l_ptr); | 193 | int tipc_bearer_resolve_congestion(struct bearer *b_ptr, struct link *l_ptr); |
128 | int tipc_bearer_congested(struct bearer *b_ptr, struct link *l_ptr); | 194 | int tipc_bearer_congested(struct bearer *b_ptr, struct link *l_ptr); |
129 | int tipc_bearer_init(void); | ||
130 | void tipc_bearer_stop(void); | 195 | void tipc_bearer_stop(void); |
131 | void tipc_bearer_lock_push(struct bearer *b_ptr); | 196 | void tipc_bearer_lock_push(struct bearer *b_ptr); |
132 | 197 | ||