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