getservent(3n)
Name
getservent, getservbyname, getservbyport, setservent, endservent − get services entry
Syntax
#include <netdb.h>
struct servent *getservent()
struct servent *getservbyname(name, proto)
char *name, *proto;
struct servent *getservbyport(port, proto)
int port; char *proto;
setservent(stayopen)
int stayopen
endservent()
Description
The getservent, getservbyname, and getservbyport subroutines each return a pointer to an object with the following structure containing the broken-out fields of a line in the network services database.
structservent {
char*s_name; /* official name of service */
char**s_aliases; /* alias list */
longs_port; /* port service resides at */
char*s_proto; /* protocol to use */
};
The members of this structure are:
s_name The official name of the service.
s_aliases A zero terminated list of alternate names for the service.
s_port The port number at which the service resides. Port numbers are returned in network byte order.
s_proto The name of the protocol to use when contacting the service.
If the stayopen flag on a setservent subroutine is NULL, the services database is opened. Otherwise, the setservent has the effect of rewinding the services database. The endservent subroutine may be called to close the services database when processing is complete.
The getservent subroutine reads the next line; getservbyname and getservbyport search until a matching name or port is found (or until EOF is encountered). The getservent subroutine keeps a pointer in the database, allowing successive calls to be used to search the entire file. If a non-NULL protocol name, proto, is also supplied, searches must also match the protocol.
The setservent routine must be called before a while loop that uses getservent in order to initialize variables in the setservent routine and an endservent must be used after the loop. Both getservbyport and getservbyname make calls to setservent and endservent.
Restrictions
All information is contained in a static area so it must be copied if it is to be saved.
If the Yellow Pages Service is running, getservent does not return the entries in any particular order. See the Guide to the Yellow Pages Service for setup information.
The services database can also be distributed by the BIND/Hesiod naming service. See the Guide to the BIND/Hesiod Service for more information.
Return Value
Null pointer (0) returned on EOF or error.
Files
/etc/services
See Also
services(5), svc.conf(5)
Guide to the BIND/Hesiod Service
Guide to the Yellow Pages Service