Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ if(7) — UnixWare 2.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ARP(7)

IP(7)

ifconfig(1M)

lo(7)






       if(7)                                                          if(7)


       NAME
             if - general properties of Internet Protocol network
             interfaces

       DESCRIPTION
             A network interface is a device for sending and receiving
             packets on a network.  A network interface is usually a
             hardware device, although certain interfaces such as the
             loopback interface, lo(7), are implemented in software.
             Network interfaces used by the Internet Protocol (IP) must be
             STREAMS devices conforming to the Datalink Provider Interface
             (DLPI).

             An interface becomes available to IP when it is linked below
             the IP STREAMS device with the I_LINK ioctl call.  This may be
             initiated by the kernel at boot time or by a user program some
             time after the system is running.  Each IP interface must have
             a ``name'' assigned to it with the SIOCSIFNAME ioctl.  This
             name is used as a unique handle on the interface by all of the
             other network interface ioctl calls.  Each interface must be
             assigned an IP address with the SIOCSIFADDR ioctl before it
             can be used.  On interfaces where the network-to-link layer
             address mapping is static, only the network number is taken
             from the ioctl request; the remainder is found in a hardware
             specific manner.  On interfaces which provide dynamic
             network-to-link layer address mapping facilities [for example,
             10Mb/s Ethernets using ARP(7)], the entire address specified
             in the ioctl is used.  A routing table entry for destinations
             on the network of the interface is installed automatically
             when an interface's address is set.

          ioctls
             The following ioctl calls may be used to manipulate IP network
             interfaces.  Unless specified otherwise, the request takes an
             ifreq structure as its parameter.  This structure has the
             form:

             /* Interface request structure used for socket ioctl's.  All */
             /* interface ioctl's must have parameter definitions which */
             /* begin with ifr_name.  The remainder may be interface specific. */
             struct  ifreq {
             #define IFNAMSIZ     16
                 char         ifr_name[IFNAMSIZ];          /* if name, for example "emd1" */
                 union {
                      struct  sockaddr ifru_addr;
                      struct  sockaddr ifru_dstaddr;


                           Copyright 1994 Novell, Inc.               Page 1













      if(7)                                                          if(7)


                     char    ifru_oname[IFNAMSIZ];        /* other if name */
                     struct  sockaddr ifru_broadaddr;
                     short   ifru_flags;
                     int     ifru_metric;
                     char    ifru_data[1];                /* interface dependent data */
                     char    ifru_enaddr[6];
                } ifr_ifru;
            #define ifr_addr      ifr_ifru.ifru_addr      /* address */
            #define ifr_dstaddr   ifr_ifru.ifru_dstaddr   /* other end of p-to-p link */
            #define ifr_oname     ifr_ifru.ifru_oname     /* other if name */
            #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
            #define ifr_flags     ifr_ifru.ifru_flags     /* flags */
            #define ifr_metric    ifr_ifru.ifru_metric    /* metric */
            #define ifr_data      ifr_ifru.ifru_data      /* for use by interface */
            #define ifr_enaddr    ifr_ifru.ifru_enaddr    /* ethernet address */
            };

            SIOCSIFADDR         Set interface address.  Following the
                                address assignment, the ``initialization''
                                routine for the interface is called.

            SIOCGIFADDR         Get interface address.

            SIOCSIFDSTADDR      Set point to point address for interface.

            SIOCGIFDSTADDR      Get point to point address for interface.

            SIOCSIFFLAGS        Set interface flags field.  If the
                                interface is marked down, any processes
                                currently routing packets through the
                                interface are notified.  The interface can
                                be marked up or down by using
                                ifconfig(1M).

            SIOCGIFFLAGS        Get interface flags.

            SIOCGIFCONF         Get interface configuration list.  This
                                request takes an ifconf structure (see
                                below) as a value-result parameter.  The
                                ifc_len field should be initially set to
                                the size of the buffer pointed to by
                                ifc_buf.  On return it will contain the
                                length, in bytes, of the configuration
                                list.




                          Copyright 1994 Novell, Inc.               Page 2













       if(7)                                                          if(7)


             SIOCSIFNAME         Set the name of the interface.

             The ifconf structure has the form:

                   /*
                    * Structure used in SIOCGIFCONF request.
                    * Used to retrieve interface configuration
                    * for machine (useful for programs which
                    * must know all networks accessible).
                    */
                   struct      ifconf {
                         int     ifc_len;           /* size of associated buffer */
                         union {
                                 caddr_t ifcu_buf;
                                 struct  ifreq *ifcu_req;
                         } ifc_ifcu;
                   #define ifc_buf ifc_ifcu.ifcu_buf  /* buffer address */
                   #define ifc_req ifc_ifcu.ifcu_req  /* array of structures returned */
                   };

       REFERENCES
             ARP(7), IP(7), ifconfig(1M), lo(7)


























                           Copyright 1994 Novell, Inc.               Page 3








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