1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2014-04-17 13:14+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=UTF-8\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/netlink.3:10 build/C/man7/netlink.7:11
26 #: build/C/man3/netlink.3:10
32 #: build/C/man3/netlink.3:10 build/C/man3/rtnetlink.3:12
38 #: build/C/man3/netlink.3:10 build/C/man7/netlink.7:11 build/C/man3/rtnetlink.3:12 build/C/man7/rtnetlink.7:15
40 msgid "Linux Programmer's Manual"
44 #: build/C/man3/netlink.3:11 build/C/man7/netlink.7:12 build/C/man3/rtnetlink.3:13 build/C/man7/rtnetlink.7:16
50 #: build/C/man3/netlink.3:13
51 msgid "netlink - Netlink macros"
55 #: build/C/man3/netlink.3:13 build/C/man7/netlink.7:14 build/C/man3/rtnetlink.3:15 build/C/man7/rtnetlink.7:18
61 #: build/C/man3/netlink.3:16
63 msgid "B<#include E<lt>asm/types.hE<gt>>\n"
67 #: build/C/man3/netlink.3:18
69 msgid "B<#include E<lt>linux/netlink.hE<gt>>\n"
73 #: build/C/man3/netlink.3:20
75 msgid "B<int NLMSG_ALIGN(size_t >I<len>B<);>\n"
79 #: build/C/man3/netlink.3:22
81 msgid "B<int NLMSG_LENGTH(size_t >I<len>B<);>\n"
85 #: build/C/man3/netlink.3:24
87 msgid "B<int NLMSG_SPACE(size_t >I<len>B<);>\n"
91 #: build/C/man3/netlink.3:26
93 msgid "B<void *NLMSG_DATA(struct nlmsghdr *>I<nlh>B<);>\n"
97 #: build/C/man3/netlink.3:28
99 msgid "B<struct nlmsghdr *NLMSG_NEXT(struct nlmsghdr *>I<nlh>B<, int >I<len>B<);>\n"
103 #: build/C/man3/netlink.3:30
105 msgid "B<int NLMSG_OK(struct nlmsghdr *>I<nlh>B<, int >I<len>B<);>\n"
109 #: build/C/man3/netlink.3:32
111 msgid "B<int NLMSG_PAYLOAD(struct nlmsghdr *>I<nlh>B<, int >I<len>B<);>\n"
115 #: build/C/man3/netlink.3:33 build/C/man7/netlink.7:22 build/C/man3/rtnetlink.3:39 build/C/man7/rtnetlink.7:28
121 #: build/C/man3/netlink.3:41
123 "I<E<lt>linux/netlink.hE<gt>> defines several standard macros to access or "
124 "create a netlink datagram. They are similar in spirit to the macros defined "
125 "in B<cmsg>(3) for auxiliary data. The buffer passed to and from a netlink "
126 "socket should be accessed using only these macros."
130 #: build/C/man3/netlink.3:41
132 msgid "B<NLMSG_ALIGN>()"
136 #: build/C/man3/netlink.3:44
137 msgid "Round the length of a netlink message up to align it properly."
141 #: build/C/man3/netlink.3:44
143 msgid "B<NLMSG_LENGTH>()"
147 #: build/C/man3/netlink.3:52
149 "Given the payload length, I<len>, this macro returns the aligned length to "
150 "store in the I<nlmsg_len> field of the I<nlmsghdr>."
154 #: build/C/man3/netlink.3:52
156 msgid "B<NLMSG_SPACE>()"
160 #: build/C/man3/netlink.3:57
162 "Return the number of bytes that a netlink message with payload of I<len> "
167 #: build/C/man3/netlink.3:57
169 msgid "B<NLMSG_DATA>()"
173 #: build/C/man3/netlink.3:61
174 msgid "Return a pointer to the payload associated with the passed I<nlmsghdr>."
177 #. this is bizarre, maybe the interface should be fixed.
179 #: build/C/man3/netlink.3:61
181 msgid "B<NLMSG_NEXT>()"
185 #: build/C/man3/netlink.3:77
187 "Get the next I<nlmsghdr> in a multipart message. The caller must check if "
188 "the current I<nlmsghdr> didn't have the B<NLMSG_DONE> set\\(emthis function "
189 "doesn't return NULL on end. The I<len> argument is an lvalue containing the "
190 "remaining length of the message buffer. This macro decrements it by the "
191 "length of the message header."
195 #: build/C/man3/netlink.3:77
197 msgid "B<NLMSG_OK>()"
201 #: build/C/man3/netlink.3:81
203 "Return true if the netlink message is not truncated and is in a form "
204 "suitable for parsing."
208 #: build/C/man3/netlink.3:81
210 msgid "B<NLMSG_PAYLOAD>()"
214 #: build/C/man3/netlink.3:85
215 msgid "Return the length of the payload associated with the I<nlmsghdr>."
219 #: build/C/man3/netlink.3:85 build/C/man3/rtnetlink.3:82
221 msgid "CONFORMING TO"
225 #: build/C/man3/netlink.3:87 build/C/man3/rtnetlink.3:84
226 msgid "These macros are nonstandard Linux extensions."
230 #: build/C/man3/netlink.3:87 build/C/man7/netlink.7:384
236 #: build/C/man3/netlink.3:91
238 "It is often better to use netlink via I<libnetlink> than via the low-level "
243 #: build/C/man3/netlink.3:91 build/C/man7/netlink.7:467 build/C/man3/rtnetlink.3:122 build/C/man7/rtnetlink.7:460
249 #: build/C/man3/netlink.3:94
250 msgid "B<libnetlink>(3), B<netlink>(7)"
254 #: build/C/man3/netlink.3:94 build/C/man7/netlink.7:482 build/C/man3/rtnetlink.3:126 build/C/man7/rtnetlink.7:465
260 #: build/C/man3/netlink.3:101 build/C/man7/netlink.7:489 build/C/man3/rtnetlink.3:133 build/C/man7/rtnetlink.7:472
262 "This page is part of release 3.64 of the Linux I<man-pages> project. A "
263 "description of the project, and information about reporting bugs, can be "
264 "found at \\%http://www.kernel.org/doc/man-pages/."
268 #: build/C/man7/netlink.7:11
274 #: build/C/man7/netlink.7:11 build/C/man7/rtnetlink.7:15
280 #: build/C/man7/netlink.7:14
281 msgid "netlink - communication between kernel and user space (AF_NETLINK)"
285 #: build/C/man7/netlink.7:19
288 "B<#include E<lt>asm/types.hE<gt>>\n"
289 "B<#include E<lt>sys/socket.hE<gt>>\n"
290 "B<#include E<lt>linux/netlink.hE<gt>>\n"
294 #: build/C/man7/netlink.7:21
297 "B<netlink_socket = socket(AF_NETLINK, >I<socket_type>B<, "
298 ">I<netlink_family>B<);>\n"
302 #: build/C/man7/netlink.7:31
304 "Netlink is used to transfer information between kernel and user-space "
305 "processes. It consists of a standard sockets-based interface for user space "
306 "processes and an internal kernel API for kernel modules. The internal "
307 "kernel interface is not documented in this manual page. There is also an "
308 "obsolete netlink interface via netlink character devices; this interface is "
309 "not documented here and is provided only for backward compatibility."
313 #: build/C/man7/netlink.7:41
315 "Netlink is a datagram-oriented service. Both B<SOCK_RAW> and B<SOCK_DGRAM> "
316 "are valid values for I<socket_type>. However, the netlink protocol does not "
317 "distinguish between datagram and raw sockets."
321 #: build/C/man7/netlink.7:45
323 "I<netlink_family> selects the kernel module or netlink group to communicate "
324 "with. The currently assigned netlink families are:"
328 #: build/C/man7/netlink.7:45
330 msgid "B<NETLINK_ROUTE>"
334 #: build/C/man7/netlink.7:52
336 "Receives routing and link updates and may be used to modify the routing "
337 "tables (both IPv4 and IPv6), IP addresses, link parameters, neighbor setups, "
338 "queueing disciplines, traffic classes and packet classifiers (see "
343 #: build/C/man7/netlink.7:52
345 msgid "B<NETLINK_W1>"
349 #: build/C/man7/netlink.7:55
350 msgid "Messages from 1-wire subsystem."
354 #: build/C/man7/netlink.7:55
356 msgid "B<NETLINK_USERSOCK>"
360 #: build/C/man7/netlink.7:58
361 msgid "Reserved for user-mode socket protocols."
365 #: build/C/man7/netlink.7:58
367 msgid "B<NETLINK_FIREWALL>"
371 #: build/C/man7/netlink.7:64
373 "Transport IPv4 packets from netfilter to user space. Used by I<ip_queue> "
378 #: build/C/man7/netlink.7:64
380 msgid "B<NETLINK_INET_DIAG>"
383 #. FIXME More details on NETLINK_INET_DIAG needed.
385 #: build/C/man7/netlink.7:68
386 msgid "INET socket monitoring."
390 #: build/C/man7/netlink.7:68
392 msgid "B<NETLINK_NFLOG>"
396 #: build/C/man7/netlink.7:71
397 msgid "Netfilter/iptables ULOG."
401 #: build/C/man7/netlink.7:71
403 msgid "B<NETLINK_XFRM>"
406 #. FIXME More details on NETLINK_XFRM needed.
408 #: build/C/man7/netlink.7:75
413 #: build/C/man7/netlink.7:75
415 msgid "B<NETLINK_SELINUX>"
419 #: build/C/man7/netlink.7:78
420 msgid "SELinux event notifications."
424 #: build/C/man7/netlink.7:78
426 msgid "B<NETLINK_ISCSI>"
429 #. FIXME More details on NETLINK_ISCSI needed.
431 #: build/C/man7/netlink.7:82
436 #: build/C/man7/netlink.7:82
438 msgid "B<NETLINK_AUDIT>"
441 #. FIXME More details on NETLINK_AUDIT needed.
443 #: build/C/man7/netlink.7:86
448 #: build/C/man7/netlink.7:86
450 msgid "B<NETLINK_FIB_LOOKUP>"
453 #. FIXME More details on NETLINK_FIB_LOOKUP needed.
455 #: build/C/man7/netlink.7:90
456 msgid "Access to FIB lookup from user space."
460 #: build/C/man7/netlink.7:90
462 msgid "B<NETLINK_CONNECTOR>"
466 #: build/C/man7/netlink.7:96
468 "Kernel connector. See I<Documentation/connector/*> in the Linux kernel "
469 "source tree for further information."
473 #: build/C/man7/netlink.7:96
475 msgid "B<NETLINK_NETFILTER>"
478 #. FIXME More details on NETLINK_NETFILTER needed.
480 #: build/C/man7/netlink.7:100
481 msgid "Netfilter subsystem."
485 #: build/C/man7/netlink.7:100
487 msgid "B<NETLINK_IP6_FW>"
491 #: build/C/man7/netlink.7:106
493 "Transport IPv6 packets from netfilter to user space. Used by I<ip6_queue> "
498 #: build/C/man7/netlink.7:106
500 msgid "B<NETLINK_DNRTMSG>"
504 #: build/C/man7/netlink.7:109
505 msgid "DECnet routing messages."
509 #: build/C/man7/netlink.7:109
511 msgid "B<NETLINK_KOBJECT_UEVENT>"
514 #. FIXME More details on NETLINK_KOBJECT_UEVENT needed.
516 #: build/C/man7/netlink.7:113
517 msgid "Kernel messages to user space."
521 #: build/C/man7/netlink.7:113
523 msgid "B<NETLINK_GENERIC>"
527 #: build/C/man7/netlink.7:116
528 msgid "Generic netlink family for simplified netlink usage."
532 #: build/C/man7/netlink.7:126
534 "Netlink messages consist of a byte stream with one or multiple I<nlmsghdr> "
535 "headers and associated payload. The byte stream should be accessed only "
536 "with the standard B<NLMSG_*> macros. See B<netlink>(3) for further "
541 #: build/C/man7/netlink.7:134
543 "In multipart messages (multiple I<nlmsghdr> headers with associated payload "
544 "in one byte stream) the first and all following headers have the "
545 "B<NLM_F_MULTI> flag set, except for the last header which has the type "
550 #: build/C/man7/netlink.7:138
551 msgid "After each I<nlmsghdr> the payload follows."
555 #: build/C/man7/netlink.7:148
558 "struct nlmsghdr {\n"
559 " __u32 nlmsg_len; /* Length of message including header. */\n"
560 " __u16 nlmsg_type; /* Type of message content. */\n"
561 " __u16 nlmsg_flags; /* Additional flags. */\n"
562 " __u32 nlmsg_seq; /* Sequence number. */\n"
563 " __u32 nlmsg_pid; /* Sender port ID. */\n"
568 #: build/C/man7/netlink.7:161
570 "I<nlmsg_type> can be one of the standard message types: B<NLMSG_NOOP> "
571 "message is to be ignored, B<NLMSG_ERROR> message signals an error and the "
572 "payload contains an I<nlmsgerr> structure, B<NLMSG_DONE> message terminates "
573 "a multipart message."
577 #: build/C/man7/netlink.7:168
580 "struct nlmsgerr {\n"
581 " int error; /* Negative errno or 0 for acknowledgements */\n"
582 " struct nlmsghdr msg; /* Message header that caused the error */\n"
587 #: build/C/man7/netlink.7:176
589 "A netlink family usually specifies more message types, see the appropriate "
590 "manual pages for that, for example, B<rtnetlink>(7) for B<NETLINK_ROUTE>."
594 #: build/C/man7/netlink.7:180
596 msgid "Standard flag bits in I<nlmsg_flags>\n"
600 #: build/C/man7/netlink.7:181 build/C/man7/netlink.7:197 build/C/man7/netlink.7:222 build/C/man7/rtnetlink.7:98 build/C/man7/rtnetlink.7:165 build/C/man7/rtnetlink.7:215 build/C/man7/rtnetlink.7:239 build/C/man7/rtnetlink.7:314 build/C/man7/rtnetlink.7:432
606 #: build/C/man7/netlink.7:182
608 msgid "NLM_F_REQUEST:Must be set on all request messages.\n"
612 #: build/C/man7/netlink.7:183
614 msgid "NLM_F_MULTI:T{\n"
618 #: build/C/man7/netlink.7:184
620 msgid "The message is part of a multipart message terminated by\n"
624 #: build/C/man7/netlink.7:185
626 msgid "B<NLMSG_DONE>.\n"
630 #: build/C/man7/netlink.7:186 build/C/man7/netlink.7:202 build/C/man7/netlink.7:209 build/C/man7/rtnetlink.7:221 build/C/man7/rtnetlink.7:224 build/C/man7/rtnetlink.7:233 build/C/man7/rtnetlink.7:243 build/C/man7/rtnetlink.7:266 build/C/man7/rtnetlink.7:286
636 #: build/C/man7/netlink.7:187
638 msgid "NLM_F_ACK:Request for an acknowledgment on success.\n"
642 #: build/C/man7/netlink.7:188
644 msgid "NLM_F_ECHO:Echo this request.\n"
648 #: build/C/man7/netlink.7:196
650 msgid "Additional flag bits for GET requests\n"
654 #: build/C/man7/netlink.7:198
656 msgid "NLM_F_ROOT:Return the complete table instead of a single entry.\n"
660 #: build/C/man7/netlink.7:199
662 msgid "NLM_F_MATCH:T{\n"
666 #: build/C/man7/netlink.7:200
668 msgid "Return all entries matching criteria passed in message content.\n"
672 #: build/C/man7/netlink.7:201
674 msgid "Not implemented yet.\n"
677 #. FIXME NLM_F_ATOMIC is not used any more?
679 #: build/C/man7/netlink.7:204
681 msgid "NLM_F_ATOMIC:Return an atomic snapshot of the table.\n"
685 #: build/C/man7/netlink.7:205
687 msgid "NLM_F_DUMP:T{\n"
691 #: build/C/man7/netlink.7:206
693 msgid "Convenience macro; equivalent to\n"
697 #: build/C/man7/netlink.7:207
703 #: build/C/man7/netlink.7:208
705 msgid "(NLM_F_ROOT|NLM_F_MATCH).\n"
709 #: build/C/man7/netlink.7:217
711 "Note that B<NLM_F_ATOMIC> requires the B<CAP_NET_ADMIN> capability or an "
712 "effective UID of 0."
716 #: build/C/man7/netlink.7:221
718 msgid "Additional flag bits for NEW requests\n"
722 #: build/C/man7/netlink.7:223
724 msgid "NLM_F_REPLACE:Replace existing matching object.\n"
728 #: build/C/man7/netlink.7:224
730 msgid "NLM_F_EXCL:Don't replace if the object already exists.\n"
734 #: build/C/man7/netlink.7:225
736 msgid "NLM_F_CREATE:Create object if it doesn't already exist.\n"
740 #: build/C/man7/netlink.7:226
742 msgid "NLM_F_APPEND:Add to the end of the object list.\n"
746 #: build/C/man7/netlink.7:242
748 "I<nlmsg_seq> and I<nlmsg_pid> are used to track messages. I<nlmsg_pid> "
749 "shows the origin of the message. Note that there isn't a 1:1 relationship "
750 "between I<nlmsg_pid> and the PID of the process if the message originated "
751 "from a netlink socket. See the B<ADDRESS FORMATS> section for further "
755 #. FIXME Explain more about nlmsg_seq and nlmsg_pid.
757 #: build/C/man7/netlink.7:249
758 msgid "Both I<nlmsg_seq> and I<nlmsg_pid> are opaque to netlink core."
762 #: build/C/man7/netlink.7:267
764 "Netlink is not a reliable protocol. It tries its best to deliver a message "
765 "to its destination(s), but may drop messages when an out-of-memory condition "
766 "or other error occurs. For reliable transfer the sender can request an "
767 "acknowledgement from the receiver by setting the B<NLM_F_ACK> flag. An "
768 "acknowledgment is an B<NLMSG_ERROR> packet with the error field set to 0. "
769 "The application must generate acknowledgements for received messages "
770 "itself. The kernel tries to send an B<NLMSG_ERROR> message for every failed "
771 "packet. A user process should follow this convention too."
775 #: build/C/man7/netlink.7:278
777 "However, reliable transmissions from kernel to user are impossible in any "
778 "case. The kernel can't send a netlink message if the socket buffer is full: "
779 "the message will be dropped and the kernel and the user-space process will "
780 "no longer have the same view of kernel state. It is up to the application "
781 "to detect when this happens (via the B<ENOBUFS> error returned by "
782 "B<recvmsg>(2)) and resynchronize."
786 #: build/C/man7/netlink.7:278
788 msgid "Address formats"
792 #: build/C/man7/netlink.7:288
794 "The I<sockaddr_nl> structure describes a netlink client in user space or in "
795 "the kernel. A I<sockaddr_nl> can be either unicast (only sent to one peer) "
796 "or sent to netlink multicast groups (I<nl_groups> not equal 0)."
800 #: build/C/man7/netlink.7:297
803 "struct sockaddr_nl {\n"
804 " sa_family_t nl_family; /* AF_NETLINK */\n"
805 " unsigned short nl_pad; /* Zero. */\n"
806 " pid_t nl_pid; /* Port ID. */\n"
807 " __u32 nl_groups; /* Multicast groups mask. */\n"
812 #: build/C/man7/netlink.7:328
814 "I<nl_pid> is the unicast address of netlink socket. It's always 0 if the "
815 "destination is in the kernel. For a user-space process, I<nl_pid> is "
816 "usually the PID of the process owning the destination socket. However, "
817 "I<nl_pid> identifies a netlink socket, not a process. If a process owns "
818 "several netlink sockets, then I<nl_pid> can be equal to the process ID only "
819 "for at most one socket. There are two ways to assign I<nl_pid> to a netlink "
820 "socket. If the application sets I<nl_pid> before calling B<bind>(2), then "
821 "it is up to the application to make sure that I<nl_pid> is unique. If the "
822 "application sets it to 0, the kernel takes care of assigning it. The kernel "
823 "assigns the process ID to the first netlink socket the process opens and "
824 "assigns a unique I<nl_pid> to every netlink socket that the process "
825 "subsequently creates."
828 #. commit d629b836d151d43332492651dd841d32e57ebe3b
830 #: build/C/man7/netlink.7:365
832 "I<nl_groups> is a bit mask with every bit representing a netlink group "
833 "number. Each netlink family has a set of 32 multicast groups. When "
834 "B<bind>(2) is called on the socket, the I<nl_groups> field in the "
835 "I<sockaddr_nl> should be set to a bit mask of the groups which it wishes to "
836 "listen to. The default value for this field is zero which means that no "
837 "multicasts will be received. A socket may multicast messages to any of the "
838 "multicast groups by setting I<nl_groups> to a bit mask of the groups it "
839 "wishes to send to when it calls B<sendmsg>(2) or does a B<connect>(2). "
840 "Only processes with an effective UID of 0 or the B<CAP_NET_ADMIN> capability "
841 "may send or listen to a netlink multicast group. Since Linux 2.6.13, "
842 "messages can't be broadcast to multiple groups. Any replies to a message "
843 "received for a multicast group should be sent back to the sending PID and "
844 "the multicast group. Some Linux kernel subsystems may additionally allow "
845 "other users to send and/or receive messages. As at Linux 3.0, the "
846 "B<NETLINK_KOBJECT_UEVENT>, B<NETLINK_GENERIC>, B<NETLINK_ROUTE>, and "
847 "B<NETLINK_SELINUX> groups allow other users to receive messages. No groups "
848 "allow other users to send messages."
852 #: build/C/man7/netlink.7:365 build/C/man7/rtnetlink.7:455
858 #: build/C/man7/netlink.7:367
859 msgid "The socket interface to netlink is a new feature of Linux 2.2."
863 #: build/C/man7/netlink.7:371
865 "Linux 2.0 supported a more primitive device-based netlink interface (which "
866 "is still available as a compatibility option). This obsolete interface is "
867 "not described here."
871 #: build/C/man7/netlink.7:373
872 msgid "NETLINK_SELINUX appeared in Linux 2.6.4."
876 #: build/C/man7/netlink.7:375
877 msgid "NETLINK_AUDIT appeared in Linux 2.6.6."
881 #: build/C/man7/netlink.7:377
882 msgid "NETLINK_KOBJECT_UEVENT appeared in Linux 2.6.10."
886 #: build/C/man7/netlink.7:379
887 msgid "NETLINK_W1 and NETLINK_FIB_LOOKUP appeared in Linux 2.6.13."
891 #: build/C/man7/netlink.7:382
893 "NETLINK_INET_DIAG, NETLINK_CONNECTOR and NETLINK_NETFILTER appeared in Linux "
898 #: build/C/man7/netlink.7:384
899 msgid "NETLINK_GENERIC and NETLINK_ISCSI appeared in Linux 2.6.15."
903 #: build/C/man7/netlink.7:390
905 "It is often better to use netlink via I<libnetlink> or I<libnl> than via the "
906 "low-level kernel interface."
910 #: build/C/man7/netlink.7:390 build/C/man3/rtnetlink.3:84 build/C/man7/rtnetlink.7:458
916 #: build/C/man7/netlink.7:392
917 msgid "This manual page is not complete."
921 #: build/C/man7/netlink.7:392 build/C/man3/rtnetlink.3:86
927 #: build/C/man7/netlink.7:400
929 "The following example creates a B<NETLINK_ROUTE> netlink socket which will "
930 "listen to the B<RTMGRP_LINK> (network interface create/delete/up/down "
931 "events) and B<RTMGRP_IPV4_IFADDR> (IPv4 addresses add/delete events) "
936 #: build/C/man7/netlink.7:404
938 msgid "struct sockaddr_nl sa;\n"
942 #: build/C/man7/netlink.7:408
945 "memset(&sa, 0, sizeof(sa));\n"
946 "sa.nl_family = AF_NETLINK;\n"
947 "sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;\n"
951 #: build/C/man7/netlink.7:411
954 "fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);\n"
955 "bind(fd, (struct sockaddr *) &sa, sizeof(sa));\n"
959 #: build/C/man7/netlink.7:418
961 "The next example demonstrates how to send a netlink message to the kernel "
962 "(pid 0). Note that the application must take care of message sequence "
963 "numbers in order to reliably track acknowledgements."
967 #: build/C/man7/netlink.7:425
970 "struct nlmsghdr *nh; /* The nlmsghdr with payload to send. */\n"
971 "struct sockaddr_nl sa;\n"
972 "struct iovec iov = { nh, nh-E<gt>nlmsg_len };\n"
973 "struct msghdr msg;\n"
977 #: build/C/man7/netlink.7:433
980 "msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };\n"
981 "memset(&sa, 0, sizeof(sa));\n"
982 "sa.nl_family = AF_NETLINK;\n"
983 "nh-E<gt>nlmsg_pid = 0;\n"
984 "nh-E<gt>nlmsg_seq = ++sequence_number;\n"
985 "/* Request an ack from kernel by setting NLM_F_ACK. */\n"
986 "nh-E<gt>nlmsg_flags |= NLM_F_ACK;\n"
990 #: build/C/man7/netlink.7:435
992 msgid "sendmsg(fd, &msg, 0);\n"
996 #: build/C/man7/netlink.7:439
997 msgid "And the last example is about reading netlink message."
1001 #: build/C/man7/netlink.7:448
1006 "struct iovec iov = { buf, sizeof(buf) };\n"
1007 "struct sockaddr_nl sa;\n"
1008 "struct msghdr msg;\n"
1009 "struct nlmsghdr *nh;\n"
1013 #: build/C/man7/netlink.7:451
1016 "msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };\n"
1017 "len = recvmsg(fd, &msg, 0);\n"
1021 #: build/C/man7/netlink.7:457
1024 "for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);\n"
1025 " nh = NLMSG_NEXT (nh, len)) {\n"
1026 " /* The end of multipart message. */\n"
1027 " if (nh-E<gt>nlmsg_type == NLMSG_DONE)\n"
1032 #: build/C/man7/netlink.7:461
1035 " if (nh-E<gt>nlmsg_type == NLMSG_ERROR)\n"
1036 " /* Do some error handling. */\n"
1041 #: build/C/man7/netlink.7:465
1044 " /* Continue with parsing payload. */\n"
1050 #: build/C/man7/netlink.7:472
1051 msgid "B<cmsg>(3), B<netlink>(3), B<capabilities>(7), B<rtnetlink>(7)"
1055 #: build/C/man7/netlink.7:476
1057 "E<.UR ftp://ftp.inr.ac.ru\\:/ip-routing\\:/iproute2*> information about "
1062 #: build/C/man7/netlink.7:480
1064 "E<.UR http://people.suug.ch\\:/~tgr\\:/libnl/> information about libnl "
1069 #: build/C/man7/netlink.7:482
1070 msgid "RFC 3549 \"Linux Netlink as an IP Services Protocol\""
1074 #: build/C/man3/rtnetlink.3:12 build/C/man7/rtnetlink.7:15
1080 #: build/C/man3/rtnetlink.3:12
1086 #: build/C/man3/rtnetlink.3:15
1087 msgid "rtnetlink - macros to manipulate rtnetlink messages"
1091 #: build/C/man3/rtnetlink.3:17 build/C/man7/rtnetlink.7:20
1092 msgid "B<#include E<lt>asm/types.hE<gt>>"
1096 #: build/C/man3/rtnetlink.3:19 build/C/man7/rtnetlink.7:22
1097 msgid "B<#include E<lt>linux/netlink.hE<gt>>"
1101 #: build/C/man3/rtnetlink.3:21 build/C/man7/rtnetlink.7:24
1102 msgid "B<#include E<lt>linux/rtnetlink.hE<gt>>"
1106 #: build/C/man3/rtnetlink.3:23 build/C/man7/rtnetlink.7:26
1107 msgid "B<#include E<lt>sys/socket.hE<gt>>"
1111 #: build/C/man3/rtnetlink.3:26 build/C/man7/rtnetlink.7:28
1113 "B<rtnetlink_socket = socket(AF_NETLINK, int >I<socket_type>B<, "
1118 #: build/C/man3/rtnetlink.3:28
1119 msgid "B<int RTA_OK(struct rtattr *>I<rta>B<, int >I<rtabuflen>B<);>"
1123 #: build/C/man3/rtnetlink.3:30
1124 msgid "B<void *RTA_DATA(struct rtattr *>I<rta>B<);>"
1128 #: build/C/man3/rtnetlink.3:32
1129 msgid "B<unsigned int RTA_PAYLOAD(struct rtattr *>I<rta>B<);>"
1133 #: build/C/man3/rtnetlink.3:35
1135 "B<struct rtattr *RTA_NEXT(struct rtattr *>I<rta>B<, unsigned int "
1136 ">I<rtabuflen>B<);>"
1140 #: build/C/man3/rtnetlink.3:37
1141 msgid "B<unsigned int RTA_LENGTH(unsigned int >I<length>B<);>"
1145 #: build/C/man3/rtnetlink.3:39
1146 msgid "B<unsigned int RTA_SPACE(unsigned int >I<length>B<);>"
1150 #: build/C/man3/rtnetlink.3:46
1152 "All B<rtnetlink>(7) messages consist of a B<netlink>(7) message header and "
1153 "appended attributes. The attributes should be manipulated only using the "
1154 "macros provided here."
1158 #: build/C/man3/rtnetlink.3:57
1160 "B<RTA_OK(>I<rta>B<, >I<attrlen>B<)> returns true if I<rta> points to a valid "
1161 "routing attribute; I<attrlen> is the running length of the attribute "
1162 "buffer. When not true then you must assume there are no more attributes in "
1163 "the message, even if I<attrlen> is nonzero."
1167 #: build/C/man3/rtnetlink.3:60
1169 "B<RTA_DATA(>I<rta>B<)> returns a pointer to the start of this attribute's "
1174 #: build/C/man3/rtnetlink.3:63
1175 msgid "B<RTA_PAYLOAD(>I<rta>B<)> returns the length of this attribute's data."
1179 #: build/C/man3/rtnetlink.3:72
1181 "B<RTA_NEXT(>I<rta>B<, >I<attrlen>B<)> gets the next attribute after I<rta>. "
1182 "Calling this macro will update I<attrlen>. You should use B<RTA_OK> to "
1183 "check the validity of the returned pointer."
1187 #: build/C/man3/rtnetlink.3:77
1189 "B<RTA_LENGTH(>I<len>B<)> returns the length which is required for I<len> "
1190 "bytes of data plus the header."
1194 #: build/C/man3/rtnetlink.3:82
1196 "B<RTA_SPACE(>I<len>B<)> returns the amount of space which will be needed in "
1197 "a message with I<len> bytes of data."
1201 #: build/C/man3/rtnetlink.3:86 build/C/man7/rtnetlink.7:460
1202 msgid "This manual page is incomplete."
1205 #. FIXME ? would be better to use libnetlink in the EXAMPLE code here
1207 #: build/C/man3/rtnetlink.3:90
1208 msgid "Creating a rtnetlink message to set the MTU of a device:"
1212 #: build/C/man3/rtnetlink.3:92
1214 msgid " #include E<lt>linux/rtnetlink.hE<gt>\n"
1218 #: build/C/man3/rtnetlink.3:94
1224 #: build/C/man3/rtnetlink.3:100
1228 " struct nlmsghdr nh;\n"
1229 " struct ifinfomsg if;\n"
1230 " char attrbuf[512];\n"
1235 #: build/C/man3/rtnetlink.3:103
1238 " struct rtattr *rta;\n"
1239 " unsigned int mtu = 1000;\n"
1243 #: build/C/man3/rtnetlink.3:105
1245 msgid " int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);\n"
1249 #: build/C/man3/rtnetlink.3:121
1252 " memset(&req, 0, sizeof(req));\n"
1253 " req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));\n"
1254 " req.nh.nlmsg_flags = NLM_F_REQUEST;\n"
1255 " req.nh.nlmsg_type = RTM_NEWLINK;\n"
1256 " req.if.ifi_family = AF_UNSPEC;\n"
1257 " req.if.ifi_index = INTERFACE_INDEX;\n"
1258 " req.if.ifi_change = 0xffffffff; /* ??? */\n"
1259 " rta = (struct rtattr *)(((char *) &req) +\n"
1260 " NLMSG_ALIGN(req.nh.nlmsg_len));\n"
1261 " rta-E<gt>rta_type = IFLA_MTU;\n"
1262 " rta-E<gt>rta_len = RTA_LENGTH(sizeof(unsigned int));\n"
1263 " req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) +\n"
1264 " RTA_LENGTH(sizeof(mtu));\n"
1265 " memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));\n"
1266 " send(rtnetlink_sk, &req, req.nh.nlmsg_len);\n"
1270 #: build/C/man3/rtnetlink.3:126
1271 msgid "B<netlink>(3), B<netlink>(7), B<rtnetlink>(7)"
1275 #: build/C/man7/rtnetlink.7:15
1281 #: build/C/man7/rtnetlink.7:18
1282 msgid "rtnetlink - Linux IPv4 routing socket"
1285 #. FIXME ? all these macros could be moved to rtnetlink(3)
1287 #: build/C/man7/rtnetlink.7:42
1289 "Rtnetlink allows the kernel's routing tables to be read and altered. It is "
1290 "used within the kernel to communicate between various subsystems, though "
1291 "this usage is not documented here, and for communication with user-space "
1292 "programs. Network routes, IP addresses, link parameters, neighbor setups, "
1293 "queueing disciplines, traffic classes and packet classifiers may all be "
1294 "controlled through B<NETLINK_ROUTE> sockets. It is based on netlink "
1295 "messages; see B<netlink>(7) for more information."
1299 #: build/C/man7/rtnetlink.7:42
1301 msgid "Routing attributes"
1305 #: build/C/man7/rtnetlink.7:44
1306 msgid "Some rtnetlink messages have optional attributes after the initial header:"
1310 #: build/C/man7/rtnetlink.7:52
1314 " unsigned short rta_len; /* Length of option */\n"
1315 " unsigned short rta_type; /* Type of option */\n"
1316 " /* Data follows */\n"
1321 #: build/C/man7/rtnetlink.7:58
1323 "These attributes should be manipulated using only the RTA_* macros or "
1324 "libnetlink, see B<rtnetlink>(3)."
1328 #: build/C/man7/rtnetlink.7:58
1334 #: build/C/man7/rtnetlink.7:61
1336 "Rtnetlink consists of these message types (in addition to standard netlink "
1341 #: build/C/man7/rtnetlink.7:61
1343 msgid "B<RTM_NEWLINK>, B<RTM_DELLINK>, B<RTM_GETLINK>"
1347 #: build/C/man7/rtnetlink.7:69
1349 "Create, remove or get information about a specific network interface. These "
1350 "messages contain an I<ifinfomsg> structure followed by a series of I<rtattr> "
1355 #: build/C/man7/rtnetlink.7:78
1358 "struct ifinfomsg {\n"
1359 " unsigned char ifi_family; /* AF_UNSPEC */\n"
1360 " unsigned short ifi_type; /* Device type */\n"
1361 " int ifi_index; /* Interface index */\n"
1362 " unsigned int ifi_flags; /* Device flags */\n"
1363 " unsigned int ifi_change; /* change mask */\n"
1369 #: build/C/man7/rtnetlink.7:92
1371 "I<ifi_flags> contains the device flags, see B<netdevice>(7); I<ifi_index> is "
1372 "the unique interface index (since Linux 3.7, it is possible to feed a "
1373 "nonzero value with the B<RTM_NEWLINK> message, thus creating a link with the "
1374 "given I<ifindex>); I<ifi_change> is reserved for future use and should be "
1375 "always set to 0xFFFFFFFF."
1379 #: build/C/man7/rtnetlink.7:96
1381 msgid "Routing attributes\n"
1385 #: build/C/man7/rtnetlink.7:97 build/C/man7/rtnetlink.7:164 build/C/man7/rtnetlink.7:313
1387 msgid "rta_type:value type:description\n"
1391 #: build/C/man7/rtnetlink.7:99
1393 msgid "IFLA_UNSPEC:-:unspecified.\n"
1397 #: build/C/man7/rtnetlink.7:100
1399 msgid "IFLA_ADDRESS:hardware address:interface L2 address\n"
1403 #: build/C/man7/rtnetlink.7:101
1405 msgid "IFLA_BROADCAST:hardware address:L2 broadcast address.\n"
1409 #: build/C/man7/rtnetlink.7:102
1411 msgid "IFLA_IFNAME:asciiz string:Device name.\n"
1415 #: build/C/man7/rtnetlink.7:103
1417 msgid "IFLA_MTU:unsigned int:MTU of the device.\n"
1421 #: build/C/man7/rtnetlink.7:104
1423 msgid "IFLA_LINK:int:Link type.\n"
1427 #: build/C/man7/rtnetlink.7:105
1429 msgid "IFLA_QDISC:asciiz string:Queueing discipline.\n"
1433 #: build/C/man7/rtnetlink.7:106
1435 msgid "IFLA_STATS:T{\n"
1439 #: build/C/man7/rtnetlink.7:107
1445 #: build/C/man7/rtnetlink.7:108
1447 msgid "T}:Interface Statistics.\n"
1451 #: build/C/man7/rtnetlink.7:117
1453 "The value type for B<IFLA_STATS> is I<struct rtnl_link_stats> (I<struct "
1454 "net_device_stats> in Linux 2.4 and earlier)."
1458 #: build/C/man7/rtnetlink.7:117
1460 msgid "B<RTM_NEWADDR>, B<RTM_DELADDR>, B<RTM_GETADDR>"
1464 #: build/C/man7/rtnetlink.7:130
1466 "Add, remove or receive information about an IP address associated with an "
1467 "interface. In Linux 2.2, an interface can carry multiple IP addresses, this "
1468 "replaces the alias device concept in 2.0. In Linux 2.2, these messages "
1469 "support IPv4 and IPv6 addresses. They contain an I<ifaddrmsg> structure, "
1470 "optionally followed by I<rtattr> routing attributes."
1474 #: build/C/man7/rtnetlink.7:139
1477 "struct ifaddrmsg {\n"
1478 " unsigned char ifa_family; /* Address type */\n"
1479 " unsigned char ifa_prefixlen; /* Prefixlength of address */\n"
1480 " unsigned char ifa_flags; /* Address flags */\n"
1481 " unsigned char ifa_scope; /* Address scope */\n"
1482 " int ifa_index; /* Interface index */\n"
1487 #: build/C/man7/rtnetlink.7:159
1489 "I<ifa_family> is the address family type (currently B<AF_INET> or "
1490 "B<AF_INET6>), I<ifa_prefixlen> is the length of the address mask of the "
1491 "address if defined for the family (like for IPv4), I<ifa_scope> is the "
1492 "address scope, I<ifa_index> is the interface index of the interface the "
1493 "address is associated with. I<ifa_flags> is a flag word of "
1494 "B<IFA_F_SECONDARY> for secondary address (old alias interface), "
1495 "B<IFA_F_PERMANENT> for a permanent address set by the user and other "
1496 "undocumented flags."
1500 #: build/C/man7/rtnetlink.7:163 build/C/man7/rtnetlink.7:312 build/C/man7/rtnetlink.7:430
1502 msgid "Attributes\n"
1506 #: build/C/man7/rtnetlink.7:166
1508 msgid "IFA_UNSPEC:-:unspecified.\n"
1512 #: build/C/man7/rtnetlink.7:167
1514 msgid "IFA_ADDRESS:raw protocol address:interface address\n"
1518 #: build/C/man7/rtnetlink.7:168
1520 msgid "IFA_LOCAL:raw protocol address:local address\n"
1524 #: build/C/man7/rtnetlink.7:169
1526 msgid "IFA_LABEL:asciiz string:name of the interface\n"
1530 #: build/C/man7/rtnetlink.7:170
1532 msgid "IFA_BROADCAST:raw protocol address:broadcast address.\n"
1536 #: build/C/man7/rtnetlink.7:171
1538 msgid "IFA_ANYCAST:raw protocol address:anycast address\n"
1542 #: build/C/man7/rtnetlink.7:172
1544 msgid "IFA_CACHEINFO:struct ifa_cacheinfo:Address information.\n"
1548 #: build/C/man7/rtnetlink.7:175
1550 msgid "B<RTM_NEWROUTE>, B<RTM_DELROUTE>, B<RTM_GETROUTE>"
1554 #: build/C/man7/rtnetlink.7:195
1556 "Create, remove or receive information about a network route. These messages "
1557 "contain an I<rtmsg> structure with an optional sequence of I<rtattr> "
1558 "structures following. For B<RTM_GETROUTE>, setting I<rtm_dst_len> and "
1559 "I<rtm_src_len> to 0 means you get all entries for the specified routing "
1560 "table. For the other fields, except I<rtm_table> and I<rtm_protocol>, 0 is "
1565 #: build/C/man7/rtnetlink.7:202
1569 " unsigned char rtm_family; /* Address family of route */\n"
1570 " unsigned char rtm_dst_len; /* Length of destination */\n"
1571 " unsigned char rtm_src_len; /* Length of source */\n"
1572 " unsigned char rtm_tos; /* TOS filter */\n"
1576 #: build/C/man7/rtnetlink.7:207
1579 " unsigned char rtm_table; /* Routing table ID */\n"
1580 " unsigned char rtm_protocol; /* Routing protocol; see below */\n"
1581 " unsigned char rtm_scope; /* See below */\n"
1582 " unsigned char rtm_type; /* See below */\n"
1586 #: build/C/man7/rtnetlink.7:210
1589 " unsigned int rtm_flags;\n"
1594 #: build/C/man7/rtnetlink.7:214
1596 msgid "rtm_type:Route type\n"
1600 #: build/C/man7/rtnetlink.7:216
1602 msgid "RTN_UNSPEC:unknown route\n"
1606 #: build/C/man7/rtnetlink.7:217
1608 msgid "RTN_UNICAST:a gateway or direct route\n"
1612 #: build/C/man7/rtnetlink.7:218
1614 msgid "RTN_LOCAL:a local interface route\n"
1618 #: build/C/man7/rtnetlink.7:219
1620 msgid "RTN_BROADCAST:T{\n"
1624 #: build/C/man7/rtnetlink.7:220
1626 msgid "a local broadcast route (sent as a broadcast)\n"
1630 #: build/C/man7/rtnetlink.7:222
1632 msgid "RTN_ANYCAST:T{\n"
1636 #: build/C/man7/rtnetlink.7:223
1638 msgid "a local broadcast route (sent as a unicast)\n"
1642 #: build/C/man7/rtnetlink.7:225
1644 msgid "RTN_MULTICAST:a multicast route\n"
1648 #: build/C/man7/rtnetlink.7:226
1650 msgid "RTN_BLACKHOLE:a packet dropping route\n"
1654 #: build/C/man7/rtnetlink.7:227
1656 msgid "RTN_UNREACHABLE:an unreachable destination\n"
1660 #: build/C/man7/rtnetlink.7:228
1662 msgid "RTN_PROHIBIT:a packet rejection route\n"
1666 #: build/C/man7/rtnetlink.7:229
1668 msgid "RTN_THROW:continue routing lookup in another table\n"
1672 #: build/C/man7/rtnetlink.7:230
1674 msgid "RTN_NAT:a network address translation rule\n"
1678 #: build/C/man7/rtnetlink.7:231
1680 msgid "RTN_XRESOLVE:T{\n"
1684 #: build/C/man7/rtnetlink.7:232
1686 msgid "refer to an external resolver (not implemented)\n"
1690 #: build/C/man7/rtnetlink.7:238
1692 msgid "rtm_protocol:Route origin.\n"
1696 #: build/C/man7/rtnetlink.7:240
1698 msgid "RTPROT_UNSPEC:unknown\n"
1702 #: build/C/man7/rtnetlink.7:241
1704 msgid "RTPROT_REDIRECT:T{\n"
1708 #: build/C/man7/rtnetlink.7:242
1710 msgid "by an ICMP redirect (currently unused)\n"
1714 #: build/C/man7/rtnetlink.7:244
1716 msgid "RTPROT_KERNEL:by the kernel\n"
1720 #: build/C/man7/rtnetlink.7:245
1722 msgid "RTPROT_BOOT:during boot\n"
1726 #: build/C/man7/rtnetlink.7:246
1728 msgid "RTPROT_STATIC:by the administrator\n"
1732 #: build/C/man7/rtnetlink.7:257
1734 "Values larger than B<RTPROT_STATIC> are not interpreted by the kernel, they "
1735 "are just for user information. They may be used to tag the source of a "
1736 "routing information or to distinguish between multiple routing daemons. See "
1737 "I<E<lt>linux/rtnetlink.hE<gt>> for the routing daemon identifiers which are "
1742 #: build/C/man7/rtnetlink.7:260
1743 msgid "I<rtm_scope> is the distance to the destination:"
1747 #: build/C/man7/rtnetlink.7:263
1749 msgid "RT_SCOPE_UNIVERSE:global route\n"
1753 #: build/C/man7/rtnetlink.7:264
1755 msgid "RT_SCOPE_SITE:T{\n"
1759 #: build/C/man7/rtnetlink.7:265
1761 msgid "interior route in the local autonomous system\n"
1765 #: build/C/man7/rtnetlink.7:267
1767 msgid "RT_SCOPE_LINK:route on this link\n"
1771 #: build/C/man7/rtnetlink.7:268
1773 msgid "RT_SCOPE_HOST:route on the local host\n"
1777 #: build/C/man7/rtnetlink.7:269
1779 msgid "RT_SCOPE_NOWHERE:destination doesn't exist\n"
1783 #: build/C/man7/rtnetlink.7:277
1785 "The values between B<RT_SCOPE_UNIVERSE> and B<RT_SCOPE_SITE> are available "
1790 #: build/C/man7/rtnetlink.7:281
1791 msgid "The I<rtm_flags> have the following meanings:"
1795 #: build/C/man7/rtnetlink.7:284
1797 msgid "RTM_F_NOTIFY:T{\n"
1801 #: build/C/man7/rtnetlink.7:285
1803 msgid "if the route changes, notify the user via rtnetlink\n"
1807 #: build/C/man7/rtnetlink.7:287
1809 msgid "RTM_F_CLONED:route is cloned from another route\n"
1813 #: build/C/man7/rtnetlink.7:288
1815 msgid "RTM_F_EQUALIZE:a multipath equalizer (not yet implemented)\n"
1819 #: build/C/man7/rtnetlink.7:293
1820 msgid "I<rtm_table> specifies the routing table"
1824 #: build/C/man7/rtnetlink.7:296
1826 msgid "RT_TABLE_UNSPEC:an unspecified routing table\n"
1830 #: build/C/man7/rtnetlink.7:297
1832 msgid "RT_TABLE_DEFAULT:the default table\n"
1836 #: build/C/man7/rtnetlink.7:298
1838 msgid "RT_TABLE_MAIN:the main table\n"
1842 #: build/C/man7/rtnetlink.7:299
1844 msgid "RT_TABLE_LOCAL:the local table\n"
1847 #. Keep table on same page
1849 #: build/C/man7/rtnetlink.7:307
1851 "The user may assign arbitrary values between B<RT_TABLE_UNSPEC> and "
1852 "B<RT_TABLE_DEFAULT>."
1856 #: build/C/man7/rtnetlink.7:315
1858 msgid "RTA_UNSPEC:-:ignored.\n"
1862 #: build/C/man7/rtnetlink.7:316
1864 msgid "RTA_DST:protocol address:Route destination address.\n"
1868 #: build/C/man7/rtnetlink.7:317
1870 msgid "RTA_SRC:protocol address:Route source address.\n"
1874 #: build/C/man7/rtnetlink.7:318
1876 msgid "RTA_IIF:int:Input interface index.\n"
1880 #: build/C/man7/rtnetlink.7:319
1882 msgid "RTA_OIF:int:Output interface index.\n"
1886 #: build/C/man7/rtnetlink.7:320
1888 msgid "RTA_GATEWAY:protocol address:The gateway of the route\n"
1892 #: build/C/man7/rtnetlink.7:321
1894 msgid "RTA_PRIORITY:int:Priority of route.\n"
1898 #: build/C/man7/rtnetlink.7:322
1900 msgid "RTA_PREFSRC::\n"
1904 #: build/C/man7/rtnetlink.7:323
1906 msgid "RTA_METRICS:int:Route metric\n"
1910 #: build/C/man7/rtnetlink.7:324
1912 msgid "RTA_MULTIPATH::\n"
1916 #: build/C/man7/rtnetlink.7:325
1918 msgid "RTA_PROTOINFO::\n"
1922 #: build/C/man7/rtnetlink.7:326
1924 msgid "RTA_FLOW::\n"
1928 #: build/C/man7/rtnetlink.7:327
1930 msgid "RTA_CACHEINFO::\n"
1934 #: build/C/man7/rtnetlink.7:331
1935 msgid "B<Fill these values in!>"
1939 #: build/C/man7/rtnetlink.7:331
1941 msgid "B<RTM_NEWNEIGH>, B<RTM_DELNEIGH>, B<RTM_GETNEIGH>"
1945 #: build/C/man7/rtnetlink.7:338
1947 "Add, remove or receive information about a neighbor table entry (e.g., an "
1948 "ARP entry). The message contains an I<ndmsg> structure."
1952 #: build/C/man7/rtnetlink.7:347
1956 " unsigned char ndm_family;\n"
1957 " int ndm_ifindex; /* Interface index */\n"
1958 " __u16 ndm_state; /* State */\n"
1959 " __u8 ndm_flags; /* Flags */\n"
1965 #: build/C/man7/rtnetlink.7:354
1968 "struct nda_cacheinfo {\n"
1969 " __u32 ndm_confirmed;\n"
1970 " __u32 ndm_used;\n"
1971 " __u32 ndm_updated;\n"
1972 " __u32 ndm_refcnt;\n"
1977 #: build/C/man7/rtnetlink.7:358
1978 msgid "I<ndm_state> is a bit mask of the following states:"
1982 #: build/C/man7/rtnetlink.7:361
1984 msgid "NUD_INCOMPLETE:a currently resolving cache entry\n"
1988 #: build/C/man7/rtnetlink.7:362
1990 msgid "NUD_REACHABLE:a confirmed working cache entry\n"
1994 #: build/C/man7/rtnetlink.7:363
1996 msgid "NUD_STALE:an expired cache entry\n"
2000 #: build/C/man7/rtnetlink.7:364
2002 msgid "NUD_DELAY:an entry waiting for a timer\n"
2006 #: build/C/man7/rtnetlink.7:365
2008 msgid "NUD_PROBE:a cache entry that is currently reprobed\n"
2012 #: build/C/man7/rtnetlink.7:366
2014 msgid "NUD_FAILED:an invalid cache entry\n"
2018 #: build/C/man7/rtnetlink.7:367
2020 msgid "NUD_NOARP:a device with no destination cache\n"
2024 #: build/C/man7/rtnetlink.7:368
2026 msgid "NUD_PERMANENT:a static entry\n"
2030 #: build/C/man7/rtnetlink.7:374
2031 msgid "Valid I<ndm_flags> are:"
2035 #: build/C/man7/rtnetlink.7:377
2037 msgid "NTF_PROXY:a proxy arp entry\n"
2041 #: build/C/man7/rtnetlink.7:378
2043 msgid "NTF_ROUTER:an IPv6 router\n"
2047 #. document the members of the struct better
2049 #: build/C/man7/rtnetlink.7:388
2050 msgid "The I<rtattr> struct has the following meanings for the I<rta_type> field:"
2054 #: build/C/man7/rtnetlink.7:391
2056 msgid "NDA_UNSPEC:unknown type\n"
2060 #: build/C/man7/rtnetlink.7:392
2062 msgid "NDA_DST:a neighbor cache n/w layer destination address\n"
2066 #: build/C/man7/rtnetlink.7:393
2068 msgid "NDA_LLADDR:a neighbor cache link layer address\n"
2072 #: build/C/man7/rtnetlink.7:394
2074 msgid "NDA_CACHEINFO:cache statistics.\n"
2078 #: build/C/man7/rtnetlink.7:404
2080 "If the I<rta_type> field is B<NDA_CACHEINFO>, then a I<struct nda_cacheinfo> "
2085 #: build/C/man7/rtnetlink.7:404
2087 msgid "B<RTM_NEWRULE>, B<RTM_DELRULE>, B<RTM_GETRULE>"
2091 #: build/C/man7/rtnetlink.7:409
2092 msgid "Add, delete or retrieve a routing rule. Carries a I<struct rtmsg>"
2096 #: build/C/man7/rtnetlink.7:409
2098 msgid "B<RTM_NEWQDISC>, B<RTM_DELQDISC>, B<RTM_GETQDISC>"
2102 #: build/C/man7/rtnetlink.7:416
2104 "Add, remove or get a queueing discipline. The message contains a I<struct "
2105 "tcmsg> and may be followed by a series of attributes."
2109 #: build/C/man7/rtnetlink.7:425
2113 " unsigned char tcm_family;\n"
2114 " int tcm_ifindex; /* interface index */\n"
2115 " __u32 tcm_handle; /* Qdisc handle */\n"
2116 " __u32 tcm_parent; /* Parent qdisc */\n"
2117 " __u32 tcm_info;\n"
2122 #: build/C/man7/rtnetlink.7:431
2124 msgid "rta_type:value type:Description\n"
2128 #: build/C/man7/rtnetlink.7:433
2130 msgid "TCA_UNSPEC:-:unspecified\n"
2134 #: build/C/man7/rtnetlink.7:434
2136 msgid "TCA_KIND:asciiz string:Name of queueing discipline\n"
2140 #: build/C/man7/rtnetlink.7:435
2142 msgid "TCA_OPTIONS:byte sequence:Qdisc-specific options follow\n"
2146 #: build/C/man7/rtnetlink.7:436
2148 msgid "TCA_STATS:struct tc_stats:Qdisc statistics.\n"
2152 #: build/C/man7/rtnetlink.7:437
2154 msgid "TCA_XSTATS:qdisc-specific:Module-specific statistics.\n"
2158 #: build/C/man7/rtnetlink.7:438
2160 msgid "TCA_RATE:struct tc_estimator:Rate limit.\n"
2164 #: build/C/man7/rtnetlink.7:443
2166 "In addition, various other qdisc-module-specific attributes are allowed. "
2167 "For more information see the appropriate include files."
2171 #: build/C/man7/rtnetlink.7:443
2173 msgid "B<RTM_NEWTCLASS>, B<RTM_DELTCLASS>, B<RTM_GETTCLASS>"
2177 #: build/C/man7/rtnetlink.7:449
2179 "Add, remove or get a traffic class. These messages contain a I<struct "
2180 "tcmsg> as described above."
2184 #: build/C/man7/rtnetlink.7:449
2186 msgid "B<RTM_NEWTFILTER>, B<RTM_DELTFILTER>, B<RTM_GETTFILTER>"
2190 #: build/C/man7/rtnetlink.7:455
2192 "Add, remove or receive information about a traffic filter. These messages "
2193 "contain a I<struct tcmsg> as described above."
2197 #: build/C/man7/rtnetlink.7:458
2198 msgid "B<rtnetlink> is a new feature of Linux 2.2."
2202 #: build/C/man7/rtnetlink.7:465
2203 msgid "B<cmsg>(3), B<rtnetlink>(3), B<ip>(7), B<netlink>(7)"