Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

bcs_cat(1)

getprotoent(3N)

services(4C)



getservent(3N)                4 BSD                getservent(3N)



NAME
     getservent, getservbyport, getservbyname, setservent,
     endservent - get service entry

SYNOPSIS
     #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
     getservent, getservbyname, and getservbyport each return a
     pointer to an object with the following structure containing
     the broken-out fields of a line in the network services data
     base, /etc/services.

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

     CX supports both a proprietary version and an 88open  Object
     Compatibility Standard Networking Supplement (OCSNS) version
     of getservbyname and getservbyport.  The OCSNS  versions  of
     these  functions  check  for  the  existence of the function
     /etc/bcs_cat and if it exists and has proper execute permis-
     sion,   will   issue   a   popen(3S)  call  of  the  command



Page 1                                           CX/UX Networking





getservent(3N)                4 BSD                getservent(3N)



     /etc/bcs_cat services.  If the  file  does  not  exist,  the
     functions will access the /etc/services file.

     getservent reads the next line of  the  file  /etc/services,
     opening  the  file if necessary and returning a pointer to a
     servent structure containing the file entry.

     Setservent opens and rewinds the file /etc/services.  If the
     stayopen  flag  is  non-zero,  the net data base will not be
     closed after each call to getservent, getservbyname, or get-
     servbyport.

     Endservent closes the  file  /etc/services  and  clears  the
     stayopen flag.

     The functions getservent,  setservent,  and  endservent  are
     defined  in  the  88open  OCSNS.  Their functionality is the
     same as described above.

     Both versions of  getservbyname  and  getservbyport  sequen-
     tially  search from the beginning of the file until a match-
     ing protocol name or port number is found, or until  EOF  is
     encountered.   If  a  protocol  name  is also supplied (non-
     NULL), searches must also match the protocol.

NOTE
     The OCSNS versions  of  the  above  files  may  be  accessed
     through special OCS options passed to cc(1) and/or ld(1).

FILES
     /etc/services

SEE ALSO
     bcs_cat(1), getprotoent(3N), services(4C)

DIAGNOSTICS
     Null pointer (0) returned on EOF or error.

BUGS
     All information is contained in a static area so it must  be
     copied  if it is to be saved.  Expecting port numbers to fit
     in a 32 bit quantity is probably naive.













Page 2                                           CX/UX Networking



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026