名前


netlink - netlink マクロ

書式


#include <asm/types.h> #include <linux/netlink.h> int NLMSG_ALIGN(size_t len); int NLMSG_LENGTH(size_t len); int NLMSG_SPACE(size_t len); void *NLMSG_DATA(struct nlmsghdr *nlh); struct nlmsghdr *NLMSG_NEXT(struct nlmsghdr *nlh, int len); int NLMSG_OK(struct nlmsghdr *nlh, int len); int NLMSG_PAYLOAD(struct nlmsghdr *nlh, int len);

説明


<linux/netlink.h> では、 netlink データグラムにアクセスしたり、これを作成するための 標準マクロがいくつか定義されている。 これらは cmsg(3) で定義されている補助データ (auxiliary data) 用のマクロと、 その精神において似ているものである。 netlink ソケットに対してやりとりされるバッファには、 必ずこれらのマクロを使ってアクセスすべきである。
NLMSG_ALIGN
 netlink メッセージの長さを丸めて正しく揃える。
NLMSG_LENGTH
 格納領域 (payload) の長さを引数にとり、 nlmsghdrnlmsg_len フィールドに納めるために揃えられた長さを返す。
NLMSG_SPACE
 与えた長さの格納領域に収められた netlink メッセージが占める バイト数を返す。
NLMSG_DATA
 与えた nlmsghdr に関連づけられた格納領域へのポインタを返す。
NLMSG_NEXT
 マルチパートメッセージにおいて、次の nlmsghdr を入手する。これを呼び出すときには、 現在の nlmsghdr で NLMSG_DONE がセットされていないことを 確認しなければならない。この関数は終端で NULL を返さないからである。 length 引数はメッセージバッファの残り長さが入った左辺値である。 このマクロはこの引数からメッセージヘッダの長さ分を差し引く。
NLMSG_OK
 Netlink メッセージが途切れておらず、パーズ可能であれば真を返す。
NLMSG_PAYLOAD
 nlmsghdr に関連づけられた格納領域の長さを返す。

注意


通常はカーネルの低レベルインターフェイスよりも、 libnetlink 経由で netlink を用いるほうが良い。

関連項目


netlink(7)

および libnetlink に関しては ftp://ftp.inr.ac.ru/ip-routing/iproute2*

openSUSE Logo

コンテンツ