Provided by: slirp_1.0.17-10_amd64 bug

NAME

       slirp - TCP/IP emulator

SYNOPSIS

       slirp [options|commands]
       slirp help
       slirp "help cmd"

DESCRIPTION

       Slirp  is a TCP/IP emulator which turns an ordinary shell account into a (C)SLIP/PPP account. This allows
       shell users to use all the funky Internet applications like Netscape, Mosaic, CUSeeMe, etc.

       Slirp is copyright (c) 1995 Danny Gasparovski. All  rights  reserved.   See  the  section  COPYRIGHT  for
       details.

       This  manpage  is organized as follows. First, basic usage is described very briefly. This is followed by
       details of configuration files, commands, and command-line options. Several sections discussing technical
       issues  (special  addresses,  port  redirection,  baudrate  setting)  are  next,  followed  by answers to
       frequently-asked questions and common problems. Contact information, acknowledgements and  the  copyright
       notice are at the end.

       Please read this manpage thoroughly before reporting problems!

USAGE

       To run Slirp, simply type:

           slirp

       (or  whatever  the  full path to Slirp is). That's it. Now you activate your SLIP/PPP software, and start
       your applications.

       All you have to remember is this: Once you run Slirp,  your  shell  account  now  looks  exactly  like  a
       SLIP/PPP  account  (with  some limitations of course). Any documentation that you have telling you how to
       connect to a SLIP/PPP account is completely valid for Slirp as well.

       To quit Slirp you simply kill your SLIP/PPP software and type five 0's (zeroes),  with  a  1  second  gap
       between each zero. Slirp will then exit and you will be back at your shell prompt.

       You  can  also "disconnect" Slirp by typing five 1's (one's), with a 1 second gap between each. This will
       disconnect Slirp from your shell's terminal and put Slirp in the background. Later, you can type

           slirp -l 0

       to "reconnect" Slirp again.

       Quick note for PDA users:  If you set SLIRP_TTY to the tty connected to your PDA  (Palm,  POSE  emulator,
       etc.),  Slirp  will  use that tty for communication.  You can use PPP without full masquerading, although
       you will be subject to the standard Slirp constraints.  You may need to experiment to  find  the  correct
       baud rate.  Start with 19200 for Palms.  If Slirp was not compiled with DO_CFSETSPEED, you'll need to set
       the speed on the tty manually.  Use an appropriate variant of "stty 19200 <  /dev/pilot"  after  starting
       slirp.

CONFIGURING SLIRP

       Slirp  can be configured in 3 different ways: the command line, the configuration files, and "on-the-fly"
       configuration by telnet-ing to 10.0.2.0 and entering the commands there (see "SPECIAL ADDRESSES," below).

       The configuration file is located in your home directory (~) and is called ".slirprc", hence the path  to
       your configuration file is "~/.slirprc".

       Options  which  can  appear in a configuration file can also be given on the command line.  E.g., If your
       .slirprc file looks like the following:

           redir 5022 21
           redir X

       you can achieve the same thing by running Slirp as:

           slirp "redir 5022 21" "redir X"

       (Notice the quotes, they ARE significant).  The reverse is also true.  E.g., if you run slirp as:

           slirp -P -b 14400

       you can create your .slirprc file too look like the following:

           -P
           -b 14400

       (Notice that only ONE command per line is allowed in configuration files).  The 2 types  of  options  can
       also be mixed. For example:

           In .slirprc:
               -P
               -b 14400
               redir 5022 21

           Command line:
               slirp -P -b 14400 "redir 5022 21"

       Note  that  on the command line, any command/option that does not begin with a '-' or '+', and has spaces
       in it, MUST be enclosed in quotes.  E.g., The following are all legal:

           slirp -P "redir udp 5022 25" -vj -b 14400
           slirp "ppp" "baudrate 14400"
           slirp ppp "baudrate 14400"

       (Notice that even though "ppp" does not begin with a '-' or '+', it does  not  need  to  be  enclosed  in
       quotes because it has no spaces in it)

       The following are NOT legal:

           slirp baudrate 14400
           slirp "-b 14400"

       (Because "-b" starts with a '-' you must NOT enclose it in quotes.)  Easy, eh?

       Note:  Whenever  Slirp  expects  an  IP  address as an argument (E.g., in the command "redir") and the IP
       address argument is not given, then the  default  used  is  different  depending  on  where  the  command
       appeared; if it was in ~/.slirprc then the default is 10.0.2.15; if it was in a telnet 10.0.2.0, then the
       IP address used is the IP address from where the telnet 10.0.2.0 connection was made. For example, if you
       have  a  LAN at home and telnet to 10.0.2.0 from one of the hosts and issue a "redir" command, Slirp will
       use the IP address of the host from where you made the telnet 10.0.2.0 connection. Also, if you use an IP
       address  on your PC other than 10.0.2.15, you should include it as an argument whenever Slirp expects it,
       for example with the redir command:

           redir 5555 your.ip.address:5555

       A few notes on configuration:

         * You should have "ppp" or "-P" before any PPP options (because when Slirp parses -P or  ppp,  it  will
           initialize all related fields, hence clearing anything that was parsed before it).

         * Upon startup, the configuration is done in this order:

           1) ~/.slirprc-N (if using Load-balancing or Link-resumption)

           2) ~/.slirprc

           3) Command-line options

           This  is  important  because,  for  example,  if  you  have  "initiate-options"  (a  PPP  option)  in
           ~/.slirprc-0, and you run slirp with -P, "initiate-options" will not be valid, because -P will  clear
           the  fact  that  you  want options initiated by Slirp (remember, -P should always come before any PPP
           options).

