GETNETCONFIG(3)

GETNETCONFIG(3) | Library Functions Manual | GETNETCONFIG(3)

# NAME

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

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <netconfig.h>`

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)

April 22, 2000 | NetBSD 9.0