PD version of SLIP from Columbia U. works, however ...

at close.columbia.edum at close.columbia.edum
Fri Jul 20 10:21:28 AEST 1990


In article <9481 at bunny.GTE.COM> jdg0 at 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 at cs.columbia.edu
V-Mail-To: +1 212 854 5510
P-Mail-To: 450 Computer Science \n Columbia University \n New York, NY 10027
 



More information about the Comp.unix.i386 mailing list