COMMANDS AND OPTIONS

       Slirp includes an "online-help" facility. To get a list of commands accepted by Slirp give it the command
       "help". I.e, you can either run Slirp from your shell prompt as:

           slirp "help"

       or once Slirp is running, telnet to 10.0.2.0 and type:

           help

       To get a brief description of each command simply type "help COMMAND".  E.g.:

           slirp "help baudrate"

       from the command line, or

           help baudrate

       in telnet to 10.0.2.0.

       In the following descriptions, items within square brackets are optional. "Usable" refers to where it can
       be used, ie: "command-line/config-file", "telnet", or "anywhere" (which means it  can  appear  in  either
       command-line/config-file  or  be  given  via  telnet).  "Command-line" gives the command-line equivalent,
       where applicable.

       redir X [start N] [ADDR][:DISPLAY[.SCREEN]]
           Redirect a port for use with the X Window System.
           Usable: anywhere
           Command-line: -X
           Options:

             start N
                 Tell slirp to start looking for free ports starting from N. eg: if N = 2,  slirp  will  try  to
                 grab  port  6002 then 6003 etc. this is useful for sites which sometimes run their own X server
                 and you don't want to nab their port 6000, which they would naturally expect.

             ADDR
                 Our home ip address, or the address where the X server is (if you have a LAN at home to connect
                 more  than one machine to the net) (default 10.0.2.15 when in ~/.slirprc, the source IP address
                 when in command-line).

             DISPLAY
                 Which display to redirect to (default :0).

             SCREEN
                 Which screen to redirect to (default .0).

           Example: redir X 10.0.2.15:0.0

           Note: This will print the command needed to enter into each shell from where you launch your X apps.

           See also: show X.

       show X
           Show the command that needs to be given to your shell for any X port that  has  been  redirected  (in
           case you forget).

           Usable: telnet

           Example: show X

           Note: This is useful if you forget the command to give to your shell for X redirection.

           See also: redir X, log start.

       redir [once|time] [udp|tcp] PORT [to] [ADDRESS:]LPORT
           Redirect host port to local port using a selected protocol.
           Usable: anywhere
           Options:

             once    Only allow one redirection [TCP only]

             time    Allow redirection to time out [UDP only]

             udp     Redirect a UDP port

             tcp     Redirect a TCP port [default]

             PORT    Port to use on host system

             ADDRESS Address of your home machine [default 10.0.2.15]

             LPORT   Port to redirect host port to on local system

           Example: redir tcp 5021 to 21
           Allow users to ftp to your local machine using your host's port 21.  (ftp your.hosts.name 5021).

           Note:  if this command is in your .slirprc file and no address is specified, it will assume that your
           local IP address is 10.0.2.15. If you enter the command from the slirp control telnet IP it will  use
           the IP address you are accessing with.

       baudrate N
           Controls  the  allocation of time to communications across your serial link.  Higher values generally
           use more of the available bandwidth to your modem.  This is _only_ an internal control value and does
           _not_ change the physical settings for the host port or modem.
           Usable: anywhere
           Command-line: -b

           Example: baudrate 14400

           Note: higher numbers generally allow better transfer rates for ftp sessions, but interactive sessions
           could become less responsive. the optimum value is *JUST* when ftp sessions reach maximum throughput,
           but  this  can  be  hard  to find (especially on compressing modems) so you should choose the maximum
           throughput you would expect from your modem.

       special|control|host addr ADDRESS
           Set ip address aliases and others for slirp.
           Usable: anywhere
           Options:

             special address
                 Set the network ip alias for slirp

             control address
                 Only allow access to slirp control address from ADDRESS.

             host address
                 Tell slirp the IP address of the host it's running on. Use this only if  slirp  can't  properly
                 find the host's IP address.

           Example: special address 10.0.3.0

           Note:  The  ADDRESS  for special must end in 0 (zero) and other addresses are classed from this.  The
           default special address is 10.0.2.0 giving the following defined IP's:

                   10.0.2.0        slirp control telnet IP
                   10.0.2.1        slirp exec IP
                   10.0.2.2        slirp host alias
                   10.0.2.x        add [pty]exec optional address

       add [pty]exec PROGRAM:[ADDRESS:]PORT
           Set program to execute on host  when local machine attempts to connect to ADDRESS at port PORT.
           Usable: anywhere
           Options:

             exec    Establish binary connection to program in the style of inetd.

             ptyexec Establish telnet connection to program using telnetd helper  application  under  a  pseudo-
                     terminal.

             PROGRAM Program to exec

             ADDRESS Optional address

             PORT    Port

           Example: add ptyexec csh:55
           A  telnet  connection  to the slirp exec IP (default 10.0.2.1) will start and connect you directly to
           the csh program on the host. (telnet 10.0.2.1 55).

           Example: add exec nntpd:10.0.2.3:119
           A program that attempts to open port 119 at address 10.0.2.3 will be connected to the nntpd program.

           Note: The use of the ptyexec form requires the slirp.telnetd helper application be available on  your
           path.  Also note that ADDRESS must be of the form SPECIAL_ADDRESS.xx (10.0.2.xx by default).

       [no]compress
           Force  startup  mode  for  slirp  to  SLIP  or  CSLIP.   This  overrides  the  default automatic mode
           determination.

           Example: nocompress
           Start in SLIP mode.

           Example: compress
           Start in CSLIP mode.

           Note: The default method of operation generally performs well. You  should  only  have  to  use  this
           command if you find that your host and local system are failing synchronize the connection type.

       mtu N
           Controls the size of the IP packets sent across the serial IP link.  Valid values are <= 1500.

           Example: mtu 1500 Set the mtu to its largest allowable size.

           Note:  Larger  values  generally  improve  the performance of graphics web browsers and ftp transfers
           across the serial link, at the expense of interactive performance. The default value of 552 seems  to
           be a reasonable compromise for connections at 14400 baud.

       shell PROGRAM
           Set program to execute on EXEC IP default telnet port (23).

           This is the same as

                   add ptyexec PROGRAM:23

           Note: By default slirp connects /bin/sh to the exec IP telnet port.

       help [COMMAND]
           Show a brief list of available commands, or more information on the named command.

       remove [pty]exec PROGRAM:[ADDRESS/]PORT
           Reverse the effect of "add [pty]exec".  see "add [pty]exec" for the options etc.

           Note: you must enter the options exactly as you entered it in add [pty]exec.

           **This description is incomplete.**

       echo [on|off]
           Turn  echo  on or off, depending on how your client behaves.  "echo" by itself will show whether echo
           is currently on or off.

       kill N
           Kill the session which has a Socket no. of N.  to find the Socket no.  of a particular  session,  use
           the "stats socket" commands.  See "stats" below.

           Note:  It  is  recommended  you  use "close N" instead, as this merely wipes out the session, whereas
           "close N" closes it properly, as a good little tcpip-emulator should :)

           "kill -1" shouldn't be used, it will kill the first session it finds with -1, which  usually  is  the
           command-line connection.

       close N
           Close  the  session  which has a Socket no. of N. same as "kill N", but closes it session gracefully.
           See "kill N".

       stats [ip|socket|tcp|vj|udp|mbuf|tty|alltty|others?]
           Show statistics on the given argument.
           Options:

             ip     Show ip statistics.

             socket Show statistics on the currently active sockets. Use this to  find  out  which  sessions  to
                    close/kill as it will also show the FD of the session.

             tcp    Show tcp statistics (packets sent, received, etc).

             udp    Same as tcp but for udp.

             mbuf   Show  how  many  mbufs  were allocated, are in use, etc. If the modem is idle, and there are
                    more than 1 mbufs on the used list, it suggests an mbuf leak.

       [pty]exec PROGRAM
           This will execute PROGRAM, and the current command-line session will cease to exist,  taken  over  by
           the  PROGRAM.  ie:  when  the program exits, you will not get the command-line back, the session will
           (should) close.

       socket [PORT,PASSWORD]
           Create a Unix-domain socket and listen() for more interfaces to connect.  This  is  also  needed  for
           restarting.   Give  the arguments PORT,PASSWORD if you wish to use Internet-domain sockets instead of
           UNIX-domain sockets.

       log start
           Log all the startup output to the file .slirp_start.

       add emu SERVICE[:TYPE_OF_SERVICE] [lport:]fport
           Tell slirp to emulate SERVICE when on port lport/fport.
           Options:

             SERVICE
                    Can be: ftp, ksh, irc, none.

             TYPE_OF_SERVICE
                    Can be: throughput, lowdelay.

             LPORT  Can be given if that service needs emulation for, say, servers.

           Example: add emu ftp 8021
           If you wish to ftp to somewhere on port 8021.

           Example: add emu ftp 8021:0
           If your home ftp server is on port 8021. NOTE: this does NOT mean if you redirect port 8021 for  your
           ftp daemon, it refers the the port AT HOME at which ftpd is listening to.

           Example: add emu none:lowdelay 8000
           If you telnet somewhere on port 8000, and you wish those packets to go on the fastq (ie: so they have
           a higher priority than, say, ftp packets). This tells slirp that any packets destined for  port  8000
           will not have any emulation, but it will be set IPTOS_LOWDELAY.

       dns DNS_IP
           Give  this  to slirp if you want to use 10.0.2.3 as an alias for DNS, AND slirp guesses wrong for the
           DNS on startup.

