GETNETENT(3)

名称
getnetent, getnetbyaddr, getnetbyname, setnetent, endnetent - ネットワークエントリの取得

ライブラリ
libc

書式
#include <netdb.h> struct netent * getnetent(void) struct netent * getnetbyname(const char *name) struct netent * getnetbyaddr(unsigned long net, int type) void setnetent(int stayopen) void endnetent(void)

解説
getnetent(), getnetbyname(), getnetbyaddr() 関数はそれぞれ、次に示す構造を持つオブジェクトへのポインタを返します。 構造体には、ネットワークデータベース /etc/network にある行の内訳フィールドが含まれます。

    struct  netent {
            char            *n_name;        /* ネットワークの正式名 */
            char            **n_aliases;    /* 別名リスト */
            int             n_addrtype;     /* ネット番号のタイプ */
            unsigned long   n_net;          /* ネット番号 */
    };

この構造体のメンバは次のとおりです。

n_name
    ネットワークの正式名。

n_aliases
    ネットワークの別名 (エイリアス) の 0 で終わるリスト。

n_addrtype
    返されるネットワーク番号のタイプであり、現在は AF_INET だけです。

n_net
    ネットワーク番号。 ネットワーク番号は、マシンバイトオーダで返されます。

getnetent() 関数はファイルの次の行を読み込みます。 この際、必要ならば目的のファイルをオープンします。

setnetent() 関数は、目的のファイルをオープンしリワインドします。 stayopen フラグが 0 でなければ、 getnetbyname() または getnetbyaddr() のそれぞれの呼び出しの後でも、ネットデータベースはクローズされません。

endnetent() 関数はファイルをクローズします。

getnetbyname() 関数および getnetbyaddr() は、適合するネット名またはネットアドレスおよびタイプが見つかるか、または EOF に達するまで、ファイルを最初から順次検索します。 type は AF_INET でなければなりません。 ネットワーク番号はホストオーダで返されます。

関連ファイル
/etc/networks

診断
EOF またはエラーの場合は、 ヌルポインタ (0) が返ります。

関連項目
networks(5)

歴史
getnetent(), getnetbyaddr(), getnetbyname(), setnetent(), endnetent() 関数は、 4.2BSD で登場しました。

バグ
これらの関数で使用されるデータ空間は静的です。 後でこのデータを使う必要がある場合は、以後のこれら関数の呼び出しで データが上書きされる前に、コピーして保存する必要があります。 データとして受け入れられるのは現在、インターネットネットワーク番号だけです。 ネットワーク番号が 32 ビットを超えない範囲に収まっていると期待するのは、 おそらく素朴過ぎます。