summaryrefslogtreecommitdiff
path: root/net/tipc
diff options
context:
space:
mode:
authorAllan Stephens <allan.stephens@windriver.com>2011-06-01 19:48:42 (GMT)
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-06-24 20:18:18 (GMT)
commitf55b564054e35dcd171e1191a477327528271f95 (patch)
tree303f49ddb2f42092f85afe10d90922fcabf5e004 /net/tipc
parent1c1a551acb8b65f842824900b283a96462f907ab (diff)
downloadlinux-f55b564054e35dcd171e1191a477327528271f95.tar.xz
tipc: Don't create payload message using connection protocol routine
Modifies the logic that creates a connection termination payload message so that it no longer (mis)uses a routine that creates a connection protocol message. The revised code is now more easily understood, and avoids setting several fields that are either not present in payload messages or were being set more than once. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net/tipc')
-rw-r--r--net/tipc/port.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/net/tipc/port.c b/net/tipc/port.c
index 1b20b96..ab0a8e9 100644
--- a/net/tipc/port.c
+++ b/net/tipc/port.c
@@ -539,14 +539,15 @@ void tipc_port_recv_proto_msg(struct sk_buff *buf)
if (!p_ptr || !p_ptr->connected ||
(port_peernode(p_ptr) != orignode) ||
(port_peerport(p_ptr) != origport)) {
- r_buf = port_build_proto_msg(origport,
- orignode,
- destport,
- tipc_own_addr,
- TIPC_HIGH_IMPORTANCE,
- TIPC_CONN_MSG,
- TIPC_ERR_NO_PORT,
- 0);
+ r_buf = tipc_buf_acquire(BASIC_H_SIZE);
+ if (r_buf) {
+ msg = buf_msg(r_buf);
+ tipc_msg_init(msg, TIPC_HIGH_IMPORTANCE, TIPC_CONN_MSG,
+ BASIC_H_SIZE, orignode);
+ msg_set_errcode(msg, TIPC_ERR_NO_PORT);
+ msg_set_origport(msg, destport);
+ msg_set_destport(msg, origport);
+ }
if (p_ptr)
tipc_port_unlock(p_ptr);
goto exit;