GETSERVENT(3) AerieBSD 1.0 Refernce Manual GETSERVENT(3)

NAME

getserventgetservent_r, getservbyport, getservbyport_r, getservbyname, getservbyname_r, setservent, setservent_r, endservent, endservent_r get service entry

SYNOPSIS

#include <netdb.h>

structservent * getservent(void);

int getservent_r(struct servent *servent, struct servent_data *servent_data);

structservent * getservbyname(const char *name, const char *proto);

int getservbyname_r(const char *name, const char *proto, struct servent *servent, struct servent_data *servent_data);

structservent * getservbyport(int port, const char *proto);

int getservbyport_r(int port, const char *proto, struct servent *servent, struct servent_data *servent_data);

void setservent(int stayopen);

void setservent_r(int stayopen, struct servent_data *servent_data);

void endservent(void);

void endservent_r(struct servent_data *servent_data);

DESCRIPTION

The getservent();, getservbyname();, and getservbyport(); functions each return a pointer to an object with the following structure containing the broken-out fields of a line in the network services database, /etc/services.

struct	servent {
	char	*s_name;	/* official name of service */
	char	**s_aliases;	/* alias list */
	int	s_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 null-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.

The getservent(); function reads the next line of the file, opening the file if necessary.

The setservent(); function opens and rewinds the file. If the stayopen flag is non-zero, the services database will not be closed after each call to getservbyname(); or getservbyport();.

The endservent(); function closes the file.

The getservbyname(); and getservbyport(); functions sequentially search from the beginning of the file until a matching protocol name or port number (specified in network byte order) is found, or until EOF is encountered. If a protocol name is also supplied (non-null), searches must also match the protocol.

The getservent_r();, getservbyport_r();, getservbyname_r();, setservent_r();, and endservent_r(); functions are reentrant versions of the above functions that take a pointer to a servent_data structure which is used to store state information. The structure must be zero-filled before it is used and should be considered opaque for the sake of portability.

The getservent_r();, getservbyport_r();, and getservbyname_r(); functions also take a pointer to a servent structure which is used to store the results of the database lookup.

RETURN VALUES

The getservent();, getservbyport();, and getservbyname(); functions return a pointer to a servent structure on success or a null pointer if end-of-file is reached or an error occurs.

The getservent_r();, getservbyport_r();, and getservbyname_r(); functions return 0 on success or \-1 if end-of-file is reached or an error occurs.

FILES

/etc/services

SEE ALSO

getprotoent(3), services(5)

STANDARDS

The getservent();, getservbynumber();, getservbyname();, setservent();, and endservent(); functions conform to

The getservent_r();, getservbyport_r();, getservbyname_r();, setservent_r();, and endservent_r(); functions are not currently standardized. This implementation follows the API used by HP, IBM, and Digital.

HISTORY

The getservent();, getservbyport();, getservbyname();, setservent();, and endservent(); functions appeared in 4.2BSD.

The getservent_r();, getservbyport_r();, getservbyname_r();, setservent_r();, and endservent_r(); functions appeared in OpenBSD 3.7.

BUGS

The non-reentrant functions use static data storage; if the data is needed for future use, it should be copied before any subsequent calls overwrite it. Expecting port numbers to fit in a 32-bit quantity is probably naive.


AerieBSD 1.0 Reference Manual August 26 2008 GETSERVENT(3)