TECHNICAL TOPICS

 Special Addresses
       All addresses of the form 10.0.2.xxx are special to Slirp (this can be changed with  the  "special  addr"
       command).  The following is a description of what each of the addresses mean:

       10.0.2.0
              This  is  the  Slirp  "on-line"  configuration address.  When you telnet to 10.0.2.0 you can close
              connections, configure Slirp, redirect ports, etc.  all while Slirp is running.  Please  read  the
              section "CONFIGURING SLIRP" for details on how to use this.

       10.0.2.1
              This is the address used by Slirp to execute programs.  For example, if you give Slirp the command
              "add exec /bin/ls:23", when a connection is made to  10.0.2.1  on  port  23,  Slirp  will  execute
              /bin/ls  and  redirect  the  output  to that connection.  E.g., with "add exec /bin/ls:23", if you
              telnet to 10.0.2.1 (telnet uses port 23) you will get a list of files in the directory  Slirp  was
              started.   Another  example  could  be  "add exec /path/to/nntpd:119".  Now you can tell your News
              reader to use 10.0.2.1 as the News host and it  will  actually  connect  to  the  running  program
              "nntpd".

       10.0.2.2
              This  is  an alias for the remote host.  When you connect to 10.0.2.2 you will actually connect to
              the host Slirp is running on.  This is useful if your shell account can  be  on  different  hosts,
              10.0.2.2 will always mean the host Slirp is running on.

       10.0.2.3
              This is an alias for your DNS.  Slirp will try to figure out your DNS address and all data sent to
              10.0.2.3 will be redirected to your DNS address, so you can  tell  your  TCP/IP  software  to  use
              10.0.2.3  as  your  DNS.  This can also be useful if your run Slirp from multiple hosts; you don't
              need to change your DNS for each host.

       10.0.2.15
              This is the address recommended by Slirp to be  used  on  your  PC.   However  this  is  merely  a
              suggestion, Slirp does not care what address you use.

 Port Redirection
       Port redirection is an important concept in TCP/IP emulators because it allows other people to connect to
       your PC, as well as allowing some programs to work which normally would not work.

  How do I Redirect a Port?
       First you need to realize that under Slirp, nobody on the Internet can address your  PC  directly,  since
       you do NOT have an IP address that anybody else can see. The ONLY way they can contact you is through the
       remote host (where Slirp is running).

       What has this got to do with Port redirection?  Lots.  For other people on the Internet  to  be  able  to
       connect  to  your  PC,  Slirp needs to listen for connections on a specific port on the remote host, then
       "redirect" this connection and have it connect back to your PC.

       For example, say you are running an FTP server on your PC and you want others to be able  to  connect  to
       it,  get files, upload files, etc.  What you need to do is pick a port number, any port number above 1024
       (for security reasons), and tell Slirp that any connections on that port are really connections  to  your
       FTP server.  You do this with the "redir" command.

       For  this  example,  say you choose 5555 as the port to redirect (this can be ANY number, provided nobody
       else is using it).  You simply give Slirp the command:

           redir 5555 21

       The second argument, 21, is the port that is used by FTP.  You could have also used the command:

           redir 5555 ftp

       and Slirp will figure out that "ftp" means 21.  This command is basically telling Slirp "any  connections
       to  this host (where Slirp is running) on port 5555 are really connections to the home PC on port 21 (the
       port used by the FTP server)".

       Now you simply tell others to connect to the Remote Host (where Slirp is running), which  IS  visible  on
       the Internet, on port 5555 and they will be connected to your FTP server.

       This  same  technique is used when a program uses a specific port for communication, for example Kali, an
       IPX emulator over TCP/IP allowing users to run IPX games over the Internet.  Kali uses UDP port 2213  for
       communication  so  for  others to be able to send a packet to your PC on UDP port 2213 you need to do the
       following:

           redir udp 2213 2213

       All packets now destined for the Remote Host on UDP port 2213 will be sent to your PC on port 2213.

  Common Port Redirections
       Here is a list of programs which need a port redirection to  work.   YOUR_PC_ADDRESS  refers  to  the  IP
       address you assigned to your PC. If it is not supplied, 10.0.2.15 is assumed.

       Kali
          redir udp 2213 YOUR_PC_ADDRESS:2213
          (Note:  you  MUST also set your PC's IP address to the same IP address as the Remote Host (where Slirp
          is running))

       IPhone
          redir udp 22555 YOUR_PC_ADDRESS:22555

       StreamWorks
          redir udp 8000 YOUR_PC_ADDRESS:8000
          (the 8000 is configurable)

       PowWow
          redir tcp 13223 YOUR_PC_ADDRESS:13223

       WebPhone
          redir tcp 21845 YOUR_PC_ADDRESS:21845
          redir udp 21845 YOUR_PC_ADDRESS:21845
          (Note: WebPhone uses BOTH tcp and udp port 21845. In addition, you probably  need  to  set  your  PC's
          address to the same IP address as the RemoteHost in order to get full functionality)

       Please  let  me  know of other programs which require redirection like the above.  See "GETTING HELP" for
       details on how to contact me.

 Setting The baudrate Option
       Slirp's "baudrate" option has caused some confusion.  This section will explain exactly what it's for and
       how to use it.

       When  sending  data over the modem to your PC, Slirp needs to know how much data it can send over without
       "saturating" the link.  If Slirp was to send as much data as it could, the Operating System would  buffer
       a  LOT of it - 20k is not uncommon.  This could severely "lag" any telnet connections if you happen to be
       FTP-ing a file at the same time.  This is because when you type  a  character,  you  will  not  see  that
       character  on  the  screen until the the other end sends you the "echo", so if there is 20k worth of data
       buffered you will need to wait until 20k of data is received  before  you  see  that  character  on  your
       screen.

       To  counter  this, Slirp uses the "baudrate" option to limit the amount of data it sends over the link to
       prevent the Operating System from buffering too much of it.  So if you give Slirp a "baudrate" of  14400,
       Slirp will send data at a rate of 14400 Baud modem (with no compression).

       In  general,  the  baud rate at which the connection was made should be the "baudrate" you give to Slirp.
       So, for example, if you connected at 14400 Baud, you should  give  Slirp  the  option  "baudrate  14400".
       However,  since  most modems today do compression (v.42bis), it is very difficult for Slirp know how much
       data to send to keep the link "full", yet prevent too much buffering by the Operating system.

       Therefore you should choose a "baudrate" appropriate to your  needs:  if  you  use  telnet  a  lot  while
       downloading  compressed  files,  you  should set your "baudrate" to the same as the CONNECT speed of your
       modem.  Downloading compressed files should not suffer, and telnet sessions will be far more  responsive.
       However,  sending  text over the modem will not be as fast, because your modem will compress the data and
       send it faster than Slirp expects.  Giving a "baudrate" the same as the CONNECT  speed  will  effectively
       turn off modem compression.

       If  you do not use telnet very much, you should set your "baudrate" to the maximum theoretical speed your
       modem can do.  For example, if you connect at 14400 and use v.42bis compression, which can compress up to
       4x,  you  should set your "baudrate" to 14400*4 = 57600.  This will ensure any compressible data will get
       compressed, and a maximum throughput will be attained, at the expense of telnet sessions  which  will  be
       almost unusable if you happen to be downloading files at the same time.

       Note however that you can change the "baudrate" setting at any time.  Simply telnet to 10.0.2.0 and enter
       "baudrate XXX" and Slirp will change the rate at which data is sent.  This can be useful for  example  if
       you're  downloading  a  lot of compressed files, but in the middle of the download you want to read mail.
       Simply change the "baudrate" to the CONNECT speed, and when  you're  finished,  change  it  back  to  the
       maximum theoretical speed.

       Also,  keep  in  mind that the "baudrate" is also used for other calculations.  For example, if there are
       many connections, Slirp will try to be fair and send one packet per connection in a round-robin  fashion.
       This  makes  all  connections  "smooth"  instead of sending a bunch of packets for one connection, then a
       bunch of packets for another connection, etc.  But if the "baudrate" is too high,  the  is  exactly  what
       will happen.  Packet priority selection also uses the "baudrate"; I.e., if there are packets queued ready
       for sending from both an FTP connection and a telnet connection, the telnet packets will be  sent  first.
       But  again,  this  will  only  work  if  the  "baudrate"  reflects the amount of data Slirp can send, and
       generally won't work if you set it to the maximum theoretical connection speed.

       So here are my tips:

         * If you download a lot of compressed  files  and  occasionally  use  telnet,  or  other  "interactive"
           programs,  set your "baudrate" to your CONNECT speed (because already compressed files won't compress
           any more with the modem compression, so you're unlikely to get faster download's as a result of modem
           compression);

         * If  you  mainly  use  telnet,  or  other  "interactive"  programs, and you occasionally download some
           compressed files, set your "baudrate" to the maximum theoretical speed (because telnet  sessions  are
           usually text, which compresses very well, hence screen updates will be faster.  Only when downloading
           compressed files will you experience severe lag);

         * If you mainly browse the Web (E.g., using Netscape, etc.), then you should set your "baudrate" to the
           theoretical  maximum speed (because there's lots of text in Web documents which is very compressible,
           and there's no telnet sessions so lag will not be a problem);

       I personally have by baudrate set at 14400, the speed at which my modem connects, even though the  modems
       do  v.42bis  compression.   Compressed  file  downloads  are just as fast, and telnet sessions during FTP
       downloads are surprisingly responsive.  Try it yourself, there's a world of difference.

PROBLEMS, QUESTIONS, AND ANSWERS

 Which programs do not work over Slirp?
       Any programs that bind()'s a port, then tell the other end of the connection where they should  connect()
       to this bound port.

       For example, when you "get" a file during an FTP session, the FTP client bind()'s a socket, has a look at
       which port the socket is bound to, then tells the FTP server the address and port of  this  socket  (with
       the PORT command). The FTP server then connect()'s to this address/socket pair.

       Now,  since  your  machine  isn't  really on the Internet, this connect() request will not arrive to your
       host, so it will not work.

       Slirp emulates this by bind()ing it's own port on the server that *is* on the Internet, and tells the FTP
       server about *that* address/socket pair.  When the server connect()'s to it, Slirp will then connect back
       to your machine.

       At present, the following programs are emulated:

            rlogin
            ftp
            ksh
            irc (for /dcc)
            RealAudio
            talk/ytalk/ntalk
            CUSeeMe

 Troubleshooting
       Symptom:
              The connection will "freeze".  E.g., while downloading a picture on WWW it will stop  halfway  and
              no connections will continue.

       Diagnosis:
               You probably don't have an 8bit clean link.

       Cure:  You  should  try  and find out from your sysadmin which characters need to be "escaped", then tell
              Slirp about them using the "asyncmap" and "escape" commands.  Note that you need to  use  PPP  for
              this  to  work.   (One way to test for 8bit cleanliness is to download a BINARY file with Z-Modem.
              If the file doesn't make it, you have a "dirty" link).

              One thing you might try is run Slirp as:

                  slirp "asyncmap ffffffff" "escape ff"

              (quotes included!) This will tell Slirp to escape the most common "nasty characters.

       Symptom:
              You can connect to hosts using numerical addresses  (of  the  form  aa.bb.cc.dd)  but  you  cannot
              connect  to  hosts when you use their hostname (E.g.: ftp.cdrom.com).  It usually times out with a
              DNS error.

       Diagnosis:
              You probably did not set your DNS address properly.

       Cure:  Try setting your DNS address to 10.0.2.3.  This should work for most situations.  If  that  fails,
              go  to  your shell prompt and type "nslookup".  This should print the address and hostname of your
              DNS server.  Use the numerical IP address as your DNS.  Do NOT use the hostname.

              If you still can't find your DNS address, ask your sysadmin for it.

 Answers to Frequently Asked Questions (FAQs)
       Q1.    Can I use Slirp through Telnet or Rlogin?

       A1.    Yes, usually.  But this is highly dependent on your situation.

              The reason Slirp usually doesn't work through telnet is because of the ^] character is interpreted
              by  the  telnet  client,  and  0xff interpreted by the server.  While you can tell Slirp to escape
              these characters while using PPP, it may not be possible to get your local PPP software to  escape
              characters  greater  than  ASCII  31.  Rlogin also interprets the ~ character, which may interfere
              with PPP (especially considering ~ is ASCII 0x7e which is used by  PPP  as  the  "end  of  packet"
              character").

              If  your  PPP  software  is unable to escape these characters, or you're using (C)SLIP (which must
              have an 8bit clean link), your best bet is to try and make the link 8bit clean.  For  example,  on
              some  systems  you  can  give  telnet  the  -8  flag to make the link 8bit, and -E to stop it from
              interpreting the ^] character.  Similarly for rlogin; -8 to make the link 8bit, -E to stop  rlogin
              from  interpreting  the  ~ character.  You should look at the telnet and rlogin manual pages ("man
              telnet" and "man rlogin" respectively) to see if your telnet/rlogin has similar options.

              Another possible solution is to use  Slirp's  ability  to  work  over  multiple  hosts.   See  the
              slirp.doc documentation for more details.

       Q2.    How do I run an X program on another host and have it display on my PC?

       A2.    Use the "redir X" command in ~/.slirprc.  This will redirect a port for use with X programs.

              On startup, Slirp should print something like:

                  X Redir: In sh/bash/zsh/etc. type: DISPLAY=IP.ADDRESS:X.Y; export DISPLAY
                  X Redir: In csh/tcsh/etc. type:    setenv DISPLAY IP.ADDRESS:X.Y

              Now,  when  you  telnet  to  the  host you wish to run the X programs from, you should do as Slirp
              suggest above; type either of the two commands, depending on which shell you are using.  You could
              also run the X program as "xprog -display IP.ADDRESS:X.Y" as printed above.

              If  you  missed  what  Slirp  displayed  on startup, you can telnet to 10.0.2.0 and give Slirp the
              command "show X", and the above will be printed.

              Note that you also have to make sure your X server will accept the connection.  See the  man  page
              for  xhost and Xsecurity.  Be careful with issuing commands like "xhost +", this will allow anyone
              to connect to your X server and do basically anything they want.

       Q3.    When I run "talk" or "wintalk", etc. I am able to send requests to other people  but  they  cannot
              send requests to me.  Why?

       A3.    You  won't  be  able  to  receive  talk  requests,  period.  This is because Slirp never see's the
              incoming talk request; it is sent directly over the modem, most  likely  corrupting  any  incoming
              packet with it (which will have to be retransmitted).  Slirp turns off your messages so the person
              who tries to talk to you should receive a "User is refusing messages" error.

       Q4.    I can't telnet to 10.0.2.0, the Slirp control address.  What's wrong?

       A4.    See the answer to this question in slirp.doc and recompile slirp.

       Q5.    I'm having a few problems with Slirp and want to try and find the problem myself.  Does Slirp have
              any debugging facilities?

       A5.    Yes. See slirp.doc for compile-time debug options.

       Q6.    My ISP logs me out if I idle too long.  How can I get Slirp to prevent this?

       A6.    First  of  all,  the  idle-logout mechanism is used for a reason: to prevent people from hogging a
              modem which is not in use.  So if you're idle, logout and give others chance to logon.

              Having said that, you can make Slirp use  TCP  keep-alive  timers  to  regularly  probe  each  TCP
              connection.  To activate this, add:

                  keepalive

              to  your ~/.slirprc file.  This will make Slirp probe each TCP connection every minute or so.  You
              can change this interval by giving keepalive the number of seconds:

                  keepalive SECONDS

              Note that no probes will be sent if there are no TCP connections.  So you need at least one active
              TCP connection for this to work.

GETTING HELP

       There  are  several sources of help.  First, read the previous sections "Troubleshooting" and "Answers to
       Frequently Asked Questions (FAQs)".

       If that fails, try the Slirp Home Page at:

           http://blitzen.canberra.edu.au/slirp

       There are lots of neat links there to other pages which have specific configuration information.

       There is also a Newsgroup dedicated to SLIP-emulators called alt.dcom.slip-emulators. You will find  lots
       of  discussion  about  Slirp  and  other  "SLIP-emulators".  The  FAQ  (Frequently  Asked  Questions) for
       alt.dcom.slip-emulators is included in the "docs" directory, I would suggest reading this as well.

       If all else fails, send me e-mail to danjo@blitzen.canberra.edu.au with the following information:

         * Output of the command "uname -a" on the remote system;

         * Operating System name and version you run on your PC;

         * Version of Slirp you are using (IMPORTANT!!!);

         * If you managed to get Slirp running, run Slirp as "slirp -S" then try whatever failed.  When you exit
           Slirp, you should have a file called "slirp_stats".  Send me this file; and

         * Anything else you consider relevant.

       *PLEASE*  include  all  the above information. If you do not, I may simply press "d". I can't guarantee a
       response, but I will try my best.

THANKS

       A big "THANK YOU!" goes to the following people for their help in creating Slirp.

       Juha Pirkola, Gregory  M.  Christy,  The  Regents  of  the  University  of  California,  Carnegie  Mellon
       University,  The  Australian  National  University, and RSA Data Security, Inc. whose source code is used
       throughout Slirp.  Slirp would not be without them.

       Thanks to all the contributors who helped with bugs, suggestions, code, etc.  Read the file ChangeLog  to
       see exactly who helped with what.

       A  special  thanks  goes to Chris Metcalf and Juha Pirkola for their contributions (see ChangeLog).  They
       put in extra effort and Slirp wouldn't be the same without their help.  Thanks guys!

       Thanks to all the people who sent very kind and encouraging e-mail, it's sincerely appreciated.

       Thanks to all the admins and Head Honcho's at UCNet, the University of Canberra Computer Club ("blitzen")
       who  gave  me  some  real-estate  on their machine (blitzen.canberra.edu.au) to work with (thanks to Tony
       Delroy for giving me the account  originally).   Hey!  Why  don't  you  check  out  their  home  page  at
       http://blitzen.canberra.edu.au/?

       Thanks to Brazil for coffee (and Sepultura! :)

       Thanks to the laws of physics, the building blocks of the universe.

COPYRIGHT

       Slirp was written by Danny Gasparovski.

       Copyright (c) 1995 Danny Gasparovski.  All Rights Reserved.

       Slirp  is  free  software; "free" as in you don't have to pay for it, and you are free to do whatever you
       want with it. I do not accept any donations, monetary or otherwise, for Slirp. Instead, I would  ask  you
       to pass this potential donation to your favorite charity. In fact, I encourage *everyone* who finds Slirp
       useful to make a small donation to their favorite charity  (for  example,  GreenPeace).  This  is  not  a
       requirement, but a suggestion from someone who highly values the service they provide.

       Redistribution  and  use in source and binary forms, with or without modification, are permitted provided
       that the following conditions are met:

       1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
          following disclaimer.

       2. Redistributions  in binary form must reproduce the above copyright notice, this list of conditions and
          the following disclaimer in the documentation and/or other materials provided with the distribution.

       3. All advertising materials mentioning features or use of  this  software  must  display  the  following
          acknowledgment: This product includes software developed by Danny Gasparovski.

       THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
       THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  ARE  DISCLAIMED.   IN  NO
       EVENT  SHALL  DANNY  GASPAROVSKI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF  SUBSTITUTE  GOODS  OR
       SERVICES;  LOSS  OF  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
       LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING  IN
       ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

       This  basically  means you can do anything you want with the software, except 1) call it your own, and 2)
       claim warranty on it.  There is no warranty for this software.  None.   Nada.   If  you  lose  a  million
       dollars while using Slirp, that's your loss not mine.  So, ***USE AT YOUR OWN RISK!***.

       If these conditions cannot be met due to legal restrictions (E.g. where it is against the law to give out
       Software without warranty), you must cease using the software and delete all copies you have.

       Slirp uses code that is copyrighted by the following people/organizations:

           Juha Pirkola.
           Gregory M. Christy.
           The Regents of the University of California.
           Carnegie Mellon University.
           The Australian National University.
           RSA Data Security, Inc.

       Please read the top of each source file for the details on the various copyrights.

AUTHOR

       Slirp was written by Danny Gasparovski.

       Manpage by George Ferguson, ferguson@cs.rochester.edu, based on Slirp 1.0b documentation.