Prev: sysfs: add lockdep class support to s_active
Next: [0/4] SLAB: Fix a couple of slab memory hotadd issues
From: Bart Van Assche on 5 Feb 2010 02:20 On Wed, Feb 3, 2010 at 5:30 AM, Amerigo Wang <amwang(a)redhat.com> wrote: > > This patch introduces /proc/sys/net/ipv4/ip_local_reserved_ports, > it can be used like ip_local_port_range, but this is used to > reserve ports for third-party applications which use fixed > port numbers within ip_local_port_range. > > This only affects the applications which call socket functions > like bind(2) with port number 0, to prevent the kernel getting the ports > within the specified range for them. For applications which use fixed > port number, it will have no effects. > > Any comments are welcome. Relying on fixed port numbers is generally considered as a shortcoming in the application. It would be helpful if you could explain more in detail why port number reservation is necessary. Maybe there exists another solution that does not require modifying the bind() system call. A quote from the UNIX socket FAQ (http://www.faqs.org/faqs/unix-faq/socket/): 4.10. How should I choose a port number for my server? The list of registered port assignments can be found in STD 2 or RFC 1700. Choose one that isn't already registered, and isn't in /etc/services on your system. It is also a good idea to let users customize the port number in case of conflicts with other un- registered port numbers in other servers. The best way of doing this is hardcoding a service name, and using getservbyname() to lookup the actual port number. This method allows users to change the port your server binds to by simply editing the /etc/services file. Bart. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
From: Cong Wang on 5 Feb 2010 02:30
Bart Van Assche wrote: > On Wed, Feb 3, 2010 at 5:30 AM, Amerigo Wang <amwang(a)redhat.com> wrote: >> This patch introduces /proc/sys/net/ipv4/ip_local_reserved_ports, >> it can be used like ip_local_port_range, but this is used to >> reserve ports for third-party applications which use fixed >> port numbers within ip_local_port_range. >> >> This only affects the applications which call socket functions >> like bind(2) with port number 0, to prevent the kernel getting the ports >> within the specified range for them. For applications which use fixed >> port number, it will have no effects. >> >> Any comments are welcome. > > Relying on fixed port numbers is generally considered as a shortcoming > in the application. It would be helpful if you could explain more in > detail why port number reservation is necessary. Maybe there exists > another solution that does not require modifying the bind() system > call. > The problem is that there are some existing applications which use fixed port number, we don't have chances to change this for them, thus making them working is desired, so they want to reserve these port for those applications. For example, if I have an appliction which uses port 40000, but before this application starts, another application gets this port number by bind() with port 0 (i.e. chosen by kernel), in this case, that application will fail to start. Again, we don't have any chance to change the source code of that application. Hope this can make the problem clear. Thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |