Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

strcf(SFF)

intro(ADMP)


 slink(ADMN)                     19 June 1992                     slink(ADMN)


 Name

    slink - streams linker

 Syntax

    slink [-v] [-f] [ -c file] [func [arg1 arg2 ...]]

 Description

    slink is a STREAMS configuration utility which is used to link together
    the various STREAMS modules and drivers required for STREAMS TCP/IP.
    Input to slink is in the form of a script specifying the STREAMS opera-
    tions to be performed.  Input is normally taken from the file /etc/strcf.

    The following options may be specified on the slink command line:


    -c file Use file instead of /etc/strcf.


    -v      Verbose mode (each operation is logged to stderr).


    -f      Don't fork (i.e. slink will remain in foreground).

    The configuration file contains a list of functions, each of which is
    composed of a list of commands.  Each command is a call to one of the
    functions defined in the configuration file or to one of a set of built-
    in functions.  Among the built-in functions are the basic STREAMS opera-
    tions open, link, and push, along with several TCP/IP-specific functions.

    slink processing consists of parsing the input file, then calling the
    user-defined function boot, which is normally used to set up the standard
    configuration at boot time.  If a function is specified on the slink com-
    mand line, that function will be called instead of boot.  Following the
    execution of the specified function, slink goes into the background and
    remains idle, holding open whatever file descriptors have been opened by
    the configuration commands.

    A function definition has the following form:

       function-name {
               command1
               command2
               ...
       }

    The syntax for commands is:

       function arg1 arg2 arg3 ...

    or

       var = function arg1 arg2 arg3 ...

    The placement of newlines is important: a newline must follow the left
    and right braces and every command.  Extra newlines are allowed, i.e.
    where one newline is required, more than one may be used.  A backslash
    ``\'' followed immediately by a newline is considered equivalent to a
    space, i.e. may be used to continue a command on a new line.  The use of
    other white space characters (spaces and tabs) is at the discretion of
    the user, except that there must be white space separating the function
    name and the arguments of a command.

    Comments are delimited by ``#'' and newline, and are considered
    equivalent to a newline.

    Function and variable names may be any string of characters taken from
    A-Z, a-z, 0-9, and ``_'', except that the first character cannot be a
    digit.  Function names and variable names occupy separate name spaces.
    All functions are global and may be forward referenced.  All variables
    are local to the functions in which they occur.

    Variables are defined when they appear to the left of an equals ``='' on
    a command line, e.g.

       tcp = open /dev/inet/tcp

    The variable acquires the value returned by the command.  In the above
    example, the value of the variable tcp will be the file descriptor
    returned by the open call.

    Arguments to a command may be either variables, parameters, or strings.

    A variable that appears as an argument must have been assigned a value on
    a previous command line in that function.

    Parameters take the form of a dollar sign ``$'' followed by one or two
    decimal digits, and are replaced with the corresponding argument from the
    function call.  If a given parameter was not specified in the function
    call, an error results (e.g. if a command references $3 and only two
    arguments were passed to the function, an execution error will occur).

    Strings are sequences of characters optionally enclosed in double quotes
    `"'.  Quotes may be used to prevent a string from being interpreted as a
    variable name or a parameter, and to allow the inclusion of spaces, tabs,
    and the special characters ``{ } D'' and ``#''.  The backslash ``\'' may
    also be used to quote the characters ``{ } , = " # '', and ``\'' individ-
    ually.

    The following built-in functions are provided by slink:

    open path        Open the device specified by pathname path.  Returns a
                     file descriptor referencing the open stream.

    link fd1 fd2     Link the stream referenced by fd2 beneath the stream
                     referenced by fd1.  Returns the link identifier associ-
                     ated with the link.  Note:  fd2 cannot be used after
                     this operation.

    push fd module   Push the module module onto the stream referenced by fd.

    sifname fd link name
                     Send a SIOCSIFNAME (set interface name) ioctl down the
                     stream referenced by fd for the link associated with
                     link identifier link specifying the name name.

    unitsel fd unit  Send a IF_UNITSEL (unit select) ioctl down the stream
                     referenced by fd specifying unit unit.

    dlattach fd unit Send a DL_ATTACH_REQ message down the stream referenced
                     by fd specifying unit unit.

    initqp path qname lowat hiwat ...
                     Send an INITQPARMS (initialize queue parameters) ioctl
                     to the driver corresponding to pathname path.  qname
                     specifies the queue for which the low and high water
                     marks will be set, and must be one of:

                        hd    stream head
                        rq    read queue
                        wq    write queue
                        muxrq multiplexor read queue
                        muxwq multiplexor write queue

                     lowat and hiwat specify the new low and high water marks
                     for the queue.  Both lowat and hiwat must be present.
                     To change only one of these parameters, the other may be
                     replaced with a dash ``-''.  Up to five qname lowat
                     hiwat triplets may be present.

    strcat str1 str2 Concatenate strings str1 and str2 and return the result-
                     ing string.

    return val       Set the return value for the current function to val.
                     Note: executing a return command does not terminate exe-
                     cution of the current function.

 Files

    /etc/strcf

 See also

    strcf(SFF), intro(ADMP)


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026