============================================================================================================================================
  netscript - Network setting scripts suite for Slackware-like Linux
                               Shun-ichi TAHARA <jado@flowernet.gr.jp>
============================================================================================================================================

OOVVEERRVVIIEEWW

This package is a suite of network setting scripts with the following
features:

* Can be used for the Linux system with the Slackware-like
  initializing scripts. Also for RedHat-or-Debian-like systems.

* Can configure both of fixed and removable (PC-card etc.) network
  interfaces in the unified style.

* Can configure even fixed interfaces dynamically, as if it were
  removable ones that are hot-pluggable, by watching the link status
  on the interface.

* Can cooperate with ISC DHCP, Samba and wireless_tools (iwconfig etc.)

* Can cope with not only pcmcia-cs but HotPlug feature coming with
  kernel-2.4 (compatible with `murasaki', anoter HotPlug agent).

* Can be used with the `network configuration scheme', like pcmcia-cs.

CCOONNSSTTRRUUCCTTIIOONN

The construction of the netscript, the directory structure of which is
that in the case of default installation, is like below:

    /sbin/ --++-- ifctl
            ++-- netscheme
            ++-- ifup
            ++-- ifdown
            ``-- ifctld
    /etc/  --++-- pcmcia/ ------ network
            ++-- rc.d/   --++-- genmask
            ||           ++-- rc.dhcp
            ||           ++-- rc.ifctl
            ||           ++-- rc.inet1
            ||           ++-- rc.ip
            ||           ++-- rc.netscheme
            ||           ++-- rc.samba
            ||           ``-- rc.wireless
            ++-- network.conf
            ``-- wireless.conf

    +- Bootup -----+
    | rc.inet1 --------++--------------------------------------------------------++
    +---+----------+                            ||
        |                                       ||
        |    +- pcmcia-cs --+                   ||
        |    | network ----------++------------------++         ||
        |    +--------------+         ||         ||
        |                             ||         ||
        |    +- murasaki ---+         ||         ||
        |    | murasaki.net ++------------------++         ||
        |    +--------------+         ||         ||
        |                             ||         ||
        |    +- netscript ------------++---------++--------------+
        |    |                        ||         ||              |
        |    |                ++--------------++--------------++ ||              |
        |    |                vv               vv vv              |
        |    | netscheme   ifdown   ifctl    ifup ---------+   |
        |    |   || ||         || |      |        ||           |   |
        |    |   || ||         || |      v        ||           |   |
        |    |   || ++------------------++ +--> ifctld <<------++           |   |
        |    |   ||           ||        ||                    |   |
        |    |   vv           ||        vv                    |   |
        |    | rc.netscheme  ++------>> rc.ifctl                |   |
        |    |    |                 | || ||                  |   |
        |    |    |                 | || ||                  |   |
        |    |    +-----------------+ || ++---->> genmask       |   |
        |    |    |                   ||                    |   |
        |    |    |   +- ISC DHCP -+  ||                    |   |
        |    |    |   |  dhclient <<++----++------>> rc.wireless    |   |
        |    |    |   +-----++------+  ||      |             |   |
        |    |    |         vv         ||      |             |   |
        |    |    |      rc.dhcp ------++ ||      |             |   |
        |    |    |         |       || ||      |             |   |
        |    |    |         |       vv vv      |             |   |
        |    |    +---------+      rc.ip     |             |   |
        |    |              |        ||       |             |   |
        |    |              |        vv       |             |   |
        |    |              |     rc.samba   |             |   |
        |    +--------------+----------------+-------------+---+
        |                   |                |             |
        |                   |                |             |
        |                   |                |             |
    +---+-------------------+----------------+-------------+---+
    | network.fixed  network.conf  wireless.conf  network.mode |
    +- Config -------------------------------------------------+

The functions of each file are as below:

* /sbin/ifctl
    The program to enable or disable the network interface by sending
    signals to ifctld daemon.

* /sbin/netscheme
    The program to change the configuration scheme.

* /sbin/ifup
    The program which spawns ifctld daemon to start the management on
    the network interface.

* /sbin/ifdown
    The program which kills ifctld daemon to stop the management on
    the network interface.

* /sbin/ifctld
    The daemon program to manage the network interface: it looks link
    status on the interface and handles signals to enable or disable
    the interface momentary.

* /etc/pcmcia/network
    The script is to replace the `network' script which comes with
    pcmcia-cs. This spawns ifup or ifdown, just as RedHat-like system.

* /etc/rc.d/genmask
    The script which calculates the subnet mask and other values from
    the IP-addr string specified in /etc/network.conf file.

* /etc/rc.d/rc.dhcp
    The script that ISC DHCP spawns to set up the network device. This
    spawns rc.ip script to set it up.

* /etc/rc.d/rc.ifctl
    The script that enables or disables the network interface.

* /etc/rc.d/rc.inet1
    This is to replace the `rc.inet1' script of Slackware, which sets
    up network device on system boot time.

* /etc/rc.d/rc.ip
    The script which actually sets up the network device.

* /etc/rc.d/rc.netscheme
    The script to support the netscheme command by comparing values
    between configurations of different schemes.

* /etc/rc.d/rc.samba
    The script which changes the configuration of Samba and restart
    the Samba daemons.

* /etc/rc.d/rc.wireless
    The script which configure a wireless network interface.

* /etc/network.fixed, /etc/network.mode, /etc/network.conf
    The file to specify the configurations of network interfaces.

* /etc/wireless.conf
    The file to specify the configurations of wireless network
    interfaces.

IINNSSTTAALLLL

First, edit Makefile on the top directory as suitable.

* Set SBINDIR to the directory to install ifctl and netscheme. The
  default value of it is /sbin.

* Set AGENTDIR to the directory to install ifup, ifdown and ifctld.
  The default value of it is /sbin. Ordinary, because these programs
  need not be executed by user, you do not have to put these on the
  directory in PATH. But, since `murasaki' intends for ifup and ifdown
  to be PATH-searchable, you need modify murasaki to set AGENTDIR to
  the directory outside PATH. Plamo Linux 3.2 or newer sets murasaki
  to execute commands in /etc/murasaki/bin, so you must set AGENTDIR
  to /etc/murasaki/bin.

* Set RCDIR to where the configuration scripts will go. The default
  value of it is /etc/rc.d.

* Set BINMODE to be 4755, if you permit non-root users to change the
  configuration scheme with netscheme command and to enable or disable
  the network interface momentary with ifctl command.

Then, run `make install' with the root privilege.

If you use this package on non-Slackware-type Linux systems, change
RCDIR into the appropriate path, for example, /etc/rc.d/netscript, and
make a symbolic-link from /etc/rc.d/rc[2345].d/Snnnninet(change nnnn into
appropriate value) to RCDIR/rc.inet1. And make the original network
configuration script not to spawn.

On the system like Slackware, that has /etc/rc.d/rc.samba script by
default, the rc.samba script is spawned from the script, for example,
/etc/rc.d/rc.M. But the netscript has its own rc.samba script and it
will be spawned by the script coming with the netscript. So, if there
is the part, in the system-side script, that the rc.samba is called,
comment out there.

CCOOOOPPEERRAATTIINNGG WWIITTHH TTHHEE OOTTHHEERR SSYYSSTTEEMMSS

The netscript can cooperate with various of other systems listed
below.

When the netscript spawns the other programs, the paths of the
programs is specified in full-path, which was searched and was wrote
when making the netscript. So you might have to re-make the netscript
to make and use the programs after installing the netscript.

When re-making, run `make distclean' to abandon the last result of the
search, or run `make config' to force re-search programs, and then, do
`make'.

[ISC DHCP]

To cooperate with dhclient, the client agent comes with ISC DHCP, edit
/etc/dhclient.conf to add the following line:

    script "/etc/rc.d/rc.dhcp";

[Samba]

To cooperate with Samba, edit Samba configuration file (for example,
with the typical installation, /usr/local/samba/lib/smb.conf) as
below:

* Delete the settings of the following five variables, if any, because
  they are to be set by the netscript:

    security, workgroup, password server, wins server, interfaces

* Add the following line into the `global' section:

    include = /var/lib/samba/smb.vars

To join the NetBIOS domain, use Samba-2.0.5 or later, because the
netscript uses the Samba-2.0.5 (or later) specific rule to join the
NetBIOS domain.

NOTE: It is necessary to change the configuration and to restart Samba
daemons, when the activated network interfaces or its IP addresses is
changed. You may need changing the NetBIOS domain or workgroup it
joins, and the WINS server it uses, according to network connention
environment your machine is in.

[pcmcia-cs]

Use the `network' script coming with netscript instead of that coming
with pcmcia-cs. When re-installing pcmcia-cs, the `network' script is
overwritten. So restore it from the backuped file `network.O'.

[HotPlug]

Use the `murasaki' system as the HotPlug agent. `murasaki.net', the
CardBus network agent of the murasaki, spawns ifup or ifdown, so it is
suitable for the netscript as a default. Not tested yet, however, you
can use, I suppose, USB network interfaces via murasaki as same as
CardBus ones.

NOTE: With the combination of the PC card driver comes with the
kernel-2.4.2 and later and pcmcia-cs-3.1.25 and later, cardmgr no
longer do not handle with the CardBus network cards. They are to be
handled by the HotPlug feature. The `murasaki' is one of the
implementations of HotPlug agents.

The setup script of older murasaki is written on the assumption of the
RedHat-like systems. Even that of newer one assumes that the USB stack
is initialized and the usbdevfs is mounted in advance. In any case,
perhaps, the script will not work with Slackware-like system. You can
find the `rc.murasaki' script with better initialization of USB stack
in contrib directory, so you had better make a configuration properly
so that this will be spawned while booting up the system. However this
is for murasaki-0.6.x, it should work well with older murasaki.

[wireless_tools]

With pcmcia-cs-3.1.23 and later, the wireless network interfaces are
to be configured with, for example, iwconfig contained in the
wireless_tools. The netscript can handle with the wireless_tools.

CCOONNFFIIGGUURRAATTIIOONN

If you use the netscript, all configuration of the network interfaces
will go into /etc/network.fixed, /etc/network.mode, /etc/network.conf
and /etc/wireless.conf.

[network.fixed]

List the fixed interfaces to be set up when the system boots up.

If you use murasaki-0.6.x or newer, you need not list the interfaces
which is connected via PCI and the driver of which is modularized,
since they will be probed automatically, the driver will be loaded,
and the network will be set up.

[network.mode]

Specify the mode of interfaces.

Each line must be like `interface option', and the option must be
either of `-s', `-d' or `-m'. The interfaces with `-s' option will be
made into "static mode": it will always be enabled regardless of the
link status. The interfaces with `-d' into "dynamic mode" and it will
be enabled or disabled according to the link status of the interface.
And the last, the interfaces with `-m' into "manual mode", in which
the link status is not watched as same as static mode, but unlike
static mode, the interface will start with the initial state being
disabled. You can enable this by using ifctl command manually.

The default mode is "static". Dynamic mode is useful for the interface
that is not removable, like built-in interface on laptop PC. And the
manual mode is useful for the interface that neither the interface
itself nor the interface cable is removable, like built-in wireless
LAN interface.

The contents of network.fixed and network.mode was specified in `_boot'
entry of network.conf with the netscript-2.0.x or prior.

And, in netscript-2.0.x, you could change default mode into "dynamic",
but now the feature is removed. You can specify modes independently
among interfaces instead.

[network.conf]

Entries are like `interface,scheme,MAC-address'. specify the following
variables in each entry:

* TXTYPE
    To fix the transceiver type on the PCMCIA interface, specify one
    among `auto', `10baseT', `10base2', `aui' or `100baseT'. It calls
    ifport command coming with pcmcia-cs, so it is necessary to use
    this configuration value.

* MII_AUTO
    To restrict the media types available in auto negotiation on the
    interfaces supporting MII (Media Independent Interface) technology,
    specify among `10baseT-HD', `10baseT-FD', `10baseT', `100baseTx-HD',
    `100baseTx-FD', `100baseTx' or `100baseT4'. Separate them by
    spaces to specify the multiple values. Though they will be passed
    as parameters to "mii-tool -A", they need not be separated by
    commas.
    The mii-tool command coming with net-tools is necessary to use
    this configuration value.

* MII_FIX
    To fix the medium type on the interface supporting MII technology,
    disabling auto negotiation on it, specify one value listed in
    MII_AUTO. This will be passed as a parameter to "mii-tools -F"
    (either TXTYPE, MII_AUTO or MII_FIX can be specified).

* MTU
    Specify the special MTU value, which defaults to 1500 bytes.

* DHCP <required>
    Specify y or n, whether to use DHCP or not.

* IPADDR <required when DHCP=n / not required when DHCP=y>
    Specify the IP address and the subnet mask bit length of the
    interface, in the format like `IP address/mask length'. The Subnet
    mask value, the broadcast address and the network address are
    calculated automatically by the genmask script. If you set the
    subnet mask bit length into 0, A route to the local network will
    not be set, and only a routing to the opposite node specified by
    `GATEWAY' explained below.

* GATEWAY
    Specify the default gateways. Separate them by spaces to specify
    the multiple values.
    You can override the gateways by specifying this value, even if
    the case of DHCP=y, and you have to specify the value `+' to use
    the value got from the DHCP server. If not specified, the gateways
    are not set.

* DOMAIN
    Specify the DNS domain search suffixes. Separate them by spaces to
    specify the multiple values.
    You can override the suffixes by specifying this value, even if
    the case of DHCP=y, and you have to specify the value `+' to use
    the value got from the DHCP server. If not specified, the domain
    suffixes are not set.

* DNS
    Specify the DNS nameservers. Separate them by spaces to specify
    the multiple values.
    You can override the servers by specifying this value, even if the
    case of DHCP=y, and you have to specify the value `+' to use the
    value got from the DHCP server. If not specified, the nameservers
    are not set.
    If neither DOMAIN nor DNS is specified, /etc/resolv.conf file are
    not rewritten.

* WORKGROUP
    Specify NetBIOS workgroup or domain name, when using Samba. It
    needs Samba to be installed.

* NTDOMAIN
    Specify `y', if joining not the workgroup but the NT-domain. Or
    `auth', if using only authentication of the NT-domain remaining to
    be a member of the workgroup like Win9x.
    If you specify `y' on this value, it need to join in the NetBIOS
    domain specified by `WORKGROUP' in advance, by the following
    order.

        1. Stop the Samba daemons, smbd and nmbd.

        2. Register the Samba client machine to the NetBIOS domain
           specified by `WORKGROUP', using the server manager of
           Windows NT server in the domain to join.

        3. On the Samba client machine, execute as following line:

             smbpasswd -j <domain name> -r <PDC name>

           If succeeded, you will read the message like this:
           "smbpasswd: Joined domain XXXXX."

    In the step 3. above, add the option of -U <user name> to try to
    register the Samba client into the NT server with the privilege of
    that user. So then the step 2. is not necessary.

* PDC
    Specify the NetBIOS computer name, not IP address, of the primary
    domain controller of your NT-domain.
    It is required if you use `NTDOMAIN=auth'. And if `NTDOMAIN=y' and
    you leave this blank, Samba will search the domain controller
    automatically. Of course, you can specify the controller to use.
    It has no means to specify this if `NTDOMAIN=n'.

* WINS
    Specify the WINS server, the NetBIOS nameserver, which can not be
    specified the multiple value.
    You can override the server by specifying this value, even if the
    case of DHCP=y, and you have to specify the value `+' to use the
    value got from the DHCP server. If not specified, the WINS server
    are not set.

* init_fn
    Define the bourne-shell function which will be called before the
    interface is set up.

* start_fn
    Define the bourne-shell function which will be called after the
    interface is set up.

* stop_fn
    Define the bourne-shell function which will be called before the
    interface is shut down.

* finish_fn
    Define the bourne-shell function which will be called after the
    interface is shut down.

In the functions, init_fn, start_fn, stop_fn and finish_fn, you can
refer the values of the variables described above. And about the
overridable values among what can be got from DHCP server, those are
GATEWAY, DOMAIN, DNS and WINS, the values got from DHCP server will be
set on the variable with the name prefixed `DHCP_' (for example,
DHCP_GATEWAY). So you can refer the values from DHCP server with this
variable even if the values from DHCP are overridden.

For example, if you fix the content of /etc/resolv.conf and use the
local nameserver statically, you can change the configuration of the
nameserver in start_fn by defining start_fn like below (I am sorry I
have not tested):

    start_fn () {
        echo > /etc/named.conf.N <<EOF1
options {
    directory "/var/named";
    listen-on {
        127.0.0.1/32;
    };
    forward only;
    forwarders {
EOF1
        for s in $DHCP_DNS; do
            echo "        $s;" >> /etc/named.conf.N
        done
        echo >> /etc/named.conf.N <<EOF2
    };
};

EOF2
        cat /etc/named.conf.in >> /etc/named.conf.N
        mv -f /etc/named.conf.N /etc/named.conf
        kill -HUP `cat /var/run/named.pid`
    }

By the way, the HotPlug driver spawns the network agent when a new
network interface is registered to the kernel. So if your
configuration file has the entry with the interface name being `*',
the corresponding configuration will be done with `ifup' script even
if the interface is used for PPP connection and so on. Do not specify
such a entry especially if using HotPlug feature. If you have the
entry of `*,*,*' in your /etc/network.conf file, alike the default
/etc/network.conf installed by the netscript-1.0, please modify it to
`eth0,*,*' and so on.

The value of TXTYPE was to be set on IF_PORT in netscript-1.6 or prior.
So modify `IF_PORT' into `TXTYPE' if using the configuration variable
and upgraded from the corresponding version of the netscript.

Also, when using DHCP, the format of /etc/network.conf is different
from that in netscript-1.6 or prior, so the default gateway may not be
set and name resolution using DNS or WINS may fail if you upgraded
from the corresponding version of the netscript. Check the values of
GATEWAY, DOMAIN, DNS and WINS to be like below if using DHCP and
upgraded from that version of the netscript:

    GATEWAY=+
    DOMAIN=+
    DNS=+
    WINS=+

If these remains blanks, the netscript will throw away the values got
from DHCP server.

[wireless.conf]

Specify the configuration informations in the case entries of
/etc/wireless.conf. Because the configurations in this file is
inactivated by default, delete four lines like below to activate it:

    # --------- START SECTION TO REMOVE -----------
    *,*,*)
        ;;
    # ---------- END SECTION TO REMOVE ------------

