Intel(R) Linux* LAN Adapters PROCfg Application
===============================================

April 16, 2002


Contents
========
- Overview
- Prerequisites
- Supported Features
- Installation
- Running the PROCfg Client
- Known Issues
- Support


Overview
========

PROCfg is a reporting and configuration tool for Intel(R) PRO LAN adapters 
(10/100 and 1000) and Intel Advanced Network Services (iANS). It works with 
the Intel e100, e1000, and iANS drivers on Intel 32-bit architectures 
running Linux*.

The tool consists of two parts: the daemon PROCfgd and the PROCfg command-
line tool. The daemon should be run on a managed machine. The command-line 
tool should be used on a managing machine. The managing machine can be either 
the same managed machine that is used for the daemon, or it can be a remote 
machine.


Prerequisites
=============

PROCfgd and PROCfg require the following minimal versions:

  - Linux kernels 2.2.x through 2.2.20 or 2.4.x through 2.4.7
  - Any combination of the following Intel drivers:

      - e100 version 2.0.x or higher
      - e1000 version 4.2.x or higher
      - iANS version 1.7.x or higher

      NOTE: The non-Intel driver eepro100 must not be loaded on the managed
            machine.

  - openssl* 0.9.6 or higher security package installed on the system.

      NOTE: openssl is installed with Red Hat* Linux 7.0 and above. If the 
            package is already installed, make sure the libcrypto.so.1 file
            is in /usr/lib. If not, see the instructions below for creating
            libcrypto.so.1.

            If you do not have openssl installed, download the package from 
            http://www.openssl.org and configure openssl with 'config 
            shared' to create the libcrypto.so.0.9.x shared library.

            To create libcrypto.so.1 under /usr/lib, you must copy 
            libcrypto.so.0.9.x to /usr/lib and create a link named 
            libcrypto.so.1 to libcrypto.so.0.9.x:

                cp libcrypto.so.0.9.x /usr/lib
                cd /usr/lib
                ln -s libcrypto.so.0.9.x libcrypto.so.1 


Supported Features
==================

PROCfg includes the following features for Intel adapters:
   
  Viewing: 
    - Bus, Slot, and IRQ numbers for physical adapters
    - Static driver info: name, version, path, date, size (base and iANS)
    - Adapter load-time parameters and their values (e100 only)
    - Dynamic information: link state, speed and duplex (Intel adapters 
      only), and statistical counters
    - Information for configuring iANS: teaming/VLAN support, adapter 
      capability
    - Interface information on loaded adapters and teams including:
       - Virtual interfaces (VLANs)
       - Aliases
    - The iANS topology (teams, member, VLANs)
    - Team and member parameter values	
    - Dynamic information regarding the state of a team and the state of its 
      members

  Setting: 
    - MAC, inet, mask, and broadcast addresses
    - MTU size
    - Interface state
    - Load-time parameters (e100 only -- when none of the PRO/100 adapters 
      are members of an iANS team or have VLANs)
    - Team settings: initial config, add members, change teaming mode, 
      change probes settings. Teaming modes include:
        - Adapter Fault Tolerance ("AFT")
        - Adaptive Load Balancing ("ALB")
        - Intel Link Aggregation, Cisco*'s Fast EtherChannel* Technology or 
          static 802.3ad ("FEC", or "FEC/LA/802.3ad: static")
        - Gigabit equivalent of FEC ("GEC", or "GEC/LA/802.3ad: static")
        - IEEE 802.3ad: dynamic ("802.3ad")
        - NONE
    - VLAN settings: add/delete VLANs for a physical adapter or team 
      (adapters controlled by e100 or e1000 drivers only)
     
       NOTE: Once a physical adapter is a team member or has VLANs, any 
             operation issued by ifconfig on the individual network 
             interfaces of such an adapter may cause corruption. As a 
             precaution, Intel recommends using PROCfg to configure the 
             interfaces and ifconfig only for operations that PROCfg does not
             support.

    - Loading and unloading of drivers

  Special Functions:
    - Blink hardware LEDs to identify a specific adapter (e100 only)
    - Run diagnostics on adapters
    - Save and restore network configurations. The configuration is saved as 
      a text file in XML-format. It is possible to edit this file, but restore
      fails if either the file is in illegal XML format or if it contains
      invalid configuration data.

      NOTE: Restoring a configuration destroys the current PROCfg system 
            configuration. This includes unloading Intel drivers. Multi-vendor
            team(MVT) drivers are not unloaded, as they might control adapters
            that are not supported by PROCfg and iANS. To avoid MVT adapters 
            using names that are used in the saved configuration file, 
            manually unload the drivers before using the "restore" operation. 
            For additional information, see the Known Issues section.        

  Error messages:
    - User initiated operation failures 
    - Daemon initiated operation failures, usually polling failure

    NOTE: All error messages are printed to the console.

  Logging:
    - Configuration changes 
       - If found during periodic polling noted as "external events"
       - If user change noted as "events generated by session ID X"
    - Errors 
       - Errors that occur only in the daemon

       NOTE: Events are logged in /var/log/procfgd.log.


