diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/tipc/discover.c | 3 | ||||
-rw-r--r-- | net/tipc/msg.h | 11 | ||||
-rw-r--r-- | net/tipc/node.h | 4 |
3 files changed, 16 insertions, 2 deletions
diff --git a/net/tipc/discover.c b/net/tipc/discover.c index 5967506833ce..169f3dd038b9 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c | |||
@@ -89,6 +89,7 @@ static void tipc_disc_init_msg(struct net *net, struct sk_buff *buf, u32 type, | |||
89 | MAX_H_SIZE, dest_domain); | 89 | MAX_H_SIZE, dest_domain); |
90 | msg_set_non_seq(msg, 1); | 90 | msg_set_non_seq(msg, 1); |
91 | msg_set_node_sig(msg, tn->random); | 91 | msg_set_node_sig(msg, tn->random); |
92 | msg_set_node_capabilities(msg, 0); | ||
92 | msg_set_dest_domain(msg, dest_domain); | 93 | msg_set_dest_domain(msg, dest_domain); |
93 | msg_set_bc_netid(msg, tn->net_id); | 94 | msg_set_bc_netid(msg, tn->net_id); |
94 | b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr); | 95 | b_ptr->media->addr2msg(msg_media_addr(msg), &b_ptr->addr); |
@@ -133,6 +134,7 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *buf, | |||
133 | u32 net_id = msg_bc_netid(msg); | 134 | u32 net_id = msg_bc_netid(msg); |
134 | u32 mtyp = msg_type(msg); | 135 | u32 mtyp = msg_type(msg); |
135 | u32 signature = msg_node_sig(msg); | 136 | u32 signature = msg_node_sig(msg); |
137 | u16 caps = msg_node_capabilities(msg); | ||
136 | bool addr_match = false; | 138 | bool addr_match = false; |
137 | bool sign_match = false; | 139 | bool sign_match = false; |
138 | bool link_up = false; | 140 | bool link_up = false; |
@@ -167,6 +169,7 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *buf, | |||
167 | if (!node) | 169 | if (!node) |
168 | return; | 170 | return; |
169 | tipc_node_lock(node); | 171 | tipc_node_lock(node); |
172 | node->capabilities = caps; | ||
170 | link = node->links[bearer->identity]; | 173 | link = node->links[bearer->identity]; |
171 | 174 | ||
172 | /* Prepare to validate requesting node's signature and media address */ | 175 | /* Prepare to validate requesting node's signature and media address */ |
diff --git a/net/tipc/msg.h b/net/tipc/msg.h index fa167846d1ab..7cece647394c 100644 --- a/net/tipc/msg.h +++ b/net/tipc/msg.h | |||
@@ -510,7 +510,6 @@ static inline struct tipc_msg *msg_get_wrapped(struct tipc_msg *m) | |||
510 | #define DSC_REQ_MSG 0 | 510 | #define DSC_REQ_MSG 0 |
511 | #define DSC_RESP_MSG 1 | 511 | #define DSC_RESP_MSG 1 |
512 | 512 | ||
513 | |||
514 | /* | 513 | /* |
515 | * Word 1 | 514 | * Word 1 |
516 | */ | 515 | */ |
@@ -534,6 +533,16 @@ static inline void msg_set_node_sig(struct tipc_msg *m, u32 n) | |||
534 | msg_set_bits(m, 1, 0, 0xffff, n); | 533 | msg_set_bits(m, 1, 0, 0xffff, n); |
535 | } | 534 | } |
536 | 535 | ||
536 | static inline u32 msg_node_capabilities(struct tipc_msg *m) | ||
537 | { | ||
538 | return msg_bits(m, 1, 15, 0x1fff); | ||
539 | } | ||
540 | |||
541 | static inline void msg_set_node_capabilities(struct tipc_msg *m, u32 n) | ||
542 | { | ||
543 | msg_set_bits(m, 1, 15, 0x1fff, n); | ||
544 | } | ||
545 | |||
537 | 546 | ||
538 | /* | 547 | /* |
539 | * Word 2 | 548 | * Word 2 |
diff --git a/net/tipc/node.h b/net/tipc/node.h index 3d18c66b7f78..f78be64e105b 100644 --- a/net/tipc/node.h +++ b/net/tipc/node.h | |||
@@ -106,6 +106,7 @@ struct tipc_node_bclink { | |||
106 | * @list: links to adjacent nodes in sorted list of cluster's nodes | 106 | * @list: links to adjacent nodes in sorted list of cluster's nodes |
107 | * @working_links: number of working links to node (both active and standby) | 107 | * @working_links: number of working links to node (both active and standby) |
108 | * @link_cnt: number of links to node | 108 | * @link_cnt: number of links to node |
109 | * @capabilities: bitmap, indicating peer node's functional capabilities | ||
109 | * @signature: node instance identifier | 110 | * @signature: node instance identifier |
110 | * @link_id: local and remote bearer ids of changing link, if any | 111 | * @link_id: local and remote bearer ids of changing link, if any |
111 | * @publ_list: list of publications | 112 | * @publ_list: list of publications |
@@ -125,7 +126,8 @@ struct tipc_node { | |||
125 | struct tipc_node_bclink bclink; | 126 | struct tipc_node_bclink bclink; |
126 | struct list_head list; | 127 | struct list_head list; |
127 | int link_cnt; | 128 | int link_cnt; |
128 | int working_links; | 129 | u16 working_links; |
130 | u16 capabilities; | ||
129 | u32 signature; | 131 | u32 signature; |
130 | u32 link_id; | 132 | u32 link_id; |
131 | struct list_head publ_list; | 133 | struct list_head publ_list; |