diff options
author | Tóth László Attila <panther@balabit.hu> | 2008-10-01 10:31:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-10-01 10:31:24 -0400 |
commit | b9fb15067ce93497bef852c05e406d7a96212a9a (patch) | |
tree | 5d7054558b8c6d2433a692b7bcdfdf0868facca5 /net | |
parent | f5715aea4564f233767ea1d944b2637a5fd7cd2e (diff) |
ipv4: Allow binding to non-local addresses if IP_TRANSPARENT is set
Setting IP_TRANSPARENT is not really useful without allowing non-local
binds for the socket. To make user-space code simpler we allow these
binds even if IP_TRANSPARENT is set but IP_FREEBIND is not.
Signed-off-by: Tóth László Attila <panther@balabit.hu>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/af_inet.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 8a3ac1fa71a9..1fbff5fa4241 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
@@ -469,7 +469,7 @@ int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
469 | */ | 469 | */ |
470 | err = -EADDRNOTAVAIL; | 470 | err = -EADDRNOTAVAIL; |
471 | if (!sysctl_ip_nonlocal_bind && | 471 | if (!sysctl_ip_nonlocal_bind && |
472 | !inet->freebind && | 472 | !(inet->freebind || inet->transparent) && |
473 | addr->sin_addr.s_addr != htonl(INADDR_ANY) && | 473 | addr->sin_addr.s_addr != htonl(INADDR_ANY) && |
474 | chk_addr_ret != RTN_LOCAL && | 474 | chk_addr_ret != RTN_LOCAL && |
475 | chk_addr_ret != RTN_MULTICAST && | 475 | chk_addr_ret != RTN_MULTICAST && |