hc
2024-10-16 50a212ec906f7524620675f0c57357691c26c81f
kernel/net/tipc/bcast.h
....@@ -45,8 +45,13 @@
4545 struct tipc_nlist;
4646 struct tipc_nitem;
4747 extern const char tipc_bclink_name[];
48
+extern unsigned long sysctl_tipc_bc_retruni;
4849
4950 #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
5055
5156 struct tipc_nlist {
5257 struct list_head list;
....@@ -63,11 +68,13 @@
6368 /* Cookie to be used between socket and broadcast layer
6469 * @rcast: replicast (instead of broadcast) was used at previous xmit
6570 * @mandatory: broadcast/replicast indication was set by user
71
+ * @deferredq: defer queue to make message in order
6672 * @expires: re-evaluate non-mandatory transmit method if we are past this
6773 */
6874 struct tipc_mc_method {
6975 bool rcast;
7076 bool mandatory;
77
+ struct sk_buff_head deferredq;
7178 unsigned long expires;
7279 };
7380
....@@ -79,18 +86,28 @@
7986 void tipc_bcast_inc_bearer_dst_cnt(struct net *net, int bearer_id);
8087 void tipc_bcast_dec_bearer_dst_cnt(struct net *net, int bearer_id);
8188 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);
8390 int tipc_mcast_xmit(struct net *net, struct sk_buff_head *pkts,
8491 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,
8594 u16 *cong_link_cnt);
8695 int tipc_bcast_rcv(struct net *net, struct tipc_link *l, struct sk_buff *skb);
8796 void tipc_bcast_ack_rcv(struct net *net, struct tipc_link *l,
8897 struct tipc_msg *hdr);
8998 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);
92103 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);
94111
95112 static inline void tipc_bcast_lock(struct net *net)
96113 {