xref: /linux/net/tipc/name_distr.h (revision ff10527e89826aaf76480ee47e6fd05213189963)
1b97bf3fdSPer Liden /*
2b97bf3fdSPer Liden  * net/tipc/name_distr.h: Include file for TIPC name distribution code
3b97bf3fdSPer Liden  *
4593a5f22SPer Liden  * Copyright (c) 2000-2006, Ericsson AB
5b97bf3fdSPer Liden  * Copyright (c) 2005, Wind River Systems
6b97bf3fdSPer Liden  * All rights reserved.
7b97bf3fdSPer Liden  *
8b97bf3fdSPer Liden  * Redistribution and use in source and binary forms, with or without
9b97bf3fdSPer Liden  * modification, are permitted provided that the following conditions are met:
10b97bf3fdSPer Liden  *
119ea1fd3cSPer Liden  * 1. Redistributions of source code must retain the above copyright
129ea1fd3cSPer Liden  *    notice, this list of conditions and the following disclaimer.
139ea1fd3cSPer Liden  * 2. Redistributions in binary form must reproduce the above copyright
149ea1fd3cSPer Liden  *    notice, this list of conditions and the following disclaimer in the
159ea1fd3cSPer Liden  *    documentation and/or other materials provided with the distribution.
169ea1fd3cSPer Liden  * 3. Neither the names of the copyright holders nor the names of its
179ea1fd3cSPer Liden  *    contributors may be used to endorse or promote products derived from
189ea1fd3cSPer Liden  *    this software without specific prior written permission.
199ea1fd3cSPer Liden  *
209ea1fd3cSPer Liden  * Alternatively, this software may be distributed under the terms of the
219ea1fd3cSPer Liden  * GNU General Public License ("GPL") version 2 as published by the Free
229ea1fd3cSPer Liden  * Software Foundation.
23b97bf3fdSPer Liden  *
24b97bf3fdSPer Liden  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25b97bf3fdSPer Liden  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26b97bf3fdSPer Liden  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27b97bf3fdSPer Liden  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28b97bf3fdSPer Liden  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29b97bf3fdSPer Liden  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30b97bf3fdSPer Liden  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31b97bf3fdSPer Liden  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32b97bf3fdSPer Liden  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33b97bf3fdSPer Liden  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34b97bf3fdSPer Liden  * POSSIBILITY OF SUCH DAMAGE.
35b97bf3fdSPer Liden  */
36b97bf3fdSPer Liden 
37b97bf3fdSPer Liden #ifndef _TIPC_NAME_DISTR_H
38b97bf3fdSPer Liden #define _TIPC_NAME_DISTR_H
39b97bf3fdSPer Liden 
40b97bf3fdSPer Liden #include "name_table.h"
41b97bf3fdSPer Liden 
42ca0c4273SYing Xue #define ITEM_SIZE sizeof(struct distr_item)
43ca0c4273SYing Xue 
44ca0c4273SYing Xue /**
45ca0c4273SYing Xue  * struct distr_item - publication info distributed to other nodes
46ca0c4273SYing Xue  * @type: name sequence type
47ca0c4273SYing Xue  * @lower: name sequence lower bound
48ca0c4273SYing Xue  * @upper: name sequence upper bound
49*ff10527eSRandy Dunlap  * @port: publishing port reference
50ca0c4273SYing Xue  * @key: publication key
51ca0c4273SYing Xue  *
52ca0c4273SYing Xue  * ===> All fields are stored in network byte order. <===
53ca0c4273SYing Xue  *
54ca0c4273SYing Xue  * First 3 fields identify (name or) name sequence being published.
55ca0c4273SYing Xue  * Reference field uniquely identifies port that published name sequence.
56ca0c4273SYing Xue  * Key field uniquely identifies publication, in the event a port has
57ca0c4273SYing Xue  * multiple publications of the same name sequence.
58ca0c4273SYing Xue  *
59ca0c4273SYing Xue  * Note: There is no field that identifies the publishing node because it is
60ca0c4273SYing Xue  * the same for all items contained within a publication message.
61ca0c4273SYing Xue  */
62ca0c4273SYing Xue struct distr_item {
63ca0c4273SYing Xue 	__be32 type;
64ca0c4273SYing Xue 	__be32 lower;
65ca0c4273SYing Xue 	__be32 upper;
66e50e73e1SJon Maloy 	__be32 port;
67ca0c4273SYing Xue 	__be32 key;
68ca0c4273SYing Xue };
69ca0c4273SYing Xue 
70cad2929dSHoang Huu Le void tipc_named_bcast(struct net *net, struct sk_buff *skb);
714ac1c8d0SYing Xue struct sk_buff *tipc_named_publish(struct net *net, struct publication *publ);
7234747539SYing Xue struct sk_buff *tipc_named_withdraw(struct net *net, struct publication *publ);
73cad2929dSHoang Huu Le void tipc_named_node_up(struct net *net, u32 dnode, u16 capabilities);
74cad2929dSHoang Huu Le void tipc_named_rcv(struct net *net, struct sk_buff_head *namedq,
75cad2929dSHoang Huu Le 		    u16 *rcv_nxt, bool *open);
764ac1c8d0SYing Xue void tipc_named_reinit(struct net *net);
77cad2929dSHoang Huu Le void tipc_publ_notify(struct net *net, struct list_head *nsub_list,
78cad2929dSHoang Huu Le 		      u32 addr, u16 capabilities);
79b97bf3fdSPer Liden 
80b97bf3fdSPer Liden #endif
81