.. | .. |
---|
45 | 45 | struct tipc_nlist; |
---|
46 | 46 | struct tipc_nitem; |
---|
47 | 47 | extern const char tipc_bclink_name[]; |
---|
| 48 | +extern unsigned long sysctl_tipc_bc_retruni; |
---|
48 | 49 | |
---|
49 | 50 | #define TIPC_METHOD_EXPIRE msecs_to_jiffies(5000) |
---|
| 51 | + |
---|
| 52 | +#define BCLINK_MODE_BCAST 0x1 |
---|
| 53 | +#define BCLINK_MODE_RCAST 0x2 |
---|
| 54 | +#define BCLINK_MODE_SEL 0x4 |
---|
50 | 55 | |
---|
51 | 56 | struct tipc_nlist { |
---|
52 | 57 | struct list_head list; |
---|
.. | .. |
---|
63 | 68 | /* Cookie to be used between socket and broadcast layer |
---|
64 | 69 | * @rcast: replicast (instead of broadcast) was used at previous xmit |
---|
65 | 70 | * @mandatory: broadcast/replicast indication was set by user |
---|
| 71 | + * @deferredq: defer queue to make message in order |
---|
66 | 72 | * @expires: re-evaluate non-mandatory transmit method if we are past this |
---|
67 | 73 | */ |
---|
68 | 74 | struct tipc_mc_method { |
---|
69 | 75 | bool rcast; |
---|
70 | 76 | bool mandatory; |
---|
| 77 | + struct sk_buff_head deferredq; |
---|
71 | 78 | unsigned long expires; |
---|
72 | 79 | }; |
---|
73 | 80 | |
---|
.. | .. |
---|
79 | 86 | void tipc_bcast_inc_bearer_dst_cnt(struct net *net, int bearer_id); |
---|
80 | 87 | void tipc_bcast_dec_bearer_dst_cnt(struct net *net, int bearer_id); |
---|
81 | 88 | int tipc_bcast_get_mtu(struct net *net); |
---|
82 | | -void tipc_bcast_disable_rcast(struct net *net); |
---|
| 89 | +void tipc_bcast_toggle_rcast(struct net *net, bool supp); |
---|
83 | 90 | int tipc_mcast_xmit(struct net *net, struct sk_buff_head *pkts, |
---|
84 | 91 | struct tipc_mc_method *method, struct tipc_nlist *dests, |
---|
| 92 | + u16 *cong_link_cnt); |
---|
| 93 | +int tipc_bcast_xmit(struct net *net, struct sk_buff_head *pkts, |
---|
85 | 94 | u16 *cong_link_cnt); |
---|
86 | 95 | int tipc_bcast_rcv(struct net *net, struct tipc_link *l, struct sk_buff *skb); |
---|
87 | 96 | void tipc_bcast_ack_rcv(struct net *net, struct tipc_link *l, |
---|
88 | 97 | struct tipc_msg *hdr); |
---|
89 | 98 | int tipc_bcast_sync_rcv(struct net *net, struct tipc_link *l, |
---|
90 | | - struct tipc_msg *hdr); |
---|
91 | | -int tipc_nl_add_bc_link(struct net *net, struct tipc_nl_msg *msg); |
---|
| 99 | + struct tipc_msg *hdr, |
---|
| 100 | + struct sk_buff_head *retrq); |
---|
| 101 | +int tipc_nl_add_bc_link(struct net *net, struct tipc_nl_msg *msg, |
---|
| 102 | + struct tipc_link *bcl); |
---|
92 | 103 | int tipc_nl_bc_link_set(struct net *net, struct nlattr *attrs[]); |
---|
93 | | -int tipc_bclink_reset_stats(struct net *net); |
---|
| 104 | +int tipc_bclink_reset_stats(struct net *net, struct tipc_link *l); |
---|
| 105 | + |
---|
| 106 | +u32 tipc_bcast_get_mode(struct net *net); |
---|
| 107 | +u32 tipc_bcast_get_broadcast_ratio(struct net *net); |
---|
| 108 | + |
---|
| 109 | +void tipc_mcast_filter_msg(struct net *net, struct sk_buff_head *defq, |
---|
| 110 | + struct sk_buff_head *inputq); |
---|
94 | 111 | |
---|
95 | 112 | static inline void tipc_bcast_lock(struct net *net) |
---|
96 | 113 | { |
---|