| GETSERVENT(3) |
AerieBSD 1.0 Refernce Manual |
GETSERVENT(3) |
NAME
getservent
getservent_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) |