Blame view
net/tipc/bearer.h
8.23 KB
b97bf3fd8 [TIPC] Initial merge |
1 2 |
/* * net/tipc/bearer.h: Include file for TIPC bearer code |
c43072852 [NET] TIPC: Fix w... |
3 |
* |
593a5f22d [TIPC] More updat... |
4 |
* Copyright (c) 1996-2006, Ericsson AB |
2d627b92f tipc: Combine bea... |
5 |
* Copyright (c) 2005, 2010-2011, Wind River Systems |
b97bf3fd8 [TIPC] Initial merge |
6 7 |
* All rights reserved. * |
9ea1fd3c1 [TIPC] License he... |
8 |
* Redistribution and use in source and binary forms, with or without |
b97bf3fd8 [TIPC] Initial merge |
9 10 |
* modification, are permitted provided that the following conditions are met: * |
9ea1fd3c1 [TIPC] License he... |
11 12 13 14 15 16 17 18 |
* 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the names of the copyright holders nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. |
b97bf3fd8 [TIPC] Initial merge |
19 |
* |
9ea1fd3c1 [TIPC] License he... |
20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
* Alternatively, this software may be distributed under the terms of the * GNU General Public License ("GPL") version 2 as published by the Free * Software Foundation. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
b97bf3fd8 [TIPC] Initial merge |
34 35 36 37 38 |
* POSSIBILITY OF SUCH DAMAGE. */ #ifndef _TIPC_BEARER_H #define _TIPC_BEARER_H |
b97bf3fd8 [TIPC] Initial merge |
39 |
#include "bcast.h" |
909234cdd tipc: Lower limit... |
40 41 |
#define MAX_BEARERS 2 #define MAX_MEDIA 2 |
b97bf3fd8 [TIPC] Initial merge |
42 |
|
d265fef6d tipc: Remove obso... |
43 |
/* |
4d163a326 tipc: Add new add... |
44 45 46 47 48 49 50 51 52 53 54 |
* Identifiers associated with TIPC message header media address info * * - address info field is 20 bytes long * - media type identifier located at offset 3 * - remaining bytes vary according to media type */ #define TIPC_MEDIA_ADDR_SIZE 20 #define TIPC_MEDIA_TYPE_OFFSET 3 /* |
d265fef6d tipc: Remove obso... |
55 56 57 58 59 |
* Identifiers of supported TIPC media types */ #define TIPC_MEDIA_TYPE_ETH 1 /* |
3d749a6a2 tipc: Hide media-... |
60 61 62 63 |
* struct tipc_media_addr - destination address used by TIPC bearers * @value: address info (format defined by media) * @media_id: TIPC media type identifier * @broadcast: non-zero if address is a broadcast address |
d265fef6d tipc: Remove obso... |
64 |
*/ |
3d749a6a2 tipc: Hide media-... |
65 |
|
d265fef6d tipc: Remove obso... |
66 |
struct tipc_media_addr { |
3d749a6a2 tipc: Hide media-... |
67 68 69 |
u8 value[TIPC_MEDIA_ADDR_SIZE]; u8 media_id; u8 broadcast; |
d265fef6d tipc: Remove obso... |
70 |
}; |
2d627b92f tipc: Combine bea... |
71 |
struct tipc_bearer; |
b97bf3fd8 [TIPC] Initial merge |
72 73 |
/** |
358a0d1c9 tipc: rename stru... |
74 |
* struct tipc_media - TIPC media information available to internal users |
b97bf3fd8 [TIPC] Initial merge |
75 76 77 |
* @send_msg: routine which handles buffer transmission * @enable_bearer: routine which enables a bearer * @disable_bearer: routine which disables a bearer |
4d163a326 tipc: Add new add... |
78 79 80 81 |
* @addr2str: routine which converts media address to string * @str2addr: routine which converts media address from string * @addr2msg: routine which converts media address to protocol message area * @msg2addr: routine which converts media address from protocol message area |
b97bf3fd8 [TIPC] Initial merge |
82 |
* @bcast_addr: media address used in broadcasting |
b97bf3fd8 [TIPC] Initial merge |
83 84 85 |
* @priority: default link (and bearer) priority * @tolerance: default time (in ms) before declaring link failure * @window: default window (in packets) before declaring link congestion |
d265fef6d tipc: Remove obso... |
86 |
* @type_id: TIPC media identifier |
b97bf3fd8 [TIPC] Initial merge |
87 88 |
* @name: media name */ |
c43072852 [NET] TIPC: Fix w... |
89 |
|
358a0d1c9 tipc: rename stru... |
90 |
struct tipc_media { |
c43072852 [NET] TIPC: Fix w... |
91 |
int (*send_msg)(struct sk_buff *buf, |
b97bf3fd8 [TIPC] Initial merge |
92 93 94 95 |
struct tipc_bearer *b_ptr, struct tipc_media_addr *dest); int (*enable_bearer)(struct tipc_bearer *b_ptr); void (*disable_bearer)(struct tipc_bearer *b_ptr); |
c61b666e2 tipc: Improve han... |
96 |
int (*addr2str)(struct tipc_media_addr *a, char *str_buf, int str_size); |
4d163a326 tipc: Add new add... |
97 98 99 |
int (*str2addr)(struct tipc_media_addr *a, char *str_buf); int (*addr2msg)(struct tipc_media_addr *a, char *msg_area); int (*msg2addr)(struct tipc_media_addr *a, char *msg_area); |
b97bf3fd8 [TIPC] Initial merge |
100 |
struct tipc_media_addr bcast_addr; |
b97bf3fd8 [TIPC] Initial merge |
101 102 103 104 105 106 107 108 |
u32 priority; u32 tolerance; u32 window; u32 type_id; char name[TIPC_MAX_MEDIA_NAME]; }; /** |
2d627b92f tipc: Combine bea... |
109 110 111 112 113 114 115 |
* struct tipc_bearer - TIPC bearer structure * @usr_handle: pointer to additional media-specific information about bearer * @mtu: max packet size bearer can support * @blocked: non-zero if bearer is blocked * @lock: spinlock for controlling access to bearer * @addr: media-specific address associated with bearer * @name: bearer name (format = media:interface) |
b97bf3fd8 [TIPC] Initial merge |
116 117 |
* @media: ptr to media structure associated with bearer * @priority: default link priority for bearer |
5c216e1d2 tipc: Allow run-t... |
118 119 |
* @window: default window size for bearer * @tolerance: default link tolerance for bearer |
b97bf3fd8 [TIPC] Initial merge |
120 121 122 123 |
* @identity: array index of this bearer within TIPC bearer array * @link_req: ptr to (optional) structure making periodic link setup requests * @links: list of non-congested links associated with bearer * @cong_links: list of congested links associated with bearer |
b97bf3fd8 [TIPC] Initial merge |
124 125 126 |
* @active: non-zero if bearer structure is represents a bearer * @net_plane: network plane ('A' through 'H') currently associated with bearer * @nodes: indicates which nodes in cluster can be reached through bearer |
2d627b92f tipc: Combine bea... |
127 128 129 130 |
* * Note: media-specific code is responsible for initialization of the fields * indicated below when a bearer is enabled; TIPC's generic bearer code takes * care of initializing all other fields. |
b97bf3fd8 [TIPC] Initial merge |
131 |
*/ |
2d627b92f tipc: Combine bea... |
132 133 134 135 136 137 138 |
struct tipc_bearer { void *usr_handle; /* initalized by media */ u32 mtu; /* initalized by media */ int blocked; /* initalized by media */ struct tipc_media_addr addr; /* initalized by media */ char name[TIPC_MAX_BEARER_NAME]; spinlock_t lock; |
358a0d1c9 tipc: rename stru... |
139 |
struct tipc_media *media; |
b97bf3fd8 [TIPC] Initial merge |
140 |
u32 priority; |
5c216e1d2 tipc: Allow run-t... |
141 142 |
u32 window; u32 tolerance; |
b97bf3fd8 [TIPC] Initial merge |
143 |
u32 identity; |
a18c4bc3e tipc: rename stru... |
144 |
struct tipc_link_req *link_req; |
b97bf3fd8 [TIPC] Initial merge |
145 146 |
struct list_head links; struct list_head cong_links; |
b97bf3fd8 [TIPC] Initial merge |
147 148 |
int active; char net_plane; |
6c00055a8 tipc: Don't use s... |
149 |
struct tipc_node_map nodes; |
b97bf3fd8 [TIPC] Initial merge |
150 |
}; |
f19765f4f tipc: rename stru... |
151 |
struct tipc_bearer_names { |
b97bf3fd8 [TIPC] Initial merge |
152 153 154 |
char media_name[TIPC_MAX_MEDIA_NAME]; char if_name[TIPC_MAX_IF_NAME]; }; |
a18c4bc3e tipc: rename stru... |
155 |
struct tipc_link; |
b97bf3fd8 [TIPC] Initial merge |
156 |
|
2d627b92f tipc: Combine bea... |
157 |
extern struct tipc_bearer tipc_bearers[]; |
b97bf3fd8 [TIPC] Initial merge |
158 |
|
d265fef6d tipc: Remove obso... |
159 160 161 |
/* * TIPC routines available to supported media types */ |
358a0d1c9 tipc: rename stru... |
162 |
int tipc_register_media(struct tipc_media *m_ptr); |
d265fef6d tipc: Remove obso... |
163 164 165 166 167 |
void tipc_recv_msg(struct sk_buff *buf, struct tipc_bearer *tb_ptr); int tipc_block_bearer(const char *name); void tipc_continue(struct tipc_bearer *tb_ptr); |
50d3e6399 tipc: Correct mis... |
168 |
int tipc_enable_bearer(const char *bearer_name, u32 disc_domain, u32 priority); |
d265fef6d tipc: Remove obso... |
169 170 171 172 173 174 175 |
int tipc_disable_bearer(const char *name); /* * Routines made available to TIPC by supported media types */ int tipc_eth_media_start(void); void tipc_eth_media_stop(void); |
5c216e1d2 tipc: Allow run-t... |
176 177 |
int tipc_media_set_priority(const char *name, u32 new_value); int tipc_media_set_window(const char *name, u32 new_value); |
4323add67 [TIPC] Avoid poll... |
178 179 |
void tipc_media_addr_printf(struct print_buf *pb, struct tipc_media_addr *a); struct sk_buff *tipc_media_get_names(void); |
b97bf3fd8 [TIPC] Initial merge |
180 |
|
4323add67 [TIPC] Avoid poll... |
181 |
struct sk_buff *tipc_bearer_get_names(void); |
2d627b92f tipc: Combine bea... |
182 183 |
void tipc_bearer_add_dest(struct tipc_bearer *b_ptr, u32 dest); void tipc_bearer_remove_dest(struct tipc_bearer *b_ptr, u32 dest); |
a18c4bc3e tipc: rename stru... |
184 |
void tipc_bearer_schedule(struct tipc_bearer *b_ptr, struct tipc_link *l_ptr); |
5c216e1d2 tipc: Allow run-t... |
185 |
struct tipc_bearer *tipc_bearer_find(const char *name); |
2d627b92f tipc: Combine bea... |
186 |
struct tipc_bearer *tipc_bearer_find_interface(const char *if_name); |
358a0d1c9 tipc: rename stru... |
187 |
struct tipc_media *tipc_media_find(const char *name); |
a18c4bc3e tipc: rename stru... |
188 189 190 |
int tipc_bearer_resolve_congestion(struct tipc_bearer *b_ptr, struct tipc_link *l_ptr); int tipc_bearer_congested(struct tipc_bearer *b_ptr, struct tipc_link *l_ptr); |
4323add67 [TIPC] Avoid poll... |
191 |
void tipc_bearer_stop(void); |
2d627b92f tipc: Combine bea... |
192 |
void tipc_bearer_lock_push(struct tipc_bearer *b_ptr); |
b97bf3fd8 [TIPC] Initial merge |
193 194 195 |
/** |
c43072852 [NET] TIPC: Fix w... |
196 197 |
* tipc_bearer_send- sends buffer to destination over bearer * |
b97bf3fd8 [TIPC] Initial merge |
198 |
* Returns true (1) if successful, or false (0) if unable to send |
c43072852 [NET] TIPC: Fix w... |
199 |
* |
b97bf3fd8 [TIPC] Initial merge |
200 201 202 |
* IMPORTANT: * The media send routine must not alter the buffer being passed in * as it may be needed for later retransmission! |
c43072852 [NET] TIPC: Fix w... |
203 204 |
* * If the media send routine returns a non-zero value (indicating that |
b97bf3fd8 [TIPC] Initial merge |
205 206 207 208 209 |
* it was unable to send the buffer), it must: * 1) mark the bearer as blocked, * 2) call tipc_continue() once the bearer is able to send again. * Media types that are unable to meet these two critera must ensure their * send routine always returns success -- even if the buffer was not sent -- |
c43072852 [NET] TIPC: Fix w... |
210 |
* and let TIPC's link code deal with the undelivered message. |
b97bf3fd8 [TIPC] Initial merge |
211 |
*/ |
2d627b92f tipc: Combine bea... |
212 213 |
static inline int tipc_bearer_send(struct tipc_bearer *b_ptr, struct sk_buff *buf, |
4323add67 [TIPC] Avoid poll... |
214 |
struct tipc_media_addr *dest) |
b97bf3fd8 [TIPC] Initial merge |
215 |
{ |
2d627b92f tipc: Combine bea... |
216 |
return !b_ptr->media->send_msg(buf, b_ptr, dest); |
b97bf3fd8 [TIPC] Initial merge |
217 |
} |
b274f4ab8 tipc: Reduce foot... |
218 |
#endif /* _TIPC_BEARER_H */ |