root/net/tipc/bcast.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. tipc_bcast_lock
  2. tipc_bcast_unlock
  3. tipc_bc_sndlink

   1 /*
   2  * net/tipc/bcast.h: Include file for TIPC broadcast code
   3  *
   4  * Copyright (c) 2003-2006, 2014-2015, 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_BCAST_H
  38 #define _TIPC_BCAST_H
  39 
  40 #include "core.h"
  41 
  42 struct tipc_node;
  43 struct tipc_msg;
  44 struct tipc_nl_msg;
  45 struct tipc_nlist;
  46 struct tipc_nitem;
  47 extern const char tipc_bclink_name[];
  48 
  49 #define TIPC_METHOD_EXPIRE msecs_to_jiffies(5000)
  50 
  51 #define BCLINK_MODE_BCAST  0x1
  52 #define BCLINK_MODE_RCAST  0x2
  53 #define BCLINK_MODE_SEL    0x4
  54 
  55 struct tipc_nlist {
  56         struct list_head list;
  57         u32 self;
  58         u16 remote;
  59         bool local;
  60 };
  61 
  62 void tipc_nlist_init(struct tipc_nlist *nl, u32 self);
  63 void tipc_nlist_purge(struct tipc_nlist *nl);
  64 void tipc_nlist_add(struct tipc_nlist *nl, u32 node);
  65 void tipc_nlist_del(struct tipc_nlist *nl, u32 node);
  66 
  67 /* Cookie to be used between socket and broadcast layer
  68  * @rcast: replicast (instead of broadcast) was used at previous xmit
  69  * @mandatory: broadcast/replicast indication was set by user
  70  * @deferredq: defer queue to make message in order
  71  * @expires: re-evaluate non-mandatory transmit method if we are past this
  72  */
  73 struct tipc_mc_method {
  74         bool rcast;
  75         bool mandatory;
  76         struct sk_buff_head deferredq;
  77         unsigned long expires;
  78 };
  79 
  80 int tipc_bcast_init(struct net *net);
  81 void tipc_bcast_stop(struct net *net);
  82 void tipc_bcast_add_peer(struct net *net, struct tipc_link *l,
  83                          struct sk_buff_head *xmitq);
  84 void tipc_bcast_remove_peer(struct net *net, struct tipc_link *rcv_bcl);
  85 void tipc_bcast_inc_bearer_dst_cnt(struct net *net, int bearer_id);
  86 void tipc_bcast_dec_bearer_dst_cnt(struct net *net, int bearer_id);
  87 int  tipc_bcast_get_mtu(struct net *net);
  88 void tipc_bcast_disable_rcast(struct net *net);
  89 int tipc_mcast_xmit(struct net *net, struct sk_buff_head *pkts,
  90                     struct tipc_mc_method *method, struct tipc_nlist *dests,
  91                     u16 *cong_link_cnt);
  92 int tipc_bcast_rcv(struct net *net, struct tipc_link *l, struct sk_buff *skb);
  93 void tipc_bcast_ack_rcv(struct net *net, struct tipc_link *l,
  94                         struct tipc_msg *hdr);
  95 int tipc_bcast_sync_rcv(struct net *net, struct tipc_link *l,
  96                         struct tipc_msg *hdr);
  97 int tipc_nl_add_bc_link(struct net *net, struct tipc_nl_msg *msg);
  98 int tipc_nl_bc_link_set(struct net *net, struct nlattr *attrs[]);
  99 int tipc_bclink_reset_stats(struct net *net);
 100 
 101 u32 tipc_bcast_get_broadcast_mode(struct net *net);
 102 u32 tipc_bcast_get_broadcast_ratio(struct net *net);
 103 
 104 void tipc_mcast_filter_msg(struct net *net, struct sk_buff_head *defq,
 105                            struct sk_buff_head *inputq);
 106 
 107 static inline void tipc_bcast_lock(struct net *net)
 108 {
 109         spin_lock_bh(&tipc_net(net)->bclock);
 110 }
 111 
 112 static inline void tipc_bcast_unlock(struct net *net)
 113 {
 114         spin_unlock_bh(&tipc_net(net)->bclock);
 115 }
 116 
 117 static inline struct tipc_link *tipc_bc_sndlink(struct net *net)
 118 {
 119         return tipc_net(net)->bcl;
 120 }
 121 
 122 #endif

/* [<][>][^][v][top][bottom][index][help] */