diff options
Diffstat (limited to 'net/tipc/msg.c')
-rw-r--r-- | net/tipc/msg.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/net/tipc/msg.c b/net/tipc/msg.c index da67c8d3edc6..940d74197b8c 100644 --- a/net/tipc/msg.c +++ b/net/tipc/msg.c | |||
@@ -70,25 +70,23 @@ struct sk_buff *tipc_buf_acquire(u32 size) | |||
70 | return skb; | 70 | return skb; |
71 | } | 71 | } |
72 | 72 | ||
73 | void tipc_msg_init(struct net *net, struct tipc_msg *m, u32 user, u32 type, | 73 | void tipc_msg_init(u32 own_node, struct tipc_msg *m, u32 user, u32 type, |
74 | u32 hsize, u32 destnode) | 74 | u32 hsize, u32 dnode) |
75 | { | 75 | { |
76 | struct tipc_net *tn = net_generic(net, tipc_net_id); | ||
77 | |||
78 | memset(m, 0, hsize); | 76 | memset(m, 0, hsize); |
79 | msg_set_version(m); | 77 | msg_set_version(m); |
80 | msg_set_user(m, user); | 78 | msg_set_user(m, user); |
81 | msg_set_hdr_sz(m, hsize); | 79 | msg_set_hdr_sz(m, hsize); |
82 | msg_set_size(m, hsize); | 80 | msg_set_size(m, hsize); |
83 | msg_set_prevnode(m, tn->own_addr); | 81 | msg_set_prevnode(m, own_node); |
84 | msg_set_type(m, type); | 82 | msg_set_type(m, type); |
85 | if (hsize > SHORT_H_SIZE) { | 83 | if (hsize > SHORT_H_SIZE) { |
86 | msg_set_orignode(m, tn->own_addr); | 84 | msg_set_orignode(m, own_node); |
87 | msg_set_destnode(m, destnode); | 85 | msg_set_destnode(m, dnode); |
88 | } | 86 | } |
89 | } | 87 | } |
90 | 88 | ||
91 | struct sk_buff *tipc_msg_create(struct net *net, uint user, uint type, | 89 | struct sk_buff *tipc_msg_create(uint user, uint type, |
92 | uint hdr_sz, uint data_sz, u32 dnode, | 90 | uint hdr_sz, uint data_sz, u32 dnode, |
93 | u32 onode, u32 dport, u32 oport, int errcode) | 91 | u32 onode, u32 dport, u32 oport, int errcode) |
94 | { | 92 | { |
@@ -100,9 +98,8 @@ struct sk_buff *tipc_msg_create(struct net *net, uint user, uint type, | |||
100 | return NULL; | 98 | return NULL; |
101 | 99 | ||
102 | msg = buf_msg(buf); | 100 | msg = buf_msg(buf); |
103 | tipc_msg_init(net, msg, user, type, hdr_sz, dnode); | 101 | tipc_msg_init(onode, msg, user, type, hdr_sz, dnode); |
104 | msg_set_size(msg, hdr_sz + data_sz); | 102 | msg_set_size(msg, hdr_sz + data_sz); |
105 | msg_set_prevnode(msg, onode); | ||
106 | msg_set_origport(msg, oport); | 103 | msg_set_origport(msg, oport); |
107 | msg_set_destport(msg, dport); | 104 | msg_set_destport(msg, dport); |
108 | msg_set_errcode(msg, errcode); | 105 | msg_set_errcode(msg, errcode); |
@@ -195,7 +192,7 @@ err: | |||
195 | * | 192 | * |
196 | * Returns message data size or errno: -ENOMEM, -EFAULT | 193 | * Returns message data size or errno: -ENOMEM, -EFAULT |
197 | */ | 194 | */ |
198 | int tipc_msg_build(struct net *net, struct tipc_msg *mhdr, struct msghdr *m, | 195 | int tipc_msg_build(struct tipc_msg *mhdr, struct msghdr *m, |
199 | int offset, int dsz, int pktmax, struct sk_buff_head *list) | 196 | int offset, int dsz, int pktmax, struct sk_buff_head *list) |
200 | { | 197 | { |
201 | int mhsz = msg_hdr_sz(mhdr); | 198 | int mhsz = msg_hdr_sz(mhdr); |
@@ -227,8 +224,8 @@ int tipc_msg_build(struct net *net, struct tipc_msg *mhdr, struct msghdr *m, | |||
227 | } | 224 | } |
228 | 225 | ||
229 | /* Prepare reusable fragment header */ | 226 | /* Prepare reusable fragment header */ |
230 | tipc_msg_init(net, &pkthdr, MSG_FRAGMENTER, FIRST_FRAGMENT, INT_H_SIZE, | 227 | tipc_msg_init(msg_prevnode(mhdr), &pkthdr, MSG_FRAGMENTER, |
231 | msg_destnode(mhdr)); | 228 | FIRST_FRAGMENT, INT_H_SIZE, msg_destnode(mhdr)); |
232 | msg_set_size(&pkthdr, pktmax); | 229 | msg_set_size(&pkthdr, pktmax); |
233 | msg_set_fragm_no(&pkthdr, pktno); | 230 | msg_set_fragm_no(&pkthdr, pktno); |
234 | 231 | ||
@@ -338,7 +335,7 @@ bool tipc_msg_bundle(struct sk_buff_head *list, struct sk_buff *skb, u32 mtu) | |||
338 | * Replaces buffer if successful | 335 | * Replaces buffer if successful |
339 | * Returns true if success, otherwise false | 336 | * Returns true if success, otherwise false |
340 | */ | 337 | */ |
341 | bool tipc_msg_make_bundle(struct net *net, struct sk_buff_head *list, | 338 | bool tipc_msg_make_bundle(struct sk_buff_head *list, |
342 | struct sk_buff *skb, u32 mtu, u32 dnode) | 339 | struct sk_buff *skb, u32 mtu, u32 dnode) |
343 | { | 340 | { |
344 | struct sk_buff *bskb; | 341 | struct sk_buff *bskb; |
@@ -362,7 +359,8 @@ bool tipc_msg_make_bundle(struct net *net, struct sk_buff_head *list, | |||
362 | 359 | ||
363 | skb_trim(bskb, INT_H_SIZE); | 360 | skb_trim(bskb, INT_H_SIZE); |
364 | bmsg = buf_msg(bskb); | 361 | bmsg = buf_msg(bskb); |
365 | tipc_msg_init(net, bmsg, MSG_BUNDLER, 0, INT_H_SIZE, dnode); | 362 | tipc_msg_init(msg_prevnode(msg), bmsg, MSG_BUNDLER, 0, |
363 | INT_H_SIZE, dnode); | ||
366 | msg_set_seqno(bmsg, msg_seqno(msg)); | 364 | msg_set_seqno(bmsg, msg_seqno(msg)); |
367 | msg_set_ack(bmsg, msg_ack(msg)); | 365 | msg_set_ack(bmsg, msg_ack(msg)); |
368 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); | 366 | msg_set_bcast_ack(bmsg, msg_bcast_ack(msg)); |
@@ -379,10 +377,9 @@ bool tipc_msg_make_bundle(struct net *net, struct sk_buff_head *list, | |||
379 | * Consumes buffer if failure | 377 | * Consumes buffer if failure |
380 | * Returns true if success, otherwise false | 378 | * Returns true if success, otherwise false |
381 | */ | 379 | */ |
382 | bool tipc_msg_reverse(struct net *net, struct sk_buff *buf, u32 *dnode, | 380 | bool tipc_msg_reverse(u32 own_addr, struct sk_buff *buf, u32 *dnode, |
383 | int err) | 381 | int err) |
384 | { | 382 | { |
385 | struct tipc_net *tn = net_generic(net, tipc_net_id); | ||
386 | struct tipc_msg *msg = buf_msg(buf); | 383 | struct tipc_msg *msg = buf_msg(buf); |
387 | uint imp = msg_importance(msg); | 384 | uint imp = msg_importance(msg); |
388 | struct tipc_msg ohdr; | 385 | struct tipc_msg ohdr; |
@@ -402,7 +399,7 @@ bool tipc_msg_reverse(struct net *net, struct sk_buff *buf, u32 *dnode, | |||
402 | msg_set_errcode(msg, err); | 399 | msg_set_errcode(msg, err); |
403 | msg_set_origport(msg, msg_destport(&ohdr)); | 400 | msg_set_origport(msg, msg_destport(&ohdr)); |
404 | msg_set_destport(msg, msg_origport(&ohdr)); | 401 | msg_set_destport(msg, msg_origport(&ohdr)); |
405 | msg_set_prevnode(msg, tn->own_addr); | 402 | msg_set_prevnode(msg, own_addr); |
406 | if (!msg_short(msg)) { | 403 | if (!msg_short(msg)) { |
407 | msg_set_orignode(msg, msg_destnode(&ohdr)); | 404 | msg_set_orignode(msg, msg_destnode(&ohdr)); |
408 | msg_set_destnode(msg, msg_orignode(&ohdr)); | 405 | msg_set_destnode(msg, msg_orignode(&ohdr)); |