OSDN Git Service

長音記号の修正を draft に反映
[linuxjm/LDP_man-pages.git] / draft / man3 / rtnetlink.3
1 .\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
2 .\"
3 .\" %%%LICENSE_START(VERBATIM_ONE_PARA)
4 .\" Permission is granted to distribute possibly modified copies
5 .\" of this page provided the header is included verbatim,
6 .\" and in case of nontrivial modification author and date
7 .\" of the modification is added to the header.
8 .\" %%%LICENSE_END
9 .\"
10 .\" $Id: rtnetlink.3,v 1.2 1999/05/18 10:35:10 freitag Exp $
11 .\"
12 .\"*******************************************************************
13 .\"
14 .\" This file was generated with po4a. Translate the source file.
15 .\"
16 .\"*******************************************************************
17 .\"
18 .\" Japanese Version Copyright (c) 1999 Shouichi Saito
19 .\"     all rights reserved.
20 .\" Translated Mon Jul 26 12:18:39 JST 1999
21 .\"     by Shouichi Saito <ss236rx@ymg.urban.ne.jp>
22 .\" Proofed Fri Aug 20 1999 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
23 .\"
24 .TH RTNETLINK 3 2014\-09\-06 GNU "Linux Programmer's Manual"
25 .SH 名前
26 rtnetlink \- rtnetlink メッセージを操作するマクロ
27 .SH 書式
28 \fB#include <asm/types.h>\fP
29 .br
30 \fB#include <linux/netlink.h>\fP
31 .br
32 \fB#include <linux/rtnetlink.h>\fP
33 .br
34 \fB#include <sys/socket.h>\fP
35
36 \fBrtnetlink_socket = socket(AF_NETLINK, int \fP\fIsocket_type\fP\fB,
37 NETLINK_ROUTE);\fP
38 .sp
39 \fBint RTA_OK(struct rtattr *\fP\fIrta\fP\fB, int \fP\fIrtabuflen\fP\fB);\fP
40 .sp
41 \fBvoid *RTA_DATA(struct rtattr *\fP\fIrta\fP\fB);\fP
42 .sp
43 \fBunsigned int RTA_PAYLOAD(struct rtattr *\fP\fIrta\fP\fB);\fP
44 .sp
45 \fBstruct rtattr *RTA_NEXT(struct rtattr *\fP\fIrta\fP\fB, unsigned int
46 \fP\fIrtabuflen\fP\fB);\fP
47 .sp
48 \fBunsigned int RTA_LENGTH(unsigned int \fP\fIlength\fP\fB);\fP
49 .sp
50 \fBunsigned int RTA_SPACE(unsigned int \fP\fIlength\fP\fB);\fP
51 .SH 説明
52 全ての \fBrtnetlink\fP(7)  メッセージは \fBnetlink\fP(7)  メッセージヘッダーと追加属性からなる。
53 属性の操作は、必ずここに挙げたマクロだけを使って行うべきである。
54 .PP
55 \fBRTA_OK(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP は \fIrta\fP が有効なルーティング属性へのポインターであれば真を返す。
56 \fIattrlen\fP は属性バッファーの実働時の長さ (running length) である。 真でなければ、例え \fIattrlen\fP
57 がゼロでなくても、 メッセージ中にはもうそれ以上属性は無いと考えなければならない。
58 .PP
59 \fBRTA_DATA(\fP\fIrta\fP\fB)\fP はこの属性データの先頭へのポインターを返す。
60 .PP
61 \fBRTA_PAYLOAD(\fP\fIrta\fP\fB)\fP はこの属性データの長さを返す。
62 .PP
63 \fBRTA_NEXT(\fP\fIrta\fP\fB, \fP\fIattrlen\fP\fB)\fP は \fIrta\fP の次にある属性を取得する。 このマクロを呼ぶと
64 \fIattrlen\fP が更新される。 \fBRTA_OK\fP を使って、返されたポインターが正しいかをチェックすべきである。
65 .PP
66 \fBRTA_LENGTH(\fP\fIlen\fP\fB)\fP は \fIlen\fP バイトのデータ + ヘッダーに必要な長さを返す。
67 .PP
68 \fBRTA_SPACE(\fP\fIlen\fP\fB)\fP は \fIlen\fP バイトのデータを持つメッセージに必要とされる容量を返す。
69 .SH 準拠
70 これらのマクロは非標準で、Linux での拡張である。
71 .SH バグ
72 このマニュアルは完全ではない。
73 .SH 例
74 .\" FIXME . ? would be better to use libnetlink in the EXAMPLE code here
75 デバイスの MTU をセットする rtnetlink メッセージを生成する
76 .nf
77     #include <linux/rtnetlink.h>
78
79     ...
80
81     struct {
82         struct nlmsghdr  nh;
83         struct ifinfomsg if;
84         char             attrbuf[512];
85     } req;
86
87     struct rtattr *rta;
88     unsigned int mtu = 1000;
89
90     int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);
91
92     memset(&req, 0, sizeof(req));
93     req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));
94     req.nh.nlmsg_flags = NLM_F_REQUEST;
95     req.nh.nlmsg_type = RTM_NEWLINK;
96     req.if.ifi_family = AF_UNSPEC;
97     req.if.ifi_index = INTERFACE_INDEX;
98     req.if.ifi_change = 0xffffffff; /* ??? */
99     rta = (struct rtattr *)(((char *) &req) +
100                              NLMSG_ALIGN(req.nh.nlmsg_len));
101     rta\->rta_type = IFLA_MTU;
102     rta\->rta_len = RTA_LENGTH(sizeof(unsigned int));
103     req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) +
104                                   RTA_LENGTH(sizeof(mtu));
105     memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));
106     send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0);
107 .fi
108 .SH 関連項目
109 \fBnetlink\fP(3), \fBnetlink\fP(7), \fBrtnetlink\fP(7)
110 .SH この文書について
111 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.78 の一部
112 である。プロジェクトの説明とバグ報告に関する情報は
113 http://www.kernel.org/doc/man\-pages/ に書かれている。