April 22, 2000 GETNETCONFIG 3

### NAME

getnetconfig, setnetconfig, endnetconfig, getnetconfigent, freenetconfigent, nc_perror, nc_sperror - get network configuration database entry

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```struct` `netconfig``*` getnetconfig(```void *handlep`)
```void``*` setnetconfig(```void`)
```int` endnetconfig(```void *handlep`)
```struct` `netconfig``*` getnetconfigent(```const char *netid`)
```void` freenetconfigent(```struct netconfig *netconfigp`)
```void` nc_perror(```const char *msg`)
```char``*` nc_sperror(```void`)

### DESCRIPTION

The library routines described on this page provide the application access to the system network configuration database, ```/etc/netconfig`. `

    struct netconfig {
            char *nc_netid;              /* Network ID */
            unsigned long nc_semantics;  /* Semantics */
            unsigned long nc_flag;       /* Flags */
            char *nc_protofmly;          /* Protocol family */
            char *nc_proto;              /* Protocol name */
            char *nc_device;             /* Network device pathname */
            unsigned long nc_nlookups;   /* Number of directory lookup libs */
            char **nc_lookups;           /* Names of the libraries */
    };

`

getnetconfig(``) returns a pointer to the current entry in the ```netconfig` database, formatted as a struct netconfig. Successive calls will return successive netconfig entries in the netconfig database. getnetconfig(``) can be used to search the entire netconfig file. getnetconfig(``) returns ```NULL` at the end of the file. ```handlep` is the handle obtained through setnetconfig(``).

A call to setnetconfig(``) has the effect of ``binding'' to or ``rewinding'' the netconfig database. setnetconfig(``) must be called before the first call to getnetconfig(``) and may be called at any other time. setnetconfig(``) need not be called before a call to getnetconfigent(``). setnetconfig(``) returns a unique handle to be used by getnetconfig(``).

endnetconfig(``) should be called when processing is complete to release resources for reuse. ```handlep` is the handle obtained through setnetconfig(``). Programmers should be aware, however, that the last call to endnetconfig(``) frees all memory allocated by getnetconfig(``) for the struct netconfig data structure. endnetconfig(``) may not be called before setnetconfig(``).

getnetconfigent(``) returns a pointer to the netconfig structure corresponding to ```netid`. It returns ```NULL` if ```netid` is invalid (that is, does not name an entry in the netconfig database).

freenetconfigent(``) frees the netconfig structure pointed to by ```netconfigp` (previously returned by getnetconfigent(``)).

nc_perror(``) prints a message to the standard error indicating why any of the above routines failed. The message is prepended with the string ```msg` and a colon. A newline character is appended at the end of the message.

nc_sperror(``) is similar to nc_perror(``) but instead of sending the message to the standard error, will return a pointer to a string that contains the error message.

nc_perror(``) and nc_sperror(``) can also be used with the NETPATH access routines defined in getnetpath(3).

### RETURN VALUES

setnetconfig(``) returns a unique handle to be used by getnetconfig(``). In the case of an error, setnetconfig(``) returns NULL and nc_perror(``) or nc_sperror(``) can be used to print the reason for failure.

getnetconfig(``) returns a pointer to the current entry in the netconfig database, formatted as a struct netconfig. getnetconfig(``) returns NULL at the end of the file, or upon failure.

endnetconfig(``) returns 0 on success and -1 on failure (for example, if setnetconfig(``) was not called previously).

On success, getnetconfigent(``) returns a pointer to the ```struct` `netconfig` structure corresponding to netid; otherwise it returns ```NULL`.

nc_sperror(``) returns a pointer to a buffer which contains the error message string. This buffer is overwritten on each call. In multithreaded applications, this buffer is implemented as thread-specific data.

### FILES

```/etc/netconfig`

### SEE ALSO

getnetpath(3), netconfig(5)