# getprotoent

## NAME



           getprotoent, getprotobyname, getprotobynumber, setprotoent,
           endprotoent - get protocol entry
    


## LIBRARY



           Standard C library (_libc_ , _-lc_)
    


## SYNOPSIS



           **#include <netdb.h>**
    
           **struct protoent *getprotoent(void);**
    
           **struct protoent *getprotobyname(const char ***_name_**);**
           **struct protoent *getprotobynumber(int** _proto_**);**
    
           **void setprotoent(int** _stayopen_**);**
           **void endprotoent(void);**
    


## DESCRIPTION



           The **getprotoent**() function reads the next entry from the protocols
           database (see protocols(5)) and returns a _protoent_ structure
           containing the broken-out fields from the entry.  A connection is
           opened to the database if necessary.
    
           The **getprotobyname**() function returns a _protoent_ structure for the
           entry from the database that matches the protocol name _name_.  A
           connection is opened to the database if necessary.
    
           The **getprotobynumber**() function returns a _protoent_ structure for
           the entry from the database that matches the protocol number
           _number_.  A connection is opened to the database if necessary.
    
           The **setprotoent**() function opens a connection to the database, and
           sets the next entry to the first entry.  If _stayopen_ is nonzero,
           then the connection to the database will not be closed between
           calls to one of the **getproto***() functions.
    
           The **endprotoent**() function closes the connection to the database.
    
           The _protoent_ structure is defined in _< netdb.h>_ as follows:
    
               struct protoent {
                   char  *p_name;       /* official protocol name */
                   char **p_aliases;    /* alias list */
                   int    p_proto;      /* protocol number */
               }
    
           The members of the _protoent_ structure are:
    
           _p_name_ The official name of the protocol.
    
           _p_aliases_
                  A NULL-terminated list of alternative names for the
                  protocol.
    
           _p_proto_
                  The protocol number.
    


## RETURN VALUE



           The **getprotoent**(), **getprotobyname**(), and **getprotobynumber**()
           functions return a pointer to a statically allocated _protoent_
           structure, or a null pointer if an error occurs or the end of the
           file is reached.
    


## FILES



           _/etc/protocols_
                  protocol database file
    


## ATTRIBUTES



           For an explanation of the terms used in this section, see
           attributes(7).
           ┌────────────────────┬───────────────┬───────────────────────────┐
           │ **Interface** │ **Attribute** │ **Value** │
           ├────────────────────┼───────────────┼───────────────────────────┤
           │ **getprotoent**()      │ Thread safety │ MT-Unsafe race:protoent   │
           │                    │               │ race:protoentbuf locale   │
           ├────────────────────┼───────────────┼───────────────────────────┤
           │ **getprotobyname**()   │ Thread safety │ MT-Unsafe                 │
           │                    │               │ race:protobyname locale   │
           ├────────────────────┼───────────────┼───────────────────────────┤
           │ **getprotobynumber**() │ Thread safety │ MT-Unsafe                 │
           │                    │               │ race:protobynumber locale │
           ├────────────────────┼───────────────┼───────────────────────────┤
           │ **setprotoent**(),     │ Thread safety │ MT-Unsafe race:protoent   │
           │ **endprotoent**()      │               │ locale                    │
           └────────────────────┴───────────────┴───────────────────────────┘
    
           In the above table, _protoent_ in _race:protoent_ signifies that if
           any of the functions **setprotoent**(), **getprotoent**(), or
           **endprotoent**() are used in parallel in different threads of a
           program, then data races could occur.
    


## STANDARDS



           POSIX.1-2008.
    


* * *