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