|
Beschreibung
Die Funktionen getservbyport(), getservbyname() und getservent() liefern Informationen über die verfügbaren Services. Jede dieser Funktionen liefert einen Zeiger auf ein Objekt der nachfolgend beschriebenen Struktur servent.
Die Struktur servent entspricht den Feldern einer Zeile der Service-Datenbasis /etc/inet/services und ist wie folgt deklariert:
struct servent { char *s_name; /* Name des Service */ char **s_aliases; /* Alias-Liste */ int s_port; /* Nummer des Ports, auf dem der Service liegt */ char *s_proto; /* verwendetes Protokoll */ };
Komponenten der Struktur servent:
s_name
Name des Service.
s_aliases
Eine durch null abgeschlossene Liste mit alternativen Namen für den Service.
s_port
Portnummer, die dem Service zugeordnet ist. Portnummern werden in Netz-Byte-Reihenfolge zurückgeliefert.
s_proto
Name des Protokolls, das verwendet werden muss, um den Service anzusprechen.
getservent() liest die nächste Zeile der Datei. Wenn nötig, öffnet getservent() vorher die Datei.
setservent() öffnet die Datei und setzt sie auf den Anfang zurück. Ist das Flag stayopen ungleich null, so wird die Datenbasis nach keinem Aufruf von getservent() geschlossen (weder direkt noch indirekt durch einen der anderen getserv...()-Aufrufe).
endservent() schließt die Datei.
getservbyname() und getservbyport() durchsuchen die Datei sequenziell von Anfang an, bis
ein passender Service-Name gefunden ist oder
die passende Portnummer gefunden ist oder
das Ende der Datei erreicht ist.
Sofern ein Protokollname (nicht NULL) angegeben ist, suchen getservbyname() und getservbyport() nach dem Service, der das passende Protokoll verwendet.
Returnwert
Erreicht die Suche das Ende der Datei, so wird der Null-Zeiger zurückgeliefert.
Hinweis
Die Informationen über Services und deren Portnummern sind in BCAM nicht vorhanden, da diese Bestandteil der OSI-Schicht 7 sind. Da die Zuordnung von Portnummern zu Services statisch ist, ist die Zuordnung mittels der Datei /etc/inet/services gelöst (wie in UNIX-Systemen üblich), indem die Services dort eingetragen werden.
Alle Informationen befinden sich in einem statischen Bereich. Die Informationen müssen somit kopiert werden, wenn sie gesichert werden sollen.
Datei
/etc/inet/services