net: reserve ports for applications using fixed port numbers
(Dropped the infiniband part, because Tetsuo modified the related code, I will send a separate patch for it once this is accepted.) This patch introduces /proc/sys/net/ipv4/ip_local_reserved_ports which allows users to reserve ports for third-party applications. The reserved ports will not be used by automatic port assignments (e.g. when calling connect() or bind() with port number 0). Explicit port allocation behavior is unchanged. Signed-off-by: Octavian Purdila <opurdila@ixiacom.com> Signed-off-by: WANG Cong <amwang@redhat.com> Cc: Neil Horman <nhorman@tuxdriver.com> Cc: Eric Dumazet <eric.dumazet@gmail.com> Cc: Eric W. Biederman <ebiederm@xmission.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9f977fb7ae
commit
e3826f1e94
@@ -37,6 +37,9 @@ struct local_ports sysctl_local_ports __read_mostly = {
|
||||
.range = { 32768, 61000 },
|
||||
};
|
||||
|
||||
unsigned long *sysctl_local_reserved_ports;
|
||||
EXPORT_SYMBOL(sysctl_local_reserved_ports);
|
||||
|
||||
void inet_get_local_port_range(int *low, int *high)
|
||||
{
|
||||
unsigned seq;
|
||||
@@ -108,6 +111,8 @@ again:
|
||||
|
||||
smallest_size = -1;
|
||||
do {
|
||||
if (inet_is_reserved_local_port(rover))
|
||||
goto next_nolock;
|
||||
head = &hashinfo->bhash[inet_bhashfn(net, rover,
|
||||
hashinfo->bhash_size)];
|
||||
spin_lock(&head->lock);
|
||||
@@ -130,6 +135,7 @@ again:
|
||||
break;
|
||||
next:
|
||||
spin_unlock(&head->lock);
|
||||
next_nolock:
|
||||
if (++rover > high)
|
||||
rover = low;
|
||||
} while (--remaining > 0);
|
||||
|
Reference in New Issue
Block a user