[comp.sys.sun] Problem with bind system call over slip link

rob@orc.olivetti.com (Rob Liebschutz) (12/24/89)

I'm running a slip connection between a sun 3/80 running SunOS 4.0.3 and a
Cisco terminal server.  The slip connection gets established, and telnet
sessions work fine.  The problem that I'm having is that programs such as
ftp that use the BIND system call don't work.  Bind fails with error 49
EADDRNOTAVAIL (Can't assign requested address) (on the Sun 3/80 end).
I've used the debugger and found that bind is trying to bind the ip
address of the slip interface to the socket which it has created for ftp's
data connection.  Yes, ftp does an SO_REUSEADDR ioctl on the socket before
calling bind.

I've already looked for the possibility of a problem in the reverse
mapping of IP address to hostname and can't find any.  A call to
gethostbyaddr returns the fully qualified hostname of my machine which is
identical to the string set by the hostname command.

If I shutdown slip and ifconfig le0 to the same ip address, I am able to
ftp to my own hostname (and I couldn't when slip was running).

It would seem that the solution to this problem should be very
straightfoward.  Any ideas?  If not, it would be useful to know under what
conditions the bind system call returns the EADDRNOTAVAIL error.

The only thing odd about my configuration is that the slip software on the
Sun seems to want to use point to point links for the connection, but the
Cisco terminal server running 7.?? doesn't.  I've told the slip software
on my Sun that the IP address at the other end of the point to point link
is the IP address of the terminal server.  This seems to work fine, at
least for passing IP packets.

Thanks,
Rob

replogle@headroom.ncsa.uiuc.edu (Joel Replogle) (12/26/89)

Rob, my group has had no problems with running SLIP between a couple of
Suns and a Cisco terminal server.  We ran it with our own home- brew
version of SLIP (according to RFC 1055, of course!)...  to me is sounds
like either the SLIP software is bonkers, or perhaps the Sun configuration
is messed up.  It should definitely NOT be a point- to-point link,
thought, because it isn't.  The SLIP connection should look to your Sun
exactly like the ethernet connection.  The cisco is doing proxy-ARP for
you on it's ethernet interface, so to your Sun it should look like it's
directly connected to the cisco's ethernet.  The cisco tells you the SLIP
address, you should use that address when ifconfig'ing the interface.

To me, this part of your message looks like the problem:

>The only thing odd about my configuration is that the slip software on
>the Sun seems to want to use point to point links for the connection,
>but the Cisco terminal server running 7.?? doesn't.  I've told the
>slip software on my Sun that the IP address at the other end of the
>point to point link is the IP address of the terminal server.  This
>seems to work fine, at least for passing IP packets.

Joel Replogle
NCSA networking R&D

wrs@niagara.tymnet.com (Bill Soley) (12/27/89)

I don't use cisco SLIP, but I can say this about Sun SLIP: Sun thinks of
the SLIP line as a network unto itself, not as an interface to a remote
network.  This means the SLIP line needs its own (unique) network (or
subnet) number and the interface at each end needs a host number on that
network (one for cisco and a different one for Sun).  This is the same
model 4.3 BSD uses.

Try changing
	sc->sc_if.if_flags = IFF_POINTOPOINT;
to
	sc->sc_if.if_flags = 0;		/* was IFF_POINTOPOINT */
in if_sl.c and rebuilding your kernel.

Then specify the remote network (subnet) number as the destination in the
slattach command.

This may work or it may not.

William R. Soley 			|  Internet: wrs@Tymnet.COM
BT Tymnet, Inc		 		|  UUCP: {ames,sun}!oliveb!tymix!wrs
2560 North First Street 		|  Voice: 408-922-6210
P.O.Box 49019, San Jose, CA 95161-9019 	|  Fax:   408-922-6125

jch@risci.tn.cornell.edu (Jeffrey C Honig) (01/04/90)

On Tue, 26 Dec 89 14:59:16 PST wrs@niagara.tymnet.com (Bill Soley) writes:
| I don't use cisco SLIP, but I can say this about Sun SLIP: Sun thinks of
| the SLIP line as a network unto itself, not as an interface to a remote
| network.  This means the SLIP line needs its own (unique) network (or
| subnet) number and the interface at each end needs a host number on that
| network (one for cisco and a different one for Sun).  This is the same
| model 4.3 BSD uses.
| 
| Try changing
| 	sc->sc_if.if_flags = IFF_POINTOPOINT;
| to
| 	sc->sc_if.if_flags = 0;		/* was IFF_POINTOPOINT */
| in if_sl.c and rebuilding your kernel.
| 
| Then specify the remote network (subnet) number as the destination in the
| slattach command.

SLIP links are host routes, they do not have a subnet or network
associated with them.  In 4.3 BSD and it's derivatives pointopoint
interfaces should be refered to by their destination address, and their
subnet masks should be ignored.  The local address is not necessarily
unique, multiple pointopoint interfaces can share the same local interface
address with each other and up to one non-pointopoint (Ethernet)
interface.

Jeff