summaryrefslogtreecommitdiffstats
path: root/net/tipc/discover.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/tipc/discover.c')
-rw-r--r--net/tipc/discover.c13
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)