In the same way of network.conf file, each entries are like
`interface,scheme,MAC-address'. In each entry, specify the following
variables, and refer to the entry of the corresponding parameter in
the manual page of iwconfig command, for the details of each
parameters.

In the case of using the typical wireless NIC, like Lucent-chip-used
type or Cisco aironet series, with wireless stations, simply specify
as `MODE="managed"' and set ESSID to match with that of station. In
some driver, it may prove the valid ESSID and so on, unless you make
any configurations in /etc/wireless.conf, however, you had better make
configurations to avoid connecting with the unintentional network.

* NICKNAME
    The node name (if not specified, use the hostname).

* ESSID
    The network name or domain ID of the wireless network to connect
    (any, off or any string).

* NWID
    The network ID or domain ID of the wireless network to connect
    (off or any hex-digits).

* MODE
    The operating mode of the device (auto, Ad-Hoc, Managed, Master,
    Repeater or Secondary).

* FREQ
    The operating frequency in the device (in Hz; can append the
    suffix K, M or G).

* CHANNEL
    The operating channel in the device (either FREQ or CHANNEL can be
    specified).

* SENS
    The sensitivity threshold: the lowest signal level to receive a
    packet (positive value as a raw value for hardware or a
    percentage, negative as dBm).

* RATE
    The bit rate (in bps; can append the suffix K, M or G).

