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