Re: SO_REUSEADDR setsockopt() and SCTP

From: Brian F. G. Bidulock <bidulock@openss7.org>
Date: Fri Feb 11 2005 - 18:48:10 EST
('binary' encoding is not supported, stored as-is) ('binary' encoding is not supported, stored as-is) Anatoly,

POSIX:

 SO_REUSEADDR
     Specifies that the rules used in validating addresses supplied to bind()
     should allow reuse of local addresses, if this is supported by the protocol.
     This option takes an int value. This is a boolean option.

SO_REUSEADDR is necessary to bind to a protocol address that is already
listening or connected (or in the case of TCP in timed wait as well).

The former two are perfectly applicable to SCTP.

--brian

On Fri, 11 Feb 2005, Anatoly Khusid wrote:

>
> >SO_REUSEADDR is described by POSIX and is protocol independent.
>
> It works different on Linux SLES9 vs. Solaris when using SCTP sockets.
> I provided an example which illustrates the differences.
> This web site only explains how SO_REUSEADDR work with TCP.
> Is TCP TIME_WAIT equivalent to SCTP_SHUTDOWN_PENDING ?
>
>
> >You can use setsockopt() to set the SO_REUSEADDR socket option, which
> explicitly
> >allows a process to bind to a port which remains in TIME_WAIT (it still
> only
> >allows a single process to be bound to that port). This is the both the
> simplest
> >and the most effective option for reducing the "address already in use"
> error.
>
> http://hea-www.harvard.edu/~fine/Tech/addrinuse.html
>
> -----Original Message-----
> From: Brian F. G. Bidulock [mailto:bidulock@openss7.org]
> Sent: Friday, February 11, 2005 5:04 PM
> To: Anatoly Khusid
> Cc: sctp-impl@external.cisco.com
> Subject: Re: SO_REUSEADDR setsockopt() and SCTP
>
>
> Anatoly,
>
> SO_REUSEADDR is described by POSIX and is protocol independent.
>
> --brian
>
> On Fri, 11 Feb 2005, Anatoly Khusid wrote:
>
> > This question deals more with "SCTP Sockets API" draft. I have not seen
> any
> > explanation in this document regarding the usage of SO_REUSEADDR on SCTP
> > sockets.
> > The following code fails on Solaris 10:
> >
> >
> > ADDR = Some valid address to bind
> > fd1 = socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);
> > setsockopt(fd1, SOL_SOCKET, SO_REUSEADDR)
> > bind(fd1, ADDR)
> > fd2 = socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);
> > setsockopt(fd2, SOL_SOCKET, SO_REUSEADDR)
> > bind(fd2, ADDR) <=== Fails with errno="Address in use"
> >
> >
> > However, the above code works fine on Linux SLES9. Does it mean that
> Linux
> > has a bug, or this is something implementation dependent?
> > What is the right behavior for SO_REUSEADDR on SCTP sockets?
> > Do you think this should be explained/documented in "SCTP Sockets API"?
> >
> > Thanks,
> >
> > Anatoly Khusid
>
> --
> Brian F. G. Bidulock ¦ The reasonable man adapts himself to the ¦
> bidulock@openss7.org ¦ world; the unreasonable one persists in ¦
> http://www.openss7.org/ ¦ trying to adapt the world to himself. ¦
> ¦ Therefore all progress depends on the ¦
> ¦ unreasonable man. -- George Bernard Shaw ¦

-- 
Brian F. G. Bidulock    ¦ The reasonable man adapts himself to the ¦
bidulock@openss7.org    ¦ world; the unreasonable one persists in  ¦
http://www.openss7.org/ ¦ trying  to adapt the  world  to himself. ¦
                        ¦ Therefore  all  progress  depends on the ¦
                        ¦ unreasonable man. -- George Bernard Shaw ¦
Received on Fri Feb 11 18:54:47 2005

This archive was generated by hypermail 2.1.8 : Mon Mar 13 2006 - 15:22:24 EST