* KEYS
    The encryption keys for WEP technology (hex-digits as `XXXXXXXX'
    or `XXXX-XXXX-XXXX-XXXX', or ASCII string with the `s:' prefixed).
    Separate them by spaces to specify the multiple keys.

* RTS
    The threshold to send RTS: the smallest packet size to send RTS to
    make a handshake before each packet (auto, fixed, off or bytes).

* FRAG
    The threshold to fragment a packet: the smallest packet size to
    split a packet (auto, fixed, off or bytes).

* IWCONFIG
    The other parameters to pass to iwconfig command.

* IWSPY
    The parameters to pass to iwspy command.

* IWPRIV
    The parameters to pass to iwpriv command.

MMAANNUUAALL OOPPEERRAATTIIOONN WWIITTHH iiffccttll

The netscript spawns ifctld daemon per interface under management. In
dynamic mode, it watches the link status of the interface. Moreover,
you can enable or disable the interface momentary, by sending SIGUSR1
or SIGUSR2 signal to ifctld.

You can use ifctl command, which gets the process id of ifctld from
the lock file and sends the signal. Execute it as:

    ifctl device up|down|toggle

to enable or disable specified interface. By doing that, you can
disable easily the interface which you cannot watch the link status on,
or cannot remove, like wireless LAN interfaces built in laptops.

