Date: Tue, 19 Mar 2002 20:44:44 +1100 From: Peter Jeremy <peter.jeremy@alcatel.com.au> To: Sergey Babkin <sergey@caldera.com> Cc: arch@FreeBSD.ORG, chawla@caldera.com Subject: Re: proposition for new socket syscalls {send,recv}fromto Message-ID: <20020319204443.A46069@gsmx07.alcatel.com.au> In-Reply-To: <3C800A80.96CEA9D2@caldera.com>; from sergey@caldera.com on Fri, Mar 01, 2002 at 06:10:56PM -0500 References: <3C800A80.96CEA9D2@caldera.com>
next in thread | previous in thread | raw e-mail | index | archive | help
[Catching up on old mail] On Fri, Mar 01, 2002 at 06:10:56PM -0500, Sergey Babkin wrote: >In the high-availability clusters it's convenient and typical to assign >an IP address to a logical server (or service). This logical server >may be moved between the physical hosts as neccessary (for example, >if a physical host fails or needs to be shut down for maintenance). >So this addres gets added to an interface of the current physical >host as an alias. Here comes the bad part: this alias happens to be >on the same subnet as the primary address of this interface, and this >may cause a confusion about the source address of the packets coming out >of this host. You might like to look at how (eg) Compaq handles this. I've used TruCluster on Tru64 4.0D/4.0F - it uses this approach and basically ignores the ensuing problems :-(. The clustering code in Tru64 5.x (which I haven't used yet) may do a better job. > But for the UDP servers (for example, tftp or BIND) >there is an issue: This can also affect things like CORBA and FTP where there are multiple TCP connections with the server either setting up or specifying how to set up the secondary connections. I've also had problems convincing SAMBA to behave the way I want it to. >How can we fix this situation ? Everything would become a lot simpler >if we have the calls: > >ssize_t >recvfromto(int s, void *buf, size_t len, int flags, > struct sockaddr *from, int *fromlen, > struct sockaddr *to, int *tolen) ... >ssize_t >sendfromto(int s, void *buf, size_t len, int flags, > const struct sockaddr *from, int fromlen, > const struct sockaddr *to, int tolen) Other than using 'socklen_t *' instead of 'int *' for the former, these look like a good idea. They appear to be easy to use and easy/cheap to implement. Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020319204443.A46069>