***********************************************************************
***                 How to Set Up SLIP on FreeBSD                   ***
***********************************************************************

$Id$

Updated for 1.1.5(.1) support by Satoshi Asami, 8/6/94.

The following is I (asami) set up my FreeBSD machine for SLIP on a
static host network.  For dynamic hostname assignments (i.e., your
address changes each time you dial up), you probably need to do
something much fancier.

This is just "what I did, and it worked for me".  I'm sharing this
just for your reference, I'm no expert in SLIP nor networking so your
mileage may vary.

Note: for 1.1 systems (not 1.1.5), you need to use /dev/tty01 instead
of /dev/cua01. substitute all the occurences of "cua" in this document
with "tty".

Note: the default 1.1.5(.1) system only comes with cua/ttyd pairs for
the last two ports (2 and 3), so if your modem is at sio0/sio1
(COM1/COM2), you need to make the devices.  Try "cd /dev; sh MAKEDEV
cua01" to make the new special files for sio1 (ditto for sio0).  This
will delete tty01, but you shouldn't need it anymore...or you can make
a symbolic link /dev/tty01 -> ttyd1 if you don't want to hunt down all
occurences of tty01 in your setup files.

I actually have a symbolic link /dev/modem -> cua01 (and /dev/mouse ->
ttyd0). I use only the modem/mouse names in my configuration files.
This helped a lot when I switched from 1.1 to 1.1.5.1 (tty01 => cua01)
and when I had to move my modem temporarily to sio2 to enable the
RS-232C port on the serial card.  It can become quite cumbersome when
you need to fix a bunch of files in /etc and .kermrc's all over the
system!

First, make sure you have

pseudo-device   sl      2

in your kernel's config file.  It is included in the GENERIC, GENERICAH
and GENERICBT kernels, so this won't be a problem unless you deleted it.

Things you have to do only once:

(1) Add your home machine, the gateway and nameservers to your
    /etc/hosts file.  Mine looks like this:

127.0.0.1               localhost loghost
136.152.64.181          silvia.HIP.Berkeley.EDU silvia.HIP silvia

136.152.64.1            inr-3.Berkeley.EDU inr-3 slip-gateway
128.32.136.9            ns1.Berkeley.edu ns1
128.32.136.12           ns2.Berkeley.edu ns2

    By the way, silvia is the name of the car that I had when I was
    back in Japan (it's called 2?0SX here in U.S.).

(2) Make sure you have "hosts" before "bind" in your /etc/host.conf.
    Otherwise, funny things may happen.

(3) Edit the /etc/netstart and add this to the end of the file:

# set up slip
gateway=slip-gateway
ifconfig sl0 inet $hostname $gateway netmask 0xffffff00
route add default $gateway

    Note that because of the "slip-gateway" entry in /etc/hosts, there
    is no local dependency in the netstart file.  Also, you might want
    to un-comment the "route add $hostname localhost" line.

(3') Make a file /etc/resolv.conf which contains:

domain HIP.Berkeley.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12

    As you can see, these set up the nameserver hosts.  Of course, the
    actual addresses depend on your environment.

(4) Set the password for root and toor (and any other accounts that
    doesn't have a password).  Use passwd, don't edit the passwd or
    passwd.master files!

(5) Edit /etc/myname and reboot the machine.

How to set up the connection:

(6) Dial up, type "slip" at the prompt, enter your machine name and
    password.  The things you need to enter depends on your
    environment.  I use kermit, with a script like this:

# kermit setup
set modem hayes
set line /dev/cua01
set speed 57600
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# The next macro will dial up and login
define slip dial 643-9600, input 10 =>, if failure stop, -
output slip\x0d, input 10 Username:, if failure stop, -
output silvia\x0d, input 10 Password:, if failure stop, -
output ***\x0d, echo \x0aCONNECTED\x0a

    (of course, you have to change the hostname and password to fit
    yours).  Then you can just type "slip" from the kermit prompt to
    get connected.

    Note: leaving your password in plain text anywhere in the
    filesystem is generally a BAD idea.  Do it at your own risk.  I'm
    just too lazy.

    Note: If you have an 1.1 machine, and kermit doesn't give you a
    prompt, try "stty -f /dev/tty01 clocal".  I put this in
    /etc/rc.local so that it works the first time I boot the machine.
    This doesn't apply to 1.1.5(.1) systems, as cua0? are already
    configured for dialouts.

(7) Leave the kermit there (you can suspend it by "z") and as root,
    type

slattach -h -c -s 57600 /dev/cua01

    if you are able to "ping" hosts on campus, you are connected!

    If it doesn't work, you might want to try "-a" instead of "-c".

(8) Happy slipping!

How to shutdown the connection:

(9) Type "ps gx" (as root) to find out the PID of slattach, and use
    "kill -INT" to kill it.

    Then go back to kermit ("fg" if you suspended it) and exit from it
    ("q").

    The slattach man page says you have to use "ifconfig sl0 down" to
    mark the interface down, but this doesn't seem to make any
    difference for me.  ("ifconfig sl0" reports the same thing.)

    Some times, your modem might refuse to drop the carrier (mine
    often does).  In that case, simply start kermit and quit it again.
    It usually goes out on the second try.

    When you want to connect again, go back to (6).  You may have to
    watch out for clocal mode.  If "stty -f /dev/tty01" doesn't tell
    you it's clocal, you need to re-set it before kermitting.  Again,
    this is only for 1.1 machines.

TROUBLESHOOTING:

If it doesn't work, feel free to ask me.  The things that people
tripped over so far:

* Not using "-c" or "-a" in slattach (I have no idea why this can be
  fatal, but adding this flag solved the problem for at least one
  person)

* Using "s10" instead of "sl0" (might be hard to see the difference on
  some fonts :)

Try "ifconfig sl0" to see your interface status.  I get:

silvia# ifconfig sl0
sl0: flags=10<POINTOPOINT>
        inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

Also, "netstat -r" will give the routing table, in case you get the
"no route to host" messages from ping.  Mine looks like:

silvia# netstat -r
Routing tables
Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt   
Netmasks:
(root node)
(root node)

Route Tree for Protocol Family inet:
(root node) =>
default          inr-3.Berkeley.EDU UG          8   224515  sl0 -      -     
localhost.Berkel localhost.Berkeley UH          5    42127  lo0 -       0.438
inr-3.Berkeley.E silvia.HIP.Berkele UH          1        0  sl0 -      -     
silvia.HIP.Berke localhost.Berkeley UGH        34 47641234  lo0 -       0.438
(root node)

(this is after transferring a bunch of files, your numbers should be
smaller).