Specify `toggle' to toggle the status of the interface between enable
and disable according to the current status of it.

CCOONNFFIIGGUURRAATTIIOONN SSCCHHEEMMEE

Just alike pcmcia-cs, the netscript supports the `configuration
scheme' feature, with which you can switch the configuration in a
single network card, in the case of connecting to the various of
networks, for example, in laptop PC environment.

The initial value of the scheme is `default'. And use the `netscheme'
command to change the scheme. Execute it as:

    netscheme [scheme]

to switch to the specified scheme. If there is any interfaces, among
the currently activated ones, of which the configuration will be
changed by switching the scheme, the interfaces will be re-setup
automatically with the new configuration.

When the `scheme' parameter is omitted, this prints the current
configuration scheme.

It is dangerous for non-root users to give a write permission to the
/etc/network.conf or /etc/wireless.conf file. Especially, if netscheme
is installed with the setuid bit set to be used by normal users, it
stands directly for them to permit executing any commands with the
root privilege in any time.

TTEECCHHNNIICCAALL IINNFFOORRMMAATTIIOONNSS

1) The origins of the configuration scripts

rc.ifctl, rc,ip, rc.wireless and network scripts are much modified
from those of pcmcia-cs, so they resemble each other for a bit here
and there.

rc.dhcp, also originated with the ISC DHCP, however, is no longer
modified out of its original form.

The other scripts and C sources are written entirely from the scratch.

2) The behavior of the netscheme command

The netscheme command calls rc.ifctl scripts directly to operate the
network interface.

The scripts in the netscript passes configuration variables by
exporting shell variables into the environment. But, due to the
specification of bash, exportation of shell variables will be made
void in the case of that effective-uid and real-uid are different,
and it will not work well. So if the netscheme command with the setuid
bit set is spawned by non-root user (effective-uid is set to 0, and
real-uid to the uid of user's who spawned it), it changes the real-uid
to 0.

3) Watching the link status of network interfaces

However the link status can be shown simply by ifconfig command in
FreeBSD, it cannot be found anywhere visible in Linux.

One day, I found I can probe the link status with mii-tool, included
in net-tools. Later, the netscript became to be able to watch the link
status by including the corresponding code into ifctld.

4) Watching the activated network interfaces

When the rc.ip script configures and activates a network interface, it
makes the file named as "interface-scheme" in /var/lib/net. The
`netwatch' script in contrib directory is a sample that watched this
file and spawns accesaries, for example, biff while the specific
interface are activated under the specific scheme.

