tipc: simplify call signatures for publication creation
authorJon Maloy <jmaloy@redhat.com>
Wed, 17 Mar 2021 02:06:12 +0000 (22:06 -0400)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Mar 2021 18:51:04 +0000 (11:51 -0700)
We simplify the call signatures for tipc_nametbl_insert_publ() and
tipc_publ_create() so that fewer parameters are passed around.

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>
net/tipc/name_distr.c
net/tipc/name_table.c
net/tipc/name_table.h

index 1070b04..727f8c5 100644 (file)
@@ -293,30 +293,31 @@ static bool tipc_update_nametbl(struct net *net, struct distr_item *i,
                                u32 node, u32 dtype)
 {
        struct publication *p = NULL;
-       u32 lower = ntohl(i->lower);
-       u32 upper = ntohl(i->upper);
-       u32 type = ntohl(i->type);
-       u32 port = ntohl(i->port);
+       struct tipc_socket_addr sk;
+       struct tipc_uaddr ua;
        u32 key = ntohl(i->key);
 
+       tipc_uaddr(&ua, TIPC_SERVICE_RANGE, TIPC_CLUSTER_SCOPE,
+                  ntohl(i->type), ntohl(i->lower), ntohl(i->upper));
+       sk.ref = ntohl(i->port);
+       sk.node = node;
+
        if (dtype == PUBLICATION) {
-               p = tipc_nametbl_insert_publ(net, type, lower, upper,
-                                            TIPC_CLUSTER_SCOPE, node,
-                                            port, key);
+               p = tipc_nametbl_insert_publ(net, &ua, &sk, key);
                if (p) {
                        tipc_node_subscribe(net, &p->binding_node, node);
                        return true;
                }
        } else if (dtype == WITHDRAWAL) {
-               p = tipc_nametbl_remove_publ(net, type, lower,
-                                            upper, node, key);
+               p = tipc_nametbl_remove_publ(net, ua.sr.type, ua.sr.lower,
+                                            ua.sr.upper, node, key);
                if (p) {
                        tipc_node_unsubscribe(net, &p->binding_node, node);
                        kfree_rcu(p, rcu);
                        return true;
                }
-               pr_warn_ratelimited("Failed to remove binding %u,%u from %x\n",
-                                   type, lower, node);
+               pr_warn_ratelimited("Failed to remove binding %u,%u from %u\n",
+                                   ua.sr.type, ua.sr.lower, node);
        } else {
                pr_warn("Unrecognized name table message received\n");
        }
index 7b309fd..146c478 100644 (file)
@@ -222,16 +222,12 @@ static int hash(int x)
 
 /**
  * tipc_publ_create - create a publication structure
- * @type: name sequence type
- * @lower: name sequence lower bound
- * @upper: name sequence upper bound
- * @scope: publication scope
- * @node: network address of publishing socket
- * @port: publishing port
+ * @ua: the service range the user is binding to
+ * @sk: the address of the socket that is bound
  * @key: publication key
  */
-static struct publication *tipc_publ_create(u32 type, u32 lower, u32 upper,
-                                           u32 scope, u32 node, u32 port,
+static struct publication *tipc_publ_create(struct tipc_uaddr *ua,
+                                           struct tipc_socket_addr *sk,
                                            u32 key)
 {
        struct publication *p = kzalloc(sizeof(*p), GFP_ATOMIC);
@@ -239,12 +235,9 @@ static struct publication *tipc_publ_create(u32 type, u32 lower, u32 upper,
        if (!p)
                return NULL;
 
-       p->sr.type = type;
-       p->sr.lower = lower;
-       p->sr.upper = upper;
-       p->scope = scope;
-       p->sk.node = node;
-       p->sk.ref = port;
+       p->sr = ua->sr;
+       p->sk = *sk;
+       p->scope = ua->scope;
        p->key = key;
        INIT_LIST_HEAD(&p->binding_sock);
        INIT_LIST_HEAD(&p->binding_node);
@@ -472,22 +465,23 @@ static struct tipc_service *tipc_service_find(struct net *net, u32 type)
        return NULL;
 };
 
-struct publication *tipc_nametbl_insert_publ(struct net *net, u32 type,
-                                            u32 lower, u32 upper,
-                                            u32 scope, u32 node,
-                                            u32 port, u32 key)
+struct publication *tipc_nametbl_insert_publ(struct net *net,
+                                            struct tipc_uaddr *ua,
+                                            struct tipc_socket_addr *sk,
+                                            u32 key)
 {
        struct name_table *nt = tipc_name_table(net);
        struct tipc_service *sc;
        struct publication *p;
+       u32 type = ua->sr.type;
 
-       p = tipc_publ_create(type, lower, upper, scope, node, port, key);
+       p = tipc_publ_create(ua, sk, key);
        if (!p)
                return NULL;
 
-       if (scope > TIPC_NODE_SCOPE || lower > upper) {
-               pr_debug("Failed to bind illegal {%u,%u,%u} with scope %u\n",
-                        type, lower, upper, scope);
+       if (ua->sr.lower > ua->sr.upper) {
+               pr_debug("Failed to bind illegal {%u,%u,%u} from node %u\n",
+                        type, ua->sr.lower, ua->sr.upper, sk->node);
                return NULL;
        }
        sc = tipc_service_find(net, type);
@@ -756,9 +750,7 @@ struct publication *tipc_nametbl_publish(struct net *net, struct tipc_uaddr *ua,
                goto exit;
        }
 
-       p = tipc_nametbl_insert_publ(net, ua->sr.type, ua->sr.lower,
-                                    ua->sr.upper, ua->scope,
-                                    sk->node, sk->ref, key);
+       p = tipc_nametbl_insert_publ(net, ua, sk, key);
        if (p) {
                nt->local_publ_count++;
                skb = tipc_named_publish(net, p);
index 47a8c26..c8b026e 100644 (file)
@@ -75,7 +75,7 @@ struct tipc_uaddr;
 struct publication {
        struct tipc_service_range sr;
        struct tipc_socket_addr sk;
-       u32 scope;
+       u16 scope;
        u32 key;
        u32 id;
        struct list_head binding_node;
@@ -125,9 +125,10 @@ struct publication *tipc_nametbl_publish(struct net *net, struct tipc_uaddr *ua,
                                         struct tipc_socket_addr *sk, u32 key);
 int tipc_nametbl_withdraw(struct net *net, u32 type, u32 lower, u32 upper,
                          u32 key);
-struct publication *tipc_nametbl_insert_publ(struct net *net, u32 type,
-                                            u32 lower, u32 upper, u32 scope,
-                                            u32 node, u32 ref, u32 key);
+struct publication *tipc_nametbl_insert_publ(struct net *net,
+                                            struct tipc_uaddr *ua,
+                                            struct tipc_socket_addr *sk,
+                                            u32 key);
 struct publication *tipc_nametbl_remove_publ(struct net *net, u32 type,
                                             u32 lower, u32 upper,
                                             u32 node, u32 key);