OSDN Git Service

Import translated manuals from JM CVS Repository.
[linuxjm/jm.git] / manual / LDP_man-pages / release / man7 / netlink.7
1 '\" t
2 .\" Don't change the first line, it tells man that tbl is needed.
3 .\" This man page is Copyright (c) 1998 by Andi Kleen. Subject to the GPL.
4 .\" Based on the original comments from Alexey Kuznetsov
5 .\" $Id: netlink.7,v 1.8 2000/06/22 13:23:00 ak Exp $
6 .\"
7 .\" Japanese Version Copyright (c) 1999 NAKANO Takeo all rights reserved.
8 .\" Translated 1999-12-06 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
9 .\" Updated 2001-04-04 by Yuichi SATO <ysato@h4.dion.ne.jp>, catch up to LDP v1.35
10 .\" Updated 2006-06-23 by Yuichi SATO <ysato444@yahoo.co.jp>, catch up to LDP v2.29
11 .\"
12 .\"WORD         payload         ¥Ú¥¤¥í¡¼¥É
13 .\"WORD         capability      ¸¢¸Â
14 .\"
15 .TH NETLINK  7 2008-11-11 "Linux" "Linux Programmer's Manual"
16 .SH Ì¾Á°
17 netlink \- ¥«¡¼¥Í¥ë¤È¥æ¡¼¥¶¡¼¶õ´Ö¤ÎÄÌ¿® (AF_NETLINK)
18 .SH ½ñ¼°
19 .nf
20 .B #include <asm/types.h>
21 .B #include <sys/socket.h>
22 .B #include <linux/netlink.h>
23
24 .BI "netlink_socket = socket(AF_NETLINK, " socket_type ", " netlink_family );
25 .fi
26 .SH ÀâÌÀ
27 netlink ¤Ï¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤È¥æ¡¼¥¶¡¼¶õ´Ö¤Î¥×¥í¥»¥¹´Ö¤Ç
28 ¾ðÊó¤ò¤ä¤ê¤È¤ê¤¹¤ë¤¿¤á¤ËÍѤ¤¤é¤ì¤ë¡£
29 netlink ¤Ï¡¢¥æ¡¼¥¶¡¼¥×¥í¥»¥¹¤ËÂФ·¤Æ¤Ï
30 ɸ½àŪ¤Ê¥½¥±¥Ã¥È¥Ù¡¼¥¹¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¡¢
31 ¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤Ë¤Ï¥«¡¼¥Í¥ë¤ÎÆâÉô API ¤òÄ󶡤¹¤ë¡£
32 ¥«¡¼¥Í¥ëÆâÉô¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë¤Ä¤¤¤Æ¤Ï¤³¤Î man ¥Ú¡¼¥¸¤Ç¤Ïµ­½Ò¤·¤Ê¤¤¡£
33 ¤Þ¤¿¡¢netlink ¥­¥ã¥é¥¯¥¿¥Ç¥Ð¥¤¥¹¤òÍѤ¤¤¿
34 obsolete ¤Ê netlink ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤â¤¢¤ë¤¬¡¢¤³¤ì¤â¤³¤Îʸ½ñ¤Ç¤Ï²òÀ⤷¤Ê¤¤¡£
35 ¤³¤ì¤Ïñ¤Ë²áµî¸ß´¹À­¤Î¤¿¤á¤ËÍÑ°Õ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Ë¤¹¤®¤Ê¤¤¡£
36
37 netlink ¤Ï¥Ç¡¼¥¿¥°¥é¥à»Ø¸þ¤Î¥µ¡¼¥Ó¥¹¤Ç¤¢¤ë¡£
38 .I socket_type
39 ¤Ë¤Ï
40 .B SOCK_RAW
41 ¤È
42 .B SOCK_DGRAM
43 ¤ÎξÊý¤È¤â»ØÄê²Äǽ¤Ç¤¢¤ë¡£
44 ¤·¤«¤· netlink ¥×¥í¥È¥³¥ë¤Ï¥Ç¡¼¥¿¥°¥é¥à¤È raw ¥½¥±¥Ã¥È¤Î¶èÊ̤ò¤·¤Ê¤¤¡£
45
46 .I netlink_family
47 ¤Ï¡¢ÄÌ¿®¤¹¤ë¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤ä netlink ¥°¥ë¡¼¥×¤ÎÁªÂò¤ËÍѤ¤¤ë¡£
48 ¸½ºß³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë netlink ¥Õ¥¡¥ß¥ê¡¼¤Ï°Ê²¼¤ÎÄ̤ꡣ
49 .TP
50 .B NETLINK_ROUTE
51 ¥ë¡¼¥Æ¥£¥ó¥°¤È¥ê¥ó¥¯¤Î¹¹¿·¤ò¼õ¿®¤¹¤ë¡£
52 (IPv4 ¤È IPv6 Î¾Êý¤Î) ¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¡¦
53 IP ¥¢¥É¥ì¥¹¡¦¥ê¥ó¥¯¥Ñ¥é¥á¡¼¥¿¡¦¶á˵ÀßÄê (neighbor setup)¡¦
54 ¥­¥å¡¼¥¤¥ó¥°¥ë¡¼¥ë (queueing dicipline)¡¦¥È¥é¥Õ¥£¥Ã¥¯¥¯¥é¥¹¡¦
55 ¥Ñ¥±¥Ã¥È¤Î¥¯¥é¥¹Ê¬Îà¤Î½¤Àµ¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¤À¤í¤¦
56 .RB ( rtnetlink (7)
57 ¤ò¸«¤è)¡£
58 .TP
59 .B NETLINK_W1
60 ñÀþ (1-wire) ¤Î¥µ¥Ö¥·¥¹¥Æ¥à¤«¤é¤Î¥á¥Ã¥»¡¼¥¸¡£
61 .TP
62 .B NETLINK_USERSOCK
63 ¥æ¡¼¥¶¡¼¥â¡¼¥É¥½¥±¥Ã¥È¥×¥í¥È¥³¥ë¤Î¤¿¤á¤ËͽÌ󤵤ì¤Æ¤¤¤ë¡£
64 .TP
65 .B NETLINK_FIREWALL
66 IPv4 ¥Ñ¥±¥Ã¥È¤ò netfilter ¤«¤é¥æ¡¼¥¶¡¼¶õ´Ö¤ØžÁ÷¤¹¤ë¡£
67 .I ip_queue
68 ¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤Ç»ÈÍѤµ¤ì¤ë¡£
69 .TP
70 .B NETLINK_INET_DIAG
71 .\" FIXME More details on NETLINK_INET_DIAG needed.
72 INET ¥½¥±¥Ã¥È¤ò¥â¥Ë¥¿¥ê¥ó¥°¤¹¤ë¡£
73 .TP
74 .B NETLINK_NFLOG
75 Netfilter/iptables ULOG.
76 .TP
77 .B NETLINK_XFRM
78 .\" FIXME More details on NETLINK_XFRM needed.
79 IPsec.
80 .TP
81 .B NETLINK_SELINUX
82 SELinux ¤Î¥¤¥Ù¥ó¥ÈÄÌÃΡ£
83 .TP
84 .B NETLINK_ISCSI
85 .\" FIXME More details on NETLINK_ISCSI needed.
86 Open-iSCSI.
87 .TP
88 .B NETLINK_AUDIT
89 .\" FIXME More details on NETLINK_AUDIT needed.
90 ´Æºº (audit) ¤ò¹Ô¤¦¡£
91 .TP
92 .B NETLINK_FIB_LOOKUP
93 .\" FIXME More details on NETLINK_FIB_LOOKUP needed.
94 ¥æ¡¼¥¶¡¼¶õ´Ö¤«¤é FIB ¥ë¥Ã¥¯¥¢¥Ã¥×¤Ë¥¢¥¯¥»¥¹¤¹¤ë¡£
95 .TP
96 .B NETLINK_CONNECTOR
97 ¥«¡¼¥Í¥ë¥³¥Í¥¯¥¿¡£
98 ¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï¥«¡¼¥Í¥ë¥½¡¼¥¹¤Î
99 .I Documentation/connector/*
100 ¤ò»²¾È¤¹¤ë¤³¤È¡£
101 .TP
102 .B NETLINK_NETFILTER
103 .\" FIXME More details on NETLINK_NETFILTER needed.
104 netfilter ¥µ¥Ö¥·¥¹¥Æ¥à¡£
105 .TP
106 .B NETLINK_IP6_FW
107 IPv6 ¥Ñ¥±¥Ã¥È¤ò netfilter ¤«¤é¥æ¡¼¥¶¡¼¶õ´Ö¤ØžÁ÷¤¹¤ë¡£
108 .I ip6_queue
109 ¥«¡¼¥Í¥ë¥â¥¸¥å¡¼¥ë¤Ç»ÈÍѤµ¤ì¤ë¡£
110 .TP
111 .B NETLINK_DNRTMSG
112 DECnet ¥ë¡¼¥Æ¥£¥ó¥°¥á¥Ã¥»¡¼¥¸¡£
113 .TP
114 .B NETLINK_KOBJECT_UEVENT
115 .\" FIXME More details on NETLINK_KOBJECT_UEVENT needed.
116 ¥æ¡¼¥¶¡¼¶õ´Ö¤Ø¤Î¥«¡¼¥Í¥ë¥á¥Ã¥»¡¼¥¸
117 .TP
118 .B NETLINK_GENERIC
119 netlink ¤ò´Êñ¤Ë»ÈÍѤ¹¤ë¤¿¤á¤Î°ìÈÌŪ¤Ê netlink ¥Õ¥¡¥ß¥ê¡¼¡£
120 .PP
121 netlink ¥á¥Ã¥»¡¼¥¸¤Ï¥Ð¥¤¥È¥¹¥È¥ê¡¼¥à¤«¤é¤Ê¤ê¡¢
122 °ì¤Ä°Ê¾å¤Î
123 .I nlmsghdr
124 ¥Ø¥Ã¥À¤È¡¢¤½¤ì¤ËÂбþ¤¹¤ë¥Ú¥¤¥í¡¼¥É (payload) ¤¬´Þ¤Þ¤ì¤ë¡£
125 ¥Ð¥¤¥È¥¹¥È¥ê¡¼¥à¤Ë¤Ï¡¢É¸½à¤Î
126 .B NLMSG_*
127 ¥Þ¥¯¥í¤Ë¤è¤Ã¤Æ¤Î¤ß¥¢¥¯¥»¥¹¤¹¤Ù¤­¤Ç¤¢¤ë¡£
128 ¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï
129 .BR netlink (3)
130 ¤ò¸«¤è¡£
131
132 ¥Þ¥ë¥Á¥Ñ¡¼¥È¥á¥Ã¥»¡¼¥¸ (°ì¤Ä°Ê¾å¤Î
133 .I nlmsghdr
134 ¥Ø¥Ã¥À¤È¡¢¤½¤ì¤ËÂбþ¤¹¤ë¥Ú¥¤¥í¡¼¥É¤¬
135 °ì¤Ä¥Ð¥¤¥È¥¹¥È¥ê¡¼¥à¤Ë´Þ¤Þ¤ì¤ë) ¤Ë¤ª¤¤¤Æ¤Ï¡¢
136 ÀèƬ¤Î¥Ø¥Ã¥À¡¦¸å³¤Î¥Ø¥Ã¥À¤Ë¤Ï
137 .B NLM_F_MULTI
138 ¥Õ¥é¥°¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£¤¿¤À¤·ºÇ¸å¤Î¥Ø¥Ã¥À¤À¤±¤ÏÎã³°¤Ç¡¢
139 .B NLMSG_DONE
140 ¥¿¥¤¥×¤È¤Ê¤ë¡£
141
142 ¤½¤ì¤¾¤ì¤Î
143 .B nlmsghdr
144 ¤Î¸å¤Ë¤Ï¥Ú¥¤¥í¡¼¥É¤¬Â³¤¯¡£
145
146 .in +4n
147 .nf
148 struct nlmsghdr {
149     __u32 nlmsg_len;    /* ¥Ø¥Ã¥À¤ò´Þ¤à¥á¥Ã¥»¡¼¥¸¤ÎŤµ */
150     __u16 nlmsg_type;   /* ¥á¥Ã¥»¡¼¥¸¤ÎÆâÍƤΥ¿¥¤¥× */
151     __u16 nlmsg_flags;  /* Äɲåե饰 */
152     __u32 nlmsg_seq;    /* ¥·¡¼¥±¥ó¥¹ÈÖ¹æ */
153     __u32 nlmsg_pid;    /* Á÷¿®¥×¥í¥»¥¹¤Î PID */
154 };
155 .fi
156 .in
157
158 .I nlmsg_type
159 ¤Ïɸ½à¤Î¥á¥Ã¥»¡¼¥¸¥¿¥¤¥×¤Î¤É¤ì¤«°ì¤Ä¤Ç¤¢¤ë:
160 .B NLMSG_NOOP
161 ¥á¥Ã¥»¡¼¥¸¤Ï̵»ë¤µ¤ì¤ë¡£
162 .B NLMSG_ERROR
163 ¥á¥Ã¥»¡¼¥¸¤Ï¥¨¥é¡¼¤ò¼¨¤·¡¢¥Ú¥¤¥í¡¼¥É¤Ë¤Ï
164 .I nlmsgerr
165 ¹½Â¤ÂΤ¬Æþ¤ë¡£
166 .B NLMSG_DONE
167 ¥á¥Ã¥»¡¼¥¸¤Ï¥Þ¥ë¥Á¥Ñ¡¼¥È¥á¥Ã¥»¡¼¥¸¤Î½ªÎ»¤òÅÁ¤¨¤ë¡£
168
169 .in +4n
170 .nf
171 struct nlmsgerr {
172     int error;        /* Éé¤Þ¤¿¤Ï 0 ¤Î errno ¤Ï±þÅú¤òɽ¤¹ */
173     struct nlmsghdr msg;  /* ¥¨¥é¡¼¤òµ¯¤³¤·¤¿¥á¥Ã¥»¡¼¥¸¤Î¥Ø¥Ã¥À */
174 };
175 .fi
176 .in
177
178 ¤¢¤ë netlink ¥Õ¥¡¥ß¥ê¡¼¤Ç»ØÄê¤Ç¤­¤ë¥á¥Ã¥»¡¼¥¸¥¿¥¤¥×¤Ï¡¢
179 Ä̾ï¤â¤Ã¤È¿¤¤¡£¤³¤ì¤é¤Ë´Ø¤·¤Æ¤ÏŬÀڤʠman ¥Ú¡¼¥¸¤ò¸«¤Æ¤Û¤·¤¤¡£
180 ¤¿¤È¤¨¤Ð
181 .B NETLINK_ROUTE
182 ¤Ë´Ø¤·¤Æ¤Ï
183 .BR rtnetlink (7)
184 ¤Ë½ñ¤¤¤Æ¤¢¤ë¡£
185
186 .I nlmsg_flags
187 ¤Îɸ½à¥Õ¥é¥°¥Ó¥Ã¥È
188 .br
189 ---------------------------------
190 .TS
191 tab(:);
192 lB l.
193 NLM_F_REQUEST:Í×µá¥á¥Ã¥»¡¼¥¸Á´¤Æ¤Ç¥»¥Ã¥È¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
194 NLM_F_MULTI:T{
195 ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï¥Þ¥ë¥Á¥Ñ¡¼¥È¥á¥Ã¥»¡¼¥¸¤Î°ìÉô¤Ç¤¢¤ë¡£
196 ¥Þ¥ë¥Á¥Ñ¡¼¥È¥á¥Ã¥»¡¼¥¸¤Ï
197 .B NLMSG_DONE
198 ¤Ç½ªÃ¼¤¹¤ë¡£
199 T}
200 NLM_F_ACK:À®¸ù¤·¤¿¾ì¹ç¤Î±þÅú¤òÍ׵᤹¤ë¡£
201 NLM_F_ECHO:¤³¤ÎÍ×µá¤ò¥¨¥³¡¼¤¹¤ë¡£
202 .TE
203
204 GET Í×µá¤Ë¤ª¤±¤ëÄɲåե饰¥Ó¥Ã¥È
205 .br
206 -------------------------------------
207 .TS
208 tab(:);
209 lB l.
210 .\" FIXME NLM_F_ATOMIC is not used any more?
211 NLM_F_ROOT:ñ°ì¤Î¥¨¥ó¥È¥ê¤Ç¤Ï¤Ê¤¯¥Æ¡¼¥Ö¥ëÁ´ÂΤòÊÖ¤¹¡£
212 NLM_F_MATCH:T{
213 ¥á¥Ã¥»¡¼¥¸¤ÎÆâÍƤÇÅϤµ¤ì¤¿´ð½à (criteria) ¤Ë¥Þ¥Ã¥Á¤¹¤ë
214 Á´¤Æ¤Î¥¨¥ó¥È¥ê¤òÊÖ¤¹¡£
215 ¤Þ¤À¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
216 T}
217 NLM_F_ATOMIC:¥Æ¡¼¥Ö¥ë¤Î¥¢¥È¥ß¥Ã¥¯¤Ê¥¹¥Ê¥Ã¥×¥·¥ç¥Ã¥È¤òÊÖ¤¹¡£
218 NLM_F_DUMP:ÊØÍø¤Ê¥Þ¥¯¥í¡£(NLM_F_ROOT|NLM_F_MATCH) ¤ÈƱ¤¸¡£
219 .TE
220
221 .B NLM_F_ATOMIC
222 ¤ò»È¤¦¾ì¹ç¤Ï¡¢
223 .B CAP_NET_ADMIN
224 ¸¢¸Â¤ò»ý¤Ä¤«¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤¬ 0 ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
225
226 NEW Í×µá¤Ë¤ª¤±¤ëÄɲåե饰¥Ó¥Ã¥È
227 .br
228 -------------------------------------
229 .TS
230 tab(:);
231 lB l.
232 NLM_F_REPLACE:¸½Â¸¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òÃÖ´¹¤¹¤ë¡£
233 NLM_F_EXCL:¤¹¤Ç¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤¬¤¢¤Ã¤¿¤éÃÖ´¹¤·¤Ê¤¤¡£
234 NLM_F_CREATE:¤Þ¤À¥ª¥Ö¥¸¥§¥¯¥È¤¬¤Ê¤±¤ì¤ÐºîÀ®¤¹¤ë¡£
235 NLM_F_APPEND:¥ª¥Ö¥¸¥§¥¯¥È¥ê¥¹¥È¤ÎºÇ¸å¤ËÄɲ乤롣
236 .TE
237
238 .I nlmsg_seq
239 ¤È
240 .I nlmsg_pid
241 ¤Ï¥á¥Ã¥»¡¼¥¸¤ÎÄÉÀפ˻ÈÍѤµ¤ì¤ë¡£
242 .I nlmsg_pid
243 ¤Ï¥á¥Ã¥»¡¼¥¸¤ÎÁ÷¿®¸µ¤òɽ¤¹¡£
244 ¥á¥Ã¥»¡¼¥¸¤¬ netlink ¥½¥±¥Ã¥È¤ÇÁ÷¿®¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢
245 .I nlmsg_pid
246 ¤È¥×¥í¥»¥¹¤Î PID ¤Ï 1:1 ¤Î´Ø·¸¤Ç¤Ï¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
247 ¤è¤ê¾Ü¤·¤¤¾ðÊó¤Ï¡¢
248 .RB ¡Ö ¥¢¥É¥ì¥¹¤Î¥Õ¥©¡¼¥Þ¥Ã¥È ¡×
249 ¤Î¥»¥¯¥·¥ç¥ó¤ò»²¾È¤¹¤ë¤³¤È¡£
250
251 .I nlmsg_seq
252 ¤È
253 .I nlmsg_pid
254 ¤Ï netlink ¤Î¥³¥¢¤Ë¤Ï¸«¤¨¤Ê¤¤ (opaque)¡£
255
256 netlink ¤Ï¿®ÍêÀ­¤Î¹â¤¤¥×¥í¥È¥³¥ë¤Ç¤Ï¤Ê¤¤¡£
257 netlink ¤Ï¥á¥Ã¥»¡¼¥¸¤ò¹Ô¤­Àè¤ËÆϤ±¤ë¤¿¤á¤ËºÇÁ±¤ò¿Ô¤¯¤¹¤¬¡¢
258 ¥á¥â¥ê¤¬Â­¤ê¤Ê¤«¤Ã¤¿¤ê¥¨¥é¡¼¤¬µ¯¤³¤Ã¤¿¤ê¤¹¤ë¤È
259 ¥á¥Ã¥»¡¼¥¸¤ò¼è¤ê¤³¤Ü¤¹¤³¤È¤â¤¢¤ë¡£
260 ¿®ÍêÀ­¤Î¹â¤¤Å¾Á÷¤ò¹Ô¤¤¤¿¤¤¤È¤­¤Ï¡¢
261 Á÷¿®¼Ô¤Ï¼õ¿®¼Ô¤Ë±þÅú¤òÍ׵᤹¤ë¤³¤È¤â¤Ç¤­¤ë¡£
262 ¤³¤ì¤Ë¤Ï
263 .B NLM_F_ACK
264 ¥Õ¥é¥°¤ò¥»¥Ã¥È¤¹¤ë¡£
265 ±þÅú¤Ï
266 .B NLMSG_ERROR
267 ¥Ñ¥±¥Ã¥È¤Î¥¨¥é¡¼¥Õ¥£¡¼¥ë¥É¤ò 0 ¤Ë¤·¤¿¤â¤Î¤Ë¤Ê¤ë¡£
268 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¼«Ê¬¼«¿È¤Î¥á¥Ã¥»¡¼¥¸¤ò¼õ¤±¤¿¤È¤­¤Ë¤Ï¡¢
269 ±þÅú¤òÀ¸À®¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
270 ¥«¡¼¥Í¥ë¤Ï¼ºÇÔ¤·¤¿¥Ñ¥±¥Ã¥È¤ËÂФ·¤Æ¡¢
271 .B NLMSG_ERROR
272 ¥á¥Ã¥»¡¼¥¸¤òÁ÷¤í¤¦¤È¤¹¤ë¡£
273 ¥æ¡¼¥¶¡¼¥×¥í¥»¥¹¤Ï¤³¤Î´·½¬¤Ë¤â½¾¤¦É¬Íפ¬¤¢¤ë¡£
274
275 ¤·¤«¤·¡¢¤É¤Î¤è¤¦¤Ê¾ì¹ç¤Ç¤â¥«¡¼¥Í¥ë¤«¤é¥æ¡¼¥¶¡¼¤Ø¤Î
276 ¿®ÍêÀ­¤Î¹â¤¤Å¾Á÷¤ÏÉÔ²Äǽ¤Ç¤¢¤ë¡£
277 ¥½¥±¥Ã¥È¥Ð¥Ã¥Õ¥¡¤¬ËþÇդξì¹ç¡¢¥«¡¼¥Í¥ë¤Ï netlink ¥á¥Ã¥»¡¼¥¸¤òÁ÷¿®¤Ç¤­¤Ê¤¤¡£
278 ¥á¥Ã¥»¡¼¥¸¤Ï¼è¤ê¤³¤Ü¤µ¤ì¤Æ¡¢¥«¡¼¥Í¥ë¤È¥æ¡¼¥¶¡¼¶õ´Ö¥×¥í¥»¥¹¤Ï¡¢
279 ¥«¡¼¥Í¥ë¤Î¾õÂ֤ˤĤ¤¤Æ¤ÎƱ¤¸¥Ó¥å¡¼¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¡£
280 ¤³¤ì¤¬µ¯¤³¤Ã¤¿¤³¤È
281 .RB ( recvmsg (2)
282 ¤Ë¤è¤Ã¤Æ
283 .B ENOBUFS
284 ¥¨¥é¡¼¤¬ÊÖ¤µ¤ì¤ë) ¤ò¸¡ÃΤ·¤ÆºÆ¤ÓƱ´ü¤µ¤»¤ë¤Î¤Ï¡¢
285 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÀÕǤ¤Ç¤¢¤ë¡£
286 .SS ¥¢¥É¥ì¥¹¤Î¥Õ¥©¡¼¥Þ¥Ã¥È
287 .I sockaddr_nl
288 ¹½Â¤ÂΤϥ桼¥¶¡¼¶õ´Ö¤ä¥«¡¼¥Í¥ë¶õ´Ö¤Ç netlink ¥¯¥é¥¤¥¢¥ó¥È¤òµ­½Ò¤¹¤ë¡£
289 .I sockaddr_nl
290 ¤Ï¥æ¥Ë¥­¥ã¥¹¥È (ñ°ì¤ÎÀܳÀè¤Ë¤À¤±Á÷¤é¤ì¤ë) ¤Ë¤â¤Ç¤­¤ë¤·¡¢
291 netlink ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×
292 .RI ( nl_groups
293 ¤¬ 0 ¤Ç¤Ê¤¤¾ì¹ç) ¤Ë¤âÁ÷¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
294
295 .in +4n
296 .nf
297 struct sockaddr_nl {
298     sa_family_t     nl_family;  /* AF_NETLINK */
299     unsigned short  nl_pad;     /* 0 ¤Ç¤¢¤ë */
300     pid_t           nl_pid;     /* ¥×¥í¥»¥¹ ID */
301     __u32           nl_groups;  /* ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¥Þ¥¹¥¯ */
302 };
303 .fi
304 .in
305
306 .I nl_pid
307 ¤Ï netlink ¥½¥±¥Ã¥È¤Î¥æ¥Ë¥­¥ã¥¹¥È¥¢¥É¥ì¥¹¤Ç¤¢¤ë¡£
308 ¹Ô¤­À褬¥«¡¼¥Í¥ë¤Î¾ì¹ç¤Ï¡¢¾ï¤Ë 0 ¤Ç¤¢¤ë¡£
309 ¥æ¡¼¥¶¡¼¶õ´Ö¥×¥í¥»¥¹¤Î¾ì¹ç¡¢Ä̾ï¤Ï
310 .I nl_pid
311 ¤Ï¹Ô¤­Àè¤Î¥½¥±¥Ã¥È¤ò½êÍ­¤·¤Æ¤¤¤ë¥×¥í¥»¥¹¤Î PID ¤Ç¤¢¤ë¡£
312 ¤¿¤À¤·¡¢
313 .I nl_pid
314 ¤Ï¥×¥í¥»¥¹¤Ç¤Ï¤Ê¤¯ netlink ¥½¥±¥Ã¥È¤òƱÄꤹ¤ë¡£
315 ¥×¥í¥»¥¹¤¬Ê£¿ô¤Î netlink ¥½¥±¥Ã¥È¤ò½êÍ­¤¹¤ë¾ì¹ç¡¢
316 .I nl_pid
317 ¤ÏºÇÂç¤Ç¤â°ì¤Ä¤Î¥½¥±¥Ã¥È¤Î¥×¥í¥»¥¹ ID ¤È¤·¤«Åù¤·¤¯¤Ê¤é¤Ê¤¤¡£
318 .I nl_pid
319 ¤ò netlink ¥½¥±¥Ã¥È¤Ë³ä¤êÅö¤Æ¤ëÊýË¡¤Ï 2 ¤Ä¤¢¤ë¡£
320 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬
321 .BR bind (2)
322 ¤ò¸Æ¤ÖÁ°¤Ë
323 .I nl_pid
324 ¤òÀßÄꤹ¤ë¾ì¹ç¡¢
325 .I nl_pid
326 ¤¬°ì°Õ¤Ç¤¢¤ë¤³¤È¤ò³Îǧ¤¹¤ë¤Î¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÀÕǤ¤È¤Ê¤ë¡£
327 ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬
328 .I nl_pid
329 ¤ò 0 ¤ËÀßÄꤷ¤¿¾ì¹ç¡¢¥«¡¼¥Í¥ë¤¬¤³¤ÎÃͤò³ä¤êÅö¤Æ¤ë¡£
330 ¥«¡¼¥Í¥ë¤Ï¥×¥í¥»¥¹¤¬ºÇ½é¤Ë¥ª¡¼¥×¥ó¤·¤¿
331 netlink ¥½¥±¥Ã¥È¤ËÂФ·¤Æ¥×¥í¥»¥¹ ID ¤ò³ä¤êÅö¤Æ¡¢
332 ¤½¤ì°Ê¹ß¤Ë¥×¥í¥»¥¹¤¬ºîÀ®¤·¤¿Á´¤Æ¤Î netlink ¥½¥±¥Ã¥È¤Ë¤â°ì°Õ¤Ê
333 .I nl_pid
334 ¤ò³ä¤êÅö¤Æ¤ë¡£
335
336 .I nl_groups
337 ¤Ï¥Ó¥Ã¥È¥Þ¥¹¥¯¤Ç¡¢¤¹¤Ù¤Æ¤Î¥Ó¥Ã¥È¤¬ netlink ¥°¥ë¡¼¥×ÈÖ¹æ¤òɽ¤¹¡£
338 ¤½¤ì¤¾¤ì¤Î netlink ¥Õ¥¡¥ß¥ê¡¼¤Ï 32 ¤Î¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Î¥»¥Ã¥È¤ò»ý¤Ä¡£
339 ¤½¤ì¤¾¤ì¤Î netlink ¥Õ¥¡¥ß¥ê¡¼¤Ï 32 ¤Î¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Î
340 ¥»¥Ã¥È¤ò»ý¤Ä¡£
341 .BR bind (2)
342 ¤¬¥½¥±¥Ã¥È¤ËÂФ·¤Æ¸Æ¤Ð¤ì¤ë¤È¡¢
343 .I sockaddr_nl
344 ¤Î
345 .I nl_groups
346 ¥Õ¥£¡¼¥ë¥É¤Ë¤Ï listen ¤·¤¿¤¤¥°¥ë¡¼¥×¤Î¥Ó¥Ã¥È¥Þ¥¹¥¯¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£
347 ¥Ç¥Õ¥©¥ë¥È¤ÎÃͤϠ0 ¤Ç¡¢¥Þ¥ë¥Á¥­¥ã¥¹¥È¤ò°ìÀÚ¼õ¿®¤·¤Ê¤¤¡£
348 .BR sendmsg (2)
349 ¤ä
350 .BR connect (2)
351 ¤Ë¤è¤Ã¤Æ¡¢¤¢¤ë¥½¥±¥Ã¥È¤«¤é¥á¥Ã¥»¡¼¥¸¤ò¥Þ¥ë¥Á¥­¥ã¥¹¥È¤·¤¿¤¤¤È¤­¤Ï¡¢
352 .I nl_groups
353 ¤ËÁ÷¿®¤·¤¿¤¤¥°¥ë¡¼¥×¤Î¥Ó¥Ã¥È¥Þ¥¹¥¯¤ò¥»¥Ã¥È¤¹¤ì¤Ð¤è¤¤¡£
354 ¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤¬ 0 ¤«¡¢
355 .B CAP_NET_ADMIN
356 ¸¢¸Â¤ò»ý¤Ä¥æ¡¼¥¶¡¼¤Î¤ß¤¬ netlink ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤Ë
357 Á÷¿®¤·¤¿¤ê¡¢¤³¤ì¤ò listen ¤·¤¿¤ê¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£
358 ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¸þ¤±¥á¥Ã¥»¡¼¥¸¤ò¼õ¿®¤·¤¿¾ì¹ç¡¢¤³¤ìÂФ¹¤ë±þÅú¤Ï
359 Á÷¤ê¼ç¤Î PID ¤È¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤È¤ËÁ÷¤êÊÖ¤¹¤Ù¤­¤Ç¤¢¤ë¡£
360 .SH ¥Ð¡¼¥¸¥ç¥ó
361 netlink ¤Ø¤Î¥½¥±¥Ã¥È¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï Linux 2.2 ¤Î¿·µ¡Ç½¤Ç¤¢¤ë¡£
362
363 Linux 2.0 ¤Ï¡¢¤â¤Ã¤È¸¶»ÏŪ¤Ê¥Ç¥Ð¥¤¥¹¥Ù¡¼¥¹¤Î netlink ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò
364 ¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤¿ (¤³¤ì¤â¸ß´¹À­¤Î¤¿¤á¤Ëº£¤Ç¤â»ÈÍѤǤ­¤ë)¡£
365 ¸Å¤¤¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë´Ø¤·¤Æ¤Ï¤³¤³¤Ç¤Ïµ­½Ò¤·¤Ê¤¤¡£
366
367 NETLINK_SELINUX ¤Ï Linux 2.6.4 ¤ÇÅо줷¤¿¡£
368
369 NETLINK_AUDIT ¤Ï Linux 2.6.6 ¤ÇÅо줷¤¿¡£
370
371 NETLINK_KOBJECT_UEVENT ¤Ï Linux 2.6.10 ¤ÇÅо줷¤¿¡£
372
373 NETLINK_W1, NETLINK_FIB_LOOKUP ¤Ï Linux 2.6.13 ¤ÇÅо줷¤¿¡£
374
375 NETLINK_INET_DIAG, NETLINK_CONNECTOR, NETLINK_NETFILTER ¤Ï
376 Linux 2.6.14 ¤ÇÅо줷¤¿¡£
377
378 NETLINK_GENERIC, NETLINK_ISCSI ¤Ï Linux 2.6.15 ¤ÇÅо줷¤¿¡£
379 .SH Ãí°Õ
380 Äã¥ì¥Ù¥ë¤Î¥«¡¼¥Í¥ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤è¤ê¡¢
381 .I libnetlink
382 ¤Þ¤¿¤Ï
383 .I libnl
384 ¤òÄ̤·¤Æ netlink ¤òÍøÍѤ¹¤ë¤Û¤¦¤¬Îɤ¤¤³¤È¤¬Â¿¤¤¡£
385 .SH ¥Ð¥°
386 ¤³¤Î man ¥Ú¡¼¥¸¤Ï´°À®¤·¤Æ¤¤¤Ê¤¤¡£
387 .SH Îã
388 °Ê²¼¤ÎÎã¤Ç¤Ï¡¢
389 .B RTMGRP_LINK
390 (¥Í¥Ã¥È¥ï¡¼¥¯¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î create/delete/up/down ¥¤¥Ù¥ó¥È) ¤È
391 .B RTMGRP_IPV4_IFADDR
392 (IPv4 ¥¢¥É¥ì¥¹¤Î add/delete ¥¤¥Ù¥ó¥È) ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥°¥ë¡¼¥×¤ò listen ¤¹¤ë
393 .B NETLINK_ROUTE
394 netlink ¤òºîÀ®¤·¤Æ¤¤¤ë¡£
395
396 .in +4n
397 .nf
398 struct sockaddr_nl sa;
399
400 memset(&sa, 0, sizeof(sa));
401 sa.nl_family = AF_NETLINK;
402 sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;
403
404 fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
405 bind(fd, (struct sockaddr *) &sa, sizeof(sa));
406 .fi
407 .in
408
409 ¼¡¤ÎÎã¤Ç¤Ï¡¢netlink ¥á¥Ã¥»¡¼¥¸¤ò¥«¡¼¥Í¥ë (pid 0) ¤ËÁ÷¤ëÊýË¡¤ò¼¨¤·¤Æ¤¤¤ë¡£
410 ±þÅú¤òÄÉÀפ¹¤ëºÝ¤Î¿®ÍêÀ­¤ò¹â¤á¤ë¤¿¤á¤Ë¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤¬
411 ¥á¥Ã¥»¡¼¥¸¤Î¥·¡¼¥±¥ó¥¹ÈÖ¹æ¤òÀµ¤·¤¯½èÍý¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
412
413 .in +4n
414 .nf
415 struct nlmsghdr *nh;    /* Á÷¿®¤¹¤ë nlmsghdr ¤È¥Ú¥¤¥í¡¼¥É */
416 struct sockaddr_nl sa;
417 struct iovec iov = { (void *) nh, nh\->nlmsg_len };
418 struct msghdr msg;
419
420 msg = { (void *)&sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
421 memset(&sa, 0, sizeof(sa));
422 sa.nl_family = AF_NETLINK;
423 nh\->nlmsg_pid = 0;
424 nh\->nlmsg_seq = ++sequence_number;
425 /* NLM_F_ACK ¤òÀßÄꤹ¤ë¤³¤È¤Ç¡¢¥«¡¼¥Í¥ë¤Ë±þÅú¤òÍ׵᤹¤ë */
426 nh\->nlmsg_flags |= NLM_F_ACK;
427
428 sendmsg(fd, &msg, 0);
429 .fi
430 .in
431
432 ºÇ¸å¤Ï¡¢netlink ¥á¥Ã¥»¡¼¥¸¤ÎÆɤ߹þ¤ß¤ÎÎã¤Ç¤¢¤ë¡£
433
434 .in +4n
435 .nf
436 int len;
437 char buf[4096];
438 struct iovec iov = { buf, sizeof(buf) };
439 struct sockaddr_nl sa;
440 struct msghdr msg;
441 struct nlmsghdr *nh;
442
443 msg = { (void *)&sa, sizeof(sa), &iov, 1, NULL, 0, 0 };
444 len = recvmsg(fd, &msg, 0);
445
446 for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);
447      nh = NLMSG_NEXT (nh, len)) {
448     /* ¥Þ¥ë¥Á¥Ñ¡¼¥È¥á¥Ã¥»¡¼¥¸¤Î½ª¤ï¤ê */
449     if (nh\->nlmsg_type == NLMSG_DONE)
450         return;
451
452     if (nh\->nlmsg_type == NLMSG_ERROR)
453         /* ²¿¤é¤«¤Î¥¨¥é¡¼½èÍý¤ò¹Ô¤¦ */
454     ...
455
456     /* ¥Ú¥¤¥í¡¼¥É¤Î²òÀϤò³¤±¤ë */
457     ...
458 }
459 .fi
460 .in
461 .SH ´ØÏ¢¹àÌÜ
462 .BR cmsg (3),
463 .BR netlink (3),
464 .BR capabilities (7),
465 .BR rtnetlink (7)
466 .PP
467 libnetlink ¤Ë´Ø¤¹¤ë¾ðÊó¤Ï
468 ftp://ftp.inr.ac.ru/ip-routing/iproute2*
469
470 libnl ¤Ë´Ø¤¹¤ë¾ðÊó¤Ï
471 http://people.suug.ch/~tgr/libnl/
472
473 RFC 3549 "Linux Netlink as an IP Services Protocol"