To use the netwatch script, execute it in background from, for
example, .xinitrc script when starting X. The correspondence between
the interface and the scheme to watch and the commands to execute
while activation are written in the `.netwatch' file in the home
directory. Here puts the sample of .netwatch file in contrib
directory.

CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE

Copyright (C) 2001 Shun'ichi Tahara all rights reserved.

Shun'ichi Tahara (me!) reserve the copyright of the suite of the
netscript package, and it is distributed under the license of Gnu
Public License 2.

As far as obeying provisions of GPL2, I do not restrict
re-distributing, modifying or packaging into the Linux distribution at
all. Even you need not contact me. You may applicate and make use of
this entirely freely.

AAUUTTHHOORR

Shin-ichi TAHARA <jado@flowernet.gr.jp>
http://flowernet.gr.jp/jado/

PPRRIIMMAARRYY DDIISSTTRRIIBBUUTTIIOONN SSIITTEE

http://flowernet.gr.jp/dist/netscript/

RREELLAATTEEDD TTOOOOLLSS

* pcmcia-cs
    http://pcmcia-cs.sourceforge.net
    http://pcmcia-cs.sourceforge.net/ftp/

* murasaki (Another HotPlug)
    http://www.dotaster.com/~shuu/linux/murasaki/

* wireless_tools
    http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html
    http://pcmcia-cs.sourceforge.net/ftp/contrib/

* ISC DHCP
    http://www.isc.org/products/DHCP/
    ftp://ftp.isc.org/isc/dhcp/

* Samba
    http://www.samba.org/samba/samba.html
    ftp://ftp.samba.org/pub/samba/

HHIISSTTOORRYY

2.1.4 [2003/06/17]

* Refined logging method; fix abnormal exiting of netscheme under DHCP
  environment with a seldom condition.

* Refined locking method; fix failing of ifup on system boot.

* Support -q or -l in netscheme.

* Modified contrib/netconfig.

* Clean up code.

2.1.3 [2003/06/12]

* Support DESTDIR in Makefile for convenience on making package.

* Fix malfunction of `NTDOMAIN=auth'; added PDC to network.conf.

