# SOME DESCRIPTIVE TITLE # Copyright (C) YEAR Free Software Foundation, Inc. # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "POT-Creation-Date: 2015-02-04 23:33+0900\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #. type: TH #: build/C/man3/netlink.3:10 build/C/man7/netlink.7:11 #, no-wrap msgid "NETLINK" msgstr "" #. type: TH #: build/C/man3/netlink.3:10 #, no-wrap msgid "2014-03-20" msgstr "" #. type: TH #: build/C/man3/netlink.3:10 build/C/man3/rtnetlink.3:12 #, no-wrap msgid "GNU" msgstr "" #. type: TH #: build/C/man3/netlink.3:10 build/C/man7/netlink.7:11 build/C/man3/rtnetlink.3:12 build/C/man7/rtnetlink.7:15 #, no-wrap msgid "Linux Programmer's Manual" msgstr "" #. type: SH #: build/C/man3/netlink.3:11 build/C/man7/netlink.7:12 build/C/man3/rtnetlink.3:13 build/C/man7/rtnetlink.7:16 #, no-wrap msgid "NAME" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:13 msgid "netlink - Netlink macros" msgstr "" #. type: SH #: build/C/man3/netlink.3:13 build/C/man7/netlink.7:14 build/C/man3/rtnetlink.3:15 build/C/man7/rtnetlink.7:18 #, no-wrap msgid "SYNOPSIS" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:16 #, no-wrap msgid "B<#include Easm/types.hE>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:18 #, no-wrap msgid "B<#include Elinux/netlink.hE>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:20 #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:22 #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:24 #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:26 #, no-wrap msgid "BIB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:28 #, no-wrap msgid "BIB<, int >IB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:30 #, no-wrap msgid "BIB<, int >IB<);>\n" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:32 #, no-wrap msgid "BIB<, int >IB<);>\n" msgstr "" #. type: SH #: build/C/man3/netlink.3:33 build/C/man7/netlink.7:22 build/C/man3/rtnetlink.3:39 build/C/man7/rtnetlink.7:28 #, no-wrap msgid "DESCRIPTION" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:41 msgid "" "Ilinux/netlink.hE> defines several standard macros to access or " "create a netlink datagram. They are similar in spirit to the macros defined " "in B(3) for auxiliary data. The buffer passed to and from a netlink " "socket should be accessed using only these macros." msgstr "" #. type: TP #: build/C/man3/netlink.3:41 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:44 msgid "Round the length of a netlink message up to align it properly." msgstr "" #. type: TP #: build/C/man3/netlink.3:44 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:52 msgid "" "Given the payload length, I, this macro returns the aligned length to " "store in the I field of the I." msgstr "" #. type: TP #: build/C/man3/netlink.3:52 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:57 msgid "" "Return the number of bytes that a netlink message with payload of I " "would occupy." msgstr "" #. type: TP #: build/C/man3/netlink.3:57 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:61 msgid "Return a pointer to the payload associated with the passed I." msgstr "" #. this is bizarre, maybe the interface should be fixed. #. type: TP #: build/C/man3/netlink.3:61 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:77 msgid "" "Get the next I in a multipart message. The caller must check if " "the current I didn't have the B set\\(emthis function " "doesn't return NULL on end. The I argument is an lvalue containing the " "remaining length of the message buffer. This macro decrements it by the " "length of the message header." msgstr "" #. type: TP #: build/C/man3/netlink.3:77 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:81 msgid "" "Return true if the netlink message is not truncated and is in a form " "suitable for parsing." msgstr "" #. type: TP #: build/C/man3/netlink.3:81 #, no-wrap msgid "B()" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:85 msgid "Return the length of the payload associated with the I." msgstr "" #. type: SH #: build/C/man3/netlink.3:85 build/C/man3/rtnetlink.3:82 #, no-wrap msgid "CONFORMING TO" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:87 build/C/man3/rtnetlink.3:84 msgid "These macros are nonstandard Linux extensions." msgstr "" #. type: SH #: build/C/man3/netlink.3:87 build/C/man7/netlink.7:391 #, no-wrap msgid "NOTES" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:91 msgid "" "It is often better to use netlink via I than via the low-level " "kernel interface." msgstr "" #. type: SH #: build/C/man3/netlink.3:91 build/C/man7/netlink.7:474 build/C/man3/rtnetlink.3:121 build/C/man7/rtnetlink.7:460 #, no-wrap msgid "SEE ALSO" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:94 msgid "B(3), B(7)" msgstr "" #. type: SH #: build/C/man3/netlink.3:94 build/C/man7/netlink.7:489 build/C/man3/rtnetlink.3:125 build/C/man7/rtnetlink.7:465 #, no-wrap msgid "COLOPHON" msgstr "" #. type: Plain text #: build/C/man3/netlink.3:102 build/C/man7/netlink.7:497 build/C/man3/rtnetlink.3:133 build/C/man7/rtnetlink.7:473 msgid "" "This page is part of release 3.79 of the Linux I project. A " "description of the project, information about reporting bugs, and the latest " "version of this page, can be found at " "\\%http://www.kernel.org/doc/man-pages/." msgstr "" #. type: TH #: build/C/man7/netlink.7:11 #, no-wrap msgid "2015-01-10" msgstr "" #. type: TH #: build/C/man7/netlink.7:11 build/C/man7/rtnetlink.7:15 #, no-wrap msgid "Linux" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:14 msgid "netlink - communication between kernel and user space (AF_NETLINK)" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:19 #, no-wrap msgid "" "B<#include Easm/types.hE>\n" "B<#include Esys/socket.hE>\n" "B<#include Elinux/netlink.hE>\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:21 #, no-wrap msgid "" "BIB<, " ">IB<);>\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:31 msgid "" "Netlink is used to transfer information between kernel and user-space " "processes. It consists of a standard sockets-based interface for user space " "processes and an internal kernel API for kernel modules. The internal " "kernel interface is not documented in this manual page. There is also an " "obsolete netlink interface via netlink character devices; this interface is " "not documented here and is provided only for backward compatibility." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:41 msgid "" "Netlink is a datagram-oriented service. Both B and B " "are valid values for I. However, the netlink protocol does not " "distinguish between datagram and raw sockets." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:45 msgid "" "I selects the kernel module or netlink group to communicate " "with. The currently assigned netlink families are:" msgstr "" #. type: TP #: build/C/man7/netlink.7:45 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:52 msgid "" "Receives routing and link updates and may be used to modify the routing " "tables (both IPv4 and IPv6), IP addresses, link parameters, neighbor setups, " "queueing disciplines, traffic classes and packet classifiers (see " "B(7))." msgstr "" #. type: TP #: build/C/man7/netlink.7:52 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:55 msgid "Messages from 1-wire subsystem." msgstr "" #. type: TP #: build/C/man7/netlink.7:55 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:58 msgid "Reserved for user-mode socket protocols." msgstr "" #. type: TP #: build/C/man7/netlink.7:58 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:64 msgid "" "Transport IPv4 packets from netfilter to user space. Used by I " "kernel module." msgstr "" #. type: TP #: build/C/man7/netlink.7:64 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_INET_DIAG needed. #. type: Plain text #: build/C/man7/netlink.7:68 msgid "INET socket monitoring." msgstr "" #. type: TP #: build/C/man7/netlink.7:68 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:71 msgid "Netfilter/iptables ULOG." msgstr "" #. type: TP #: build/C/man7/netlink.7:71 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_XFRM needed. #. type: Plain text #: build/C/man7/netlink.7:75 msgid "IPsec." msgstr "" #. type: TP #: build/C/man7/netlink.7:75 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:78 msgid "SELinux event notifications." msgstr "" #. type: TP #: build/C/man7/netlink.7:78 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_ISCSI needed. #. type: Plain text #: build/C/man7/netlink.7:82 msgid "Open-iSCSI." msgstr "" #. type: TP #: build/C/man7/netlink.7:82 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_AUDIT needed. #. type: Plain text #: build/C/man7/netlink.7:86 msgid "Auditing." msgstr "" #. type: TP #: build/C/man7/netlink.7:86 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_FIB_LOOKUP needed. #. type: Plain text #: build/C/man7/netlink.7:90 msgid "Access to FIB lookup from user space." msgstr "" #. type: TP #: build/C/man7/netlink.7:90 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:96 msgid "" "Kernel connector. See I in the Linux kernel " "source tree for further information." msgstr "" #. type: TP #: build/C/man7/netlink.7:96 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_NETFILTER needed. #. type: Plain text #: build/C/man7/netlink.7:100 msgid "Netfilter subsystem." msgstr "" #. type: TP #: build/C/man7/netlink.7:100 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:106 msgid "" "Transport IPv6 packets from netfilter to user space. Used by I " "kernel module." msgstr "" #. type: TP #: build/C/man7/netlink.7:106 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:109 msgid "DECnet routing messages." msgstr "" #. type: TP #: build/C/man7/netlink.7:109 #, no-wrap msgid "B" msgstr "" #. FIXME More details on NETLINK_KOBJECT_UEVENT needed. #. type: Plain text #: build/C/man7/netlink.7:113 msgid "Kernel messages to user space." msgstr "" #. type: TP #: build/C/man7/netlink.7:113 #, no-wrap msgid "B" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:116 msgid "Generic netlink family for simplified netlink usage." msgstr "" #. type: TP #: build/C/man7/netlink.7:116 #, no-wrap msgid "B (since Linux 3.2)" msgstr "" #. commit a38f7907b926e4c6c7d389ad96cc38cec2e5a9e9 #. Author: Steffen Klassert #. type: Plain text #: build/C/man7/netlink.7:123 msgid "" "Netlink interface to request information about ciphers registered with the " "kernel crypto API as well as allow configuration of the kernel crypto API." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:133 msgid "" "Netlink messages consist of a byte stream with one or multiple I " "headers and associated payload. The byte stream should be accessed only " "with the standard B macros. See B(3) for further " "information." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:141 msgid "" "In multipart messages (multiple I headers with associated payload " "in one byte stream) the first and all following headers have the " "B flag set, except for the last header which has the type " "B." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:145 msgid "After each I the payload follows." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:155 #, no-wrap msgid "" "struct nlmsghdr {\n" " __u32 nlmsg_len; /* Length of message including header. */\n" " __u16 nlmsg_type; /* Type of message content. */\n" " __u16 nlmsg_flags; /* Additional flags. */\n" " __u32 nlmsg_seq; /* Sequence number. */\n" " __u32 nlmsg_pid; /* Sender port ID. */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:168 msgid "" "I can be one of the standard message types: B " "message is to be ignored, B message signals an error and the " "payload contains an I structure, B message terminates " "a multipart message." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:175 #, no-wrap msgid "" "struct nlmsgerr {\n" " int error; /* Negative errno or 0 for acknowledgements */\n" " struct nlmsghdr msg; /* Message header that caused the error */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:183 msgid "" "A netlink family usually specifies more message types, see the appropriate " "manual pages for that, for example, B(7) for B." msgstr "" #. type: tbl table #: build/C/man7/netlink.7:187 #, no-wrap msgid "Standard flag bits in I\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:188 build/C/man7/netlink.7:204 build/C/man7/netlink.7:229 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 #, no-wrap msgid "_\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:189 #, no-wrap msgid "NLM_F_REQUEST:Must be set on all request messages.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:190 #, no-wrap msgid "NLM_F_MULTI:T{\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:191 #, no-wrap msgid "The message is part of a multipart message terminated by\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:192 #, no-wrap msgid "B.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:193 build/C/man7/netlink.7:209 build/C/man7/netlink.7:216 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 #, no-wrap msgid "T}\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:194 #, no-wrap msgid "NLM_F_ACK:Request for an acknowledgment on success.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:195 #, no-wrap msgid "NLM_F_ECHO:Echo this request.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:203 #, no-wrap msgid "Additional flag bits for GET requests\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:205 #, no-wrap msgid "NLM_F_ROOT:Return the complete table instead of a single entry.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:206 #, no-wrap msgid "NLM_F_MATCH:T{\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:207 #, no-wrap msgid "Return all entries matching criteria passed in message content.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:208 #, no-wrap msgid "Not implemented yet.\n" msgstr "" #. FIXME NLM_F_ATOMIC is not used anymore? #. type: tbl table #: build/C/man7/netlink.7:211 #, no-wrap msgid "NLM_F_ATOMIC:Return an atomic snapshot of the table.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:212 #, no-wrap msgid "NLM_F_DUMP:T{\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:213 #, no-wrap msgid "Convenience macro; equivalent to\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:214 #, no-wrap msgid ".br\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:215 #, no-wrap msgid "(NLM_F_ROOT|NLM_F_MATCH).\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:224 msgid "" "Note that B requires the B capability or an " "effective UID of 0." msgstr "" #. type: tbl table #: build/C/man7/netlink.7:228 #, no-wrap msgid "Additional flag bits for NEW requests\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:230 #, no-wrap msgid "NLM_F_REPLACE:Replace existing matching object.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:231 #, no-wrap msgid "NLM_F_EXCL:Don't replace if the object already exists.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:232 #, no-wrap msgid "NLM_F_CREATE:Create object if it doesn't already exist.\n" msgstr "" #. type: tbl table #: build/C/man7/netlink.7:233 #, no-wrap msgid "NLM_F_APPEND:Add to the end of the object list.\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:249 msgid "" "I and I are used to track messages. I " "shows the origin of the message. Note that there isn't a 1:1 relationship " "between I and the PID of the process if the message originated " "from a netlink socket. See the B
section for further " "information." msgstr "" #. FIXME Explain more about nlmsg_seq and nlmsg_pid. #. type: Plain text #: build/C/man7/netlink.7:256 msgid "Both I and I are opaque to netlink core." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:274 msgid "" "Netlink is not a reliable protocol. It tries its best to deliver a message " "to its destination(s), but may drop messages when an out-of-memory condition " "or other error occurs. For reliable transfer the sender can request an " "acknowledgement from the receiver by setting the B flag. An " "acknowledgment is an B packet with the error field set to 0. " "The application must generate acknowledgements for received messages " "itself. The kernel tries to send an B message for every failed " "packet. A user process should follow this convention too." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:285 msgid "" "However, reliable transmissions from kernel to user are impossible in any " "case. The kernel can't send a netlink message if the socket buffer is full: " "the message will be dropped and the kernel and the user-space process will " "no longer have the same view of kernel state. It is up to the application " "to detect when this happens (via the B error returned by " "B(2)) and resynchronize." msgstr "" #. type: SS #: build/C/man7/netlink.7:285 #, no-wrap msgid "Address formats" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:295 msgid "" "The I structure describes a netlink client in user space or in " "the kernel. A I can be either unicast (only sent to one peer) " "or sent to netlink multicast groups (I not equal 0)." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:304 #, no-wrap msgid "" "struct sockaddr_nl {\n" " sa_family_t nl_family; /* AF_NETLINK */\n" " unsigned short nl_pad; /* Zero. */\n" " pid_t nl_pid; /* Port ID. */\n" " __u32 nl_groups; /* Multicast groups mask. */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:335 msgid "" "I is the unicast address of netlink socket. It's always 0 if the " "destination is in the kernel. For a user-space process, I is " "usually the PID of the process owning the destination socket. However, " "I identifies a netlink socket, not a process. If a process owns " "several netlink sockets, then I can be equal to the process ID only " "for at most one socket. There are two ways to assign I to a netlink " "socket. If the application sets I before calling B(2), then " "it is up to the application to make sure that I is unique. If the " "application sets it to 0, the kernel takes care of assigning it. The kernel " "assigns the process ID to the first netlink socket the process opens and " "assigns a unique I to every netlink socket that the process " "subsequently creates." msgstr "" #. commit d629b836d151d43332492651dd841d32e57ebe3b #. type: Plain text #: build/C/man7/netlink.7:372 msgid "" "I is a bit mask with every bit representing a netlink group " "number. Each netlink family has a set of 32 multicast groups. When " "B(2) is called on the socket, the I field in the " "I should be set to a bit mask of the groups which it wishes to " "listen to. The default value for this field is zero which means that no " "multicasts will be received. A socket may multicast messages to any of the " "multicast groups by setting I to a bit mask of the groups it " "wishes to send to when it calls B(2) or does a B(2). " "Only processes with an effective UID of 0 or the B capability " "may send or listen to a netlink multicast group. Since Linux 2.6.13, " "messages can't be broadcast to multiple groups. Any replies to a message " "received for a multicast group should be sent back to the sending PID and " "the multicast group. Some Linux kernel subsystems may additionally allow " "other users to send and/or receive messages. As at Linux 3.0, the " "B, B, B, and " "B groups allow other users to receive messages. No groups " "allow other users to send messages." msgstr "" #. type: SH #: build/C/man7/netlink.7:372 build/C/man7/rtnetlink.7:455 #, no-wrap msgid "VERSIONS" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:374 msgid "The socket interface to netlink is a new feature of Linux 2.2." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:378 msgid "" "Linux 2.0 supported a more primitive device-based netlink interface (which " "is still available as a compatibility option). This obsolete interface is " "not described here." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:380 msgid "NETLINK_SELINUX appeared in Linux 2.6.4." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:382 msgid "NETLINK_AUDIT appeared in Linux 2.6.6." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:384 msgid "NETLINK_KOBJECT_UEVENT appeared in Linux 2.6.10." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:386 msgid "NETLINK_W1 and NETLINK_FIB_LOOKUP appeared in Linux 2.6.13." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:389 msgid "" "NETLINK_INET_DIAG, NETLINK_CONNECTOR and NETLINK_NETFILTER appeared in Linux " "2.6.14." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:391 msgid "NETLINK_GENERIC and NETLINK_ISCSI appeared in Linux 2.6.15." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:397 msgid "" "It is often better to use netlink via I or I than via the " "low-level kernel interface." msgstr "" #. type: SH #: build/C/man7/netlink.7:397 build/C/man3/rtnetlink.3:84 build/C/man7/rtnetlink.7:458 #, no-wrap msgid "BUGS" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:399 msgid "This manual page is not complete." msgstr "" #. type: SH #: build/C/man7/netlink.7:399 build/C/man3/rtnetlink.3:86 #, no-wrap msgid "EXAMPLE" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:407 msgid "" "The following example creates a B netlink socket which will " "listen to the B (network interface create/delete/up/down " "events) and B (IPv4 addresses add/delete events) " "multicast groups." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:411 #, no-wrap msgid "struct sockaddr_nl sa;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:415 #, no-wrap msgid "" "memset(&sa, 0, sizeof(sa));\n" "sa.nl_family = AF_NETLINK;\n" "sa.nl_groups = RTMGRP_LINK | RTMGRP_IPV4_IFADDR;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:418 #, no-wrap msgid "" "fd = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);\n" "bind(fd, (struct sockaddr *) &sa, sizeof(sa));\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:425 msgid "" "The next example demonstrates how to send a netlink message to the kernel " "(pid 0). Note that the application must take care of message sequence " "numbers in order to reliably track acknowledgements." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:432 #, no-wrap msgid "" "struct nlmsghdr *nh; /* The nlmsghdr with payload to send. */\n" "struct sockaddr_nl sa;\n" "struct iovec iov = { nh, nh-Enlmsg_len };\n" "struct msghdr msg;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:440 #, no-wrap msgid "" "msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };\n" "memset(&sa, 0, sizeof(sa));\n" "sa.nl_family = AF_NETLINK;\n" "nh-Enlmsg_pid = 0;\n" "nh-Enlmsg_seq = ++sequence_number;\n" "/* Request an ack from kernel by setting NLM_F_ACK. */\n" "nh-Enlmsg_flags |= NLM_F_ACK;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:442 #, no-wrap msgid "sendmsg(fd, &msg, 0);\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:446 msgid "And the last example is about reading netlink message." msgstr "" #. type: Plain text #: build/C/man7/netlink.7:455 #, no-wrap msgid "" "int len;\n" "char buf[4096];\n" "struct iovec iov = { buf, sizeof(buf) };\n" "struct sockaddr_nl sa;\n" "struct msghdr msg;\n" "struct nlmsghdr *nh;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:458 #, no-wrap msgid "" "msg = { &sa, sizeof(sa), &iov, 1, NULL, 0, 0 };\n" "len = recvmsg(fd, &msg, 0);\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:464 #, no-wrap msgid "" "for (nh = (struct nlmsghdr *) buf; NLMSG_OK (nh, len);\n" " nh = NLMSG_NEXT (nh, len)) {\n" " /* The end of multipart message. */\n" " if (nh-Enlmsg_type == NLMSG_DONE)\n" " return;\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:468 #, no-wrap msgid "" " if (nh-Enlmsg_type == NLMSG_ERROR)\n" " /* Do some error handling. */\n" " ...\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:472 #, no-wrap msgid "" " /* Continue with parsing payload. */\n" " ...\n" "}\n" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:479 msgid "B(3), B(3), B(7), B(7)" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:483 msgid "" "E<.UR ftp://ftp.inr.ac.ru\\:/ip-routing\\:/iproute2*> information about " "libnetlink E<.UE>" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:487 msgid "" "E<.UR http://people.suug.ch\\:/~tgr\\:/libnl/> information about libnl " "E<.UE>" msgstr "" #. type: Plain text #: build/C/man7/netlink.7:489 msgid "RFC 3549 \"Linux Netlink as an IP Services Protocol\"" msgstr "" #. type: TH #: build/C/man3/rtnetlink.3:12 build/C/man7/rtnetlink.7:15 #, no-wrap msgid "RTNETLINK" msgstr "" #. type: TH #: build/C/man3/rtnetlink.3:12 #, no-wrap msgid "2014-09-06" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:15 msgid "rtnetlink - macros to manipulate rtnetlink messages" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:17 build/C/man7/rtnetlink.7:20 msgid "B<#include Easm/types.hE>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:19 build/C/man7/rtnetlink.7:22 msgid "B<#include Elinux/netlink.hE>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:21 build/C/man7/rtnetlink.7:24 msgid "B<#include Elinux/rtnetlink.hE>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:23 build/C/man7/rtnetlink.7:26 msgid "B<#include Esys/socket.hE>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:26 build/C/man7/rtnetlink.7:28 msgid "" "BIB<, " "NETLINK_ROUTE);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:28 msgid "BIB<, int >IB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:30 msgid "BIB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:32 msgid "BIB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:35 msgid "" "BIB<, unsigned int " ">IB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:37 msgid "BIB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:39 msgid "BIB<);>" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:46 msgid "" "All B(7) messages consist of a B(7) message header and " "appended attributes. The attributes should be manipulated only using the " "macros provided here." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:57 msgid "" "BIB<, >IB<)> returns true if I points to a valid " "routing attribute; I is the running length of the attribute " "buffer. When not true then you must assume there are no more attributes in " "the message, even if I is nonzero." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:60 msgid "" "BIB<)> returns a pointer to the start of this attribute's " "data." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:63 msgid "BIB<)> returns the length of this attribute's data." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:72 msgid "" "BIB<, >IB<)> gets the next attribute after I. " "Calling this macro will update I. You should use B to " "check the validity of the returned pointer." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:77 msgid "" "BIB<)> returns the length which is required for I " "bytes of data plus the header." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:82 msgid "" "BIB<)> returns the amount of space which will be needed in " "a message with I bytes of data." msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:86 build/C/man7/rtnetlink.7:460 msgid "This manual page is incomplete." msgstr "" #. FIXME . ? would be better to use libnetlink in the EXAMPLE code here #. type: Plain text #: build/C/man3/rtnetlink.3:89 msgid "Creating a rtnetlink message to set the MTU of a device:" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:91 #, no-wrap msgid " #include Elinux/rtnetlink.hE\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:93 #, no-wrap msgid " ...\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:99 #, no-wrap msgid "" " struct {\n" " struct nlmsghdr nh;\n" " struct ifinfomsg if;\n" " char attrbuf[512];\n" " } req;\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:102 #, no-wrap msgid "" " struct rtattr *rta;\n" " unsigned int mtu = 1000;\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:104 #, no-wrap msgid " int rtnetlink_sk = socket(AF_NETLINK, SOCK_DGRAM, NETLINK_ROUTE);\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:120 #, no-wrap msgid "" " memset(&req, 0, sizeof(req));\n" " req.nh.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));\n" " req.nh.nlmsg_flags = NLM_F_REQUEST;\n" " req.nh.nlmsg_type = RTM_NEWLINK;\n" " req.if.ifi_family = AF_UNSPEC;\n" " req.if.ifi_index = INTERFACE_INDEX;\n" " req.if.ifi_change = 0xffffffff; /* ??? */\n" " rta = (struct rtattr *)(((char *) &req) +\n" " NLMSG_ALIGN(req.nh.nlmsg_len));\n" " rta-Erta_type = IFLA_MTU;\n" " rta-Erta_len = RTA_LENGTH(sizeof(unsigned int));\n" " req.n.nlmsg_len = NLMSG_ALIGN(req.nh.nlmsg_len) +\n" " RTA_LENGTH(sizeof(mtu));\n" " memcpy(RTA_DATA(rta), &mtu, sizeof(mtu));\n" " send(rtnetlink_sk, &req, req.nh.nlmsg_len, 0);\n" msgstr "" #. type: Plain text #: build/C/man3/rtnetlink.3:125 msgid "B(3), B(7), B(7)" msgstr "" #. type: TH #: build/C/man7/rtnetlink.7:15 #, no-wrap msgid "2013-03-05" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:18 msgid "rtnetlink - Linux IPv4 routing socket" msgstr "" #. FIXME . ? all these macros could be moved to rtnetlink(3) #. type: Plain text #: build/C/man7/rtnetlink.7:42 msgid "" "Rtnetlink allows the kernel's routing tables to be read and altered. It is " "used within the kernel to communicate between various subsystems, though " "this usage is not documented here, and for communication with user-space " "programs. Network routes, IP addresses, link parameters, neighbor setups, " "queueing disciplines, traffic classes and packet classifiers may all be " "controlled through B sockets. It is based on netlink " "messages; see B(7) for more information." msgstr "" #. type: SS #: build/C/man7/rtnetlink.7:42 #, no-wrap msgid "Routing attributes" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:44 msgid "Some rtnetlink messages have optional attributes after the initial header:" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:52 #, no-wrap msgid "" "struct rtattr {\n" " unsigned short rta_len; /* Length of option */\n" " unsigned short rta_type; /* Type of option */\n" " /* Data follows */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:58 msgid "" "These attributes should be manipulated using only the RTA_* macros or " "libnetlink, see B(3)." msgstr "" #. type: SS #: build/C/man7/rtnetlink.7:58 #, no-wrap msgid "Messages" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:61 msgid "" "Rtnetlink consists of these message types (in addition to standard netlink " "messages):" msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:61 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:69 msgid "" "Create, remove or get information about a specific network interface. These " "messages contain an I structure followed by a series of I " "structures." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:78 #, no-wrap msgid "" "struct ifinfomsg {\n" " unsigned char ifi_family; /* AF_UNSPEC */\n" " unsigned short ifi_type; /* Device type */\n" " int ifi_index; /* Interface index */\n" " unsigned int ifi_flags; /* Device flags */\n" " unsigned int ifi_change; /* change mask */\n" "};\n" msgstr "" #. FIXME Document ifinfomsg.ifi_type #. type: Plain text #: build/C/man7/rtnetlink.7:92 msgid "" "I contains the device flags, see B(7); I is " "the unique interface index (since Linux 3.7, it is possible to feed a " "nonzero value with the B message, thus creating a link with the " "given I); I is reserved for future use and should be " "always set to 0xFFFFFFFF." msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:96 #, no-wrap msgid "Routing attributes\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:97 build/C/man7/rtnetlink.7:164 build/C/man7/rtnetlink.7:313 #, no-wrap msgid "rta_type:value type:description\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:99 #, no-wrap msgid "IFLA_UNSPEC:-:unspecified.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:100 #, no-wrap msgid "IFLA_ADDRESS:hardware address:interface L2 address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:101 #, no-wrap msgid "IFLA_BROADCAST:hardware address:L2 broadcast address.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:102 #, no-wrap msgid "IFLA_IFNAME:asciiz string:Device name.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:103 #, no-wrap msgid "IFLA_MTU:unsigned int:MTU of the device.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:104 #, no-wrap msgid "IFLA_LINK:int:Link type.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:105 #, no-wrap msgid "IFLA_QDISC:asciiz string:Queueing discipline.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:106 #, no-wrap msgid "IFLA_STATS:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:107 #, no-wrap msgid "see below\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:108 #, no-wrap msgid "T}:Interface Statistics.\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:117 msgid "" "The value type for B is I (I in Linux 2.4 and earlier)." msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:117 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:130 msgid "" "Add, remove or receive information about an IP address associated with an " "interface. In Linux 2.2, an interface can carry multiple IP addresses, this " "replaces the alias device concept in 2.0. In Linux 2.2, these messages " "support IPv4 and IPv6 addresses. They contain an I structure, " "optionally followed by I routing attributes." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:139 #, no-wrap msgid "" "struct ifaddrmsg {\n" " unsigned char ifa_family; /* Address type */\n" " unsigned char ifa_prefixlen; /* Prefixlength of address */\n" " unsigned char ifa_flags; /* Address flags */\n" " unsigned char ifa_scope; /* Address scope */\n" " int ifa_index; /* Interface index */\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:159 msgid "" "I is the address family type (currently B or " "B), I is the length of the address mask of the " "address if defined for the family (like for IPv4), I is the " "address scope, I is the interface index of the interface the " "address is associated with. I is a flag word of " "B for secondary address (old alias interface), " "B for a permanent address set by the user and other " "undocumented flags." msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:163 build/C/man7/rtnetlink.7:312 build/C/man7/rtnetlink.7:430 #, no-wrap msgid "Attributes\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:166 #, no-wrap msgid "IFA_UNSPEC:-:unspecified.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:167 #, no-wrap msgid "IFA_ADDRESS:raw protocol address:interface address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:168 #, no-wrap msgid "IFA_LOCAL:raw protocol address:local address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:169 #, no-wrap msgid "IFA_LABEL:asciiz string:name of the interface\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:170 #, no-wrap msgid "IFA_BROADCAST:raw protocol address:broadcast address.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:171 #, no-wrap msgid "IFA_ANYCAST:raw protocol address:anycast address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:172 #, no-wrap msgid "IFA_CACHEINFO:struct ifa_cacheinfo:Address information.\n" msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:175 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:195 msgid "" "Create, remove or receive information about a network route. These messages " "contain an I structure with an optional sequence of I " "structures following. For B, setting I and " "I to 0 means you get all entries for the specified routing " "table. For the other fields, except I and I, 0 is " "the wildcard." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:202 #, no-wrap msgid "" "struct rtmsg {\n" " unsigned char rtm_family; /* Address family of route */\n" " unsigned char rtm_dst_len; /* Length of destination */\n" " unsigned char rtm_src_len; /* Length of source */\n" " unsigned char rtm_tos; /* TOS filter */\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:207 #, no-wrap msgid "" " unsigned char rtm_table; /* Routing table ID */\n" " unsigned char rtm_protocol; /* Routing protocol; see below */\n" " unsigned char rtm_scope; /* See below */\n" " unsigned char rtm_type; /* See below */\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:210 #, no-wrap msgid "" " unsigned int rtm_flags;\n" "};\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:214 #, no-wrap msgid "rtm_type:Route type\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:216 #, no-wrap msgid "RTN_UNSPEC:unknown route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:217 #, no-wrap msgid "RTN_UNICAST:a gateway or direct route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:218 #, no-wrap msgid "RTN_LOCAL:a local interface route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:219 #, no-wrap msgid "RTN_BROADCAST:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:220 #, no-wrap msgid "a local broadcast route (sent as a broadcast)\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:222 #, no-wrap msgid "RTN_ANYCAST:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:223 #, no-wrap msgid "a local broadcast route (sent as a unicast)\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:225 #, no-wrap msgid "RTN_MULTICAST:a multicast route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:226 #, no-wrap msgid "RTN_BLACKHOLE:a packet dropping route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:227 #, no-wrap msgid "RTN_UNREACHABLE:an unreachable destination\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:228 #, no-wrap msgid "RTN_PROHIBIT:a packet rejection route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:229 #, no-wrap msgid "RTN_THROW:continue routing lookup in another table\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:230 #, no-wrap msgid "RTN_NAT:a network address translation rule\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:231 #, no-wrap msgid "RTN_XRESOLVE:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:232 #, no-wrap msgid "refer to an external resolver (not implemented)\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:238 #, no-wrap msgid "rtm_protocol:Route origin.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:240 #, no-wrap msgid "RTPROT_UNSPEC:unknown\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:241 #, no-wrap msgid "RTPROT_REDIRECT:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:242 #, no-wrap msgid "by an ICMP redirect (currently unused)\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:244 #, no-wrap msgid "RTPROT_KERNEL:by the kernel\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:245 #, no-wrap msgid "RTPROT_BOOT:during boot\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:246 #, no-wrap msgid "RTPROT_STATIC:by the administrator\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:257 msgid "" "Values larger than B are not interpreted by the kernel, they " "are just for user information. They may be used to tag the source of a " "routing information or to distinguish between multiple routing daemons. See " "Ilinux/rtnetlink.hE> for the routing daemon identifiers which are " "already assigned." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:260 msgid "I is the distance to the destination:" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:263 #, no-wrap msgid "RT_SCOPE_UNIVERSE:global route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:264 #, no-wrap msgid "RT_SCOPE_SITE:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:265 #, no-wrap msgid "interior route in the local autonomous system\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:267 #, no-wrap msgid "RT_SCOPE_LINK:route on this link\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:268 #, no-wrap msgid "RT_SCOPE_HOST:route on the local host\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:269 #, no-wrap msgid "RT_SCOPE_NOWHERE:destination doesn't exist\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:277 msgid "" "The values between B and B are available " "to the user." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:281 msgid "The I have the following meanings:" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:284 #, no-wrap msgid "RTM_F_NOTIFY:T{\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:285 #, no-wrap msgid "if the route changes, notify the user via rtnetlink\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:287 #, no-wrap msgid "RTM_F_CLONED:route is cloned from another route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:288 #, no-wrap msgid "RTM_F_EQUALIZE:a multipath equalizer (not yet implemented)\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:293 msgid "I specifies the routing table" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:296 #, no-wrap msgid "RT_TABLE_UNSPEC:an unspecified routing table\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:297 #, no-wrap msgid "RT_TABLE_DEFAULT:the default table\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:298 #, no-wrap msgid "RT_TABLE_MAIN:the main table\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:299 #, no-wrap msgid "RT_TABLE_LOCAL:the local table\n" msgstr "" #. Keep table on same page #. type: Plain text #: build/C/man7/rtnetlink.7:307 msgid "" "The user may assign arbitrary values between B and " "B." msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:315 #, no-wrap msgid "RTA_UNSPEC:-:ignored.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:316 #, no-wrap msgid "RTA_DST:protocol address:Route destination address.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:317 #, no-wrap msgid "RTA_SRC:protocol address:Route source address.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:318 #, no-wrap msgid "RTA_IIF:int:Input interface index.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:319 #, no-wrap msgid "RTA_OIF:int:Output interface index.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:320 #, no-wrap msgid "RTA_GATEWAY:protocol address:The gateway of the route\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:321 #, no-wrap msgid "RTA_PRIORITY:int:Priority of route.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:322 #, no-wrap msgid "RTA_PREFSRC::\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:323 #, no-wrap msgid "RTA_METRICS:int:Route metric\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:324 #, no-wrap msgid "RTA_MULTIPATH::\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:325 #, no-wrap msgid "RTA_PROTOINFO::\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:326 #, no-wrap msgid "RTA_FLOW::\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:327 #, no-wrap msgid "RTA_CACHEINFO::\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:331 msgid "B" msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:331 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:338 msgid "" "Add, remove or receive information about a neighbor table entry (e.g., an " "ARP entry). The message contains an I structure." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:347 #, no-wrap msgid "" "struct ndmsg {\n" " unsigned char ndm_family;\n" " int ndm_ifindex; /* Interface index */\n" " __u16 ndm_state; /* State */\n" " __u8 ndm_flags; /* Flags */\n" " __u8 ndm_type;\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:354 #, no-wrap msgid "" "struct nda_cacheinfo {\n" " __u32 ndm_confirmed;\n" " __u32 ndm_used;\n" " __u32 ndm_updated;\n" " __u32 ndm_refcnt;\n" "};\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:358 msgid "I is a bit mask of the following states:" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:361 #, no-wrap msgid "NUD_INCOMPLETE:a currently resolving cache entry\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:362 #, no-wrap msgid "NUD_REACHABLE:a confirmed working cache entry\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:363 #, no-wrap msgid "NUD_STALE:an expired cache entry\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:364 #, no-wrap msgid "NUD_DELAY:an entry waiting for a timer\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:365 #, no-wrap msgid "NUD_PROBE:a cache entry that is currently reprobed\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:366 #, no-wrap msgid "NUD_FAILED:an invalid cache entry\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:367 #, no-wrap msgid "NUD_NOARP:a device with no destination cache\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:368 #, no-wrap msgid "NUD_PERMANENT:a static entry\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:374 msgid "Valid I are:" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:377 #, no-wrap msgid "NTF_PROXY:a proxy arp entry\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:378 #, no-wrap msgid "NTF_ROUTER:an IPv6 router\n" msgstr "" #. FIXME . #. document the members of the struct better #. type: Plain text #: build/C/man7/rtnetlink.7:388 msgid "The I struct has the following meanings for the I field:" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:391 #, no-wrap msgid "NDA_UNSPEC:unknown type\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:392 #, no-wrap msgid "NDA_DST:a neighbor cache n/w layer destination address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:393 #, no-wrap msgid "NDA_LLADDR:a neighbor cache link layer address\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:394 #, no-wrap msgid "NDA_CACHEINFO:cache statistics.\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:404 msgid "" "If the I field is B, then a I " "header follows" msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:404 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:409 msgid "Add, delete or retrieve a routing rule. Carries a I" msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:409 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:416 msgid "" "Add, remove or get a queueing discipline. The message contains a I and may be followed by a series of attributes." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:425 #, no-wrap msgid "" "struct tcmsg {\n" " unsigned char tcm_family;\n" " int tcm_ifindex; /* interface index */\n" " __u32 tcm_handle; /* Qdisc handle */\n" " __u32 tcm_parent; /* Parent qdisc */\n" " __u32 tcm_info;\n" "};\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:431 #, no-wrap msgid "rta_type:value type:Description\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:433 #, no-wrap msgid "TCA_UNSPEC:-:unspecified\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:434 #, no-wrap msgid "TCA_KIND:asciiz string:Name of queueing discipline\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:435 #, no-wrap msgid "TCA_OPTIONS:byte sequence:Qdisc-specific options follow\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:436 #, no-wrap msgid "TCA_STATS:struct tc_stats:Qdisc statistics.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:437 #, no-wrap msgid "TCA_XSTATS:qdisc-specific:Module-specific statistics.\n" msgstr "" #. type: tbl table #: build/C/man7/rtnetlink.7:438 #, no-wrap msgid "TCA_RATE:struct tc_estimator:Rate limit.\n" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:443 msgid "" "In addition, various other qdisc-module-specific attributes are allowed. " "For more information see the appropriate include files." msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:443 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:449 msgid "" "Add, remove or get a traffic class. These messages contain a I as described above." msgstr "" #. type: TP #: build/C/man7/rtnetlink.7:449 #, no-wrap msgid "B, B, B" msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:455 msgid "" "Add, remove or receive information about a traffic filter. These messages " "contain a I as described above." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:458 msgid "B is a new feature of Linux 2.2." msgstr "" #. type: Plain text #: build/C/man7/rtnetlink.7:465 msgid "B(3), B(3), B(7), B(7)" msgstr ""