OSDN Git Service

tipc: increase size of tipc discovery messages
authorErik Hugne <erik.hugne@ericsson.com>
Thu, 5 Mar 2015 09:23:48 +0000 (10:23 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Mar 2015 03:08:42 +0000 (22:08 -0500)
The payload area following the TIPC discovery message header is an
opaque area defined by the media. INT_H_SIZE was enough for
Ethernet/IB/IPv4 but needs to be expanded to carry IPv6 addressing
information.

Signed-off-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/discover.c

index feef375..5967506 100644 (file)
@@ -86,7 +86,7 @@ static void tipc_disc_init_msg(struct net *net, struct sk_buff *buf, u32 type,
 
        msg = buf_msg(buf);
        tipc_msg_init(tn->own_addr, msg, LINK_CONFIG, type,
-                     INT_H_SIZE, dest_domain);
+                     MAX_H_SIZE, dest_domain);
        msg_set_non_seq(msg, 1);
        msg_set_node_sig(msg, tn->random);
        msg_set_dest_domain(msg, dest_domain);
@@ -249,7 +249,7 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *buf,
 
        /* Send response, if necessary */
        if (respond && (mtyp == DSC_REQ_MSG)) {
-               rbuf = tipc_buf_acquire(INT_H_SIZE);
+               rbuf = tipc_buf_acquire(MAX_H_SIZE);
                if (rbuf) {
                        tipc_disc_init_msg(net, rbuf, DSC_RESP_MSG, bearer);
                        tipc_bearer_send(net, bearer->identity, rbuf, &maddr);
@@ -359,8 +359,7 @@ int tipc_disc_create(struct net *net, struct tipc_bearer *b_ptr,
        req = kmalloc(sizeof(*req), GFP_ATOMIC);
        if (!req)
                return -ENOMEM;
-
-       req->buf = tipc_buf_acquire(INT_H_SIZE);
+       req->buf = tipc_buf_acquire(MAX_H_SIZE);
        if (!req->buf) {
                kfree(req);
                return -ENOMEM;