2.1.2 [2003/06/11]

* Fix bug that ifdown may freeze when CardBus interface removed, due
  to some kernel behavior (perhaps bug) that the hotplug agent is
  spawned with SIGCHLD handler set to SIG_IGN.

* Fix malfunctions of logging, which is also caused by the closed
  standard I/O's.

* contrib/netconfig for Plamo Linux, maybe works on other systems that
  have dialog command, comes. Only Japanese version available for now.

2.1.1 [2003/06/06]

* Fixed malfunction of dynamic mode if ifup is spawned with standard
  I/Os' being closed; for example, murasaki does.

2.1 [2003/06/05]

* Moved the corresponding configuration to DEVICES in `_boot' section
  of /etc/network.conf into /etc/network.fixed  /etc/network.mode.

* Follow murasaki-0.6.x.

* Logging much enhanced.

* Continue watching link status for a while to avoid chattering when
  suspending or resuming, and so on.

* Now rc.inet1 do not initialize control files, so rc.inet1, rc.pcmcia
  and rc.murasaki are made free about order to be spawned.

* Updated contrib/netwatch: can use wildcard for device name.

* Makefile tweaks.

2.0.1 [2003/05/14]

* Fix old and wrong default setting of /etc/network.conf.

* Make better interface up/down rule in netscheme.

* Change beep sound when unplugged in dynamic mode.

2.0 [2003/05/02]

* Fix bug that the manual mode by `-m' does not work.

