ИМЯ

setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr - работа с элементами групп сетей

LIBRARY

Standard C library ( libc, -lc)

СИНТАКСИС

#include <netdb.h>
int setnetgrent(const char *netgroup);
void endnetgrent(void);
int getnetgrent(char **restrict host,
            char **restrict user, char **restrict domain);
int getnetgrent_r(char **restrict host,
            char **restrict user, char **restrict domain,
            char buf[restrict .buflen], size_t buflen);
int innetgr(const char *netgroup, const char *host,
            const char *user, const char *domain);
Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):
setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(), innetgr():
    начиная с glibc 2.19:
        _DEFAULT_SOURCE
    в glibc 2.19 и старее:
        _BSD_SOURCE || _SVID_SOURCE

ОПИСАНИЕ

Файл netgroup впервые появился в SunOS. База данных netgroup представляет собой список строк с тремя элементами ( hostname, username, domainname) или с другими именами netgroup. Любой из элементов тройки может быть пустым, то есть совпадает с любым значением. Описываемые здесь функции предоставляют доступ к базам данных netgroup. В файле /etc/nsswitch.conf задаётся какая база данных будет использована при поиске.
Вызов setnetgrent() настраивает netgroup, которая будет использована при поиске в последующих вызовах getnetgrent(). Функция getnetgrent() выбирает следующий элемент netgroup и возвращает указатели в host, user, domain. Указатель null означает, что соответствующая запись совпадает с любой строкой. Значения указателей корректны до тех пор, пока не произойдёт других вызовов функций работы с netgroup. Чтобы избежать этой проблемы вы можете использовать функцию GNU getnetgrent_r(), которая хранит строки в переданной ей буфере. Чтобы освободить все выделенные буферы используйте endnetgrent().
В большинстве случаев чаще всего проверяется присутствие тройки ( hostname, username, domainname) в netgroup. Для этого можно использовать функцию innetgr() и не вызывать остальные три функции. Не забудьте, что указатель null — универсальный символ и совпадает с любой строкой. Функцию можно безопасно использовать в нитях.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

При успешном выполнении эти функции возвращают 1 и 0 при ошибке.

ФАЙЛЫ

/etc/netgroup
 
/etc/nsswitch.conf

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
Интерфейс Атрибут Значение
setnetgrent(), getnetgrent_r(), innetgr() Безвредность в нитях MT-Unsafe race:netgrent locale
endnetgrent() Безвредность в нитях MT-Unsafe race:netgrent
getnetgrent() Безвредность в нитях MT-Unsafe race:netgrent race:netgrentbuf locale
 
В приведённой выше таблице netgrent в race:netgrent означает, что если в нескольких нитях программы одновременно используются функции setnetgrent(), getnetgrent_r(), innetgr(), getnetgrent() или endnetgrent(), то может возникнуть состязательность по данным.

СТАНДАРТЫ

Эти функции отсутствуют в POSIX.1, но setnetgrent(), endnetgrent(), getnetgrent() и innetgr() доступны в большинстве систем UNIX. Функция getnetgrent_r() не так широко распространена в других системах.

ЗАМЕЧАНИЯ

В реализации BSD функция setnetgrent() возвращает void.

СМ. ТАКЖЕ

sethostent(3), setprotoent(3), setservent(3)

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Alexander Golubev <[email protected]>, Azamat Hackimov <[email protected]>, Hotellook, Nikita <[email protected]>, Spiros Georgaras <[email protected]>, Vladislav <[email protected]>, Yuri Kozlov <[email protected]> и Иван Павлов <[email protected]>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на [email protected]

Recommended readings

Pages related to getnetgrent_r you should read also: