X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman3%2Frtnetlink.3;h=5999af467a2a292f06e49969421c8ec9c6189770;hb=4fa3e54b837e5814a4598ec901d77446bf5cb9b3;hp=1dccfc132cbfbe5291d2b40ca81fb75d8f8fbc13;hpb=633a2252e0be3c867dce264a180a89ce8181d36f;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man3/rtnetlink.3 b/release/man3/rtnetlink.3 index 1dccfc13..5999af46 100644 --- a/release/man3/rtnetlink.3 +++ b/release/man3/rtnetlink.3 @@ -3,94 +3,65 @@ .\" of this page provided the header is included verbatim, .\" and in case of nontrivial modification author and date .\" of the modification is added to the header. -.\" $Id: rtnetlink.3,v 1.3 1999/08/20 04:10:17 nakano Exp $ +.\" $Id: rtnetlink.3,v 1.2 1999/05/18 10:35:10 freitag Exp $ +.\"******************************************************************* .\" -.\" Japanese Version Copyright (c) 1999 Shouichi Saito -.\" all rights reserved. -.\" Translated Mon Jul 26 12:18:39 JST 1999 -.\" by Shouichi Saito -.\" Proofed Fri Aug 20 1999 by NAKANO Takeo +.\" This file was generated with po4a. Translate the source file. .\" -.\"WORD: running length ¼ÂÆ°»þ¤ÎŤµ -.\" -.TH RTNETLINK 3 2010-01-11 "GNU" "Linux Programmer's Manual" -.SH ̾Á° -rtnetlink \- rtnetlink ¥á¥Ã¥»¡¼¥¸¤òÁàºî¤¹¤ë¥Þ¥¯¥í -.SH ½ñ¼° -.B #include +.\"******************************************************************* +.TH RTNETLINK 3 2012\-03\-24 GNU "Linux Programmer's Manual" +.SH 名前 +rtnetlink \- rtnetlink メッセージを操作するマクロ +.SH 書式 +\fB#include \fP .br -.B #include +\fB#include \fP .br -.B #include +\fB#include \fP .br -.B #include +\fB#include \fP -.BI "rtnetlink_socket = socket(AF_NETLINK, int " socket_type \ -", NETLINK_ROUTE);" +\fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB, +NETLINK_ROUTE);\fP .sp -.BI "int RTA_OK(struct rtattr *" rta ", int " rtabuflen ); +\fBint RTA_OK(struct rtattr *\fP\fIrta\fP\fB, int \fP\fIrtabuflen\fP\fB);\fP .sp -.BI "void *RTA_DATA(struct rtattr *" rta ); +\fBvoid *RTA_DATA(struct rtattr *\fP\fIrta\fP\fB);\fP .sp -.BI "unsigned int RTA_PAYLOAD(struct rtattr *" rta ); +\fBunsigned int RTA_PAYLOAD(struct rtattr *\fP\fIrta\fP\fB);\fP .sp -.BI "struct rtattr *RTA_NEXT(struct rtattr *" rta \ -", unsigned int " rtabuflen ); +\fBstruct rtattr *RTA_NEXT(struct rtattr *\fP\fIrta\fP\fB, unsigned int +\fP\fIrtabuflen\fP\fB);\fP .sp -.BI "unsigned int RTA_LENGTH(unsigned int " length ); +\fBunsigned int RTA_LENGTH(unsigned int \fP\fIlength\fP\fB);\fP .sp -.BI "unsigned int RTA_SPACE(unsigned int "length ); -.SH ÀâÌÀ -Á´¤Æ¤Î -.BR rtnetlink (7) -¥á¥Ã¥»¡¼¥¸¤Ï -.BR netlink (7) -¥á¥Ã¥»¡¼¥¸¥Ø¥Ã¥À¤ÈÄɲðÀ­¤«¤é¤Ê¤ë¡£ -°À­¤ÎÁàºî¤Ï¡¢É¬¤º¤³¤³¤Ëµó¤²¤¿¥Þ¥¯¥í¤òÄ̤·¤Æ¹Ô¤¦¤Ù¤­¤Ç¤¢¤ë¡£ +\fBunsigned int RTA_SPACE(unsigned int \fP\fIlength\fP\fB);\fP +.SH 説明 +全ての \fBrtnetlink\fP(7) メッセージは \fBnetlink\fP(7) メッセージヘッダと追加属性からなる。 +属性の操作は、必ずここに挙げたマクロを通して行うべきである。 .PP -.BI RTA_OK( rta ", " attrlen ) -¤Ï -.I rta -¤¬Í­¸ú¤Ê¥ë¡¼¥Æ¥£¥ó¥°Â°À­¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ì¤Ð¿¿¤òÊÖ¤¹¡£ -.I attrlen -¤Ï°À­¥Ð¥Ã¥Õ¥¡¤Î¼ÂƯ»þ¤ÎŤµ (running length) ¤Ç¤¢¤ë¡£ -¿¿¤Ç¤Ê¤±¤ì¤Ð¡¢Î㤨 -.I attrlen -¤¬¥¼¥í¤Ç¤Ê¤¯¤Æ¤â¡¢ -¥á¥Ã¥»¡¼¥¸Ãæ¤Ë¤Ï¤â¤¦¤½¤ì°Ê¾å°À­¤Ï̵¤¤¤È¹Í¤¨¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ +\fBRTA_OK(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP は \fIrta\fP が有効なルーティング属性へのポインタであれば真を返す。 +\fIattrlen\fP は属性バッファの実働時の長さ (running length) である。 真でなければ、例え \fIattrlen\fP +がゼロでなくても、 メッセージ中にはもうそれ以上属性は無いと考えなければならない。 .PP -.BI RTA_DATA( rta ) -¤Ï¤³¤Î°À­¥Ç¡¼¥¿¤ÎÀèƬ¤Ø¤Î¥Ý¥¤¥ó¥¿¤òÊÖ¤¹¡£ +\fBRTA_DATA(\fP\fIrta\fP\fB)\fP はこの属性データの先頭へのポインタを返す。 .PP -.BI RTA_PAYLOAD( rta ) -¤Ï¤³¤Î°À­¥Ç¡¼¥¿¤ÎŤµ¤òÊÖ¤¹¡£ +\fBRTA_PAYLOAD(\fP\fIrta\fP\fB)\fP はこの属性データの長さを返す。 .PP -.BI RTA_NEXT( rta ", " attrlen ) -¤Ï -.I rta -¤Î¼¡¤Ë¤¢¤ë°À­¤ò¼èÆÀ¤¹¤ë¡£ -¤³¤Î¥Þ¥¯¥í¤ò¸Æ¤Ö¤È -.I attrlen -¤¬¹¹¿·¤µ¤ì¤ë¡£ -.B RTA_OK -¤ò»È¤Ã¤Æ¡¢ÊÖ¤µ¤ì¤¿¥Ý¥¤¥ó¥¿¤¬Àµ¤·¤¤¤«¤ò¥Á¥§¥Ã¥¯¤¹¤Ù¤­¤Ç¤¢¤ë¡£ +\fBRTA_NEXT(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP は \fIrta\fP の次にある属性を取得する。 このマクロを呼ぶと +\fIattrlen\fP が更新される。 \fBRTA_OK\fP を使って、返されたポインタが正しいかをチェックすべきである。 .PP -.BI RTA_LENGTH( len ) -¤Ï -.I len -¥Ð¥¤¥È¤Î¥Ç¡¼¥¿ + ¥Ø¥Ã¥À¤ËɬÍפÊŤµ¤òÊÖ¤¹¡£ +\fBRTA_LENGTH(\fP\fIlen\fP\fB)\fP は \fIlen\fP バイトのデータ + ヘッダに必要な長さを返す。 .PP -.BI RTA_SPACE( len ) -¤Ï -.I len -¥Ð¥¤¥È¤Î¥Ç¡¼¥¿¤ò»ý¤Ä¥á¥Ã¥»¡¼¥¸¤ËɬÍפȤµ¤ì¤ëÍÆÎ̤òÊÖ¤¹¡£ -.SH ½àµò -¤³¤ì¤é¤Î¥Þ¥¯¥í¤ÏÈóɸ½à¤Ç¡¢Linux ¤Ç¤Î³ÈÄ¥¤Ç¤¢¤ë¡£ -.SH ¥Ð¥° -¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ï´°Á´¤Ç¤Ï¤Ê¤¤¡£ -.SH Îã +\fBRTA_SPACE(\fP\fIlen\fP\fB)\fP は \fIlen\fP バイトのデータを持つメッセージに必要とされる容量を返す。 +.SH 準拠 +これらのマクロは非標準で、Linux での拡張である。 +.SH バグ +このマニュアルは完全ではない。 +.SH 例 + .\" FIXME ? would be better to use libnetlink in the EXAMPLE code here -¥Ç¥Ð¥¤¥¹¤Î MTU ¤ò¥»¥Ã¥È¤¹¤ë rtnetlink ¥á¥Ã¥»¡¼¥¸¤òÀ¸À®¤¹¤ë +デバイスの MTU をセットする rtnetlink メッセージを生成する .nf #include @@ -113,17 +84,15 @@ rtnetlink \- rtnetlink req.nh.nlmsg_type = RTM_NEWLINK; req.if.ifi_family = AF_UNSPEC; req.if.ifi_index = INTERFACE_INDEX; - req.if.ifi_change = 0xffffffff; /* ???*/ + req.if.ifi_change = 0xffffffff; /* ??? */ rta = (struct rtattr *)(((char *) &req) + - NLMSG_ALIGN(req.nh.nlmsg_len)); + NLMSG_ALIGN(req.nh.nlmsg_len)); rta\->rta_type = IFLA_MTU; - rta\->rta_len = sizeof(unsigned int); + rta\->rta_len = RTA_LENGTH(sizeof(unsigned int)); req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) + RTA_LENGTH(sizeof(mtu)); memcpy(RTA_DATA(rta), &mtu, sizeof(mtu)); send(rtnetlink_sk, &req, req.nh.nlmsg_len); .fi -.SH ´ØÏ¢¹àÌÜ -.BR netlink (3), -.BR netlink (7), -.BR rtnetlink (7) +.SH 関連項目 +\fBnetlink\fP(3), \fBnetlink\fP(7), \fBrtnetlink\fP(7)