The PROCfg application does not:
   - Restore configurations on boot


Installation
============

NOTE: The following instructions describe installing the PROCfg package 
      through the tar file; although, PROCfg may be installed through a 
      binary RPM* package. To build a binary RPM* package of this application, 
      run 'rpm -tb <filename.tar.gz>'. Replace <filename.tar.gz> with the 
      specific filename of the package.


  PROCfgd
  -------

  1.  Copy the files to a directory of your choice. Put the following files 
      in the same directory: 

        procfgd-x.x.x.tar.gz    (x.x.x designates the version number)
        libxerces-c1_6_0.tar.gz (xerces XML-parser library. Needed only if it
                                is not already installed in the system). 

  2.  Untar the procfgd-x.x.x.tar.gz file:

        tar xzvf procfgd-x.x.x.tar.gz

      The procfgd-x.x.x directory should appear.

  3.  Change directories to the procfgd-x.x.x directory:

        cd procfgd-x.x.x

      The following files should be in the directory:

        INSTALL
        procfgd
        procfgd_adduser
        procfgd.1
        README
        ldistrib.txt
        LICENSE.txt
        LICENSE.net-snmp.txt
        LICENSE.xerces.txt

  4.  Enter:

        ./INSTALL

      The INSTALL script untars necessary tar files and copies the following 
      files to the indicated location:

        procfgd (the server application) and procfgd_adduser to /usr/sbin
        procfgd.1 (the man page) to the default man directory
        the licenses, README, and ldistrib.txt files to 
            /usr/share/doc/procfgd-<package_version>

  5.  To run the PROCfg server, first logon to the system as root. Enter:

        procfgd

      NOTE: To change the configuration for the PRO LAN adapters or iANS 
            PROCfgd requires a non-default username and password. To configure
            a user, see the instructions in #6 below.
      
      The daemon runs by default on port 58086. If this port is taken or if
      PROCfgd is already running on the default port, the following error 
      message is printed on the screen:

        init_master_agent: Invalid local port (Address already in use) Server 
        Exiting with code 1

      In order to run the server on an alternate port, use the -p option:

        procfgd -p <port number>

  6.  To add a new read/write-access user to the PROCfg server, first logon as 
      root. Make sure PROCfgd is not running. Enter the following, where the 
      password is at least 8 characters long:

        ADDUSER <username> <password>

      Multiple read/write users may be added. The new username(s)/password(s) 
      are added to the /var/.procfgd/procfgd.conf file. After running the 
      server once, this file is encrypted, but the password is visible while 
      typing it.

      NOTE: A single read-only user is configured by default on the PROCfg 
            server. To simply view settings no username or password are 
            required, as long as the default username and password 
            (username=procfgd, password=pRoCfGdPaSs) have been left in place.


  PROCfg
  ------

  1.  Copy the following file to a directory of your choice.

        procfg-x.x.x.tar.gz    (x.x.x designates the version number)

  2.  Untar the procfg-x.x.x.tar.gz file:

        tar xzvf procfg-x.x.x.tar.gz

      The procfg-x.x.x directory should appear.

  3.  Change directories to the procfg-x.x.x directory:

        cd procfg-x.x.x

      The following files should be in the directory:

        INSTALL
        procfg
        procfg.1
        README
        ldistrib.txt
        LICENSE.txt
        LICENSE.net-snmp.txt

  4.  Enter:

        ./INSTALL

      The INSTALL script copies the following files to the indicated location:

        procfg (the server application) - to /usr/sbin
        procfg.1 (the man page) - to the default man directory
        the licenses, README, and ldistrib.txt files to 
            /usr/share/doc/procfg-<package_version>

      To configure a user in the PROCfg client (procfg), see the Switches 
      section below.

      NOTE: A single read-only user is configured by default on the PROCfg 
            server. To simply view settings no username or password are 
            required, as long as the default username and password 
            (username=procfgd, password=pRoCfGdPaSs) have been left in place.