* Fix that ifctld stops after suspending with any active interfaces
  being dynamic mode.

* Bug fix again that the dhclient process remains when removing the
  NIC before getting addresses with DHCP; re-enbuged in 2.0b3 fixment
  however once fixed it in 1.4.

* Fix that an error occurs in netscheme, if the interface managed by
  ifctld but disabled.

* Made ifdown more simple; a hack in 2.0b2 causes malfunction when
  unplugging HotPlug-managed interfaces, such as CardBus NICs.

* Made ifctld become daemon better.

* Cleaned up some code, script and installer.

2.0b3 [2003/04/28]

* Add `toggle' as a operation parameter to ifctl.

* Add "manual mode" as a static mode with the initial state being
  disabled; try `-m' on DEVICES in /etc/network.conf.

* Fix the malfunction when setting multipul interfaces with DHCP.

2.0b2 [2003/04/26]

* In dynamic mode, play beeps when plug or unplug the cable.

* Made ifdown more sanity.

* Changed perror() message better.

* Typo fix from `KEY' to `KEYS' as the WEP keys in /etc/rc.wireless.

2.0b1 [2003/04/25]

* Link status check on fixed interface is available!
  Try `-d' into `DEVICES' in /etc/network.conf: devices after `-d'
  will be enabled dynamically according to the link status.

