[comp.unix.i386] PD version of SLIP from Columbia U. works, however ...

jdg0@GTE.COM (Jose Diaz-Gonzalez) (07/17/90)

Hi there,

As the subject line says, the version of SLIP for 386/ix authored by John 
Ioannidis works.  We tried it here to link a 386 to a Sun 3, and after some 
fooling around with the termio settings we managed to make it work.  However, 
there is something wrong with the way it interacts with the rest of the TCP/IP 
stuff (at least in version 1.1 which is what I have).  For one, my mountalld 
fails to mount any remote file systems, and I'm getting the following msgs 
just after the booting processes is completed:

Can not register service: RPC: Timed out
unable to register (SMC_PROG, SM_VERS, UDP).

Can not register service: RPC: Timed out
Assertion failed: line 420 of pcnfsd.c: "svc_register (TransportHandle,
PCNFSDPROG, PCNFSDVERS, Disptach, IPPROTO_UDP) != NULL

My impression is that I must tell UDP not to try to use this interface, and 
I'm obviously not succeeding in doing this. I have included a little piece of 
code, in the section for minor device 0 of the slip_open routine of the driver, 
to mark the interface as a point-to-point connection.  A similar segment in the 
section for minor device 1 checks for the right flags.  However, when minor 
device 1 is opened the flag settings appear unchanged.  Also, netstat -r or -i 
does not show the interface as point-to-point.  Any ideas?.  Cheers,

	-- Jose


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+				     +					+
+	Jose Pedro Diaz-Gonzalez     +		                    	+
+	SrMTS			     +					+
+	GTE Laboratories, Inc.       +	   Tel:   (617) 466-2584	+
+	MS-46                 	     +	   email: jdiaz@gte.com    	+
+	40 Sylvan Rd.		     +					+
+	Waltham, MA 02254	     +					+
+				     +					+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

@close.columbia.edum) (f) (07/20/90)

In article <9481@bunny.GTE.COM> jdg0@GTE.COM (Jose Diaz-Gonzalez) writes:
>Hi there,
>
Hi again! After an 8+ month absense from comp.unix.i386, I'm back!

>As the subject line says, the version of SLIP for 386/ix authored by John 
>Ioannidis works.  We tried it here to link a 386 to a Sun 3, and after some 

Wow! Can I have it? :-) BTW, my driver is NOT Public Domain, it's 
`copylefted'. You can use it, redistribute it, and play with it,
but you CANNOT sell it for a profit (like the GNU stuff).
>fooling around with the termio settings we managed to make it work.  However, 
>there is something wrong with the way it interacts with the rest of the TCP/IP 
>stuff (at least in version 1.1 which is what I have).  For one, my mountalld 
>fails to mount any remote file systems, and I'm getting the following msgs 
>just after the booting processes is completed:
>
>
>unable to register (SMC_PROG, SM_VERS, UDP).
>
>Can not register service: RPC: Timed out
>Assertion failed: line 420 of pcnfsd.c: "svc_register (TransportHandle,
>PCNFSDPROG, PCNFSDVERS, Disptach, IPPROTO_UDP) != NULL
>
>My impression is that I must tell UDP not to try to use this interface, and 

Yes, the problem here is that the SLIP driver does not handle loopbacks
and broadcasts properly. I ran into this problem when I wrote a network
device driver for AIX 1.1 a few months ago; (that's a 4BSD-like driver,
not a STREAMS-driver, by the way). By `loopback' I mean that a packet
destined for the same interface should be looped back. In other words,
if you ping your own SLIP address, you should get packets back. This
was *not* the case with my driver. It should be trivially easy to fix
(check if the destination address is the same as our address, and if so,
loop the packet back). THe broadcast problem is slightly harder, and I'm not
sure how to solve it. The SLIP interface is a point-to-point interface,
but I couldn't find a way of setting the POINTOPOINT flag in the if_flags 
field. broadcast makes no sense in a POINTOPOINT link, unless, of course,
we fake it by looping back and also transmitting the packet. 

>I'm obviously not succeeding in doing this. I have included a little piece of 
>code, in the section for minor device 0 of the slip_open routine of the driver, 
>to mark the interface as a point-to-point connection.  A similar segment in the 

How???

>section for minor device 1 checks for the right flags.  However, when minor 
>device 1 is opened the flag settings appear unchanged.  Also, netstat -r or -i 
>does not show the interface as point-to-point.  Any ideas?.  Cheers,
>

See above.

Unfortunately I have no time to play with the code any more. I *will* be
wring a new STREAMS driver in the near future, so I might get a chance to
polish the slip code and repost it. No promises, though!

/ji

In-Real-Life: John "Heldenprogrammer" Ioannidis
E-Mail-To: ji@cs.columbia.edu
V-Mail-To: +1 212 854 5510
P-Mail-To: 450 Computer Science \n Columbia University \n New York, NY 10027