diff options
Diffstat (limited to 'net/tipc/discover.c')
-rw-r--r-- | net/tipc/discover.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/net/tipc/discover.c b/net/tipc/discover.c index 669af125b3de..82556e19222d 100644 --- a/net/tipc/discover.c +++ b/net/tipc/discover.c | |||
@@ -139,6 +139,7 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *skb, | |||
139 | struct tipc_net *tn = tipc_net(net); | 139 | struct tipc_net *tn = tipc_net(net); |
140 | struct tipc_msg *hdr = buf_msg(skb); | 140 | struct tipc_msg *hdr = buf_msg(skb); |
141 | u16 caps = msg_node_capabilities(hdr); | 141 | u16 caps = msg_node_capabilities(hdr); |
142 | bool legacy = tn->legacy_addr_format; | ||
142 | u32 signature = msg_node_sig(hdr); | 143 | u32 signature = msg_node_sig(hdr); |
143 | u32 dst = msg_dest_domain(hdr); | 144 | u32 dst = msg_dest_domain(hdr); |
144 | u32 net_id = msg_bc_netid(hdr); | 145 | u32 net_id = msg_bc_netid(hdr); |
@@ -165,13 +166,11 @@ void tipc_disc_rcv(struct net *net, struct sk_buff *skb, | |||
165 | disc_dupl_alert(b, self, &maddr); | 166 | disc_dupl_alert(b, self, &maddr); |
166 | return; | 167 | return; |
167 | } | 168 | } |
168 | /* Domain filter only works if both peers use legacy address format */ | 169 | if (!tipc_in_scope(legacy, dst, self)) |
169 | if (b->domain) { | 170 | return; |
170 | if (!tipc_in_scope(dst, self)) | 171 | if (!tipc_in_scope(legacy, b->domain, src)) |
171 | return; | 172 | return; |
172 | if (!tipc_in_scope(b->domain, src)) | 173 | |
173 | return; | ||
174 | } | ||
175 | tipc_node_check_dest(net, src, b, caps, signature, | 174 | tipc_node_check_dest(net, src, b, caps, signature, |
176 | &maddr, &respond, &dupl_addr); | 175 | &maddr, &respond, &dupl_addr); |
177 | if (dupl_addr) | 176 | if (dupl_addr) |