Po kolei:
#include <netdb.h> struct protoent *getprotoent(void);Czyta następną linię pliku /etc/protocols i na podstawie odczytanych informacji zwraca strukturę protoent:
struct protoent {
char *p_name; /* nazwa protokołu */
char **p_aliases; /* lista nazw alternatywnych */
int p_proto; /* numer protokołu */
}
struct protoent *getprotobyname(const char *name);
struct protoent *getprotobynumber(int proto);
Zwracają odpowiednio strukturę protoent protokołu o nazwie name lub numerze
proto. Wszystkie trzy funkcje zwracają NULL jeśli dany rekord nie został
odnaleziony albo gdy osiągnięty został koniec pliku /etc/protocols
(getprotoent()).
void setprotoent(int stayopen);Otwiera plik /etc/protocols i ustawia offset pliku na 0. Jeśli stayopen będzie równe 1 to plik nie będzie zamykany pomiędzy kolejnymi wywołaniami funkcji getprotobyname()/getprotobynumber().
void endprotoent(void);Zamyka plik /etc/protocols.