if(7) if(7)
NAME
if - Allgemeine Eigenschaften der Netzwerkschnittstellen des
Internet-Protokolls
BESCHREIBUNG
Eine Netzwerkschnittstelle ist eine Einrichtung zum Versenden und Emp-
fangen von Paketen in einem Netz. Eine Netzwerkschnittstelle ist
gewöhnlich ein Hardware-Gerät, obwohl bestimmte Schnittstellen, wie
etwa die Loopback-Schnittstelle lo(7) als Softwaremodul implementiert
sind. Die vom Internet Protocol (IP) benutzten Netzwerkschnittstellen
müssen STREAMS-Geräte sein, die dem Datalink Provider Interface (DLPI)
entsprechen.
Eine Schnittstelle wird für das IP verfügbar, wenn es unter das IP
STREAMS-Gerät mit dem ioctl()-Aufruf ILINK angebunden wurde. Dies
kann von einem Benutzerprogramm nach dem Systemstart initiiert werden.
Jede IP-Schnittstelle muß einen Namen haben, der ihr durch den
ioctl()-Aufruf SIOCSIFNAME zugewiesen wird. Dieser Name wird von allen
anderen ioctl()-Aufrufen auf die Netzwerkschnittstelle zum eindeutigen
Identifizieren der Schnittstelle verwendet. Jeder Schnittstelle muß
vor ihrer Verwendung durch den ioctl()-Aufruf SIOCSIFADDR eine IP-
Adresse zugewiesen werden. Auf Schnittstellen, wo die Adreßabbildung
der Netz-Verbindungs-Ebene statisch ist, wird nur die Netzwerknummer
von dem ioctl()-Aufruf übernommen; der Rest wird in einer hardwarespe-
zifischen Weise gefunden. Auf Schnittstellen, die über dynamische Ein-
richtungen zur Adreßabbildung der Netz-Verbindungs-Ebene verfügen
(z. B. 10Mb/s Ethernets, die arp(7) verwenden), wird die vollständige,
in ioctl() angegebene Adresse benutzt. Wenn die Adresse einer Schnitt-
stelle angegeben wird, wird automatisch ein Eintrag in der Routing-
Tabelle erzeugt, der die Ziele im Netz der Schnittstelle beschreibt.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
if(7) if(7)
IOCTL-AUFRUFE
Die folgenden ioctl()-Aufrufe können zur Bearbeitung von IP-
Netzwerkschnittstellen herangezogen werden. Wenn nicht anders angege-
ben, hat der Aufruf eine ifreq-Struktur als Parameter. Diese Struktur
hat folgende Form:
/* Interface request structure used for socket ioctl's. All */
/* interface ioctl's must have parameter definitions which */
/* begin with ifrname. The remainder may be interface specific. */
struct ifreq {
#define IFNAMSIZ 16
char ifrname[IFNAMSIZ]; /* if name, e.g. "emd1" */
union {
struct sockaddr ifruaddr;
struct sockaddr ifrudstaddr;
char ifruoname[IFNAMSIZ]; /* other if name */
struct sockaddr ifrubroadaddr;
short ifruflags;
int ifrumetric;
char ifrudata[1]; /* interface dependent data */
char ifruenaddr[6];
} ifrifru;
#define ifraddr ifrifru.ifruaddr /* address */
#define ifrdstaddr ifrifru.ifrudstaddr /* other end of p-to-p link */
#define ifroname ifrifru.ifruoname /* other if name */
#define ifrbroadaddr ifrifru.ifrubroadaddr /* broadcast address */
#define ifrflags ifrifru.ifruflags /* flags */
#define ifrmetric ifrifru.ifrumetric /* metric */
#define ifrdata ifrifru.ifrudata /* for use by interface */
#define ifrenaddr ifrifru.ifruenaddr /* ethernet address */
};
SIOCSIFADDR Weist der Schnittstelle eine IP-Adresse zu. Nach
der Adreßzuweisung wird die Initialisierungsrou-
tine für die Schnittstelle aufgerufen.
SIOCGIFADDR Liest die der Schnittstelle zugewiesene IP-
Adresse.
SIOCSIFDSTADDR Definiert die Punkt-zu-Punkt-Adresse für die
Schnittstelle.
SIOCGIFDSTADDR Liest die Punkt-zu-Punkt-Adresse für die Schnitt-
stelle.
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
if(7) if(7)
SIOCSIFFLAGS Setzt das Schalterfeld der Schnittstelle. Wird die
Schnittstelle als inaktiv gekennzeichnet, werden
alle Prozesse benachrichtigt, die aktuell Pakete
über diese Schnittstelle weiterleiten.
SIOCGIFFLAGS Liest die Schnittstellen-Schalter.
SIOCGIFCONF Liest die Konfigurationsliste der Schnittstelle.
Dieser Aufruf hat als Ergebnis-Parameter eine
ifconf-Struktur (siehe unten). Das Feld ifclen
sollte anfänglich auf die Größe des Puffers
gesetzt werden, auf den ifcbuf zeigt. Beim Rück-
sprung enthält es die in Byte angegebene Länge der
Konfigurationsliste.
Die ifconf-Struktur hat die 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 ifclen; /* size of associated buffer */
union {
caddrt ifcubuf;
struct ifreq *ifcureq;
} ifcifcu;
#define ifcbuf ifcifcu.ifcubuf /* buffer address */
#define ifcreq ifcifcu.ifcureq /* array of structures returned */
};
SIOCSIFNAME Definiert den Namen der Schnittstelle.
SIEHE AUCH
arp(7), ip(7), lo(7), streamio(7).
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98