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