Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
net
tipc
bearer.h
Go to the documentation of this file.
1
/*
2
* net/tipc/bearer.h: Include file for TIPC bearer code
3
*
4
* Copyright (c) 1996-2006, Ericsson AB
5
* Copyright (c) 2005, 2010-2011, Wind River Systems
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions are met:
10
*
11
* 1. Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* 2. Redistributions in binary form must reproduce the above copyright
14
* notice, this list of conditions and the following disclaimer in the
15
* documentation and/or other materials provided with the distribution.
16
* 3. Neither the names of the copyright holders nor the names of its
17
* contributors may be used to endorse or promote products derived from
18
* this software without specific prior written permission.
19
*
20
* Alternatively, this software may be distributed under the terms of the
21
* GNU General Public License ("GPL") version 2 as published by the Free
22
* Software Foundation.
23
*
24
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGE.
35
*/
36
37
#ifndef _TIPC_BEARER_H
38
#define _TIPC_BEARER_H
39
40
#include "
bcast.h
"
41
42
#define MAX_BEARERS 2
43
#define MAX_MEDIA 2
44
45
/*
46
* Identifiers associated with TIPC message header media address info
47
*
48
* - address info field is 20 bytes long
49
* - media type identifier located at offset 3
50
* - remaining bytes vary according to media type
51
*/
52
#define TIPC_MEDIA_ADDR_SIZE 20
53
#define TIPC_MEDIA_TYPE_OFFSET 3
54
55
/*
56
* Identifiers of supported TIPC media types
57
*/
58
#define TIPC_MEDIA_TYPE_ETH 1
59
66
struct
tipc_media_addr
{
67
u8
value
[
TIPC_MEDIA_ADDR_SIZE
];
68
u8
media_id
;
69
u8
broadcast
;
70
};
71
72
struct
tipc_bearer
;
73
90
struct
tipc_media
{
91
int
(*
send_msg
)(
struct
sk_buff
*
buf
,
92
struct
tipc_bearer
*b_ptr,
93
struct
tipc_media_addr
*
dest
);
94
int
(*
enable_bearer
)(
struct
tipc_bearer
*b_ptr);
95
void
(*
disable_bearer
)(
struct
tipc_bearer
*b_ptr);
96
int
(*
addr2str
)(
struct
tipc_media_addr
*
a
,
char
*str_buf,
int
str_size);
97
int
(*
str2addr
)(
struct
tipc_media_addr
*
a
,
char
*str_buf);
98
int
(*
addr2msg
)(
struct
tipc_media_addr
*
a
,
char
*msg_area);
99
int
(*
msg2addr
)(
struct
tipc_media_addr
*
a
,
char
*msg_area);
100
struct
tipc_media_addr
bcast_addr
;
101
u32
priority
;
102
u32
tolerance
;
103
u32
window
;
104
u32
type_id
;
105
char
name
[
TIPC_MAX_MEDIA_NAME
];
106
};
107
132
struct
tipc_bearer
{
133
void
*
usr_handle
;
/* initalized by media */
134
u32
mtu
;
/* initalized by media */
135
int
blocked
;
/* initalized by media */
136
struct
tipc_media_addr
addr
;
/* initalized by media */
137
char
name
[
TIPC_MAX_BEARER_NAME
];
138
spinlock_t
lock
;
139
struct
tipc_media
*
media
;
140
u32
priority
;
141
u32
window
;
142
u32
tolerance
;
143
u32
identity
;
144
struct
tipc_link_req
*
link_req
;
145
struct
list_head
links
;
146
struct
list_head
cong_links
;
147
int
active
;
148
char
net_plane
;
149
struct
tipc_node_map
nodes
;
150
};
151
152
struct
tipc_bearer_names
{
153
char
media_name
[
TIPC_MAX_MEDIA_NAME
];
154
char
if_name
[
TIPC_MAX_IF_NAME
];
155
};
156
157
struct
tipc_link
;
158
159
extern
struct
tipc_bearer
tipc_bearers
[];
160
161
/*
162
* TIPC routines available to supported media types
163
*/
164
int
tipc_register_media
(
struct
tipc_media
*m_ptr);
165
166
void
tipc_recv_msg
(
struct
sk_buff
*
buf
,
struct
tipc_bearer
*tb_ptr);
167
168
int
tipc_block_bearer
(
const
char
*
name
);
169
void
tipc_continue
(
struct
tipc_bearer
*tb_ptr);
170
171
int
tipc_enable_bearer
(
const
char
*bearer_name,
u32
disc_domain,
u32
priority
);
172
int
tipc_disable_bearer
(
const
char
*
name
);
173
174
/*
175
* Routines made available to TIPC by supported media types
176
*/
177
int
tipc_eth_media_start
(
void
);
178
void
tipc_eth_media_stop
(
void
);
179
180
int
tipc_media_set_priority
(
const
char
*
name
,
u32
new_value);
181
int
tipc_media_set_window
(
const
char
*
name
,
u32
new_value);
182
void
tipc_media_addr_printf
(
char
*
buf
,
int
len,
struct
tipc_media_addr
*
a
);
183
struct
sk_buff
*
tipc_media_get_names
(
void
);
184
185
struct
sk_buff
*
tipc_bearer_get_names
(
void
);
186
void
tipc_bearer_add_dest
(
struct
tipc_bearer
*b_ptr,
u32
dest
);
187
void
tipc_bearer_remove_dest
(
struct
tipc_bearer
*b_ptr,
u32
dest
);
188
void
tipc_bearer_schedule
(
struct
tipc_bearer
*b_ptr,
struct
tipc_link
*l_ptr);
189
struct
tipc_bearer
*
tipc_bearer_find
(
const
char
*
name
);
190
struct
tipc_bearer
*
tipc_bearer_find_interface
(
const
char
*if_name);
191
struct
tipc_media
*
tipc_media_find
(
const
char
*
name
);
192
int
tipc_bearer_resolve_congestion
(
struct
tipc_bearer
*b_ptr,
193
struct
tipc_link
*l_ptr);
194
int
tipc_bearer_congested
(
struct
tipc_bearer
*b_ptr,
struct
tipc_link
*l_ptr);
195
void
tipc_bearer_stop
(
void
);
196
void
tipc_bearer_lock_push
(
struct
tipc_bearer
*b_ptr);
197
198
216
static
inline
int
tipc_bearer_send(
struct
tipc_bearer
*b_ptr,
217
struct
sk_buff
*
buf
,
218
struct
tipc_media_addr
*
dest
)
219
{
220
return
!b_ptr->
media
->send_msg(buf, b_ptr, dest);
221
}
222
223
#endif
/* _TIPC_BEARER_H */
Generated on Thu Jan 10 2013 15:02:22 for Linux Kernel by
1.8.2