From: Jacques Gelinas (jack_at_solucorp.qc.ca)
Date: Wed 10 Jul 2002 - 23:49:02 BST
On Wed, 3 Jul 2002 01:28:53 -0500, Paul Sladen wrote
> On Tue, 2 Jul 2002, Jacques Gelinas wrote:
> > Note that vserver-0.18 works with both older and newer kernels (the set_ipv4root
> > syscall had to be changed)
> I was wondering why the set_ipv4root hadn't been designed so that it could
> be passed a struct in the first place. Therefore maintaining binary
> compatibility across upgrades by checking a version field in the structure.
It works differently. The kernel advertises (using /proc/self/status), the version
of the system call it supports. So instead of putting kludge (compatibility tricks)
in the kernel, they go in the application (chbind). Given this system call will
probably be only called by one utility, it is better to keep the compatibility
issues outside the kernel. Makes the kernel thiner...
> Another advantage in having a single set_iproot() call would allow for
> arbitary expansion to include IPv6 addresses.
Yes, the system will probably change again, allowing to specify arbitrary
address family type.
> > A complete changelog will follow.
> Presumabley binding to * will now bind to the first configured IP address?
Yes. Doing differently would slow down things. The current implementation
slows down bind a little bit, but does not slow down the rest of the networking
code and bind is generally used only at service initialisation.
I would like to find a way to provide the true semantic nevertheless without
losing any performance.
Jacques Gelinas <jack_at_solucorp.qc.ca>
vserver: run general purpose virtual servers on one box, full speed!