Running the PROCfg Client
=========================

The following parameters are used by entering them on the command line with 
the procfg command. When issuing a command, the following syntax must be 
used:

       procfg [<switch(es)>] <command> [<object(s)>] [<option(s)>]

Object(s) can be an interface name (ethx), team name, or list of interfaces 
or team names (eth0 eth1 ...).

Each switch has a long name as well. See the man page for a more detailed 
description of the command options.

WARNING: The PROCfgd daemon must be running before issuing a command.


   Switches
   --------

   -p <port>
       If the PROCfgd daemon is not using the default port, you must set the 
       PROCfg application to the same port. If a port number is not specified, 
       the default port (58086) is used.

   -h <hostname>
       Hostname or IP address of the managed machine (the one that runs the
       PROCfgd server). If not specified, the default hostname (localhost) is 
       used.

   -U <username> -P <password>
       Set the username and password to access the server application. The 
       username and password must be pre-configured in the server (see the 
       Installation section). If you do not specify a username or password, 
       the defaults are used (username: procfgd, password: pRoCfGdPaSs).

       NOTE: The default username is authorized for 'get' operations only.

   -t <num_seconds>
       This parameter specifies how long, in seconds, the PROCfg application
       waits for response from PROCfgd. The default is 4 seconds and should 
       only be increased for a highly stressed server.

   -f 
       "Force mode". Commands do not issue warning to the user.


   To allow a non-default User to write without having to input the username
   and password on each command, or to save changes to any of these values
   create a configuration file named procfg.conf. Place it in your home 
   directory under a procfg directory (~/.procfg/procfg.conf). This file may
   contain the new username, password, port, hostname, force-mode or timeout. 
   The new settings are retained across reboots. An example of the procfg.conf file:

       username anyone
       password anyonepassword
       port 1012
       hostname localhost
       force
       timeout 20

   NOTE: The configuration file must not contain any white spaces following 
         any of the switches.


   Commands - Informational
   ------------------------
        
   help or -h [<command_in-question> [-a]]
       Displays command usage. Use -a for advanced information.

   adapters [<ethx(s) or lspci_adapter_name(s)>]  [-a -v -i -h -p[d]]
       Displays general information on adapters in the system including: 
       unique name, system name, link state, speed, duplex, team membership, 
       type (Intel100 for Intel adapters using e100, Intel1000 for Intel
       adapters using e1000, vendor names otherwise), VLANs, interfaces, 
       hardware info, adapter load time parameters.
        
       NOTE: Link state, speed, and duplex are not supplied for non-Intel 
             adapters. Non-Intel adapters are shown only if they are
             supported by iANS. For specific switches see the man page.

   adpdiag [<ethx(s)>] [-d <diagnostic_name1> [-p <parameter_value1>]]
           [-d <diagnostic_name2> [-p <parameter_value2>]] ...
       Runs diagnostics on adapters. If no adapter names are given the 
       command displays a list of adapters and their driver, on which a 
       diagnostic can be run. If one adapter name is given without any 
       diagnostic names the command displays a list of diagnostics that can 
       be run on the adapter. If both adapter names and diagnostic names are 
       given the command runs the specified diagnostics on the specified 
       adapters. Specify -p for diagnostics that expect a parameter.

   blink ethx [-t <num_seconds>]
       Identifies adapter by blinking hardware LED. Default blink time is 10 
       seconds.

       NOTE: ethx must be an adapter controlled by the e100 driver. This 
             operation is currently not available for PRO/1000 adapters.

   interfaces [<ethx(s)>]   [-a -d -s -x]
       Displays general information on all interfaces in the system 
       including: interface name, inet address, broadcast address, netmask, 
       VLAN ID, MTU size, driver info, and statistics.  		       	
   
   teams [<team_name(s)>]  [-m -p -v -i]  
       Displays information on the teams in the system including: teaming 
       mode, team current primary, team state, team link state, team speed, 
       team members table, team VLANs table, team hwaddr, and team probe 
       parameters.

       Teams probe parameters are: addressing mode, check time out, send 
       time, max retry count, receive time out, receive back cycles, probe 
       burst size.

       Team speed is defined differently for the different teaming modes. For
       AFT and ALB Team speed = primary speed. For FEC and GEC Team speed = 
       sum of speeds of all members.

   tree
       Demonstrates the topology of the system. Gives a non-detailed listing 
       of all stand-alone adapters and their VLANs, teams and their VLANs, 
       and members.

       Example of the output of the tree command:
          - adapter eth0
                VLANs:
                  veth0_2    2
                  veth0_4    4
          -adapter eth1
                VLANs:
          -team t0
                VLANs:
                  vt0_5    5
                  vt0_8    8
                members:
                  eth2 
                  eth3  

   vlans
       Displays information on VLANs including: interface name,VLAN name and 
       ID. 


   Commands - Team/VLAN Configuration
   ----------------------------------

   addmem <team_name> <ethx> [-p <priority>] <ethx> [-p <priority>] ...
       Add adapter to team. Default priority is none.

   addteam <team_name> eth0 eth1 ... [-M <mode>] [-e/-d] [-a <addrmode>] 
          [-c <num>] [-s <num>] [-m <num>] [-t <num>] [-r <num>] [-b <num>]
          [-g <aggregation mode>]
       Add team. <team_name> must be no longer than 8 characters, must start 
       with a letter, and must NOT start with the letters "eth". The default 
       teaming mode is AFT. For other default values, see the man page.	

   addvlans <ethx>/<team_name> -i <VLAN_ID(s)> [-n <VLAN_name>] -i 
          <VLAN_ID(s)> [-n <VLAN_name>] ...
       Add VLANs to a team or a physical adapter. Each set of VLAN IDs can be 
       tagged with a VLAN name. The VLAN ID range is 0 - 4095.

       NOTE: if a VLAN ID appears twice in the list an error occurs. 

   delmem <team_name> <member_names_list>
       Delete members from team.

   delteam <team_name> 
       Delete team.

   delvlans <ethx>/<team_name> -i <VLAN_ID(s)>
       Delete VLANs from a team or physical adapter. If a VLAN ID appears 
       twice in the list an error occurs. delvlans will not remove VLANs if 
       their interface is up.

   restore [<file_name>]
       Restore a network configuration from the host. The configuration is 
       restored from a file in the /etc/procfgd directory. The default file 
       name is saved_conf.procfgd.

   save [<file_name>]
       Save the current network configuration on the host. The file is saved 
       in the /etc/procfgd directory. The default file name is 
       saved_conf.procfgd.


   Commands - Setting Parameters
   -----------------------------

   NOTES: Enter 'procfg <command>' for a list of the objects that can be 
          configured by the specfied command.

          Enter 'procfg <command> <object>' for a list of parameters that
          can be set by the specfied command and the current values of those
          parameters.   


   adpcfg [<ethx>] [-h <hwaddr>]
       Sets adapter hw addr.

   adpsetp [<ethx(s)>] [-p <parameter_name1> = <val1>] 
          [-p <parameter_name2> = <val2>] ...
       Sets load time parameters for adapters that are not in a team or VLAN 
       and that are using the e100 driver. This operation downs any existing 
       ethx that is using the e100 driver and unloads the driver. Then, the 
       driver is reloaded with the new parameters, and the previous 
       configuration is saved and restored.

       NOTE: This operation is currently not available for PRO/1000 adapters.

   ifcfg [<ethx(s)>] [-i <addr>] [-n <mask>] [-b <addr>] [-u <pktsize>] 
          [-s <up/down>]
       Sets interfaces (all in list set to same value).

       NOTES: Setting aliased interfaces to the same IP address should fail. 
              "ifcfg ethx:i -i 0.0.0.0" removes the alias i from ethx.
              "ifcfg ethx:i -s down" also removes the alias. 

   memcfg <member_name> -p <priority>
       Sets member priority.

   teamcfg [<team_name>] [-h <addr>] -[<same_as_addteam_switches>]
       Configures team.


   Commands - Drivers
   ------------------

   loaddrv [<driver_name> [-c <insmod_command_parameters>]] 
       Loads a driver. If no arguments are given, the operation lists the 
       loadable drivers. If a driver name is given, the operation executes the
       insmod command to load the driver. Users may specify additional 
       parameters to pass to the insmod command.

       See the insmod manpage for a description of the parameters insmod can 
       receive. insmod must include the module name, even if it is identical 
       to the <driver_name> given in the loaddrv command.

   unloaddrv [<driver_name> [-c <rmmod_command_parameters>]] 
       Unloads a driver. If no arguments are given, the operation lists the 
       removable drivers. If a driver name is given, the operation executes 
       the rmmod command to unload the driver. Users may specify additional 
       parameters to pass to the rmmod command. 

       See the rmmod manpage for a description of the parameters rmmod can 
       receive. rmmod must include the module name, even if it is identical to 
       the <driver_name> given in the unloaddrv command.


