man Pages(7): Special Files
この本のみを検索
PDF 文書ファイルをダウンロードする

NAME

if_tcp, 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 one may be 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 opened and the IP module is pushed onto the stream with the I_PUSH 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 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;
      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];
      int              if_muxid[2];                /* mux id's for arp and ip * /
   } 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.
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.
SIOGIFNUM
Get number of interfaces. This request returns an integer which is the number of interface descriptions (struct ifreq) that will be returned by the SIOCGIFCONF ioctl; that is it gives an indication of how large ifc_len has to be.
SIOCSIFMTU
Set the maximum transmission unit size for interface. Place the result of this request in ifru_metric field. The mtu has to be
smaller than physical mtu limitation (which is reported in the DLPI info ack message).
SIOCGIFMTU
Get the maximum transmission unit size for interface. Place the result of this request in ifru_metric field.
SIOCSIFMETRIC
Set the metric associated with the interface. The metric is used by routine daemons such as in.routed(1M).
SIOCGIFMETRIC
Get the metric associated with the interface.
SIOCGIFMUXID
Get the ip and arp muxid associated with the interface.
SIOCSIFMUXID
Set the ip and arp muxid associated with 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 * /
};

SEE ALSO

ifconfig (1M),in.routed(1M), arp (7),ip(7)