mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
tipc: simplify signature of tipc_namtbl_lookup_mcast_sockets()
We reduce the signature of this function according to the same principle as the preceding commits. Signed-off-by: Jon Maloy <jmaloy@redhat.com> Acked-by: Ying Xue <ying.xue@windriver.com> Acked-by: Hoang Le <hoang.h.le@dektech.com.au> Acked-by: Tung Nguyen <tung.q.nguyen@dektech.com.au> Acked-by: Xin Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
908148bc50
commit
45ceea2d40
@ -668,21 +668,21 @@ bool tipc_nametbl_lookup_group(struct net *net, u32 type, u32 instance,
|
||||
* Used on nodes which have received a multicast/broadcast message
|
||||
* Returns a list of local sockets
|
||||
*/
|
||||
void tipc_nametbl_lookup_mcast_sockets(struct net *net, u32 type, u32 lower,
|
||||
u32 upper, u32 scope, bool exact,
|
||||
struct list_head *dports)
|
||||
void tipc_nametbl_lookup_mcast_sockets(struct net *net, struct tipc_uaddr *ua,
|
||||
bool exact, struct list_head *dports)
|
||||
{
|
||||
struct service_range *sr;
|
||||
struct tipc_service *sc;
|
||||
struct publication *p;
|
||||
u32 scope = ua->scope;
|
||||
|
||||
rcu_read_lock();
|
||||
sc = tipc_service_find(net, type);
|
||||
sc = tipc_service_find(net, ua->sr.type);
|
||||
if (!sc)
|
||||
goto exit;
|
||||
|
||||
spin_lock_bh(&sc->lock);
|
||||
service_range_foreach_match(sr, sc, lower, upper) {
|
||||
service_range_foreach_match(sr, sc, ua->sr.lower, ua->sr.upper) {
|
||||
list_for_each_entry(p, &sr->local_publ, local_publ) {
|
||||
if (p->scope == scope || (!exact && p->scope < scope))
|
||||
tipc_dest_push(dports, 0, p->sk.ref);
|
||||
|
@ -112,9 +112,8 @@ struct name_table {
|
||||
int tipc_nl_name_table_dump(struct sk_buff *skb, struct netlink_callback *cb);
|
||||
bool tipc_nametbl_lookup_anycast(struct net *net, struct tipc_uaddr *ua,
|
||||
struct tipc_socket_addr *sk);
|
||||
void tipc_nametbl_lookup_mcast_sockets(struct net *net, u32 type, u32 lower,
|
||||
u32 upper, u32 scope, bool exact,
|
||||
struct list_head *dports);
|
||||
void tipc_nametbl_lookup_mcast_sockets(struct net *net, struct tipc_uaddr *ua,
|
||||
bool exact, struct list_head *dports);
|
||||
void tipc_nametbl_lookup_mcast_nodes(struct net *net, u32 type, u32 lower,
|
||||
u32 upper, struct tipc_nlist *nodes);
|
||||
bool tipc_nametbl_lookup_group(struct net *net, u32 type, u32 instance,
|
||||
|
@ -1205,17 +1205,18 @@ void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq,
|
||||
struct sk_buff_head *inputq)
|
||||
{
|
||||
u32 self = tipc_own_addr(net);
|
||||
u32 type, lower, upper, scope;
|
||||
struct sk_buff *skb, *_skb;
|
||||
u32 portid, onode;
|
||||
struct sk_buff_head tmpq;
|
||||
struct list_head dports;
|
||||
struct tipc_msg *hdr;
|
||||
struct tipc_uaddr ua;
|
||||
int user, mtyp, hlen;
|
||||
bool exact;
|
||||
|
||||
__skb_queue_head_init(&tmpq);
|
||||
INIT_LIST_HEAD(&dports);
|
||||
ua.addrtype = TIPC_SERVICE_RANGE;
|
||||
|
||||
skb = tipc_skb_peek(arrvq, &inputq->lock);
|
||||
for (; skb; skb = tipc_skb_peek(arrvq, &inputq->lock)) {
|
||||
@ -1224,7 +1225,7 @@ void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq,
|
||||
mtyp = msg_type(hdr);
|
||||
hlen = skb_headroom(skb) + msg_hdr_sz(hdr);
|
||||
onode = msg_orignode(hdr);
|
||||
type = msg_nametype(hdr);
|
||||
ua.sr.type = msg_nametype(hdr);
|
||||
|
||||
if (mtyp == TIPC_GRP_UCAST_MSG || user == GROUP_PROTOCOL) {
|
||||
spin_lock_bh(&inputq->lock);
|
||||
@ -1239,24 +1240,23 @@ void tipc_sk_mcast_rcv(struct net *net, struct sk_buff_head *arrvq,
|
||||
|
||||
/* Group messages require exact scope match */
|
||||
if (msg_in_group(hdr)) {
|
||||
lower = 0;
|
||||
upper = ~0;
|
||||
scope = msg_lookup_scope(hdr);
|
||||
ua.sr.lower = 0;
|
||||
ua.sr.upper = ~0;
|
||||
ua.scope = msg_lookup_scope(hdr);
|
||||
exact = true;
|
||||
} else {
|
||||
/* TIPC_NODE_SCOPE means "any scope" in this context */
|
||||
if (onode == self)
|
||||
scope = TIPC_NODE_SCOPE;
|
||||
ua.scope = TIPC_NODE_SCOPE;
|
||||
else
|
||||
scope = TIPC_CLUSTER_SCOPE;
|
||||
ua.scope = TIPC_CLUSTER_SCOPE;
|
||||
exact = false;
|
||||
lower = msg_namelower(hdr);
|
||||
upper = msg_nameupper(hdr);
|
||||
ua.sr.lower = msg_namelower(hdr);
|
||||
ua.sr.upper = msg_nameupper(hdr);
|
||||
}
|
||||
|
||||
/* Create destination port list: */
|
||||
tipc_nametbl_lookup_mcast_sockets(net, type, lower, upper,
|
||||
scope, exact, &dports);
|
||||
tipc_nametbl_lookup_mcast_sockets(net, &ua, exact, &dports);
|
||||
|
||||
/* Clone message per destination */
|
||||
while (tipc_dest_pop(&dports, NULL, &portid)) {
|
||||
|
Loading…
Reference in New Issue
Block a user