diff options
Diffstat (limited to 'net/tipc/bearer.c')
-rw-r--r-- | net/tipc/bearer.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 411719feb803..f7c29af4ab81 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c | |||
@@ -493,8 +493,15 @@ int tipc_enable_bearer(const char *name, u32 disc_domain, u32 priority) | |||
493 | warn("Bearer <%s> rejected, illegal name\n", name); | 493 | warn("Bearer <%s> rejected, illegal name\n", name); |
494 | return -EINVAL; | 494 | return -EINVAL; |
495 | } | 495 | } |
496 | if (!tipc_addr_domain_valid(disc_domain) || | 496 | if (tipc_addr_domain_valid(disc_domain) && |
497 | !tipc_in_scope(disc_domain, tipc_own_addr)) { | 497 | (disc_domain != tipc_own_addr)) { |
498 | if (tipc_in_scope(disc_domain, tipc_own_addr)) { | ||
499 | disc_domain = tipc_own_addr & TIPC_CLUSTER_MASK; | ||
500 | res = 0; /* accept any node in own cluster */ | ||
501 | } else if (in_own_cluster(disc_domain)) | ||
502 | res = 0; /* accept specified node in own cluster */ | ||
503 | } | ||
504 | if (res) { | ||
498 | warn("Bearer <%s> rejected, illegal discovery domain\n", name); | 505 | warn("Bearer <%s> rejected, illegal discovery domain\n", name); |
499 | return -EINVAL; | 506 | return -EINVAL; |
500 | } | 507 | } |