* Introduced ifctl to enable/disable interfaces (probably fixed) by
  hand.

* New hook introduced as init_fn and finish_fn: things to do before
  setting up the device and to do after shutting down the device.

* GATEWAY and WINS can override those got from DHCP, as same as DOMAIN
  and DNS: set them to `+' to obey the values from DHCP.

* Now configuration values in /etc/network.conf are passed to not only
  start_fn (and init_fn) but also stop_fn (and finish_fn). And the
  overridable values got from DHCP (GATEWAY, DOMAIN, DNS and WINS) are
  set on DHCP_*, even if you override in /etc/network.conf.

* Changed IF_PORT into TXTYPE, and more medium selecting methods using
  mii-tool, MII_AUTO and MII_FIX, are introduced.

* Add `auth' as a new candidate for the value of NTDOMAIN: to use PDC
  but not to join in NT-domain like Win9x. It will make `security'
  value in smb.conf to be `server'.

* Introduced ifctld as a daemon to manage interfaces: link status,
  signals from ifctl, locking resources exclusively, and so on.

* Ported ifup, ifdown and netscheme into C language to support new
  features above. As a result, codes about locks are moved into C code
  and it became much better.

* Defined AGENTDIR where to install backend executables, such as ifup,
  ifdown and ifctld. For Plamo Linux, set this to /etc/murasaki/bin.

* contrib/netwatch fix: increase processes if exec() failed.

* Follow contrib/rc.murasaki into recent murasaki.

* And much more tiny tweaks...

1.6 [2002/05/01]

* Made messages be friendly with the fixed interfaces started on boot
  time.

1.5 [2002/03/29]

* Fix the malfunction with ISC DHCP 2.0pl5 or later.

* Change to be `DOMAIN=+', `DNS=+' to use the domain suffix and the
  nameservers got from the DHCP server; do not specify not to update
  /etc/resolv.conf.

* Follow binary executable path of Samba-2.2.

1.4 [2001/11/14]

* Fix rc.dhcp due to trouble by remaining a wrong default-route on
  DHCP configuration.

* Bug fix that the dhclient process remains when removing the NIC
  before getting addresses with DHCP.

* Bug fix that the wireless LAN cannot be configured successfully.

* Avoid low-beeping because the conflict of duplicated ifups cause an
  error when using PCMCIA NICs.

* Can specify the nickname of the wireless LAN node.

* Follow updates of the scripts in the latest pcmcia-cs.

* Add newline into `/var/lib/net/scheme'.

1.3 [2001/04/20]

* ifup/ifdown locking enhancement.

* Now netscheme runs exclusively.

* Bug fix of `netscheme' malfunction when there is no active network
  interfaces.

1.2 [2001/04/12]

* ifup/ifdown locking; PCMCIA NICs cause duplicated spawnings of ifup
  or ifdown by both HotPlug and pcmcia-cs to conflict them each other.

* Makefile fix for `BINMODE' changing to have effect.

1.1 [2001/04/10]

* Bug fix that `ifdown' sometimes fails to kill dhclient.

* Modified Makefiles because changing `SBINDIR' had no effect.

* Can specify where the script files will go by `RCDIR', for using in
  non-Slackware-type Linux systems.

* Modified the default settings of `network.conf' file because the
  HotPlug driver spawns `ifup' or `ifdown' when using PPP and so on.

* Added `contrib/rc.murasaki'.

1.0 [2001/04/04]

* Initial version.