Known Issues
============

NOTE: For Linux distribution-specific information, see the ldistrib.txt file
      included in the PROCfg tar file.

1.  An error message, "procfg: Unknown engine id, Unable to connect to host", 
    may be seen for every PROCfg command.

    Since PROCfg is a client-server application, the loopback interface in the 
    system (lo) must be up, and it must contain an IP address. Configure the 
    loopback interface up by entering:

      ifconfig lo <IP_address>

2.  Restoring a configuration destroys the current PROCfg system 
    configuration. 

    The restore operation might fail in the following cases:

    - Adapters in the system on which the restore is done are of a different
      type or have different capabilities than the adapters in the system on
      which the configuration was saved.

    - The adapter names in the configuration file are being used by other
      drivers.

    - The system is in a state that does not allow loaded drivers to occupy 
      the adapter names that are specified in the configuration file (adapter 
      names are determined when loading the drivers).

    In order to overcome these situations either edit the configuration file
    and change the adapter names to match the system state and the adapter
    capabilities, or change the system state and/or its adapters in a way
    which will allow restoring the configuration.

3.  Restoring a configuration does not restore the machine's routing table. 
    Therefore, when issuing a restore operation from a remote machine through 
    a gateway defined on the "restored" machine, communication could stop.

    If you have local access to the managed machine, try rebuilding that 
    machine's routing table.

4.  When running PROCfg commands in a script, some commands may fail because 
    of timing issues (some commands take longer than script allows). As a 
    workaround run the script again or insert pauses between the commands in 
    the script.


Support
=======

For general information and support, go to the Intel support website at:

    http://support.intel.com

If an issue is identified with the released source code on the supported
kernel with a supported adapter, email the specific information related to 
the issue to linux.nics@intel.com.


License
=======

This software program is released under the terms of a license agreement 
between you ('Licensee') and Intel. Do not use or load this software or any 
associated materials (collectively, the 'Software') until you have carefully 
read the full terms and conditions of the LICENSE located in this software 
package. By loading or using the Software, you agree to the terms of this 
Agreement. If you do not agree with the terms of this Agreement, do not 
install or use the Software.

This product also contains copyrighted programs that are used with permission 
and are the property of the respective owners as described in 
LICENSE.net-snmp.txt and LICENSE.xerces.txt.

* Other names and brands may be claimed as the property of others.