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: 2015-02-04 23:33+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/man7/arp.7:13
26 #: build/C/man7/arp.7:13
32 #: build/C/man7/arp.7:13 build/C/man3/cmsg.3:11 build/C/man7/ddp.7:12 build/C/man5/gai.conf.5:19 build/C/man1/getent.1:24 build/C/man3/getipnodebyname.3:26 build/C/man2/getpeername.2:42 build/C/man5/host.conf.5:26 build/C/man7/hostname.7:39 build/C/man5/hosts.5:27 build/C/man5/hosts.equiv.5:6 build/C/man7/icmp.7:12 build/C/man3/inet_net_pton.3:26 build/C/man3/inet_ntop.3:26 build/C/man3/inet_pton.3:27 build/C/man7/ip.7:36 build/C/man7/ipv6.7:86 build/C/man7/netdevice.7:18 build/C/man5/nss.5:19 build/C/man5/nsswitch.conf.5:25 build/C/man7/packet.7:12 build/C/man5/protocols.5:29 build/C/man7/raw.7:13 build/C/man3/rcmd.3:43 build/C/man3/rexec.3:41 build/C/man5/services.5:34 build/C/man2/shutdown.2:40 build/C/man7/tcp.7:76 build/C/man7/udp.7:12 build/C/man7/udplite.7:27 build/C/man7/unix.7:20 build/C/man7/x25.7:12
38 #: build/C/man7/arp.7:13 build/C/man3/byteorder.3:32 build/C/man3/cmsg.3:11 build/C/man7/ddp.7:12 build/C/man3/endian.3:28 build/C/man3/ether_aton.3:31 build/C/man5/gai.conf.5:19 build/C/man3/getaddrinfo.3:44 build/C/man3/getaddrinfo_a.3:29 build/C/man3/gethostbyname.3:38 build/C/man3/getipnodebyname.3:26 build/C/man3/getnameinfo.3:10 build/C/man3/getnetent.3:30 build/C/man3/getnetent_r.3:26 build/C/man2/getpeername.2:42 build/C/man3/getprotoent.3:30 build/C/man3/getprotoent_r.3:26 build/C/man3/getservent.3:34 build/C/man3/getservent_r.3:26 build/C/man7/hostname.7:39 build/C/man5/hosts.5:27 build/C/man5/hosts.equiv.5:6 build/C/man7/icmp.7:12 build/C/man3/inet.3:42 build/C/man3/inet_net_pton.3:26 build/C/man3/inet_ntop.3:26 build/C/man3/inet_pton.3:27 build/C/man7/ip.7:36 build/C/man7/ipv6.7:86 build/C/man7/netdevice.7:18 build/C/man8/nscd.8:23 build/C/man5/nscd.conf.5:20 build/C/man5/nss.5:19 build/C/man5/nsswitch.conf.5:25 build/C/man7/packet.7:12 build/C/man5/protocols.5:29 build/C/man7/raw.7:13 build/C/man3/rcmd.3:43 build/C/man5/resolv.conf.5:23 build/C/man3/resolver.3:32 build/C/man3/rexec.3:41 build/C/man5/services.5:34 build/C/man3/setnetgrent.3:10 build/C/man2/shutdown.2:40 build/C/man7/tcp.7:76 build/C/man7/udp.7:12 build/C/man7/udplite.7:27 build/C/man7/unix.7:20 build/C/man7/x25.7:12
40 msgid "Linux Programmer's Manual"
44 #: build/C/man7/arp.7:14 build/C/man3/byteorder.3:33 build/C/man3/cmsg.3:12 build/C/man7/ddp.7:13 build/C/man3/endian.3:29 build/C/man3/ether_aton.3:32 build/C/man5/gai.conf.5:20 build/C/man3/getaddrinfo.3:45 build/C/man3/getaddrinfo_a.3:30 build/C/man1/getent.1:25 build/C/man3/gethostbyname.3:39 build/C/man3/getipnodebyname.3:27 build/C/man3/getnameinfo.3:11 build/C/man3/getnetent.3:31 build/C/man3/getnetent_r.3:27 build/C/man2/getpeername.2:43 build/C/man3/getprotoent.3:31 build/C/man3/getprotoent_r.3:27 build/C/man3/getservent.3:35 build/C/man3/getservent_r.3:27 build/C/man5/host.conf.5:27 build/C/man7/hostname.7:40 build/C/man5/hosts.5:28 build/C/man5/hosts.equiv.5:7 build/C/man7/icmp.7:13 build/C/man3/inet.3:43 build/C/man3/inet_net_pton.3:27 build/C/man3/inet_ntop.3:27 build/C/man3/inet_pton.3:28 build/C/man7/ip.7:37 build/C/man7/ipv6.7:87 build/C/man7/netdevice.7:19 build/C/man5/networks.5:27 build/C/man8/nscd.8:24 build/C/man5/nscd.conf.5:21 build/C/man5/nss.5:20 build/C/man5/nsswitch.conf.5:26 build/C/man7/packet.7:13 build/C/man5/protocols.5:30 build/C/man7/raw.7:14 build/C/man3/rcmd.3:44 build/C/man5/resolv.conf.5:25 build/C/man3/resolver.3:33 build/C/man3/rexec.3:42 build/C/man5/services.5:35 build/C/man3/setnetgrent.3:11 build/C/man2/shutdown.2:41 build/C/man7/tcp.7:77 build/C/man7/udp.7:13 build/C/man7/udplite.7:28 build/C/man7/unix.7:21 build/C/man7/x25.7:13
50 #: build/C/man7/arp.7:16
51 msgid "arp - Linux ARP kernel module."
55 #: build/C/man7/arp.7:16 build/C/man3/byteorder.3:48 build/C/man3/cmsg.3:37 build/C/man7/ddp.7:23 build/C/man3/endian.3:53 build/C/man3/ether_aton.3:57 build/C/man5/gai.conf.5:22 build/C/man3/getaddrinfo.3:76 build/C/man3/getaddrinfo_a.3:50 build/C/man1/getent.1:30 build/C/man3/gethostbyname.3:129 build/C/man3/getipnodebyname.3:44 build/C/man3/getnameinfo.3:32 build/C/man3/getnetent.3:48 build/C/man3/getnetent_r.3:62 build/C/man2/getpeername.2:50 build/C/man3/getprotoent.3:48 build/C/man3/getprotoent_r.3:59 build/C/man3/getservent.3:52 build/C/man3/getservent_r.3:59 build/C/man5/host.conf.5:29 build/C/man7/hostname.7:42 build/C/man5/hosts.5:32 build/C/man5/hosts.equiv.5:11 build/C/man7/icmp.7:15 build/C/man3/inet.3:75 build/C/man3/inet_net_pton.3:61 build/C/man3/inet_ntop.3:36 build/C/man3/inet_pton.3:36 build/C/man7/ip.7:53 build/C/man7/ipv6.7:99 build/C/man7/netdevice.7:25 build/C/man5/networks.5:29 build/C/man8/nscd.8:26 build/C/man5/nscd.conf.5:23 build/C/man5/nss.5:22 build/C/man5/nsswitch.conf.5:28 build/C/man7/packet.7:25 build/C/man5/protocols.5:32 build/C/man7/raw.7:22 build/C/man3/rcmd.3:92 build/C/man5/resolv.conf.5:29 build/C/man3/resolver.3:85 build/C/man3/rexec.3:56 build/C/man5/services.5:37 build/C/man3/setnetgrent.3:44 build/C/man2/shutdown.2:47 build/C/man7/tcp.7:87 build/C/man7/udp.7:23 build/C/man7/udplite.7:38 build/C/man7/unix.7:31 build/C/man7/x25.7:21
61 #: build/C/man7/arp.7:24
63 "This kernel protocol module implements the Address Resolution Protocol "
64 "defined in RFC\\ 826. It is used to convert between Layer2 hardware "
65 "addresses and IPv4 protocol addresses on directly connected networks. The "
66 "user normally doesn't interact directly with this module except to configure "
67 "it; instead it provides a service for other protocols in the kernel."
71 #: build/C/man7/arp.7:37
73 "A user process can receive ARP packets by using B<packet>(7) sockets. "
74 "There is also a mechanism for managing the ARP cache in user-space by using "
75 "B<netlink>(7) sockets. The ARP table can also be controlled via "
76 "B<ioctl>(2) on any B<AF_INET> socket."
80 #: build/C/man7/arp.7:49
82 "The ARP module maintains a cache of mappings between hardware addresses and "
83 "protocol addresses. The cache has a limited size so old and less frequently "
84 "used entries are garbage-collected. Entries which are marked as permanent "
85 "are never deleted by the garbage-collector. The cache can be directly "
86 "manipulated by the use of ioctls and its behavior can be tuned by the "
87 "I</proc> interfaces described below."
91 #: build/C/man7/arp.7:72
93 "When there is no positive feedback for an existing mapping after some time "
94 "(see the I</proc> interfaces below), a neighbor cache entry is considered "
95 "stale. Positive feedback can be gotten from a higher layer; for example "
96 "from a successful TCP ACK. Other protocols can signal forward progress "
97 "using the B<MSG_CONFIRM> flag to B<sendmsg>(2). When there is no forward "
98 "progress, ARP tries to reprobe. It first tries to ask a local arp daemon "
99 "B<app_solicit> times for an updated MAC address. If that fails and an old "
100 "MAC address is known, a unicast probe is sent B<ucast_solicit> times. If "
101 "that fails too, it will broadcast a new ARP request to the network. "
102 "Requests are sent only when there is data queued for sending."
106 #: build/C/man7/arp.7:77
108 "Linux will automatically add a nonpermanent proxy arp entry when it receives "
109 "a request for an address it forwards to and proxy arp is enabled on the "
110 "receiving interface. When there is a reject route for the target, no proxy "
111 "arp entry is added."
115 #: build/C/man7/arp.7:77 build/C/man7/ddp.7:144 build/C/man7/ip.7:1075 build/C/man7/netdevice.7:64 build/C/man7/packet.7:479 build/C/man7/tcp.7:1127 build/C/man7/udp.7:202 build/C/man7/unix.7:367
121 #: build/C/man7/arp.7:84
123 "Three ioctls are available on all B<AF_INET> sockets. They take a pointer "
124 "to a I<struct arpreq> as their argument."
128 #: build/C/man7/arp.7:94
132 " struct sockaddr arp_pa; /* protocol address */\n"
133 " struct sockaddr arp_ha; /* hardware address */\n"
134 " int arp_flags; /* flags */\n"
135 " struct sockaddr arp_netmask; /* netmask of protocol address */\n"
136 " char arp_dev[16];\n"
141 #: build/C/man7/arp.7:103
143 "B<SIOCSARP>, B<SIOCDARP> and B<SIOCGARP> respectively set, delete and get an "
144 "ARP mapping. Setting and deleting ARP maps are privileged operations and "
145 "may be performed only by a process with the B<CAP_NET_ADMIN> capability or "
146 "an effective UID of 0."
150 #: build/C/man7/arp.7:113
152 "I<arp_pa> must be an B<AF_INET> address and I<arp_ha> must have the same "
153 "type as the device which is specified in I<arp_dev>. I<arp_dev> is a "
154 "zero-terminated string which names a device."
158 #: build/C/man7/arp.7:118
160 msgid "I<arp_flags>\n"
164 #: build/C/man7/arp.7:119
166 msgid "flag:meaning\n"
170 #: build/C/man7/arp.7:120
172 msgid "ATF_COM:Lookup complete\n"
176 #: build/C/man7/arp.7:121
178 msgid "ATF_PERM:Permanent entry\n"
182 #: build/C/man7/arp.7:122
184 msgid "ATF_PUBL:Publish entry\n"
188 #: build/C/man7/arp.7:123
190 msgid "ATF_USETRAILERS:Trailers requested\n"
194 #: build/C/man7/arp.7:124
196 msgid "ATF_NETMASK:Use a netmask\n"
200 #: build/C/man7/arp.7:125
202 msgid "ATF_DONTPUB:Don't answer\n"
206 #: build/C/man7/arp.7:138
208 "If the B<ATF_NETMASK> flag is set, then I<arp_netmask> should be valid. "
209 "Linux 2.2 does not support proxy network ARP entries, so this should be set "
210 "to 0xffffffff, or 0 to remove an existing proxy arp entry. "
211 "B<ATF_USETRAILERS> is obsolete and should not be used."
215 #: build/C/man7/arp.7:138 build/C/man7/ddp.7:122 build/C/man7/icmp.7:41 build/C/man7/ip.7:926 build/C/man7/tcp.7:219 build/C/man7/udp.7:137
217 msgid "/proc interfaces"
221 #: build/C/man7/arp.7:151
223 "ARP supports a range of I</proc> interfaces to configure parameters on a "
224 "global or per-interface basis. The interfaces can be accessed by reading or "
225 "writing the I</proc/sys/net/ipv4/neigh/*/*> files. Each interface in the "
226 "system has its own directory in I</proc/sys/net/ipv4/neigh/>. The setting "
227 "in the \"default\" directory is used for all newly created devices. Unless "
228 "otherwise specified, time-related interfaces are specified in seconds."
232 #: build/C/man7/arp.7:151
234 msgid "I<anycast_delay> (since Linux 2.2)"
239 #: build/C/man7/arp.7:158
241 "The maximum number of jiffies to delay before replying to a IPv6 neighbor "
242 "solicitation message. Anycast support is not yet implemented. Defaults to "
247 #: build/C/man7/arp.7:158
249 msgid "I<app_solicit> (since Linux 2.2)"
254 #: build/C/man7/arp.7:165
256 "The maximum number of probes to send to the user space ARP daemon via "
257 "netlink before dropping back to multicast probes (see I<mcast_solicit>). "
262 #: build/C/man7/arp.7:165
264 msgid "I<base_reachable_time> (since Linux 2.2)"
269 #: build/C/man7/arp.7:176
271 "Once a neighbor has been found, the entry is considered to be valid for at "
272 "least a random value between I<base_reachable_time>/2 and "
273 "3*I<base_reachable_time>/2. An entry's validity will be extended if it "
274 "receives positive feedback from higher level protocols. Defaults to 30 "
275 "seconds. This file is now obsolete in favor of I<base_reachable_time_ms>."
279 #: build/C/man7/arp.7:176
281 msgid "I<base_reachable_time_ms> (since Linux 2.6.12)"
285 #: build/C/man7/arp.7:182
287 "As for I<base_reachable_time>, but measures time in milliseconds. Defaults "
288 "to 30000 milliseconds."
292 #: build/C/man7/arp.7:182
294 msgid "I<delay_first_probe_time> (since Linux 2.2)"
299 #: build/C/man7/arp.7:188
301 "Delay before first probe after it has been decided that a neighbor is "
302 "stale. Defaults to 5 seconds."
306 #: build/C/man7/arp.7:188
308 msgid "I<gc_interval> (since Linux 2.2)"
313 #: build/C/man7/arp.7:194
315 "How frequently the garbage collector for neighbor entries should attempt to "
316 "run. Defaults to 30 seconds."
320 #: build/C/man7/arp.7:194
322 msgid "I<gc_stale_time> (since Linux 2.2)"
327 #: build/C/man7/arp.7:201
329 "Determines how often to check for stale neighbor entries. When a neighbor "
330 "entry is considered stale, it is resolved again before sending data to it. "
331 "Defaults to 60 seconds."
335 #: build/C/man7/arp.7:201
337 msgid "I<gc_thresh1> (since Linux 2.2)"
342 #: build/C/man7/arp.7:208
344 "The minimum number of entries to keep in the ARP cache. The garbage "
345 "collector will not run if there are fewer than this number of entries in the "
346 "cache. Defaults to 128."
350 #: build/C/man7/arp.7:208
352 msgid "I<gc_thresh2> (since Linux 2.2)"
357 #: build/C/man7/arp.7:215
359 "The soft maximum number of entries to keep in the ARP cache. The garbage "
360 "collector will allow the number of entries to exceed this for 5 seconds "
361 "before collection will be performed. Defaults to 512."
365 #: build/C/man7/arp.7:215
367 msgid "I<gc_thresh3> (since Linux 2.2)"
372 #: build/C/man7/arp.7:222
374 "The hard maximum number of entries to keep in the ARP cache. The garbage "
375 "collector will always run if there are more than this number of entries in "
376 "the cache. Defaults to 1024."
380 #: build/C/man7/arp.7:222
382 msgid "I<locktime> (since Linux 2.2)"
387 #: build/C/man7/arp.7:229
389 "The minimum number of jiffies to keep an ARP entry in the cache. This "
390 "prevents ARP cache thrashing if there is more than one potential mapping "
391 "(generally due to network misconfiguration). Defaults to 1 second."
395 #: build/C/man7/arp.7:229
397 msgid "I<mcast_solicit> (since Linux 2.2)"
402 #: build/C/man7/arp.7:235
404 "The maximum number of attempts to resolve an address by multicast/broadcast "
405 "before marking the entry as unreachable. Defaults to 3."
409 #: build/C/man7/arp.7:235
411 msgid "I<proxy_delay> (since Linux 2.2)"
416 #: build/C/man7/arp.7:243
418 "When an ARP request for a known proxy-ARP address is received, delay up to "
419 "I<proxy_delay> jiffies before replying. This is used to prevent network "
420 "flooding in some cases. Defaults to 0.8 seconds."
424 #: build/C/man7/arp.7:243
426 msgid "I<proxy_qlen> (since Linux 2.2)"
431 #: build/C/man7/arp.7:248
433 "The maximum number of packets which may be queued to proxy-ARP addresses. "
438 #: build/C/man7/arp.7:248
440 msgid "I<retrans_time> (since Linux 2.2)"
445 #: build/C/man7/arp.7:255
447 "The number of jiffies to delay before retransmitting a request. Defaults to "
448 "1 second. This file is now obsolete in favor of I<retrans_time_ms>."
452 #: build/C/man7/arp.7:255
454 msgid "I<retrans_time_ms> (since Linux 2.6.12)"
458 #: build/C/man7/arp.7:259
460 "The number of milliseconds to delay before retransmitting a request. "
461 "Defaults to 1000 milliseconds."
465 #: build/C/man7/arp.7:259
467 msgid "I<ucast_solicit> (since Linux 2.2)"
472 #: build/C/man7/arp.7:266
474 "The maximum number of attempts to send unicast probes before asking the ARP "
475 "daemon (see I<app_solicit>). Defaults to 3."
479 #: build/C/man7/arp.7:266
481 msgid "I<unres_qlen> (since Linux 2.2)"
486 #: build/C/man7/arp.7:272
488 "The maximum number of packets which may be queued for each unresolved "
489 "address by other network layers. Defaults to 3."
493 #: build/C/man7/arp.7:272 build/C/man7/ddp.7:221 build/C/man3/endian.3:74 build/C/man3/getnameinfo.3:203 build/C/man7/icmp.7:161 build/C/man7/ipv6.7:362 build/C/man7/packet.7:532 build/C/man7/raw.7:175 build/C/man3/rcmd.3:262 build/C/man3/rexec.3:138 build/C/man7/tcp.7:1244 build/C/man7/udp.7:251 build/C/man7/udplite.7:132 build/C/man7/unix.7:484 build/C/man7/x25.7:100
499 #: build/C/man7/arp.7:279
501 "The I<struct arpreq> changed in Linux 2.0 to include the I<arp_dev> member "
502 "and the ioctl numbers changed at the same time. Support for the old ioctls "
503 "was dropped in Linux 2.2."
507 #: build/C/man7/arp.7:285
509 "Support for proxy arp entries for networks (netmask not equal 0xffffffff) "
510 "was dropped in Linux 2.2. It is replaced by automatic proxy arp setup by "
511 "the kernel for all reachable hosts on other interfaces (when forwarding and "
512 "proxy arp is enabled for the interface)."
516 #: build/C/man7/arp.7:289
517 msgid "The I<neigh/*> interfaces did not exist before Linux 2.2."
521 #: build/C/man7/arp.7:289 build/C/man7/ddp.7:244 build/C/man3/ether_aton.3:151 build/C/man3/gethostbyname.3:438 build/C/man3/inet_ntop.3:112 build/C/man3/inet_pton.3:150 build/C/man7/ip.7:1245 build/C/man7/ipv6.7:396 build/C/man7/netdevice.7:359 build/C/man7/packet.7:601 build/C/man7/raw.7:252 build/C/man3/rcmd.3:278 build/C/man3/rexec.3:158 build/C/man2/shutdown.2:104 build/C/man7/tcp.7:1251 build/C/man7/udplite.7:134 build/C/man7/unix.7:521 build/C/man7/x25.7:102
527 #: build/C/man7/arp.7:293
529 "Some timer settings are specified in jiffies, which is architecture- and "
530 "kernel version-dependent; see B<time>(7)."
534 #: build/C/man7/arp.7:299
536 "There is no way to signal positive feedback from user space. This means "
537 "connection-oriented protocols implemented in user space will generate "
538 "excessive ARP traffic, because ndisc will regularly reprobe the MAC "
539 "address. The same problem applies for some kernel protocols (e.g., NFS over "
544 #: build/C/man7/arp.7:302
546 "This man page mashes together functionality that is IPv4-specific with "
547 "functionality that is shared between IPv4 and IPv6."
551 #: build/C/man7/arp.7:302 build/C/man3/byteorder.3:92 build/C/man3/cmsg.3:222 build/C/man7/ddp.7:249 build/C/man3/endian.3:151 build/C/man3/ether_aton.3:157 build/C/man5/gai.conf.5:93 build/C/man3/getaddrinfo.3:828 build/C/man3/getaddrinfo_a.3:600 build/C/man1/getent.1:368 build/C/man3/gethostbyname.3:443 build/C/man3/getipnodebyname.3:266 build/C/man3/getnameinfo.3:282 build/C/man3/getnetent.3:154 build/C/man3/getnetent_r.3:145 build/C/man2/getpeername.2:143 build/C/man3/getprotoent.3:142 build/C/man3/getprotoent_r.3:237 build/C/man3/getservent.3:159 build/C/man3/getservent_r.3:241 build/C/man5/host.conf.5:199 build/C/man7/hostname.7:85 build/C/man5/hosts.5:115 build/C/man5/hosts.equiv.5:84 build/C/man7/icmp.7:191 build/C/man3/inet.3:305 build/C/man3/inet_net_pton.3:390 build/C/man3/inet_ntop.3:118 build/C/man3/inet_pton.3:215 build/C/man7/ip.7:1272 build/C/man7/ipv6.7:407 build/C/man7/netdevice.7:373 build/C/man5/networks.5:74 build/C/man8/nscd.8:85 build/C/man5/nscd.conf.5:239 build/C/man5/nss.5:110 build/C/man5/nsswitch.conf.5:352 build/C/man7/packet.7:631 build/C/man5/protocols.5:81 build/C/man7/raw.7:269 build/C/man3/rcmd.3:285 build/C/man5/resolv.conf.5:301 build/C/man3/resolver.3:274 build/C/man3/rexec.3:167 build/C/man5/services.5:210 build/C/man3/setnetgrent.3:107 build/C/man2/shutdown.2:113 build/C/man7/tcp.7:1263 build/C/man7/udp.7:256 build/C/man7/udplite.7:146 build/C/man7/unix.7:616 build/C/man7/x25.7:118
557 #: build/C/man7/arp.7:305
558 msgid "B<capabilities>(7), B<ip>(7)"
562 #: build/C/man7/arp.7:310
564 "RFC\\ 826 for a description of ARP. RFC\\ 2461 for a description of IPv6 "
565 "neighbor discovery and the base algorithms used. Linux 2.2+ IPv4 ARP uses "
566 "the IPv6 algorithms when applicable."
570 #: build/C/man7/arp.7:310 build/C/man3/byteorder.3:96 build/C/man3/cmsg.3:227 build/C/man7/ddp.7:254 build/C/man3/endian.3:153 build/C/man3/ether_aton.3:159 build/C/man5/gai.conf.5:96 build/C/man3/getaddrinfo.3:838 build/C/man3/getaddrinfo_a.3:607 build/C/man1/getent.1:370 build/C/man3/gethostbyname.3:457 build/C/man3/getipnodebyname.3:271 build/C/man3/getnameinfo.3:315 build/C/man3/getnetent.3:161 build/C/man3/getnetent_r.3:148 build/C/man2/getpeername.2:150 build/C/man3/getprotoent.3:147 build/C/man3/getprotoent_r.3:240 build/C/man3/getservent.3:164 build/C/man3/getservent_r.3:244 build/C/man5/host.conf.5:204 build/C/man7/hostname.7:93 build/C/man5/hosts.5:126 build/C/man5/hosts.equiv.5:88 build/C/man7/icmp.7:195 build/C/man3/inet.3:316 build/C/man3/inet_net_pton.3:393 build/C/man3/inet_ntop.3:122 build/C/man3/inet_pton.3:219 build/C/man7/ip.7:1289 build/C/man7/ipv6.7:414 build/C/man7/netdevice.7:378 build/C/man5/networks.5:80 build/C/man8/nscd.8:91 build/C/man5/nscd.conf.5:244 build/C/man5/nss.5:112 build/C/man5/nsswitch.conf.5:355 build/C/man7/packet.7:654 build/C/man5/protocols.5:86 build/C/man7/raw.7:282 build/C/man3/rcmd.3:293 build/C/man5/resolv.conf.5:308 build/C/man3/resolver.3:280 build/C/man3/rexec.3:170 build/C/man5/services.5:222 build/C/man3/setnetgrent.3:111 build/C/man2/shutdown.2:117 build/C/man7/tcp.7:1289 build/C/man7/udp.7:267 build/C/man7/udplite.7:156 build/C/man7/unix.7:625 build/C/man7/x25.7:127
576 #: build/C/man7/arp.7:318 build/C/man3/byteorder.3:104 build/C/man3/cmsg.3:235 build/C/man7/ddp.7:262 build/C/man3/endian.3:161 build/C/man3/ether_aton.3:167 build/C/man5/gai.conf.5:104 build/C/man3/getaddrinfo.3:846 build/C/man3/getaddrinfo_a.3:615 build/C/man1/getent.1:378 build/C/man3/gethostbyname.3:465 build/C/man3/getipnodebyname.3:279 build/C/man3/getnameinfo.3:323 build/C/man3/getnetent.3:169 build/C/man3/getnetent_r.3:156 build/C/man2/getpeername.2:158 build/C/man3/getprotoent.3:155 build/C/man3/getprotoent_r.3:248 build/C/man3/getservent.3:172 build/C/man3/getservent_r.3:252 build/C/man5/host.conf.5:212 build/C/man7/hostname.7:101 build/C/man5/hosts.5:134 build/C/man5/hosts.equiv.5:96 build/C/man7/icmp.7:203 build/C/man3/inet.3:324 build/C/man3/inet_net_pton.3:401 build/C/man3/inet_ntop.3:130 build/C/man3/inet_pton.3:227 build/C/man7/ip.7:1297 build/C/man7/ipv6.7:422 build/C/man7/netdevice.7:386 build/C/man5/networks.5:88 build/C/man8/nscd.8:99 build/C/man5/nscd.conf.5:252 build/C/man5/nss.5:120 build/C/man5/nsswitch.conf.5:363 build/C/man7/packet.7:662 build/C/man5/protocols.5:94 build/C/man7/raw.7:290 build/C/man3/rcmd.3:301 build/C/man5/resolv.conf.5:316 build/C/man3/resolver.3:288 build/C/man3/rexec.3:178 build/C/man5/services.5:230 build/C/man3/setnetgrent.3:119 build/C/man2/shutdown.2:125 build/C/man7/tcp.7:1297 build/C/man7/udp.7:275 build/C/man7/udplite.7:164 build/C/man7/unix.7:633 build/C/man7/x25.7:135
578 "This page is part of release 3.79 of the Linux I<man-pages> project. A "
579 "description of the project, information about reporting bugs, and the latest "
580 "version of this page, can be found at "
581 "\\%http://www.kernel.org/doc/man-pages/."
585 #: build/C/man3/byteorder.3:32
591 #: build/C/man3/byteorder.3:32
597 #: build/C/man3/byteorder.3:32 build/C/man3/endian.3:28 build/C/man3/ether_aton.3:31 build/C/man3/getaddrinfo.3:44 build/C/man3/getaddrinfo_a.3:29 build/C/man3/getnameinfo.3:10 build/C/man3/getnetent.3:30 build/C/man3/getnetent_r.3:26 build/C/man3/getprotoent.3:30 build/C/man3/getprotoent_r.3:26 build/C/man3/getservent.3:34 build/C/man3/getservent_r.3:26 build/C/man3/inet.3:42 build/C/man8/nscd.8:23 build/C/man5/nscd.conf.5:20 build/C/man3/resolver.3:32 build/C/man3/setnetgrent.3:10
603 #: build/C/man3/byteorder.3:36
605 "htonl, htons, ntohl, ntohs - convert values between host and network byte "
610 #: build/C/man3/byteorder.3:36 build/C/man3/cmsg.3:14 build/C/man7/ddp.7:15 build/C/man3/endian.3:33 build/C/man3/ether_aton.3:35 build/C/man3/getaddrinfo.3:48 build/C/man3/getaddrinfo_a.3:33 build/C/man1/getent.1:27 build/C/man3/gethostbyname.3:46 build/C/man3/getipnodebyname.3:30 build/C/man3/getnameinfo.3:13 build/C/man3/getnetent.3:34 build/C/man3/getnetent_r.3:30 build/C/man2/getpeername.2:45 build/C/man3/getprotoent.3:34 build/C/man3/getprotoent_r.3:30 build/C/man3/getservent.3:38 build/C/man3/getservent_r.3:30 build/C/man5/hosts.5:30 build/C/man3/inet.3:46 build/C/man3/inet_net_pton.3:29 build/C/man3/inet_ntop.3:29 build/C/man3/inet_pton.3:30 build/C/man7/ip.7:39 build/C/man7/ipv6.7:89 build/C/man7/netdevice.7:21 build/C/man7/packet.7:15 build/C/man7/raw.7:16 build/C/man3/rcmd.3:48 build/C/man5/resolv.conf.5:27 build/C/man3/resolver.3:36 build/C/man3/rexec.3:44 build/C/man3/setnetgrent.3:14 build/C/man2/shutdown.2:43 build/C/man7/tcp.7:79 build/C/man7/udp.7:15 build/C/man7/udplite.7:30 build/C/man7/unix.7:23 build/C/man7/x25.7:15
616 #: build/C/man3/byteorder.3:39 build/C/man3/inet_net_pton.3:32 build/C/man3/inet_ntop.3:32 build/C/man3/inet_pton.3:33
618 msgid "B<#include E<lt>arpa/inet.hE<gt>>\n"
622 #: build/C/man3/byteorder.3:41
624 msgid "B<uint32_t htonl(uint32_t >I<hostlong>B<);>\n"
628 #: build/C/man3/byteorder.3:43
630 msgid "B<uint16_t htons(uint16_t >I<hostshort>B<);>\n"
634 #: build/C/man3/byteorder.3:45
636 msgid "B<uint32_t ntohl(uint32_t >I<netlong>B<);>\n"
640 #: build/C/man3/byteorder.3:47
642 msgid "B<uint16_t ntohs(uint16_t >I<netshort>B<);>\n"
646 #: build/C/man3/byteorder.3:54
648 "The B<htonl>() function converts the unsigned integer I<hostlong> from host "
649 "byte order to network byte order."
653 #: build/C/man3/byteorder.3:60
655 "The B<htons>() function converts the unsigned short integer I<hostshort> "
656 "from host byte order to network byte order."
660 #: build/C/man3/byteorder.3:66
662 "The B<ntohl>() function converts the unsigned integer I<netlong> from "
663 "network byte order to host byte order."
667 #: build/C/man3/byteorder.3:72
669 "The B<ntohs>() function converts the unsigned short integer I<netshort> "
670 "from network byte order to host byte order."
674 #: build/C/man3/byteorder.3:76
676 "On the i386 the host byte order is Least Significant Byte first, whereas the "
677 "network byte order, as used on the Internet, is Most Significant Byte first."
681 #: build/C/man3/byteorder.3:76 build/C/man3/ether_aton.3:127 build/C/man3/rexec.3:142
687 #: build/C/man3/byteorder.3:77 build/C/man3/rexec.3:143
689 msgid "Multithreading (see pthreads(7))"
693 #: build/C/man3/byteorder.3:85
695 "The B<htonl>(), B<htons>(), B<ntohl>(), and B<ntohs>() functions are "
700 #: build/C/man3/byteorder.3:85 build/C/man3/cmsg.3:141 build/C/man3/endian.3:76 build/C/man3/ether_aton.3:149 build/C/man3/getaddrinfo.3:595 build/C/man3/getaddrinfo_a.3:305 build/C/man3/gethostbyname.3:317 build/C/man3/getipnodebyname.3:258 build/C/man3/getnameinfo.3:206 build/C/man3/getnetent.3:145 build/C/man3/getnetent_r.3:141 build/C/man2/getpeername.2:101 build/C/man3/getprotoent.3:140 build/C/man3/getprotoent_r.3:131 build/C/man3/getservent.3:157 build/C/man3/getservent_r.3:130 build/C/man3/inet.3:218 build/C/man3/inet_net_pton.3:159 build/C/man3/inet_ntop.3:100 build/C/man3/inet_pton.3:129 build/C/man3/rcmd.3:270 build/C/man3/resolver.3:272 build/C/man3/rexec.3:149 build/C/man3/setnetgrent.3:92 build/C/man2/shutdown.2:91
702 msgid "CONFORMING TO"
706 #: build/C/man3/byteorder.3:87 build/C/man3/inet_pton.3:131
707 msgid "POSIX.1-2001."
711 #: build/C/man3/byteorder.3:92
713 "Some systems require the inclusion of I<E<lt>netinet/in.hE<gt>> instead of "
714 "I<E<lt>arpa/inet.hE<gt>>."
718 #: build/C/man3/byteorder.3:96
719 msgid "B<endian>(3), B<gethostbyname>(3), B<getservent>(3)"
723 #: build/C/man3/cmsg.3:11
729 #: build/C/man3/cmsg.3:11 build/C/man5/resolv.conf.5:23 build/C/man7/unix.7:20
735 #: build/C/man3/cmsg.3:14
736 msgid "CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - access ancillary data"
740 #: build/C/man3/cmsg.3:16 build/C/man7/ddp.7:17 build/C/man2/getpeername.2:47 build/C/man7/ip.7:41 build/C/man7/ipv6.7:91 build/C/man7/raw.7:18 build/C/man2/shutdown.2:45 build/C/man7/tcp.7:81 build/C/man7/udp.7:17 build/C/man7/udplite.7:32 build/C/man7/unix.7:25 build/C/man7/x25.7:17
741 msgid "B<#include E<lt>sys/socket.hE<gt>>"
745 #: build/C/man3/cmsg.3:18
746 msgid "B<struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *>I<msgh>B<);>"
750 #: build/C/man3/cmsg.3:20
752 "B<struct cmsghdr *CMSG_NXTHDR(struct msghdr *>I<msgh>B<, struct cmsghdr "
757 #: build/C/man3/cmsg.3:22
758 msgid "B<size_t CMSG_ALIGN(size_t >I<length>B<);>"
762 #: build/C/man3/cmsg.3:24
763 msgid "B<size_t CMSG_SPACE(size_t >I<length>B<);>"
767 #: build/C/man3/cmsg.3:26
768 msgid "B<size_t CMSG_LEN(size_t >I<length>B<);>"
772 #: build/C/man3/cmsg.3:28
773 msgid "B<unsigned char *CMSG_DATA(struct cmsghdr *>I<cmsg>B<);>"
777 #: build/C/man3/cmsg.3:36
781 " socklen_t cmsg_len; /* data byte count, including header */\n"
782 " int cmsg_level; /* originating protocol */\n"
783 " int cmsg_type; /* protocol-specific type */\n"
784 " /* followed by unsigned char cmsg_data[]; */\n"
789 #: build/C/man3/cmsg.3:51
791 "These macros are used to create and access control messages (also called "
792 "ancillary data) that are not a part of the socket payload. This control "
793 "information may include the interface the packet was received on, various "
794 "rarely used header fields, an extended error description, a set of file "
795 "descriptors or UNIX credentials. For instance, control messages can be used "
796 "to send additional header fields such as IP options. Ancillary data is sent "
797 "by calling B<sendmsg>(2) and received by calling B<recvmsg>(2). See their "
798 "manual pages for more information."
802 #: build/C/man3/cmsg.3:62
804 "Ancillary data is a sequence of I<struct cmsghdr> structures with appended "
805 "data. This sequence should be accessed using only the macros described in "
806 "this manual page and never directly. See the specific protocol man pages "
807 "for the available control message types. The maximum ancillary buffer size "
808 "allowed per socket can be set using I</proc/sys/net/core/optmem_max>; see "
813 #: build/C/man3/cmsg.3:69
815 "B<CMSG_FIRSTHDR>() returns a pointer to the first I<cmsghdr> in the "
816 "ancillary data buffer associated with the passed I<msghdr>."
820 #: build/C/man3/cmsg.3:76
822 "B<CMSG_NXTHDR>() returns the next valid I<cmsghdr> after the passed "
823 "I<cmsghdr>. It returns NULL when there isn't enough space left in the "
828 #: build/C/man3/cmsg.3:81
830 "B<CMSG_ALIGN>(), given a length, returns it including the required "
831 "alignment. This is a constant expression."
835 #: build/C/man3/cmsg.3:86
837 "B<CMSG_SPACE>() returns the number of bytes an ancillary element with "
838 "payload of the passed data length occupies. This is a constant expression."
842 #: build/C/man3/cmsg.3:90
843 msgid "B<CMSG_DATA>() returns a pointer to the data portion of a I<cmsghdr>."
847 #: build/C/man3/cmsg.3:101
849 "B<CMSG_LEN>() returns the value to store in the I<cmsg_len> member of the "
850 "I<cmsghdr> structure, taking into account any necessary alignment. It takes "
851 "the data length as an argument. This is a constant expression."
855 #: build/C/man3/cmsg.3:134
857 "To create ancillary data, first initialize the I<msg_controllen> member of "
858 "the I<msghdr> with the length of the control message buffer. Use "
859 "B<CMSG_FIRSTHDR>() on the I<msghdr> to get the first control message and "
860 "B<CMSG_NXTHDR>() to get all subsequent ones. In each control message, "
861 "initialize I<cmsg_len> (with B<CMSG_LEN>()), the other I<cmsghdr> header "
862 "fields, and the data portion using B<CMSG_DATA>(). Finally, the "
863 "I<msg_controllen> field of the I<msghdr> should be set to the sum of the "
864 "B<CMSG_SPACE>() of the length of all control messages in the buffer. For "
865 "more information on the I<msghdr>, see B<recvmsg>(2)."
869 #: build/C/man3/cmsg.3:141
871 "When the control message buffer is too short to store all messages, the "
872 "B<MSG_CTRUNC> flag is set in the I<msg_flags> member of the I<msghdr>."
876 #: build/C/man3/cmsg.3:146
878 "This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite, the "
879 "IPv6 advanced API described in RFC\\ 2292 and SUSv2. B<CMSG_ALIGN>() is a "
884 #: build/C/man3/cmsg.3:146 build/C/man7/ddp.7:226 build/C/man3/endian.3:91 build/C/man3/getaddrinfo.3:600 build/C/man3/getaddrinfo_a.3:308 build/C/man3/gethostbyname.3:341 build/C/man3/getipnodebyname.3:261 build/C/man3/getnameinfo.3:208 build/C/man3/getnetent.3:147 build/C/man2/getpeername.2:105 build/C/man5/host.conf.5:190 build/C/man5/hosts.5:88 build/C/man5/hosts.equiv.5:71 build/C/man7/icmp.7:169 build/C/man3/inet.3:226 build/C/man3/inet_net_pton.3:165 build/C/man3/inet_pton.3:131 build/C/man7/ip.7:1183 build/C/man7/ipv6.7:386 build/C/man7/netdevice.7:341 build/C/man8/nscd.8:60 build/C/man5/nscd.conf.5:232 build/C/man5/nsswitch.conf.5:333 build/C/man7/packet.7:538 build/C/man7/raw.7:187 build/C/man3/setnetgrent.3:103 build/C/man2/shutdown.2:95 build/C/man7/unix.7:490
890 #: build/C/man3/cmsg.3:151
892 "For portability, ancillary data should be accessed using only the macros "
893 "described here. B<CMSG_ALIGN>() is a Linux extension and should not be "
894 "used in portable programs."
898 #: build/C/man3/cmsg.3:161
900 "In Linux, B<CMSG_LEN>(), B<CMSG_DATA>(), and B<CMSG_ALIGN>() are constant "
901 "expressions (assuming their argument is constant); this could be used to "
902 "declare the size of global variables. This may not be portable, however."
906 #: build/C/man3/cmsg.3:161 build/C/man3/endian.3:107 build/C/man5/gai.conf.5:74 build/C/man3/getaddrinfo.3:623 build/C/man3/getaddrinfo_a.3:314 build/C/man3/getnameinfo.3:243 build/C/man3/getprotoent_r.3:135 build/C/man3/getservent_r.3:134 build/C/man5/hosts.5:107 build/C/man3/inet.3:262 build/C/man3/inet_net_pton.3:247 build/C/man3/inet_ntop.3:115 build/C/man3/inet_pton.3:156 build/C/man5/nss.5:100 build/C/man7/unix.7:608
912 #: build/C/man3/cmsg.3:165
913 msgid "This code looks for the B<IP_TTL> option in a received ancillary buffer:"
917 #: build/C/man3/cmsg.3:172
920 "struct msghdr msgh;\n"
921 "struct cmsghdr *cmsg;\n"
923 "int received_ttl;\n"
927 #: build/C/man3/cmsg.3:189
930 "/* Receive auxiliary data in msgh */\n"
931 "for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;\n"
932 " cmsg = CMSG_NXTHDR(&msgh,cmsg)) {\n"
933 " if (cmsg-E<gt>cmsg_level == IPPROTO_IP\n"
934 " && cmsg-E<gt>cmsg_type == IP_TTL) {\n"
935 " ttlptr = (int *) CMSG_DATA(cmsg);\n"
936 " received_ttl = *ttlptr;\n"
940 "if (cmsg == NULL) {\n"
942 " * Error: IP_TTL not enabled or small buffer\n"
949 #: build/C/man3/cmsg.3:195
951 "The code below passes an array of file descriptors over a UNIX domain socket "
952 "using B<SCM_RIGHTS>:"
956 #: build/C/man3/cmsg.3:208
959 "struct msghdr msg = {0};\n"
960 "struct cmsghdr *cmsg;\n"
961 "int myfds[NUM_FD]; /* Contains the file descriptors to pass. */\n"
963 " /* ancillary data buffer, wrapped in a union in order to ensure it is\n"
964 " suitably aligned */\n"
965 " char buf[CMSG_SPACE(sizeof myfds)];\n"
966 " struct cmsghdr align;\n"
972 #: build/C/man3/cmsg.3:220
975 "msg.msg_control = u.buf;\n"
976 "msg.msg_controllen = sizeof u.buf;\n"
977 "cmsg = CMSG_FIRSTHDR(&msg);\n"
978 "cmsg-E<gt>cmsg_level = SOL_SOCKET;\n"
979 "cmsg-E<gt>cmsg_type = SCM_RIGHTS;\n"
980 "cmsg-E<gt>cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD);\n"
981 "/* Initialize the payload: */\n"
982 "fdptr = (int *) CMSG_DATA(cmsg);\n"
983 "memcpy(fdptr, myfds, NUM_FD * sizeof(int));\n"
984 "/* Sum of the length of all control messages in the buffer: */\n"
985 "msg.msg_controllen = cmsg-E<gt>cmsg_len;\n"
989 #: build/C/man3/cmsg.3:225
990 msgid "B<recvmsg>(2), B<sendmsg>(2)"
994 #: build/C/man3/cmsg.3:227
999 #: build/C/man7/ddp.7:12
1005 #: build/C/man7/ddp.7:12
1011 #: build/C/man7/ddp.7:15
1012 msgid "ddp - Linux AppleTalk protocol implementation"
1016 #: build/C/man7/ddp.7:19
1017 msgid "B<#include E<lt>netatalk/at.hE<gt>>"
1021 #: build/C/man7/ddp.7:21
1022 msgid "I<ddp_socket>B< = socket(AF_APPLETALK, SOCK_DGRAM, 0);>"
1026 #: build/C/man7/ddp.7:23
1027 msgid "I<raw_socket>B< = socket(AF_APPLETALK, SOCK_RAW, >I<protocol>B<);>"
1031 #: build/C/man7/ddp.7:34
1033 "Linux implements the AppleTalk protocols described in I<Inside AppleTalk>. "
1034 "Only the DDP layer and AARP are present in the kernel. They are designed to "
1035 "be used via the B<netatalk> protocol libraries. This page documents the "
1036 "interface for those who wish or need to use the DDP layer directly."
1040 #: build/C/man7/ddp.7:39
1042 "The communication between AppleTalk and the user program works using a "
1043 "BSD-compatible socket interface. For more information on sockets, see "
1048 #: build/C/man7/ddp.7:60
1050 "An AppleTalk socket is created by calling the B<socket>(2) function with a "
1051 "B<AF_APPLETALK> socket family argument. Valid socket types are "
1052 "B<SOCK_DGRAM> to open a B<ddp> socket or B<SOCK_RAW> to open a B<raw> "
1053 "socket. I<protocol> is the AppleTalk protocol to be received or sent. For "
1054 "B<SOCK_RAW> you must specify B<ATPROTO_DDP>."
1058 #: build/C/man7/ddp.7:65
1060 "Raw sockets may be opened only by a process with effective user ID 0 or when "
1061 "the process has the B<CAP_NET_RAW> capability."
1065 #: build/C/man7/ddp.7:65 build/C/man7/ip.7:123 build/C/man7/ipv6.7:142 build/C/man7/raw.7:93 build/C/man7/udp.7:98 build/C/man7/udplite.7:58 build/C/man7/unix.7:57
1067 msgid "Address format"
1071 #: build/C/man7/ddp.7:68
1073 "An AppleTalk socket address is defined as a combination of a network number, "
1074 "a node number, and a port number."
1078 #: build/C/man7/ddp.7:75
1081 "struct at_addr {\n"
1082 " unsigned short s_net;\n"
1083 " unsigned char s_node;\n"
1088 #: build/C/man7/ddp.7:81
1091 "struct sockaddr_atalk {\n"
1092 " sa_family_t sat_family; /* address family */\n"
1093 " unsigned char sat_port; /* port */\n"
1094 " struct at_addr sat_addr; /* net/node */\n"
1098 #. FIXME . this doesn't make sense [johnl]
1100 #: build/C/man7/ddp.7:120
1102 "I<sat_family> is always set to B<AF_APPLETALK>. I<sat_port> contains the "
1103 "port. The port numbers below 129 are known as I<reserved ports>. Only "
1104 "processes with the effective user ID 0 or the B<CAP_NET_BIND_SERVICE> "
1105 "capability may B<bind>(2) to these sockets. I<sat_addr> is the host "
1106 "address. The I<net> member of I<struct at_addr> contains the host network "
1107 "in network byte order. The value of B<AT_ANYNET> is a wildcard and also "
1108 "implies \\(lqthis network.\\(rq The I<node> member of I<struct at_addr> "
1109 "contains the host node number. The value of B<AT_ANYNODE> is a wildcard and "
1110 "also implies \\(lqthis node.\\(rq The value of B<ATADDR_BCAST> is a link "
1111 "local broadcast address."
1115 #: build/C/man7/ddp.7:120 build/C/man7/ip.7:224 build/C/man7/ipv6.7:192 build/C/man7/packet.7:180 build/C/man7/raw.7:109 build/C/man7/tcp.7:889 build/C/man7/udp.7:178 build/C/man7/udplite.7:67 build/C/man7/unix.7:220 build/C/man7/x25.7:72
1117 msgid "Socket options"
1121 #: build/C/man7/ddp.7:122
1122 msgid "No protocol-specific socket options are supported."
1126 #: build/C/man7/ddp.7:128
1128 "IP supports a set of I</proc> interfaces to configure some global AppleTalk "
1129 "parameters. The parameters can be accessed by reading or writing files in "
1130 "the directory I</proc/sys/net/atalk/>."
1134 #: build/C/man7/ddp.7:128
1136 msgid "I<aarp-expiry-time>"
1140 #: build/C/man7/ddp.7:131
1141 msgid "The time interval (in seconds) before an AARP cache entry expires."
1145 #: build/C/man7/ddp.7:131
1147 msgid "I<aarp-resolve-time>"
1151 #: build/C/man7/ddp.7:134
1152 msgid "The time interval (in seconds) before an AARP cache entry is resolved."
1156 #: build/C/man7/ddp.7:134
1158 msgid "I<aarp-retransmit-limit>"
1162 #: build/C/man7/ddp.7:138
1164 "The number of retransmissions of an AARP query before the node is declared "
1169 #: build/C/man7/ddp.7:138
1171 msgid "I<aarp-tick-time>"
1175 #: build/C/man7/ddp.7:141
1176 msgid "The timer rate (in seconds) for the timer driving AARP."
1180 #: build/C/man7/ddp.7:144
1182 "The default values match the specification and should never need to be "
1186 #. FIXME . Add a section about multicasting
1188 #: build/C/man7/ddp.7:149
1189 msgid "All ioctls described in B<socket>(7) apply to DDP."
1193 #: build/C/man7/ddp.7:149 build/C/man3/gethostbyname.3:292 build/C/man3/getnetent_r.3:129 build/C/man2/getpeername.2:73 build/C/man3/getprotoent_r.3:119 build/C/man3/getservent_r.3:118 build/C/man3/inet_net_pton.3:145 build/C/man3/inet_ntop.3:91 build/C/man7/ip.7:1092 build/C/man7/ipv6.7:351 build/C/man7/packet.7:496 build/C/man7/raw.7:144 build/C/man2/shutdown.2:74 build/C/man7/tcp.7:1226 build/C/man7/udp.7:241 build/C/man7/udplite.7:121 build/C/man7/unix.7:405
1199 #: build/C/man7/ddp.7:153 build/C/man7/ip.7:1096 build/C/man7/raw.7:145
1205 #: build/C/man7/ddp.7:160
1207 "The user tried to execute an operation without the necessary permissions. "
1208 "These include sending to a broadcast address without having the broadcast "
1209 "flag set, and trying to bind to a reserved port without effective user ID 0 "
1210 "or B<CAP_NET_BIND_SERVICE>."
1214 #: build/C/man7/ddp.7:160 build/C/man7/ip.7:1112 build/C/man7/unix.7:406
1216 msgid "B<EADDRINUSE>"
1220 #: build/C/man7/ddp.7:163 build/C/man7/ip.7:1115
1221 msgid "Tried to bind to an address already in use."
1225 #: build/C/man7/ddp.7:163 build/C/man7/ip.7:1115 build/C/man7/packet.7:497
1227 msgid "B<EADDRNOTAVAIL>"
1231 #: build/C/man7/ddp.7:167 build/C/man7/ip.7:1119
1233 "A nonexistent interface was requested or the requested source address was "
1238 #: build/C/man7/ddp.7:167 build/C/man7/ip.7:1119
1244 #: build/C/man7/ddp.7:170 build/C/man7/ip.7:1122
1245 msgid "Operation on a nonblocking socket would block."
1249 #: build/C/man7/ddp.7:170 build/C/man7/ip.7:1122
1255 #: build/C/man7/ddp.7:173
1256 msgid "A connection operation on a nonblocking socket is already in progress."
1260 #: build/C/man7/ddp.7:173 build/C/man7/ip.7:1125
1262 msgid "B<ECONNABORTED>"
1266 #: build/C/man7/ddp.7:177 build/C/man7/ip.7:1129
1267 msgid "A connection was closed during an B<accept>(2)."
1271 #: build/C/man7/ddp.7:177 build/C/man7/ip.7:1129
1273 msgid "B<EHOSTUNREACH>"
1277 #: build/C/man7/ddp.7:180
1278 msgid "No routing table entry matches the destination address."
1282 #: build/C/man7/ddp.7:180 build/C/man2/getpeername.2:85 build/C/man7/ip.7:1134 build/C/man7/packet.7:503 build/C/man7/raw.7:152 build/C/man2/shutdown.2:79 build/C/man7/unix.7:422
1288 #: build/C/man7/ddp.7:183
1289 msgid "Invalid argument passed."
1293 #: build/C/man7/ddp.7:183 build/C/man7/ip.7:1140 build/C/man7/unix.7:431
1299 #: build/C/man7/ddp.7:187 build/C/man7/ip.7:1144
1300 msgid "B<connect>(2) was called on an already connected socket."
1304 #: build/C/man7/ddp.7:187 build/C/man3/inet_net_pton.3:151 build/C/man7/ip.7:1144 build/C/man7/packet.7:506 build/C/man7/raw.7:155
1310 #: build/C/man7/ddp.7:190
1311 msgid "Datagram is bigger than the DDP MTU."
1315 #: build/C/man7/ddp.7:190 build/C/man7/ipv6.7:352 build/C/man7/packet.7:515
1321 #: build/C/man7/ddp.7:193
1322 msgid "Network device not available or not capable of sending IP."
1326 #: build/C/man7/ddp.7:193 build/C/man3/getnetent_r.3:130 build/C/man3/getprotoent_r.3:120 build/C/man3/getservent_r.3:119 build/C/man3/inet_net_pton.3:154 build/C/man7/ip.7:1152 build/C/man7/packet.7:518 build/C/man7/unix.7:436
1332 #: build/C/man7/ddp.7:197 build/C/man7/ip.7:1156
1333 msgid "B<SIOCGSTAMP> was called on a socket where no packet arrived."
1337 #: build/C/man7/ddp.7:197
1339 msgid "B<ENOMEM> and B<ENOBUFS>"
1343 #: build/C/man7/ddp.7:200
1344 msgid "Not enough memory available."
1348 #: build/C/man7/ddp.7:200 build/C/man7/ip.7:1156
1354 #: build/C/man7/ddp.7:203 build/C/man7/ip.7:1159
1355 msgid "A kernel subsystem was not configured."
1359 #: build/C/man7/ddp.7:203 build/C/man7/ip.7:1159
1361 msgid "B<ENOPROTOOPT> and B<EOPNOTSUPP>"
1365 #: build/C/man7/ddp.7:206 build/C/man7/ip.7:1162
1366 msgid "Invalid socket option passed."
1370 #: build/C/man7/ddp.7:206 build/C/man2/getpeername.2:93 build/C/man7/ip.7:1162 build/C/man7/packet.7:521 build/C/man2/shutdown.2:84 build/C/man7/unix.7:444
1376 #: build/C/man7/ddp.7:210 build/C/man7/ip.7:1166
1378 "The operation is defined only on a connected socket, but the socket wasn't "
1383 #: build/C/man7/ddp.7:210 build/C/man7/ip.7:1166 build/C/man7/packet.7:527 build/C/man7/raw.7:166 build/C/man7/unix.7:451
1389 #: build/C/man7/ddp.7:215
1391 "User doesn't have permission to set high priority, make a configuration "
1392 "change, or send signals to the requested process or group."
1396 #: build/C/man7/ddp.7:215 build/C/man7/ip.7:1170 build/C/man7/tcp.7:1233 build/C/man7/unix.7:455
1402 #: build/C/man7/ddp.7:218 build/C/man7/ip.7:1173
1403 msgid "The connection was unexpectedly closed or shut down by the other end."
1407 #: build/C/man7/ddp.7:218 build/C/man7/ip.7:1173 build/C/man7/unix.7:477
1409 msgid "B<ESOCKTNOSUPPORT>"
1413 #: build/C/man7/ddp.7:221
1414 msgid "The socket was unconfigured, or an unknown socket type was requested."
1418 #: build/C/man7/ddp.7:226
1420 "AppleTalk is supported by Linux 2.0 or higher. The I</proc> interfaces "
1421 "exist since Linux 2.2."
1425 #: build/C/man7/ddp.7:232
1427 "Be very careful with the B<SO_BROADCAST> option - it is not privileged in "
1428 "Linux. It is easy to overload the network with careless sending to "
1429 "broadcast addresses."
1433 #: build/C/man7/ddp.7:232 build/C/man7/ip.7:1232 build/C/man7/packet.7:569
1435 msgid "Compatibility"
1439 #: build/C/man7/ddp.7:239
1441 "The basic AppleTalk socket interface is compatible with B<netatalk> on "
1442 "BSD-derived systems. Many BSD systems fail to check B<SO_BROADCAST> when "
1443 "sending broadcast frames; this can lead to compatibility problems."
1447 #: build/C/man7/ddp.7:244
1449 "The raw socket mode is unique to Linux and exists to support the alternative "
1450 "CAP package and AppleTalk monitoring tools more easily."
1454 #: build/C/man7/ddp.7:246 build/C/man7/ip.7:1247
1455 msgid "There are too many inconsistent error values."
1459 #: build/C/man7/ddp.7:249
1461 "The ioctls used to configure routing tables, devices, AARP tables and other "
1462 "devices are not yet described."
1466 #: build/C/man7/ddp.7:254
1467 msgid "B<recvmsg>(2), B<sendmsg>(2), B<capabilities>(7), B<socket>(7)"
1471 #: build/C/man3/endian.3:28
1477 #: build/C/man3/endian.3:28 build/C/man3/getnetent_r.3:26 build/C/man3/getprotoent_r.3:26 build/C/man3/getservent_r.3:26
1483 #: build/C/man3/endian.3:33
1485 "htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh, "
1486 "htobe64, htole64, be64toh, le64toh - convert values between host and "
1487 "big-/little-endian byte order"
1491 #: build/C/man3/endian.3:37
1494 "B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
1495 "B<#include E<lt>endian.hE<gt>>\n"
1499 #: build/C/man3/endian.3:42
1502 "B<uint16_t htobe16(uint16_t >I<host_16bits>B<);>\n"
1503 "B<uint16_t htole16(uint16_t >I<host_16bits>B<);>\n"
1504 "B<uint16_t be16toh(uint16_t >I<big_endian_16bits>B<);>\n"
1505 "B<uint16_t le16toh(uint16_t >I<little_endian_16bits>B<);>\n"
1509 #: build/C/man3/endian.3:47
1512 "B<uint32_t htobe32(uint32_t >I<host_32bits>B<);>\n"
1513 "B<uint32_t htole32(uint32_t >I<host_32bits>B<);>\n"
1514 "B<uint32_t be32toh(uint32_t >I<big_endian_32bits>B<);>\n"
1515 "B<uint32_t le32toh(uint32_t >I<little_endian_32bits>B<);>\n"
1519 #: build/C/man3/endian.3:52
1522 "B<uint64_t htobe64(uint64_t >I<host_64bits>B<);>\n"
1523 "B<uint64_t htole64(uint64_t >I<host_64bits>B<);>\n"
1524 "B<uint64_t be64toh(uint64_t >I<big_endian_64bits>B<);>\n"
1525 "B<uint64_t le64toh(uint64_t >I<little_endian_64bits>B<);>\n"
1529 #: build/C/man3/endian.3:57
1531 "These functions convert the byte encoding of integer values from the byte "
1532 "order that the current CPU (the \"host\") uses, to and from little-endian "
1533 "and big-endian byte order."
1537 #: build/C/man3/endian.3:62
1539 "The number, I<nn>, in the name of each function indicates the size of "
1540 "integer handled by the function, either 16, 32, or 64 bits."
1544 #: build/C/man3/endian.3:65
1546 "The functions with names of the form \"htobeI<nn>\" convert from host byte "
1547 "order to big-endian order."
1551 #: build/C/man3/endian.3:68
1553 "The functions with names of the form \"htoleI<nn>\" convert from host byte "
1554 "order to little-endian order."
1558 #: build/C/man3/endian.3:71
1560 "The functions with names of the form \"beI<nn>toh\" convert from big-endian "
1561 "order to host byte order."
1565 #: build/C/man3/endian.3:74
1567 "The functions with names of the form \"leI<nn>toh\" convert from "
1568 "little-endian order to host byte order."
1572 #: build/C/man3/endian.3:76
1573 msgid "These functions were added to glibc in version 2.9."
1577 #: build/C/man3/endian.3:91
1579 "These functions are nonstandard. Similar functions are present on the BSDs, "
1580 "where the required header file is I<E<lt>sys/endian.hE<gt>> instead of "
1581 "I<E<lt>endian.hE<gt>>. Unfortunately, NetBSD, FreeBSD, and glibc haven't "
1582 "followed the original OpenBSD naming convention for these functions, whereby "
1583 "the I<nn> component always appears at the end of the function name (thus, "
1584 "for example, in NetBSD, FreeBSD, and glibc, the equivalent of OpenBSDs "
1585 "\"betoh32\" is \"be32toh\")."
1589 #: build/C/man3/endian.3:99
1591 "These functions are similar to the older B<byteorder>(3) family of "
1592 "functions. For example, B<be32toh>() is identical to B<ntohl>()."
1596 #: build/C/man3/endian.3:107
1598 "The advantage of the B<byteorder>(3) functions is that they are standard "
1599 "functions available on all UNIX systems. On the other hand, the fact that "
1600 "they were designed for use in the context of TCP/IP means that they lack the "
1601 "64-bit and little-endian variants described in this page."
1605 #: build/C/man3/endian.3:114
1607 "The program below display the results of converting an integer from host "
1608 "byte order to both little-endian and big-endian byte order. Since host byte "
1609 "order is either little-endian or big-endian, only one of these conversions "
1610 "will have an effect. When we run this program on a little-endian system "
1611 "such as x86-32, we see the following:"
1615 #: build/C/man3/endian.3:121
1619 "x.u32 = 0x44332211\n"
1620 "htole32(x.u32) = 0x44332211\n"
1621 "htobe32(x.u32) = 0x11223344\n"
1625 #: build/C/man3/endian.3:123 build/C/man3/getprotoent_r.3:162 build/C/man3/getservent_r.3:160 build/C/man3/inet.3:278 build/C/man3/inet_net_pton.3:331 build/C/man3/inet_pton.3:173
1627 msgid "Program source"
1631 #: build/C/man3/endian.3:130
1634 "#include E<lt>endian.hE<gt>\n"
1635 "#include E<lt>stdint.hE<gt>\n"
1636 "#include E<lt>stdio.hE<gt>\n"
1637 "#include E<lt>stdlib.hE<gt>\n"
1641 #: build/C/man3/endian.3:138
1645 "main(int argc, char *argv[])\n"
1649 " uint8_t arr[4];\n"
1654 #: build/C/man3/endian.3:143
1657 " x.arr[0] = 0x11;\t/* Lowest-address byte */\n"
1658 " x.arr[1] = 0x22;\n"
1659 " x.arr[2] = 0x33;\n"
1660 " x.arr[3] = 0x44;\t/* Highest-address byte */\n"
1664 #: build/C/man3/endian.3:147
1667 " printf(\"x.u32 = 0x%x\\en\", x.u32);\n"
1668 " printf(\"htole32(x.u32) = 0x%x\\en\", htole32(x.u32));\n"
1669 " printf(\"htobe32(x.u32) = 0x%x\\en\", htobe32(x.u32));\n"
1673 #: build/C/man3/endian.3:150 build/C/man3/getaddrinfo.3:827 build/C/man3/getprotoent_r.3:236 build/C/man3/getservent_r.3:240 build/C/man3/inet_net_pton.3:389 build/C/man3/inet_pton.3:214
1676 " exit(EXIT_SUCCESS);\n"
1681 #: build/C/man3/endian.3:153
1682 msgid "B<byteorder>(3)"
1686 #: build/C/man3/ether_aton.3:31
1692 #: build/C/man3/ether_aton.3:31 build/C/man7/udplite.7:27
1698 #: build/C/man3/ether_aton.3:35
1700 "ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line, "
1701 "ether_ntoa_r, ether_aton_r - Ethernet address manipulation routines"
1705 #: build/C/man3/ether_aton.3:38
1707 msgid "B<#include E<lt>netinet/ether.hE<gt>>\n"
1711 #: build/C/man3/ether_aton.3:40
1713 msgid "B<char *ether_ntoa(const struct ether_addr *>I<addr>B<);>\n"
1717 #: build/C/man3/ether_aton.3:42
1719 msgid "B<struct ether_addr *ether_aton(const char *>I<asc>B<);>\n"
1723 #: build/C/man3/ether_aton.3:44
1726 "B<int ether_ntohost(char *>I<hostname>B<, const struct ether_addr "
1731 #: build/C/man3/ether_aton.3:46
1734 "B<int ether_hostton(const char *>I<hostname>B<, struct ether_addr "
1739 #: build/C/man3/ether_aton.3:49
1742 "B<int ether_line(const char *>I<line>B<, struct ether_addr *>I<addr>B<,>\n"
1743 "B< char *>I<hostname>B<);>\n"
1747 #: build/C/man3/ether_aton.3:51 build/C/man3/gethostbyname.3:70
1749 msgid "/* GNU extensions */\n"
1753 #: build/C/man3/ether_aton.3:53
1756 "B<char *ether_ntoa_r(const struct ether_addr *>I<addr>B<, char "
1761 #: build/C/man3/ether_aton.3:56
1764 "B<struct ether_addr *ether_aton_r(const char *>I<asc>B<,>\n"
1765 "B< struct ether_addr *>I<addr>B<);>\n"
1769 #: build/C/man3/ether_aton.3:67
1771 "B<ether_aton>() converts the 48-bit Ethernet host address I<asc> from the "
1772 "standard hex-digits-and-colons notation into binary data in network byte "
1773 "order and returns a pointer to it in a statically allocated buffer, which "
1774 "subsequent calls will overwrite. B<ether_aton>() returns NULL if the "
1775 "address is invalid."
1779 #: build/C/man3/ether_aton.3:76
1781 "The B<ether_ntoa>() function converts the Ethernet host address I<addr> "
1782 "given in network byte order to a string in standard hex-digits-and-colons "
1783 "notation, omitting leading zeros. The string is returned in a statically "
1784 "allocated buffer, which subsequent calls will overwrite."
1788 #: build/C/man3/ether_aton.3:83
1790 "The B<ether_ntohost>() function maps an Ethernet address to the "
1791 "corresponding hostname in I</etc/ethers> and returns nonzero if it cannot be "
1796 #: build/C/man3/ether_aton.3:90
1798 "The B<ether_hostton>() function maps a hostname to the corresponding "
1799 "Ethernet address in I</etc/ethers> and returns nonzero if it cannot be "
1804 #: build/C/man3/ether_aton.3:102
1806 "The B<ether_line>() function parses a line in I</etc/ethers> format "
1807 "(ethernet address followed by whitespace followed by hostname; \\(aq#\\(aq "
1808 "introduces a comment) and returns an address and hostname pair, or nonzero "
1809 "if it cannot be parsed. The buffer pointed to by I<hostname> must be "
1810 "sufficiently long, for example, have the same length as I<line>."
1814 #: build/C/man3/ether_aton.3:113
1816 "The functions B<ether_ntoa_r>() and B<ether_aton_r>() are reentrant "
1817 "thread-safe versions of B<ether_ntoa>() and B<ether_aton>() respectively, "
1818 "and do not use static buffers."
1822 #: build/C/man3/ether_aton.3:119
1823 msgid "The structure I<ether_addr> is defined in I<E<lt>net/ethernet.hE<gt>> as:"
1827 #: build/C/man3/ether_aton.3:125
1830 "struct ether_addr {\n"
1831 " uint8_t ether_addr_octet[6];\n"
1836 #: build/C/man3/ether_aton.3:130
1837 msgid "For an explanation of the terms used in this section, see B<attributes>(7)."
1841 #: build/C/man3/ether_aton.3:135
1843 msgid "Interface\tAttribute\tValue\n"
1847 #: build/C/man3/ether_aton.3:136 build/C/man3/ether_aton.3:140
1853 #: build/C/man3/ether_aton.3:137
1855 msgid "B<ether_aton>(),\n"
1859 #: build/C/man3/ether_aton.3:138
1861 msgid "B<ether_ntoa>()\n"
1865 #: build/C/man3/ether_aton.3:139
1867 msgid "T}\tThread safety\tMT-Unsafe\n"
1871 #: build/C/man3/ether_aton.3:141
1873 msgid "B<ether_ntohost>(),\n"
1877 #: build/C/man3/ether_aton.3:142
1879 msgid "B<ether_hostton>(),\n"
1883 #: build/C/man3/ether_aton.3:143
1885 msgid "B<ether_line>(),\n"
1889 #: build/C/man3/ether_aton.3:144
1891 msgid "B<ether_ntoa_r>(),\n"
1895 #: build/C/man3/ether_aton.3:145
1897 msgid "B<ether_aton_r>()\n"
1901 #: build/C/man3/ether_aton.3:146
1903 msgid "T}\tThread safety\tMT-Safe\n"
1907 #: build/C/man3/ether_aton.3:151
1908 msgid "4.3BSD, SunOS."
1911 #. The fix was presumably commit c0a0f9a32c8baa6ab93d00eb42d92c02e9e146d7
1912 #. which was in glibc 2.3
1914 #: build/C/man3/ether_aton.3:157
1916 "In glibc 2.2.5 and earlier, the implementation of B<ether_line>() is "
1921 #: build/C/man3/ether_aton.3:159
1922 msgid "B<ethers>(5)"
1926 #: build/C/man5/gai.conf.5:19
1932 #: build/C/man5/gai.conf.5:19 build/C/man5/nss.5:19
1938 #: build/C/man5/gai.conf.5:22
1939 msgid "gai.conf - getaddrinfo(3) configuration file"
1943 #: build/C/man5/gai.conf.5:36
1945 "A call to B<getaddrinfo>(3) might return multiple answers. According to "
1946 "RFC\\ 3484 these answers must be sorted so that the answer with the highest "
1947 "success rate is first in the list. The RFC provides an algorithm for the "
1948 "sorting. The static rules are not always adequate, though. For this "
1949 "reason, the RFC also requires that system administrators should have the "
1950 "possibility to dynamically change the sorting. For the glibc "
1951 "implementation, this can be achieved with the I</etc/gai.conf> file."
1955 #: build/C/man5/gai.conf.5:40
1957 "Each line in the configuration file consists of a keyword and its "
1958 "parameters. White spaces in any place are ignored. Lines starting with "
1959 "\\(aq#\\(aq are comments and are ignored."
1963 #: build/C/man5/gai.conf.5:42
1964 msgid "The keywords currently recognized are:"
1968 #: build/C/man5/gai.conf.5:42
1970 msgid "B<label> I<netmask> I<precedence>"
1974 #: build/C/man5/gai.conf.5:51
1976 "The value is added to the label table used in the RFC\\ 3484 sorting. If "
1977 "any B<label> definition is present in the configuration file is present, the "
1978 "default table is not used. All the label definitions of the default table "
1979 "which are to be maintained have to be duplicated. Following the keyword, "
1980 "the line has to contain a network mask and a label value."
1984 #: build/C/man5/gai.conf.5:51
1986 msgid "B<precedence> I<netmask> I<precedence>"
1990 #: build/C/man5/gai.conf.5:58
1992 "This keyword is similar to B<label>, but instead the value is added to the "
1993 "precedence table as specified in RFC\\ 3484. Once again, the presence of a "
1994 "single B<precedence> line in the configuration file causes the default table "
1999 #: build/C/man5/gai.conf.5:58
2001 msgid "B<reload> E<lt>B<yes>|B<no>E<gt>"
2005 #: build/C/man5/gai.conf.5:67
2007 "This keyword controls whether a process checks whether the configuration "
2008 "file has been changed since the last time it was read. If the value is "
2009 "\"B<yes>\", the file is reread. This might cause problems in multithreaded "
2010 "applications and is generally a bad idea. The default is \"B<no>\"."
2014 #: build/C/man5/gai.conf.5:67
2016 msgid "B<scopev4> I<mask> I<value>"
2020 #: build/C/man5/gai.conf.5:72
2022 "Add another rule to the RFC\\ 3484 scope table for IPv4 address. By "
2023 "default, the scope IDs described in section 3.2 in RFC\\ 3438 are used. "
2024 "Changing these defaults should hardly ever be necessary."
2028 #: build/C/man5/gai.conf.5:72 build/C/man3/getaddrinfo.3:593 build/C/man3/gethostbyname.3:307 build/C/man3/getnameinfo.3:197 build/C/man3/getnetent.3:141 build/C/man3/getprotoent.3:134 build/C/man3/getservent.3:153 build/C/man5/host.conf.5:180 build/C/man5/hosts.5:86 build/C/man5/hosts.equiv.5:69 build/C/man5/networks.5:70 build/C/man5/nss.5:98 build/C/man5/nsswitch.conf.5:298 build/C/man5/protocols.5:77 build/C/man5/resolv.conf.5:298 build/C/man3/resolver.3:267 build/C/man5/services.5:185 build/C/man3/setnetgrent.3:88 build/C/man7/udplite.7:126
2034 #: build/C/man5/gai.conf.5:74 build/C/man3/getaddrinfo.3:595
2035 msgid "I</etc/gai.conf>"
2039 #: build/C/man5/gai.conf.5:77
2041 "The default table according to RFC\\ 3484 would be specified with the "
2042 "following configuration file:"
2046 #: build/C/man5/gai.conf.5:89
2051 "label 2002::/16 2\n"
2053 "label ::ffff:0:0/96 4\n"
2054 "precedence ::1/128 50\n"
2055 "precedence ::/0 40\n"
2056 "precedence 2002::/16 30\n"
2057 "precedence ::/96 20\n"
2058 "precedence ::ffff:0:0/96 10\n"
2062 #: build/C/man5/gai.conf.5:96
2063 msgid "B<getaddrinfo>(3), RFC\\ 3484"
2067 #: build/C/man3/getaddrinfo.3:44
2073 #: build/C/man3/getaddrinfo.3:44
2079 #: build/C/man3/getaddrinfo.3:48
2081 "getaddrinfo, freeaddrinfo, gai_strerror - network address and service "
2086 #: build/C/man3/getaddrinfo.3:53 build/C/man3/getipnodebyname.3:35
2089 "B<#include E<lt>sys/types.hE<gt>>\n"
2090 "B<#include E<lt>sys/socket.hE<gt>>\n"
2091 "B<#include E<lt>netdb.hE<gt>>\n"
2095 #: build/C/man3/getaddrinfo.3:57
2098 "B<int getaddrinfo(const char *>I<node>B<, const char *>I<service>B<,>\n"
2099 "B< const struct addrinfo *>I<hints>B<,>\n"
2100 "B< struct addrinfo **>I<res>B<);>\n"
2104 #: build/C/man3/getaddrinfo.3:59
2106 msgid "B<void freeaddrinfo(struct addrinfo *>I<res>B<);>\n"
2110 #: build/C/man3/getaddrinfo.3:61
2112 msgid "B<const char *gai_strerror(int >I<errcode>B<);>\n"
2116 #: build/C/man3/getaddrinfo.3:66 build/C/man3/gethostbyname.3:93 build/C/man3/getnameinfo.3:26 build/C/man3/getnetent_r.3:52 build/C/man3/getprotoent_r.3:49 build/C/man3/getservent_r.3:49 build/C/man3/inet.3:70 build/C/man3/inet_net_pton.3:45 build/C/man3/rcmd.3:81 build/C/man3/setnetgrent.3:34
2117 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
2121 #: build/C/man3/getaddrinfo.3:72
2122 msgid "B<getaddrinfo>(), B<freeaddrinfo>(), B<gai_strerror>():"
2126 #: build/C/man3/getaddrinfo.3:74
2127 msgid "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
2130 #. .BR getipnodebyname (3),
2131 #. .BR getipnodebyaddr (3),
2133 #: build/C/man3/getaddrinfo.3:101
2135 "Given I<node> and I<service>, which identify an Internet host and a service, "
2136 "B<getaddrinfo>() returns one or more I<addrinfo> structures, each of which "
2137 "contains an Internet address that can be specified in a call to B<bind>(2) "
2138 "or B<connect>(2). The B<getaddrinfo>() function combines the functionality "
2139 "provided by the B<gethostbyname>(3) and B<getservbyname>(3) functions into "
2140 "a single interface, but unlike the latter functions, B<getaddrinfo>() is "
2141 "reentrant and allows programs to eliminate IPv4-versus-IPv6 dependencies."
2145 #: build/C/man3/getaddrinfo.3:107
2147 "The I<addrinfo> structure used by B<getaddrinfo>() contains the following "
2152 #: build/C/man3/getaddrinfo.3:120
2155 "struct addrinfo {\n"
2158 " int ai_socktype;\n"
2159 " int ai_protocol;\n"
2160 " socklen_t ai_addrlen;\n"
2161 " struct sockaddr *ai_addr;\n"
2162 " char *ai_canonname;\n"
2163 " struct addrinfo *ai_next;\n"
2168 #: build/C/man3/getaddrinfo.3:142
2170 "The I<hints> argument points to an I<addrinfo> structure that specifies "
2171 "criteria for selecting the socket address structures returned in the list "
2172 "pointed to by I<res>. If I<hints> is not NULL it points to an I<addrinfo> "
2173 "structure whose I<ai_family>, I<ai_socktype>, and I<ai_protocol> specify "
2174 "criteria that limit the set of socket addresses returned by "
2175 "B<getaddrinfo>(), as follows:"
2179 #: build/C/man3/getaddrinfo.3:142
2181 msgid "I<ai_family>"
2185 #: build/C/man3/getaddrinfo.3:158
2187 "This field specifies the desired address family for the returned addresses. "
2188 "Valid values for this field include B<AF_INET> and B<AF_INET6>. The value "
2189 "B<AF_UNSPEC> indicates that B<getaddrinfo>() should return socket addresses "
2190 "for any address family (either IPv4 or IPv6, for example) that can be used "
2191 "with I<node> and I<service>."
2195 #: build/C/man3/getaddrinfo.3:158
2197 msgid "I<ai_socktype>"
2201 #: build/C/man3/getaddrinfo.3:167
2203 "This field specifies the preferred socket type, for example B<SOCK_STREAM> "
2204 "or B<SOCK_DGRAM>. Specifying 0 in this field indicates that socket "
2205 "addresses of any type can be returned by B<getaddrinfo>()."
2209 #: build/C/man3/getaddrinfo.3:167
2211 msgid "I<ai_protocol>"
2215 #: build/C/man3/getaddrinfo.3:173
2217 "This field specifies the protocol for the returned socket addresses. "
2218 "Specifying 0 in this field indicates that socket addresses with any protocol "
2219 "can be returned by B<getaddrinfo>()."
2223 #: build/C/man3/getaddrinfo.3:173
2229 #: build/C/man3/getaddrinfo.3:177
2231 "This field specifies additional options, described below. Multiple flags "
2232 "are specified by bitwise OR-ing them together."
2236 #: build/C/man3/getaddrinfo.3:181
2238 "All the other fields in the structure pointed to by I<hints> must contain "
2239 "either 0 or a null pointer, as appropriate."
2243 #: build/C/man3/getaddrinfo.3:216
2245 "Specifying I<hints> as NULL is equivalent to setting I<ai_socktype> and "
2246 "I<ai_protocol> to 0; I<ai_family> to B<AF_UNSPEC>; and I<ai_flags> to "
2247 "B<(AI_V4MAPPED\\ |\\ AI_ADDRCONFIG)>. (POSIX specifies different defaults "
2248 "for I<ai_flags>; see NOTES.) I<node> specifies either a numerical network "
2249 "address (for IPv4, numbers-and-dots notation as supported by "
2250 "B<inet_aton>(3); for IPv6, hexadecimal string format as supported by "
2251 "B<inet_pton>(3)), or a network hostname, whose network addresses are looked "
2252 "up and resolved. If I<hints.ai_flags> contains the B<AI_NUMERICHOST> flag, "
2253 "then I<node> must be a numerical network address. The B<AI_NUMERICHOST> "
2254 "flag suppresses any potentially lengthy network host address lookups."
2258 #: build/C/man3/getaddrinfo.3:241
2260 "If the B<AI_PASSIVE> flag is specified in I<hints.ai_flags>, and I<node> is "
2261 "NULL, then the returned socket addresses will be suitable for B<bind>(2)ing "
2262 "a socket that will B<accept>(2) connections. The returned socket address "
2263 "will contain the \"wildcard address\" (B<INADDR_ANY> for IPv4 addresses, "
2264 "B<IN6ADDR_ANY_INIT> for IPv6 address). The wildcard address is used by "
2265 "applications (typically servers) that intend to accept connections on any "
2266 "of the hosts's network addresses. If I<node> is not NULL, then the "
2267 "B<AI_PASSIVE> flag is ignored."
2271 #: build/C/man3/getaddrinfo.3:261
2273 "If the B<AI_PASSIVE> flag is not set in I<hints.ai_flags>, then the returned "
2274 "socket addresses will be suitable for use with B<connect>(2), B<sendto>(2), "
2275 "or B<sendmsg>(2). If I<node> is NULL, then the network address will be set "
2276 "to the loopback interface address (B<INADDR_LOOPBACK> for IPv4 addresses, "
2277 "B<IN6ADDR_LOOPBACK_INIT> for IPv6 address); this is used by applications "
2278 "that intend to communicate with peers running on the same host."
2282 #: build/C/man3/getaddrinfo.3:284
2284 "I<service> sets the port in each returned address structure. If this "
2285 "argument is a service name (see B<services>(5)), it is translated to the "
2286 "corresponding port number. This argument can also be specified as a decimal "
2287 "number, which is simply converted to binary. If I<service> is NULL, then "
2288 "the port number of the returned socket addresses will be left "
2289 "uninitialized. If B<AI_NUMERICSERV> is specified in I<hints.ai_flags> and "
2290 "I<service> is not NULL, then I<service> must point to a string containing a "
2291 "numeric port number. This flag is used to inhibit the invocation of a name "
2292 "resolution service in cases where it is known not to be required."
2296 #: build/C/man3/getaddrinfo.3:290
2297 msgid "Either I<node> or I<service>, but not both, may be NULL."
2301 #: build/C/man3/getaddrinfo.3:306
2303 "The B<getaddrinfo>() function allocates and initializes a linked list of "
2304 "I<addrinfo> structures, one for each network address that matches I<node> "
2305 "and I<service>, subject to any restrictions imposed by I<hints>, and returns "
2306 "a pointer to the start of the list in I<res>. The items in the linked list "
2307 "are linked by the I<ai_next> field."
2311 #: build/C/man3/getaddrinfo.3:328
2313 "There are several reasons why the linked list may have more than one "
2314 "I<addrinfo> structure, including: the network host is multihomed, accessible "
2315 "over multiple protocols (e.g., both B<AF_INET> and B<AF_INET6>); or the same "
2316 "service is available from multiple socket types (one B<SOCK_STREAM> address "
2317 "and another B<SOCK_DGRAM> address, for example). Normally, the application "
2318 "should try using the addresses in the order in which they are returned. The "
2319 "sorting function used within B<getaddrinfo>() is defined in RFC\\ 3484; the "
2320 "order can be tweaked for a particular system by editing I</etc/gai.conf> "
2321 "(available since glibc 2.5)."
2324 #. In glibc prior to 2.3.4, the ai_canonname of each addrinfo
2325 #. structure was set pointing to the canonical name; that was
2326 #. more than POSIX.1-2001 specified, or other implementations provided.
2329 #: build/C/man3/getaddrinfo.3:343
2331 "If I<hints.ai_flags> includes the B<AI_CANONNAME> flag, then the "
2332 "I<ai_canonname> field of the first of the I<addrinfo> structures in the "
2333 "returned list is set to point to the official name of the host."
2337 #: build/C/man3/getaddrinfo.3:347
2339 "The remaining fields of each returned I<addrinfo> structure are initialized "
2344 #: build/C/man3/getaddrinfo.3:347 build/C/man3/getaddrinfo.3:370 build/C/man3/getaddrinfo_a.3:191 build/C/man3/getaddrinfo_a.3:195 build/C/man3/getaddrinfo_a.3:197 build/C/man3/inet_net_pton.3:207 build/C/man3/inet_net_pton.3:213 build/C/man3/inet_net_pton.3:220 build/C/man3/inet_net_pton.3:227 build/C/man3/inet_net_pton.3:234 build/C/man7/ip.7:1001 build/C/man7/ip.7:1004 build/C/man7/ip.7:1007 build/C/man7/ip.7:1010 build/C/man5/nsswitch.conf.5:144 build/C/man5/nsswitch.conf.5:148 build/C/man7/unix.7:95 build/C/man7/unix.7:120 build/C/man7/unix.7:136 build/C/man7/unix.7:162 build/C/man7/unix.7:166 build/C/man7/unix.7:170
2350 #: build/C/man3/getaddrinfo.3:370
2352 "The I<ai_family>, I<ai_socktype>, and I<ai_protocol> fields return the "
2353 "socket creation parameters (i.e., these fields have the same meaning as the "
2354 "corresponding arguments of B<socket>(2)). For example, I<ai_family> might "
2355 "return B<AF_INET> or B<AF_INET6>; I<ai_socktype> might return B<SOCK_DGRAM> "
2356 "or B<SOCK_STREAM>; and I<ai_protocol> returns the protocol for the socket."
2360 #: build/C/man3/getaddrinfo.3:377
2362 "A pointer to the socket address is placed in the I<ai_addr> field, and the "
2363 "length of the socket address, in bytes, is placed in the I<ai_addrlen> "
2368 #: build/C/man3/getaddrinfo.3:396
2370 "If I<hints.ai_flags> includes the B<AI_ADDRCONFIG> flag, then IPv4 addresses "
2371 "are returned in the list pointed to by I<res> only if the local system has "
2372 "at least one IPv4 address configured, and IPv6 addresses are returned only "
2373 "if the local system has at least one IPv6 address configured. The loopback "
2374 "address is not considered for this case as valid as a configured address. "
2375 "This flag is useful on, for example, IPv4-only systems, to ensure that "
2376 "B<getaddrinfo>() does not return IPv6 socket addresses that would always "
2377 "fail in B<connect>(2) or B<bind>(2)."
2381 #: build/C/man3/getaddrinfo.3:421
2383 "If I<hints.ai_flags> specifies the B<AI_V4MAPPED> flag, and "
2384 "I<hints.ai_family> was specified as B<AF_INET6>, and no matching IPv6 "
2385 "addresses could be found, then return IPv4-mapped IPv6 addresses in the list "
2386 "pointed to by I<res>. If both B<AI_V4MAPPED> and B<AI_ALL> are specified in "
2387 "I<hints.ai_flags>, then return both IPv6 and IPv4-mapped IPv6 addresses in "
2388 "the list pointed to by I<res>. B<AI_ALL> is ignored if B<AI_V4MAPPED> is "
2389 "not also specified."
2393 #: build/C/man3/getaddrinfo.3:427
2395 "The B<freeaddrinfo>() function frees the memory that was allocated for the "
2396 "dynamically allocated linked list I<res>."
2400 #: build/C/man3/getaddrinfo.3:427
2402 msgid "Extensions to getaddrinfo() for Internationalized Domain Names"
2406 #: build/C/man3/getaddrinfo.3:436
2408 "Starting with glibc 2.3.4, B<getaddrinfo>() has been extended to "
2409 "selectively allow the incoming and outgoing hostnames to be transparently "
2410 "converted to and from the Internationalized Domain Name (IDN) format (see "
2411 "RFC 3490, I<Internationalizing Domain Names in Applications (IDNA)>). Four "
2412 "new flags are defined:"
2416 #: build/C/man3/getaddrinfo.3:436
2422 #: build/C/man3/getaddrinfo.3:442
2424 "If this flag is specified, then the node name given in I<node> is converted "
2425 "to IDN format if necessary. The source encoding is that of the current "
2429 #. Implementation Detail:
2430 #. To minimize effects on system performance the implementation might
2431 #. want to check whether the input string contains any non-ASCII
2432 #. characters. If there are none the IDN step can be skipped completely.
2433 #. On systems which allow not-ASCII safe encodings for a locale this
2434 #. might be a problem.
2436 #: build/C/man3/getaddrinfo.3:454
2438 "If the input name contains non-ASCII characters, then the IDN encoding is "
2439 "used. Those parts of the node name (delimited by dots) that contain "
2440 "non-ASCII characters are encoded using ASCII Compatible Encoding (ACE) "
2441 "before being passed to the name resolution functions."
2445 #: build/C/man3/getaddrinfo.3:454
2447 msgid "B<AI_CANONIDN>"
2451 #: build/C/man3/getaddrinfo.3:466
2453 "After a successful name lookup, and if the B<AI_CANONNAME> flag was "
2454 "specified, B<getaddrinfo>() will return the canonical name of the node "
2455 "corresponding to the I<addrinfo> structure value passed back. The return "
2456 "value is an exact copy of the value returned by the name resolution "
2461 #. Implementation Detail:
2462 #. If no component of the returned name starts with xn\-\- the IDN
2463 #. step can be skipped, therefore avoiding unnecessary slowdowns.
2465 #: build/C/man3/getaddrinfo.3:479
2467 "If the name is encoded using ACE, then it will contain the I<xn--> prefix "
2468 "for one or more components of the name. To convert these components into a "
2469 "readable form the B<AI_CANONIDN> flag can be passed in addition to "
2470 "B<AI_CANONNAME>. The resulting string is encoded using the current locale's "
2475 #: build/C/man3/getaddrinfo.3:479
2477 msgid "B<AI_IDN_ALLOW_UNASSIGNED>, B<AI_IDN_USE_STD3_ASCII_RULES>"
2481 #: build/C/man3/getaddrinfo.3:486 build/C/man3/getnameinfo.3:139
2483 "Setting these flags will enable the IDNA_ALLOW_UNASSIGNED (allow unassigned "
2484 "Unicode code points) and IDNA_USE_STD3_ASCII_RULES (check output to make "
2485 "sure it is a STD3 conforming hostname) flags respectively to be used in the "
2490 #: build/C/man3/getaddrinfo.3:486 build/C/man3/getaddrinfo_a.3:242 build/C/man3/gethostbyname.3:280 build/C/man3/getipnodebyname.3:186 build/C/man3/getnameinfo.3:139 build/C/man3/getnetent.3:130 build/C/man3/getnetent_r.3:118 build/C/man2/getpeername.2:68 build/C/man3/getprotoent.3:123 build/C/man3/getprotoent_r.3:108 build/C/man3/getservent.3:142 build/C/man3/getservent_r.3:107 build/C/man3/inet_net_pton.3:130 build/C/man3/inet_ntop.3:83 build/C/man3/inet_pton.3:116 build/C/man3/rcmd.3:239 build/C/man3/resolver.3:245 build/C/man3/setnetgrent.3:86 build/C/man2/shutdown.2:69
2492 msgid "RETURN VALUE"
2495 #. FIXME glibc defines the following additional errors, some which
2496 #. can probably be returned by getaddrinfo(); they need to
2499 #. #define EAI_INPROGRESS -100 /* Processing request in progress. */
2500 #. #define EAI_CANCELED -101 /* Request canceled. */
2501 #. #define EAI_NOTCANCELED -102 /* Request not canceled. */
2502 #. #define EAI_ALLDONE -103 /* All requests done. */
2503 #. #define EAI_INTR -104 /* Interrupted by a signal. */
2504 #. #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
2507 #: build/C/man3/getaddrinfo.3:500
2509 "B<getaddrinfo>() returns 0 if it succeeds, or one of the following nonzero "
2514 #: build/C/man3/getaddrinfo.3:500
2516 msgid "B<EAI_ADDRFAMILY>"
2521 #: build/C/man3/getaddrinfo.3:505
2523 "The specified network host does not have any network addresses in the "
2524 "requested address family."
2528 #: build/C/man3/getaddrinfo.3:505 build/C/man3/getaddrinfo_a.3:247 build/C/man3/getaddrinfo_a.3:264 build/C/man3/getnameinfo.3:155
2530 msgid "B<EAI_AGAIN>"
2534 #: build/C/man3/getaddrinfo.3:509
2535 msgid "The name server returned a temporary failure indication. Try again later."
2539 #: build/C/man3/getaddrinfo.3:509 build/C/man3/getnameinfo.3:159
2541 msgid "B<EAI_BADFLAGS>"
2545 #: build/C/man3/getaddrinfo.3:519
2547 "I<hints.ai_flags> contains invalid flags; or, I<hints.ai_flags> included "
2548 "B<AI_CANONNAME> and I<name> was NULL."
2552 #: build/C/man3/getaddrinfo.3:519 build/C/man3/getnameinfo.3:164
2558 #: build/C/man3/getaddrinfo.3:522
2559 msgid "The name server returned a permanent failure indication."
2563 #: build/C/man3/getaddrinfo.3:522 build/C/man3/getnameinfo.3:167
2565 msgid "B<EAI_FAMILY>"
2569 #: build/C/man3/getaddrinfo.3:525
2570 msgid "The requested address family is not supported."
2574 #: build/C/man3/getaddrinfo.3:525 build/C/man3/getaddrinfo_a.3:252 build/C/man3/getnameinfo.3:171
2576 msgid "B<EAI_MEMORY>"
2580 #: build/C/man3/getaddrinfo.3:528 build/C/man3/getaddrinfo_a.3:255 build/C/man3/getnameinfo.3:174 build/C/man7/unix.7:444
2581 msgid "Out of memory."
2585 #: build/C/man3/getaddrinfo.3:528
2587 msgid "B<EAI_NODATA>"
2592 #: build/C/man3/getaddrinfo.3:533
2594 "The specified network host exists, but does not have any network addresses "
2599 #: build/C/man3/getaddrinfo.3:533 build/C/man3/getnameinfo.3:174
2601 msgid "B<EAI_NONAME>"
2605 #: build/C/man3/getaddrinfo.3:550
2607 "The I<node> or I<service> is not known; or both I<node> and I<service> are "
2608 "NULL; or B<AI_NUMERICSERV> was specified in I<hints.ai_flags> and I<service> "
2609 "was not a numeric port-number string."
2613 #: build/C/man3/getaddrinfo.3:550
2615 msgid "B<EAI_SERVICE>"
2619 #: build/C/man3/getaddrinfo.3:571
2621 "The requested service is not available for the requested socket type. It "
2622 "may be available through another socket type. For example, this error could "
2623 "occur if I<service> was \"shell\" (a service available only on stream "
2624 "sockets), and either I<hints.ai_protocol> was B<IPPROTO_UDP>, or "
2625 "I<hints.ai_socktype> was B<SOCK_DGRAM>; or the error could occur if "
2626 "I<service> was not NULL, and I<hints.ai_socktype> was B<SOCK_RAW> (a socket "
2627 "type that does not support the concept of services)."
2631 #: build/C/man3/getaddrinfo.3:571
2633 msgid "B<EAI_SOCKTYPE>"
2637 #: build/C/man3/getaddrinfo.3:583
2639 "The requested socket type is not supported. This could occur, for example, "
2640 "if I<hints.ai_socktype> and I<hints.ai_protocol> are inconsistent (e.g., "
2641 "B<SOCK_DGRAM> and B<IPPROTO_TCP>, respectively)."
2645 #: build/C/man3/getaddrinfo.3:583 build/C/man3/getaddrinfo_a.3:255 build/C/man3/getnameinfo.3:187
2647 msgid "B<EAI_SYSTEM>"
2651 #: build/C/man3/getaddrinfo.3:588
2652 msgid "Other system error, check I<errno> for details."
2656 #: build/C/man3/getaddrinfo.3:593
2658 "The B<gai_strerror>() function translates these error codes to a human "
2659 "readable string, suitable for error reporting."
2663 #: build/C/man3/getaddrinfo.3:600
2664 msgid "POSIX.1-2001. The B<getaddrinfo>() function is documented in RFC\\ 2553."
2668 #: build/C/man3/getaddrinfo.3:605
2670 "B<getaddrinfo>() supports the I<address>B<%>I<scope-id> notation for "
2671 "specifying the IPv6 scope-ID."
2675 #: build/C/man3/getaddrinfo.3:613
2677 "B<AI_ADDRCONFIG>, B<AI_ALL>, and B<AI_V4MAPPED> are available since glibc "
2678 "2.3.3. B<AI_NUMERICSERV> is available since glibc 2.3.4."
2682 #: build/C/man3/getaddrinfo.3:623
2684 "According to POSIX.1-2001, specifying I<hints> as NULL should cause "
2685 "I<ai_flags> to be assumed as 0. The GNU C library instead assumes a value "
2686 "of B<(AI_V4MAPPED\\ |\\ AI_ADDRCONFIG)> for this case, since this value is "
2687 "considered an improvement on the specification."
2690 #. getnameinfo.3 refers to this example
2691 #. socket.2 refers to this example
2692 #. bind.2 refers to this example
2693 #. connect.2 refers to this example
2694 #. recvfrom.2 refers to this example
2695 #. sendto.2 refers to this example
2697 #: build/C/man3/getaddrinfo.3:637
2699 "The following programs demonstrate the use of B<getaddrinfo>(), "
2700 "B<gai_strerror>(), B<freeaddrinfo>(), and B<getnameinfo>(3). The programs "
2701 "are an echo server and client for UDP datagrams."
2705 #: build/C/man3/getaddrinfo.3:637
2707 msgid "Server program"
2711 #: build/C/man3/getaddrinfo.3:647
2714 "#include E<lt>sys/types.hE<gt>\n"
2715 "#include E<lt>stdio.hE<gt>\n"
2716 "#include E<lt>stdlib.hE<gt>\n"
2717 "#include E<lt>unistd.hE<gt>\n"
2718 "#include E<lt>string.hE<gt>\n"
2719 "#include E<lt>sys/socket.hE<gt>\n"
2720 "#include E<lt>netdb.hE<gt>\n"
2724 #: build/C/man3/getaddrinfo.3:649 build/C/man3/getaddrinfo.3:744
2726 msgid "#define BUF_SIZE 500\n"
2730 #: build/C/man3/getaddrinfo.3:660
2734 "main(int argc, char *argv[])\n"
2736 " struct addrinfo hints;\n"
2737 " struct addrinfo *result, *rp;\n"
2739 " struct sockaddr_storage peer_addr;\n"
2740 " socklen_t peer_addr_len;\n"
2742 " char buf[BUF_SIZE];\n"
2746 #: build/C/man3/getaddrinfo.3:665
2749 " if (argc != 2) {\n"
2750 " fprintf(stderr, \"Usage: %s port\\en\", argv[0]);\n"
2751 " exit(EXIT_FAILURE);\n"
2756 #: build/C/man3/getaddrinfo.3:674
2759 " memset(&hints, 0, sizeof(struct addrinfo));\n"
2760 " hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */\n"
2761 " hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */\n"
2762 " hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */\n"
2763 " hints.ai_protocol = 0; /* Any protocol */\n"
2764 " hints.ai_canonname = NULL;\n"
2765 " hints.ai_addr = NULL;\n"
2766 " hints.ai_next = NULL;\n"
2770 #: build/C/man3/getaddrinfo.3:680
2773 " s = getaddrinfo(NULL, argv[1], &hints, &result);\n"
2775 " fprintf(stderr, \"getaddrinfo: %s\\en\", gai_strerror(s));\n"
2776 " exit(EXIT_FAILURE);\n"
2781 #: build/C/man3/getaddrinfo.3:685
2784 " /* getaddrinfo() returns a list of address structures.\n"
2785 " Try each address until we successfully bind(2).\n"
2786 " If socket(2) (or bind(2)) fails, we (close the socket\n"
2787 " and) try the next address. */\n"
2791 #: build/C/man3/getaddrinfo.3:691
2794 " for (rp = result; rp != NULL; rp = rp-E<gt>ai_next) {\n"
2795 " sfd = socket(rp-E<gt>ai_family, rp-E<gt>ai_socktype,\n"
2796 " rp-E<gt>ai_protocol);\n"
2802 #: build/C/man3/getaddrinfo.3:694
2805 " if (bind(sfd, rp-E<gt>ai_addr, rp-E<gt>ai_addrlen) == 0)\n"
2806 " break; /* Success */\n"
2810 #: build/C/man3/getaddrinfo.3:697 build/C/man3/getaddrinfo.3:790
2818 #: build/C/man3/getaddrinfo.3:702
2821 " if (rp == NULL) { /* No address succeeded */\n"
2822 " fprintf(stderr, \"Could not bind\\en\");\n"
2823 " exit(EXIT_FAILURE);\n"
2828 #: build/C/man3/getaddrinfo.3:704 build/C/man3/getaddrinfo.3:797
2830 msgid " freeaddrinfo(result); /* No longer needed */\n"
2834 #: build/C/man3/getaddrinfo.3:706
2836 msgid " /* Read datagrams and echo them back to sender */\n"
2840 #: build/C/man3/getaddrinfo.3:713
2844 " peer_addr_len = sizeof(struct sockaddr_storage);\n"
2845 " nread = recvfrom(sfd, buf, BUF_SIZE, 0,\n"
2846 " (struct sockaddr *) &peer_addr, &peer_addr_len);\n"
2847 " if (nread == -1)\n"
2848 " continue; /* Ignore failed request */\n"
2852 #: build/C/man3/getaddrinfo.3:715
2854 msgid " char host[NI_MAXHOST], service[NI_MAXSERV];\n"
2858 #: build/C/man3/getaddrinfo.3:724
2861 " s = getnameinfo((struct sockaddr *) &peer_addr,\n"
2862 " peer_addr_len, host, NI_MAXHOST,\n"
2863 " service, NI_MAXSERV, NI_NUMERICSERV);\n"
2865 " printf(\"Received %zd bytes from %s:%s\\en\",\n"
2866 " nread, host, service);\n"
2868 " fprintf(stderr, \"getnameinfo: %s\\en\", gai_strerror(s));\n"
2872 #: build/C/man3/getaddrinfo.3:731
2875 " if (sendto(sfd, buf, nread, 0,\n"
2876 " (struct sockaddr *) &peer_addr,\n"
2877 " peer_addr_len) != nread)\n"
2878 " fprintf(stderr, \"Error sending response\\en\");\n"
2884 #: build/C/man3/getaddrinfo.3:732
2886 msgid "Client program"
2890 #: build/C/man3/getaddrinfo.3:742
2893 "#include E<lt>sys/types.hE<gt>\n"
2894 "#include E<lt>sys/socket.hE<gt>\n"
2895 "#include E<lt>netdb.hE<gt>\n"
2896 "#include E<lt>stdio.hE<gt>\n"
2897 "#include E<lt>stdlib.hE<gt>\n"
2898 "#include E<lt>unistd.hE<gt>\n"
2899 "#include E<lt>string.hE<gt>\n"
2903 #: build/C/man3/getaddrinfo.3:754
2907 "main(int argc, char *argv[])\n"
2909 " struct addrinfo hints;\n"
2910 " struct addrinfo *result, *rp;\n"
2914 " char buf[BUF_SIZE];\n"
2918 #: build/C/man3/getaddrinfo.3:759
2921 " if (argc E<lt> 3) {\n"
2922 " fprintf(stderr, \"Usage: %s host port msg...\\en\", argv[0]);\n"
2923 " exit(EXIT_FAILURE);\n"
2928 #: build/C/man3/getaddrinfo.3:761
2930 msgid " /* Obtain address(es) matching host/port */\n"
2934 #: build/C/man3/getaddrinfo.3:767
2937 " memset(&hints, 0, sizeof(struct addrinfo));\n"
2938 " hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */\n"
2939 " hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */\n"
2940 " hints.ai_flags = 0;\n"
2941 " hints.ai_protocol = 0; /* Any protocol */\n"
2945 #: build/C/man3/getaddrinfo.3:773
2948 " s = getaddrinfo(argv[1], argv[2], &hints, &result);\n"
2950 " fprintf(stderr, \"getaddrinfo: %s\\en\", gai_strerror(s));\n"
2951 " exit(EXIT_FAILURE);\n"
2956 #: build/C/man3/getaddrinfo.3:778
2959 " /* getaddrinfo() returns a list of address structures.\n"
2960 " Try each address until we successfully connect(2).\n"
2961 " If socket(2) (or connect(2)) fails, we (close the socket\n"
2962 " and) try the next address. */\n"
2966 #: build/C/man3/getaddrinfo.3:784
2969 " for (rp = result; rp != NULL; rp = rp-E<gt>ai_next) {\n"
2970 " sfd = socket(rp-E<gt>ai_family, rp-E<gt>ai_socktype,\n"
2971 " rp-E<gt>ai_protocol);\n"
2977 #: build/C/man3/getaddrinfo.3:787
2980 " if (connect(sfd, rp-E<gt>ai_addr, rp-E<gt>ai_addrlen) != -1)\n"
2981 " break; /* Success */\n"
2985 #: build/C/man3/getaddrinfo.3:795
2988 " if (rp == NULL) { /* No address succeeded */\n"
2989 " fprintf(stderr, \"Could not connect\\en\");\n"
2990 " exit(EXIT_FAILURE);\n"
2995 #: build/C/man3/getaddrinfo.3:800
2998 " /* Send remaining command-line arguments as separate\n"
2999 " datagrams, and read responses from server */\n"
3003 #: build/C/man3/getaddrinfo.3:804
3006 " for (j = 3; j E<lt> argc; j++) {\n"
3007 " len = strlen(argv[j]) + 1;\n"
3008 " /* +1 for terminating null byte */\n"
3012 #: build/C/man3/getaddrinfo.3:810
3015 " if (len + 1 E<gt> BUF_SIZE) {\n"
3016 " fprintf(stderr,\n"
3017 " \"Ignoring long message in argument %d\\en\", j);\n"
3023 #: build/C/man3/getaddrinfo.3:815
3026 " if (write(sfd, argv[j], len) != len) {\n"
3027 " fprintf(stderr, \"partial/failed write\\en\");\n"
3028 " exit(EXIT_FAILURE);\n"
3033 #: build/C/man3/getaddrinfo.3:821
3036 " nread = read(sfd, buf, BUF_SIZE);\n"
3037 " if (nread == -1) {\n"
3038 " perror(\"read\");\n"
3039 " exit(EXIT_FAILURE);\n"
3044 #: build/C/man3/getaddrinfo.3:824
3047 " printf(\"Received %zd bytes: %s\\en\", nread, buf);\n"
3051 #. .BR getipnodebyaddr (3),
3052 #. .BR getipnodebyname (3),
3054 #: build/C/man3/getaddrinfo.3:838
3056 "B<getaddrinfo_a>(3), B<gethostbyname>(3), B<getnameinfo>(3), B<inet>(3), "
3057 "B<gai.conf>(5), B<hostname>(7), B<ip>(7)"
3061 #: build/C/man3/getaddrinfo_a.3:29
3063 msgid "GETADDRINFO_A"
3067 #: build/C/man3/getaddrinfo_a.3:29 build/C/man3/getnameinfo.3:10 build/C/man3/inet.3:42 build/C/man3/inet_net_pton.3:26 build/C/man3/rcmd.3:43 build/C/man3/resolver.3:32 build/C/man3/rexec.3:41 build/C/man3/setnetgrent.3:10
3073 #: build/C/man3/getaddrinfo_a.3:33
3075 "getaddrinfo_a, gai_suspend, gai_error, gai_cancel - asynchronous network "
3076 "address and service translation"
3080 #: build/C/man3/getaddrinfo_a.3:37
3083 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
3084 "B<#include E<lt>netdb.hE<gt>>\n"
3088 #: build/C/man3/getaddrinfo_a.3:40
3091 "B<int getaddrinfo_a(int >I<mode>B<, struct gaicb *>I<list[]>B<,>\n"
3092 "B< int >I<nitems>B<, struct sigevent *>I<sevp>B<);>\n"
3096 #: build/C/man3/getaddrinfo_a.3:43
3099 "B<int gai_suspend(const struct gaicb * const >I<list[]>B<, int "
3101 "B< const struct timespec *>I<timeout>B<);>\n"
3105 #: build/C/man3/getaddrinfo_a.3:45
3107 msgid "B<int gai_error(struct gaicb *>I<req>B<);>\n"
3111 #: build/C/man3/getaddrinfo_a.3:47
3113 msgid "B<int gai_cancel(struct gaicb *>I<req>B<);>\n"
3117 #: build/C/man3/getaddrinfo_a.3:49
3119 msgid "Link with I<-lanl>.\n"
3123 #: build/C/man3/getaddrinfo_a.3:57
3125 "The B<getaddrinfo_a>() function performs the same task as "
3126 "B<getaddrinfo>(3), but allows multiple name look-ups to be performed "
3127 "asynchronously, with optional notification on completion of look-up "
3132 #: build/C/man3/getaddrinfo_a.3:61
3133 msgid "The I<mode> argument has one of the following values:"
3137 #: build/C/man3/getaddrinfo_a.3:61
3143 #: build/C/man3/getaddrinfo_a.3:65
3145 "Perform the look-ups synchronously. The call blocks until the look-ups have "
3150 #: build/C/man3/getaddrinfo_a.3:65
3152 msgid "B<GAI_NOWAIT>"
3156 #: build/C/man3/getaddrinfo_a.3:73
3158 "Perform the look-ups asynchronously. The call returns immediately, and the "
3159 "requests are resolved in the background. See the discussion of the I<sevp> "
3164 #: build/C/man3/getaddrinfo_a.3:88
3166 "The array I<list> specifies the look-up requests to process. The I<nitems> "
3167 "argument specifies the number of elements in I<list>. The requested look-up "
3168 "operations are started in parallel. NULL elements in I<list> are ignored. "
3169 "Each request is described by a I<gaicb> structure, defined as follows:"
3173 #: build/C/man3/getaddrinfo_a.3:97
3177 " const char *ar_name;\n"
3178 " const char *ar_service;\n"
3179 " const struct addrinfo *ar_request;\n"
3180 " struct addrinfo *ar_result;\n"
3185 #: build/C/man3/getaddrinfo_a.3:128
3187 "The elements of this structure correspond to the arguments of "
3188 "B<getaddrinfo>(3). Thus, I<ar_name> corresponds to the I<node> argument and "
3189 "I<ar_service> to the I<service> argument, identifying an Internet host and a "
3190 "service. The I<ar_request> element corresponds to the I<hints> argument, "
3191 "specifying the criteria for selecting the returned socket address "
3192 "structures. Finally, I<ar_result> corresponds to the I<res> argument; you "
3193 "do not need to initialize this element, it will be automatically set when "
3194 "the request is resolved. The I<addrinfo> structure referenced by the last "
3195 "two elements is described in B<getaddrinfo>(3)."
3199 #: build/C/man3/getaddrinfo_a.3:144
3201 "When I<mode> is specified as B<GAI_NOWAIT>, notifications about resolved "
3202 "requests can be obtained by employing the I<sigevent> structure pointed to "
3203 "by the I<sevp> argument. For the definition and general details of this "
3204 "structure, see B<sigevent>(7). The I<sevp-E<gt>sigev_notify> field can have "
3205 "the following values:"
3209 #: build/C/man3/getaddrinfo_a.3:144
3211 msgid "B<SIGEV_NONE>"
3215 #: build/C/man3/getaddrinfo_a.3:147
3216 msgid "Don't provide any notification."
3220 #: build/C/man3/getaddrinfo_a.3:147
3222 msgid "B<SIGEV_SIGNAL>"
3225 #. si_pid and si_uid are also set, to the values of the calling process,
3226 #. which doesn't provide useful information, so we'll skip mentioning it.
3228 #: build/C/man3/getaddrinfo_a.3:163
3230 "When a look-up completes, generate the signal I<sigev_signo> for the "
3231 "process. See B<sigevent>(7) for general details. The I<si_code> field of "
3232 "the I<siginfo_t> structure will be set to B<SI_ASYNCNL>."
3236 #: build/C/man3/getaddrinfo_a.3:163
3238 msgid "B<SIGEV_THREAD>"
3242 #: build/C/man3/getaddrinfo_a.3:171
3244 "When a look-up completes, invoke I<sigev_notify_function> as if it were the "
3245 "start function of a new thread. See B<sigevent>(7) for details."
3249 #: build/C/man3/getaddrinfo_a.3:180
3251 "For B<SIGEV_SIGNAL> and B<SIGEV_THREAD>, it may be useful to point "
3252 "I<sevp-E<gt>sigev_value.sival_ptr> to I<list>."
3256 #: build/C/man3/getaddrinfo_a.3:191
3258 "The B<gai_suspend>() function suspends execution of the calling thread, "
3259 "waiting for the completion of one or more requests in the array I<list>. "
3260 "The I<nitems> argument specifies the size of the array I<list>. The call "
3261 "blocks until one of the following occurs:"
3265 #: build/C/man3/getaddrinfo_a.3:195
3266 msgid "One or more of the operations in I<list> completes."
3270 #: build/C/man3/getaddrinfo_a.3:197
3271 msgid "The call is interrupted by a signal that is caught."
3275 #: build/C/man3/getaddrinfo_a.3:210
3277 "The time interval specified in I<timeout> elapses. This argument specifies "
3278 "a timeout in seconds plus nanoseconds (see B<nanosleep>(2) for details of "
3279 "the I<timespec> structure). If I<timeout> is NULL, then the call blocks "
3280 "indefinitely (until one of the events above occurs)."
3284 #: build/C/man3/getaddrinfo_a.3:215
3286 "No explicit indication of which request was completed is given; you must "
3287 "determine which request(s) have completed by iterating with B<gai_error>() "
3288 "over the list of requests."
3292 #: build/C/man3/getaddrinfo_a.3:225
3294 "The B<gai_error>() function returns the status of the request I<req>: "
3295 "either B<EAI_INPROGRESS> if the request was not completed yet, 0 if it was "
3296 "handled successfully, or an error code if the request could not be resolved."
3300 #: build/C/man3/getaddrinfo_a.3:242
3302 "The B<gai_cancel>() function cancels the request I<req>. If the request "
3303 "has been canceled successfully, the error status of the request will be set "
3304 "to B<EAI_CANCELLED> and normal asynchronous notification will be performed. "
3305 "The request cannot be canceled if it is currently being processed; in that "
3306 "case, it will be handled as if B<gai_cancel>() has never been called. If "
3307 "I<req> is NULL, an attempt is made to cancel all outstanding requests that "
3308 "the process has made."
3312 #: build/C/man3/getaddrinfo_a.3:247
3314 "The B<getaddrinfo_a>() function returns 0 if all of the requests have been "
3315 "enqueued successfully, or one of the following nonzero error codes:"
3319 #: build/C/man3/getaddrinfo_a.3:252
3321 "The resources necessary to enqueue the look-up requests were not available. "
3322 "The application may check the error status of each request to determine "
3323 "which ones failed."
3327 #: build/C/man3/getaddrinfo_a.3:259
3328 msgid "I<mode> is invalid."
3332 #: build/C/man3/getaddrinfo_a.3:264
3334 "The B<gai_suspend>() function returns 0 if at least one of the listed "
3335 "requests has been completed. Otherwise, it returns one of the following "
3336 "nonzero error codes:"
3340 #: build/C/man3/getaddrinfo_a.3:267
3341 msgid "The given timeout expired before any of the requests could be completed."
3345 #: build/C/man3/getaddrinfo_a.3:267 build/C/man3/getaddrinfo_a.3:297
3347 msgid "B<EAI_ALLDONE>"
3351 #: build/C/man3/getaddrinfo_a.3:270
3352 msgid "There were no actual requests given to the function."
3356 #: build/C/man3/getaddrinfo_a.3:270
3362 #: build/C/man3/getaddrinfo_a.3:275
3364 "A signal has interrupted the function. Note that this interruption might "
3365 "have been caused by signal notification of some completed look-up request."
3369 #: build/C/man3/getaddrinfo_a.3:287
3371 "The B<gai_error>() function can return B<EAI_INPROGRESS> for an unfinished "
3372 "look-up request, 0 for a successfully completed look-up (as described "
3373 "above), one of the error codes that could be returned by B<getaddrinfo>(3), "
3374 "or the error code B<EAI_CANCELLED> if the request has been canceled "
3375 "explicitly before it could be finished."
3379 #: build/C/man3/getaddrinfo_a.3:291
3380 msgid "The B<gai_cancel>() function can return one of these values:"
3384 #: build/C/man3/getaddrinfo_a.3:291
3386 msgid "B<EAI_CANCELLED>"
3390 #: build/C/man3/getaddrinfo_a.3:294
3391 msgid "The request has been canceled successfully."
3395 #: build/C/man3/getaddrinfo_a.3:294
3397 msgid "B<EAI_NOTCANCELLED>"
3401 #: build/C/man3/getaddrinfo_a.3:297
3402 msgid "The request has not been canceled."
3406 #: build/C/man3/getaddrinfo_a.3:300
3407 msgid "The request has already completed."
3411 #: build/C/man3/getaddrinfo_a.3:305 build/C/man3/getnameinfo.3:197
3413 "The B<gai_strerror>(3) function translates these error codes to a human "
3414 "readable string, suitable for error reporting."
3418 #: build/C/man3/getaddrinfo_a.3:308
3420 "These functions are GNU extensions; they first appeared in glibc in version "
3425 #: build/C/man3/getaddrinfo_a.3:314
3427 "The interface of B<getaddrinfo_a>() was modeled after the B<lio_listio>(3) "
3432 #: build/C/man3/getaddrinfo_a.3:318
3434 "Two examples are provided: a simple example that resolves several requests "
3435 "in parallel synchronously, and a complex example showing some of the "
3436 "asynchronous capabilities."
3440 #: build/C/man3/getaddrinfo_a.3:318
3442 msgid "Synchronous example"
3446 #: build/C/man3/getaddrinfo_a.3:323
3448 "The program below simply resolves several hostnames in parallel, giving a "
3449 "speed-up compared to resolving the hostnames sequentially using "
3450 "B<getaddrinfo>(3). The program might be used like this:"
3454 #: build/C/man3/getaddrinfo_a.3:330
3457 "$ B<./a.out ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz>\n"
3458 "ftp.us.kernel.org: 128.30.2.36\n"
3459 "enoent.linuxfoundation.org: Name or service not known\n"
3460 "gnu.cz: 87.236.197.13\n"
3464 #: build/C/man3/getaddrinfo_a.3:334
3465 msgid "Here is the program source code"
3469 #: build/C/man3/getaddrinfo_a.3:341 build/C/man3/getaddrinfo_a.3:430
3472 "#define _GNU_SOURCE\n"
3473 "#include E<lt>netdb.hE<gt>\n"
3474 "#include E<lt>stdio.hE<gt>\n"
3475 "#include E<lt>stdlib.hE<gt>\n"
3476 "#include E<lt>string.hE<gt>\n"
3480 #: build/C/man3/getaddrinfo_a.3:349
3484 "main(int argc, char *argv[])\n"
3487 " struct gaicb *reqs[argc - 1];\n"
3488 " char host[NI_MAXHOST];\n"
3489 " struct addrinfo *res;\n"
3493 #: build/C/man3/getaddrinfo_a.3:354
3496 " if (argc E<lt> 2) {\n"
3497 " fprintf(stderr, \"Usage: %s HOST...\\en\", argv[0]);\n"
3498 " exit(EXIT_FAILURE);\n"
3503 #: build/C/man3/getaddrinfo_a.3:364
3506 " for (i = 0; i E<lt> argc - 1; i++) {\n"
3507 " reqs[i] = malloc(sizeof(*reqs[0]));\n"
3508 " if (reqs[i] == NULL) {\n"
3509 " perror(\"malloc\");\n"
3510 " exit(EXIT_FAILURE);\n"
3512 " memset(reqs[i], 0, sizeof(*reqs[0]));\n"
3513 " reqs[i]-E<gt>ar_name = argv[i + 1];\n"
3518 #: build/C/man3/getaddrinfo_a.3:371
3521 " ret = getaddrinfo_a(GAI_WAIT, reqs, argc - 1, NULL);\n"
3522 " if (ret != 0) {\n"
3523 " fprintf(stderr, \"getaddrinfo_a() failed: %s\\en\",\n"
3524 " gai_strerror(ret));\n"
3525 " exit(EXIT_FAILURE);\n"
3530 #: build/C/man3/getaddrinfo_a.3:377
3533 " for (i = 0; i E<lt> argc - 1; i++) {\n"
3534 " printf(\"%s: \", reqs[i]-E<gt>ar_name);\n"
3535 " ret = gai_error(reqs[i]);\n"
3536 " if (ret == 0) {\n"
3537 " res = reqs[i]-E<gt>ar_result;\n"
3541 #: build/C/man3/getaddrinfo_a.3:387
3544 " ret = getnameinfo(res-E<gt>ai_addr, res-E<gt>ai_addrlen,\n"
3545 " host, sizeof(host),\n"
3546 " NULL, 0, NI_NUMERICHOST);\n"
3547 " if (ret != 0) {\n"
3548 " fprintf(stderr, \"getnameinfo() failed: %s\\en\",\n"
3549 " gai_strerror(ret));\n"
3550 " exit(EXIT_FAILURE);\n"
3556 #: build/C/man3/getaddrinfo_a.3:394
3560 " puts(gai_strerror(ret));\n"
3563 " exit(EXIT_SUCCESS);\n"
3568 #: build/C/man3/getaddrinfo_a.3:395
3570 msgid "Asynchronous example"
3574 #: build/C/man3/getaddrinfo_a.3:400
3576 "This example shows a simple interactive B<getaddrinfo_a>() front-end. The "
3577 "notification facility is not demonstrated."
3581 #: build/C/man3/getaddrinfo_a.3:402
3582 msgid "An example session might look like this:"
3586 #: build/C/man3/getaddrinfo_a.3:419
3590 "E<gt> a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz\n"
3592 "[2] gnu.cz: Request not canceled\n"
3594 "[00] ftp.us.kernel.org: Finished\n"
3596 "[00] ftp.us.kernel.org: 216.165.129.139\n"
3597 "[01] enoent.linuxfoundation.org: Processing request in progress\n"
3598 "[02] gnu.cz: 87.236.197.13\n"
3600 "[00] ftp.us.kernel.org: 216.165.129.139\n"
3601 "[01] enoent.linuxfoundation.org: Name or service not known\n"
3602 "[02] gnu.cz: 87.236.197.13\n"
3606 #: build/C/man3/getaddrinfo_a.3:423
3607 msgid "The program source is as follows:"
3611 #: build/C/man3/getaddrinfo_a.3:433
3614 "static struct gaicb **reqs = NULL;\n"
3615 "static int nreqs = 0;\n"
3619 #: build/C/man3/getaddrinfo_a.3:438
3625 " static char buf[256];\n"
3629 #: build/C/man3/getaddrinfo_a.3:442
3632 " fputs(\"E<gt> \", stdout); fflush(stdout);\n"
3633 " if (fgets(buf, sizeof(buf), stdin) == NULL)\n"
3638 #: build/C/man3/getaddrinfo_a.3:445
3641 " if (buf[strlen(buf) - 1] == \\(aq\\en\\(aq)\n"
3642 " buf[strlen(buf) - 1] = 0;\n"
3646 #: build/C/man3/getaddrinfo_a.3:448
3654 #: build/C/man3/getaddrinfo_a.3:456
3657 "/* Add requests for specified hostnames */\n"
3659 "add_requests(void)\n"
3661 " int nreqs_base = nreqs;\n"
3667 #: build/C/man3/getaddrinfo_a.3:460
3670 " while ((host = strtok(NULL, \" \"))) {\n"
3672 " reqs = realloc(reqs, nreqs * sizeof(reqs[0]));\n"
3676 #: build/C/man3/getaddrinfo_a.3:464
3679 " reqs[nreqs - 1] = calloc(1, sizeof(*reqs[0]));\n"
3680 " reqs[nreqs - 1]-E<gt>ar_name = strdup(host);\n"
3685 #: build/C/man3/getaddrinfo_a.3:466
3687 msgid " /* Queue nreqs_base..nreqs requests. */\n"
3691 #: build/C/man3/getaddrinfo_a.3:475
3694 " ret = getaddrinfo_a(GAI_NOWAIT, &reqs[nreqs_base],\n"
3695 " nreqs - nreqs_base, NULL);\n"
3697 " fprintf(stderr, \"getaddrinfo_a() failed: %s\\en\",\n"
3698 " gai_strerror(ret));\n"
3699 " exit(EXIT_FAILURE);\n"
3705 #: build/C/man3/getaddrinfo_a.3:484
3708 "/* Wait until at least one of specified requests completes */\n"
3710 "wait_requests(void)\n"
3714 " struct gaicb const **wait_reqs = calloc(nreqs, sizeof(*wait_reqs));\n"
3715 " /* NULL elements are ignored by gai_suspend(). */\n"
3719 #: build/C/man3/getaddrinfo_a.3:487 build/C/man3/getaddrinfo_a.3:524
3722 " while ((id = strtok(NULL, \" \")) != NULL) {\n"
3727 #: build/C/man3/getaddrinfo_a.3:492 build/C/man3/getaddrinfo_a.3:529
3730 " if (n E<gt>= nreqs) {\n"
3731 " printf(\"Bad request number: %s\\en\", id);\n"
3737 #: build/C/man3/getaddrinfo_a.3:495
3740 " wait_reqs[n] = reqs[n];\n"
3745 #: build/C/man3/getaddrinfo_a.3:501
3748 " ret = gai_suspend(wait_reqs, nreqs, NULL);\n"
3750 " printf(\"gai_suspend(): %s\\en\", gai_strerror(ret));\n"
3756 #: build/C/man3/getaddrinfo_a.3:505
3759 " for (i = 0; i E<lt> nreqs; i++) {\n"
3760 " if (wait_reqs[i] == NULL)\n"
3765 #: build/C/man3/getaddrinfo_a.3:509
3768 " ret = gai_error(reqs[i]);\n"
3769 " if (ret == EAI_INPROGRESS)\n"
3774 #: build/C/man3/getaddrinfo_a.3:514
3777 " printf(\"[%02d] %s: %s\\en\", i, reqs[i]-E<gt>ar_name,\n"
3778 " ret == 0 ? \"Finished\" : gai_strerror(ret));\n"
3784 #: build/C/man3/getaddrinfo_a.3:521
3787 "/* Cancel specified requests */\n"
3789 "cancel_requests(void)\n"
3796 #: build/C/man3/getaddrinfo_a.3:535
3799 " ret = gai_cancel(reqs[n]);\n"
3800 " printf(\"[%s] %s: %s\\en\", id, reqs[atoi(id)]-E<gt>ar_name,\n"
3801 " gai_strerror(ret));\n"
3807 #: build/C/man3/getaddrinfo_a.3:543
3810 "/* List all requests */\n"
3812 "list_requests(void)\n"
3815 " char host[NI_MAXHOST];\n"
3816 " struct addrinfo *res;\n"
3820 #: build/C/man3/getaddrinfo_a.3:547
3823 " for (i = 0; i E<lt> nreqs; i++) {\n"
3824 " printf(\"[%02d] %s: \", i, reqs[i]-E<gt>ar_name);\n"
3825 " ret = gai_error(reqs[i]);\n"
3829 #: build/C/man3/getaddrinfo_a.3:550
3833 " res = reqs[i]-E<gt>ar_result;\n"
3837 #: build/C/man3/getaddrinfo_a.3:565
3840 " ret = getnameinfo(res-E<gt>ai_addr, res-E<gt>ai_addrlen,\n"
3841 " host, sizeof(host),\n"
3842 " NULL, 0, NI_NUMERICHOST);\n"
3844 " fprintf(stderr, \"getnameinfo() failed: %s\\en\",\n"
3845 " gai_strerror(ret));\n"
3846 " exit(EXIT_FAILURE);\n"
3850 " puts(gai_strerror(ret));\n"
3857 #: build/C/man3/getaddrinfo_a.3:571
3861 "main(int argc, char *argv[])\n"
3868 #: build/C/man3/getaddrinfo_a.3:574
3871 " while ((cmdline = getcmd()) != NULL) {\n"
3872 " cmd = strtok(cmdline, \" \");\n"
3876 #: build/C/man3/getaddrinfo_a.3:599
3879 " if (cmd == NULL) {\n"
3880 " list_requests();\n"
3882 " switch (cmd[0]) {\n"
3883 " case \\(aqa\\(aq:\n"
3884 " add_requests();\n"
3886 " case \\(aqw\\(aq:\n"
3887 " wait_requests();\n"
3889 " case \\(aqc\\(aq:\n"
3890 " cancel_requests();\n"
3892 " case \\(aql\\(aq:\n"
3893 " list_requests();\n"
3896 " fprintf(stderr, \"Bad command: %c\\en\", cmd[0]);\n"
3901 " exit(EXIT_SUCCESS);\n"
3906 #: build/C/man3/getaddrinfo_a.3:607
3908 "B<getaddrinfo>(3), B<inet>(3), B<lio_listio>(3), B<hostname>(7), B<ip>(7), "
3913 #: build/C/man1/getent.1:24
3919 #: build/C/man1/getent.1:24
3925 #: build/C/man1/getent.1:24
3927 msgid "User Commands"
3931 #: build/C/man1/getent.1:27
3932 msgid "getent - get entries from Name Service Switch libraries"
3936 #: build/C/man1/getent.1:30
3937 msgid "B<getent> I<database> [I<key> ...]"
3941 #: build/C/man1/getent.1:45
3943 "The B<getent> command displays entries from databases supported by the Name "
3944 "Service Switch libraries, which are configured in I</etc/nsswitch.conf>. If "
3945 "one or more I<key> arguments are provided, then only the entries that match "
3946 "the supplied keys will be displayed. Otherwise, if no I<key> is provided, "
3947 "all entries will be displayed (unless the database does not support "
3952 #: build/C/man1/getent.1:49
3954 "The I<database> may be any of those supported by the GNU C Library, listed "
3959 #: build/C/man1/getent.1:50
3965 #: build/C/man1/getent.1:71
3967 "When no I<key> is provided, use B<sethostent>(3), B<gethostent>(3), and "
3968 "B<endhostent>(3) to enumerate the hosts database. This is identical to "
3969 "using B<hosts>. When one or more I<key> arguments are provided, pass each "
3970 "I<key> in succession to B<getaddrinfo>(3) with the address family "
3971 "B<AF_UNSPEC>, enumerating each socket address structure returned."
3975 #: build/C/man1/getent.1:71
3981 #: build/C/man1/getent.1:77
3982 msgid "Same as B<ahosts>, but use the address family B<AF_INET>."
3986 #: build/C/man1/getent.1:77
3992 #: build/C/man1/getent.1:88
3994 "Same as B<ahosts>, but use the address family B<AF_INET6>. The call to "
3995 "B<getaddrinfo>(3) in this case includes the B<AI_V4MAPPED> flag."
3999 #: build/C/man1/getent.1:88 build/C/man5/nsswitch.conf.5:44
4005 #: build/C/man1/getent.1:105
4007 "When no I<key> is provided, use B<setaliasent>(3), B<getaliasent>(3), and "
4008 "B<endaliasent>(3) to enumerate the aliases database. When one or more "
4009 "I<key> arguments are provided, pass each I<key> in succession to "
4010 "B<getaliasbyname>(3) and display the result."
4014 #: build/C/man1/getent.1:105 build/C/man5/nsswitch.conf.5:49
4020 #: build/C/man1/getent.1:121
4022 "When one or more I<key> arguments are provided, pass each I<key> in "
4023 "succession to B<ether_aton>(3) and B<ether_hostton>(3) until a result is "
4024 "obtained, and display the result. Enumeration is not supported on "
4025 "B<ethers>, so a I<key> must be provided."
4029 #: build/C/man1/getent.1:121 build/C/man5/nsswitch.conf.5:52
4035 #: build/C/man1/getent.1:142
4037 "When no I<key> is provided, use B<setgrent>(3), B<getgrent>(3), and "
4038 "B<endgrent>(3) to enumerate the group database. When one or more I<key> "
4039 "arguments are provided, pass each numeric I<key> to B<getgrgid>(3) and each "
4040 "nonnumeric I<key> to B<getgrnam>(3) and display the result."
4044 #: build/C/man1/getent.1:142
4050 #: build/C/man1/getent.1:159
4052 "When no I<key> is provided, use B<setsgent>(3), B<getsgent>(3), and "
4053 "B<endsgent>(3) to enumerate the gshadow database. When one or more I<key> "
4054 "arguments are provided, pass each I<key> in succession to B<getsgnam>(3) "
4055 "and display the result."
4059 #: build/C/man1/getent.1:159 build/C/man5/nsswitch.conf.5:57
4065 #: build/C/man1/getent.1:182
4067 "When no I<key> is provided, use B<sethostent>(3), B<gethostent>(3), and "
4068 "B<endhostent>(3) to enumerate the hosts database. When one or more I<key> "
4069 "arguments are provided, pass each I<key> to B<gethostbyaddr>(3) or "
4070 "B<gethostbyname2>(3), depending on whether a call to B<inet_pton>(3) "
4071 "indicates that the I<key> is an IPv6 or IPv4 address or not, and display the "
4076 #: build/C/man1/getent.1:182 build/C/man5/nsswitch.conf.5:62
4078 msgid "B<initgroups>"
4082 #: build/C/man1/getent.1:196
4084 "When one or more I<key> arguments are provided, pass each I<key> in "
4085 "succession to B<getgrouplist>(3) and display the result. Enumeration is "
4086 "not supported on B<initgroups>, so a I<key> must be provided."
4090 #: build/C/man1/getent.1:196 build/C/man5/nsswitch.conf.5:67
4096 #: build/C/man1/getent.1:222
4098 "When one I<key> is provided, pass the I<key> to B<setnetgrent>(3) and, "
4099 "using B<getnetgrent>(3) display the resulting string triple (I<hostname>, "
4100 "I<username>, I<domainname>). Alternatively, three I<keys> may be provided, "
4101 "which are interpreted as the I<hostname>, I<username> and I<domainname> to "
4102 "match to a netgroup name via B<innetgr>(3). Enumeration is not supported on "
4103 "B<netgroup>, so either one or three I<keys> must be provided."
4107 #: build/C/man1/getent.1:222 build/C/man5/nsswitch.conf.5:71
4113 #: build/C/man1/getent.1:243
4115 "When no I<key> is provided, use B<setnetent>(3), B<getnetent>(3), and "
4116 "B<endnetent>(3) to enumerate the networks database. When one or more "
4117 "I<key> arguments are provided, pass each numeric I<key> to "
4118 "B<getnetbyaddr>(3) and each nonnumeric I<key> to B<getnetbyname>(3) and "
4119 "display the result."
4123 #: build/C/man1/getent.1:243 build/C/man5/nsswitch.conf.5:76
4129 #: build/C/man1/getent.1:264
4131 "When no I<key> is provided, use B<setpwent>(3), B<getpwent>(3), and "
4132 "B<endpwent>(3) to enumerate the passwd database. When one or more I<key> "
4133 "arguments are provided, pass each numeric I<key> to B<getpwuid>(3) and each "
4134 "nonnumeric I<key> to B<getpwnam>(3) and display the result."
4138 #: build/C/man1/getent.1:264 build/C/man5/nsswitch.conf.5:81
4140 msgid "B<protocols>"
4144 #: build/C/man1/getent.1:285
4146 "When no I<key> is provided, use B<setprotoent>(3), B<getprotoent>(3), and "
4147 "B<endprotoent>(3) to enumerate the protocols database. When one or more "
4148 "I<key> arguments are provided, pass each numeric I<key> to "
4149 "B<getprotobynumber>(3) and each nonnumeric I<key> to B<getprotobyname>(3) "
4150 "and display the result."
4154 #: build/C/man1/getent.1:285 build/C/man5/nsswitch.conf.5:89
4160 #: build/C/man1/getent.1:306
4162 "When no I<key> is provided, use B<setrpcent>(3), B<getrpcent>(3), and "
4163 "B<endrpcent>(3) to enumerate the rpc database. When one or more I<key> "
4164 "arguments are provided, pass each numeric I<key> to B<getrpcbynumber>(3) "
4165 "and each nonnumeric I<key> to B<getrpcbyname>(3) and display the result."
4169 #: build/C/man1/getent.1:306 build/C/man5/nsswitch.conf.5:94
4175 #: build/C/man1/getent.1:327
4177 "When no I<key> is provided, use B<setservent>(3), B<getservent>(3), and "
4178 "B<endservent>(3) to enumerate the services database. When one or more "
4179 "I<key> arguments are provided, pass each numeric I<key> to "
4180 "B<getservbynumber>(3) and each nonnumeric I<key> to B<getservbyname>(3) "
4181 "and display the result."
4185 #: build/C/man1/getent.1:327 build/C/man5/nsswitch.conf.5:99
4191 #: build/C/man1/getent.1:344
4193 "When no I<key> is provided, use B<setspent>(3), B<getspent>(3), and "
4194 "B<endspent>(3) to enumerate the shadow database. When one or more I<key> "
4195 "arguments are provided, pass each I<key> in succession to B<getspnam>(3) "
4196 "and display the result."
4200 #: build/C/man1/getent.1:345
4206 #: build/C/man1/getent.1:348
4207 msgid "One of the following exit values can be returned by B<getent>:"
4211 #: build/C/man1/getent.1:349
4217 #: build/C/man1/getent.1:352
4218 msgid "Command completed successfully."
4222 #: build/C/man1/getent.1:352
4228 #: build/C/man1/getent.1:357
4229 msgid "Missing arguments, or I<database> unknown."
4233 #: build/C/man1/getent.1:357
4239 #: build/C/man1/getent.1:363
4240 msgid "One or more supplied I<key> could not be found in the I<database>."
4244 #: build/C/man1/getent.1:363
4250 #: build/C/man1/getent.1:367
4251 msgid "Enumeration not supported on this I<database>."
4255 #: build/C/man1/getent.1:370
4256 msgid "B<nsswitch.conf>(5)"
4260 #: build/C/man3/gethostbyname.3:38
4262 msgid "GETHOSTBYNAME"
4266 #: build/C/man3/gethostbyname.3:38
4272 #: build/C/man3/gethostbyname.3:46
4274 "gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, "
4275 "herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, "
4276 "gethostbyname_r, gethostent_r - get network host entry"
4280 #: build/C/man3/gethostbyname.3:50
4283 "B<#include E<lt>netdb.hE<gt>>\n"
4284 "B<extern int h_errno;>\n"
4288 #: build/C/man3/gethostbyname.3:52
4290 msgid "B<struct hostent *gethostbyname(const char *>I<name>B<);>\n"
4294 #: build/C/man3/gethostbyname.3:56
4297 "B<#include E<lt>sys/socket.hE<gt>> /* for AF_INET */\n"
4298 "B<struct hostent *gethostbyaddr(const void *>I<addr>B<,>\n"
4299 "B< socklen_t >I<len>B<, int >I<type>B<);>\n"
4303 #: build/C/man3/gethostbyname.3:58
4305 msgid "B<void sethostent(int >I<stayopen>B<);>\n"
4309 #: build/C/man3/gethostbyname.3:60
4311 msgid "B<void endhostent(void);>\n"
4315 #: build/C/man3/gethostbyname.3:62
4317 msgid "B<void herror(const char *>I<s>B<);>\n"
4321 #: build/C/man3/gethostbyname.3:64
4323 msgid "B<const char *hstrerror(int >I<err>B<);>\n"
4327 #: build/C/man3/gethostbyname.3:66
4329 msgid "/* System V/POSIX extension */\n"
4333 #: build/C/man3/gethostbyname.3:68
4335 msgid "B<struct hostent *gethostent(void);>\n"
4339 #: build/C/man3/gethostbyname.3:72
4341 msgid "B<struct hostent *gethostbyname2(const char *>I<name>B<, int >I<af>B<);>\n"
4345 #: build/C/man3/gethostbyname.3:76
4348 "B<int gethostent_r(>\n"
4349 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4351 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4355 #: build/C/man3/gethostbyname.3:80
4358 "B<int gethostbyaddr_r(const void *>I<addr>B<, socklen_t >I<len>B<, int "
4360 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4362 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4366 #: build/C/man3/gethostbyname.3:84
4369 "B<int gethostbyname_r(const char *>I<name>B<,>\n"
4370 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4372 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4376 #: build/C/man3/gethostbyname.3:88
4379 "B<int gethostbyname2_r(const char *>I<name>B<, int >I<af,>\n"
4380 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4382 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4386 #: build/C/man3/gethostbyname.3:102
4388 "B<gethostbyname2>(), B<gethostent_r>(), B<gethostbyaddr_r>(), "
4389 "B<gethostbyname_r>(), B<gethostbyname2_r>():"
4393 #: build/C/man3/gethostbyname.3:104 build/C/man3/gethostbyname.3:112 build/C/man3/getnetent_r.3:60 build/C/man3/getprotoent_r.3:57 build/C/man3/getservent_r.3:57 build/C/man3/inet_net_pton.3:58
4394 msgid "_BSD_SOURCE || _SVID_SOURCE"
4398 #: build/C/man3/gethostbyname.3:108
4399 msgid "B<herror>(), B<hstrerror>():"
4403 #: build/C/man3/gethostbyname.3:109
4405 msgid "Since glibc 2.8:"
4409 #: build/C/man3/gethostbyname.3:112
4411 msgid "Before glibc 2.8:"
4415 #: build/C/man3/gethostbyname.3:115 build/C/man3/gethostbyname.3:126
4420 #: build/C/man3/gethostbyname.3:118
4425 #: build/C/man3/gethostbyname.3:119
4427 msgid "Since glibc 2.12:"
4431 #: build/C/man3/gethostbyname.3:123
4434 "_BSD_SOURCE || _SVID_SOURCE ||\n"
4435 " (_POSIX_C_SOURCE E<lt> 200809L && _XOPEN_SOURCE E<lt> 700)\n"
4439 #: build/C/man3/gethostbyname.3:123
4441 msgid "Before glibc 2.12:"
4445 #: build/C/man3/gethostbyname.3:143
4447 "The B<gethostbyname*>(), B<gethostbyaddr*>(), B<herror>(), and "
4448 "B<hstrerror>() functions are obsolete. Applications should use "
4449 "B<getaddrinfo>(3), B<getnameinfo>(3), and B<gai_strerror>(3) instead."
4453 #: build/C/man3/gethostbyname.3:184
4455 "The B<gethostbyname>() function returns a structure of type I<hostent> for "
4456 "the given host I<name>. Here I<name> is either a hostname, or an IPv4 "
4457 "address in standard dot notation (as for B<inet_addr>(3)), or an IPv6 "
4458 "address in colon (and possibly dot) notation. (See RFC\\ 1884 for the "
4459 "description of IPv6 addresses.) If I<name> is an IPv4 or IPv6 address, no "
4460 "lookup is performed and B<gethostbyname>() simply copies I<name> into the "
4461 "I<h_name> field and its I<struct in_addr> equivalent into the "
4462 "I<h_addr_list[0]> field of the returned I<hostent> structure. If I<name> "
4463 "doesn't end in a dot and the environment variable B<HOSTALIASES> is set, the "
4464 "alias file pointed to by B<HOSTALIASES> will first be searched for I<name> "
4465 "(see B<hostname>(7) for the file format). The current domain and its "
4466 "parents are searched unless I<name> ends in a dot."
4470 #: build/C/man3/gethostbyname.3:200
4472 "The B<gethostbyaddr>() function returns a structure of type I<hostent> for "
4473 "the given host address I<addr> of length I<len> and address type I<type>. "
4474 "Valid address types are B<AF_INET> and B<AF_INET6>. The host address "
4475 "argument is a pointer to a struct of a type depending on the address type, "
4476 "for example a I<struct in_addr *> (probably obtained via a call to "
4477 "B<inet_addr>(3)) for address type B<AF_INET>."
4481 #: build/C/man3/gethostbyname.3:207
4483 "The B<sethostent>() function specifies, if I<stayopen> is true (1), that a "
4484 "connected TCP socket should be used for the name server queries and that the "
4485 "connection should remain open during successive queries. Otherwise, name "
4486 "server queries will use UDP datagrams."
4490 #: build/C/man3/gethostbyname.3:212
4492 "The B<endhostent>() function ends the use of a TCP connection for name "
4497 #: build/C/man3/gethostbyname.3:217
4499 "The (obsolete) B<herror>() function prints the error message associated "
4500 "with the current value of I<h_errno> on I<stderr>."
4504 #: build/C/man3/gethostbyname.3:222
4506 "The (obsolete) B<hstrerror>() function takes an error number (typically "
4507 "I<h_errno>) and returns the corresponding message string."
4511 #. .BR resolv+ (8)).
4513 #: build/C/man3/gethostbyname.3:239
4515 "The domain name queries carried out by B<gethostbyname>() and "
4516 "B<gethostbyaddr>() use a combination of any or all of the name server "
4517 "B<named>(8), a broken out line from I</etc/hosts>, and the Network "
4518 "Information Service (NIS or YP), depending upon the contents of the I<order> "
4519 "line in I</etc/host.conf>. The default action is to query B<named>(8), "
4520 "followed by I</etc/hosts>."
4524 #: build/C/man3/gethostbyname.3:241
4525 msgid "The I<hostent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
4529 #: build/C/man3/gethostbyname.3:253
4532 "struct hostent {\n"
4533 " char *h_name; /* official name of host */\n"
4534 " char **h_aliases; /* alias list */\n"
4535 " int h_addrtype; /* host address type */\n"
4536 " int h_length; /* length of address */\n"
4537 " char **h_addr_list; /* list of addresses */\n"
4539 "#define h_addr h_addr_list[0] /* for backward compatibility */\n"
4543 #: build/C/man3/gethostbyname.3:257
4544 msgid "The members of the I<hostent> structure are:"
4548 #: build/C/man3/gethostbyname.3:257 build/C/man3/getipnodebyname.3:210
4554 #: build/C/man3/gethostbyname.3:260
4555 msgid "The official name of the host."
4559 #: build/C/man3/gethostbyname.3:260 build/C/man3/getipnodebyname.3:213
4561 msgid "I<h_aliases>"
4565 #: build/C/man3/gethostbyname.3:263
4566 msgid "An array of alternative names for the host, terminated by a null pointer."
4570 #: build/C/man3/gethostbyname.3:263 build/C/man3/getipnodebyname.3:217
4572 msgid "I<h_addrtype>"
4576 #: build/C/man3/gethostbyname.3:270
4577 msgid "The type of address; always B<AF_INET> or B<AF_INET6> at present."
4581 #: build/C/man3/gethostbyname.3:270 build/C/man3/getipnodebyname.3:239
4587 #: build/C/man3/gethostbyname.3:273
4588 msgid "The length of the address in bytes."
4592 #: build/C/man3/gethostbyname.3:273 build/C/man3/getipnodebyname.3:253
4594 msgid "I<h_addr_list>"
4598 #: build/C/man3/gethostbyname.3:277
4600 "An array of pointers to network addresses for the host (in network byte "
4601 "order), terminated by a null pointer."
4605 #: build/C/man3/gethostbyname.3:277
4611 #: build/C/man3/gethostbyname.3:280
4612 msgid "The first address in I<h_addr_list> for backward compatibility."
4616 #: build/C/man3/gethostbyname.3:292
4618 "The B<gethostbyname>() and B<gethostbyaddr>() functions return the "
4619 "I<hostent> structure or a null pointer if an error occurs. On error, the "
4620 "I<h_errno> variable holds an error number. When non-NULL, the return value "
4621 "may point at static data, see the notes below."
4625 #: build/C/man3/gethostbyname.3:294
4626 msgid "The variable I<h_errno> can have the following values:"
4630 #: build/C/man3/gethostbyname.3:294 build/C/man3/getipnodebyname.3:190
4632 msgid "B<HOST_NOT_FOUND>"
4636 #: build/C/man3/gethostbyname.3:297
4637 msgid "The specified host is unknown."
4641 #: build/C/man3/gethostbyname.3:297
4643 msgid "B<NO_ADDRESS> or B<NO_DATA>"
4647 #: build/C/man3/gethostbyname.3:300
4648 msgid "The requested name is valid but does not have an IP address."
4652 #: build/C/man3/gethostbyname.3:300 build/C/man3/getipnodebyname.3:199
4654 msgid "B<NO_RECOVERY>"
4658 #: build/C/man3/gethostbyname.3:303
4659 msgid "A nonrecoverable name server error occurred."
4663 #: build/C/man3/gethostbyname.3:303 build/C/man3/getipnodebyname.3:202
4665 msgid "B<TRY_AGAIN>"
4669 #: build/C/man3/gethostbyname.3:307
4671 "A temporary error occurred on an authoritative name server. Try again "
4676 #: build/C/man3/gethostbyname.3:308 build/C/man5/host.conf.5:181
4678 msgid "I</etc/host.conf>"
4682 #: build/C/man3/gethostbyname.3:311
4683 msgid "resolver configuration file"
4687 #: build/C/man3/gethostbyname.3:311 build/C/man5/host.conf.5:187 build/C/man5/hosts.5:88
4689 msgid "I</etc/hosts>"
4693 #: build/C/man3/gethostbyname.3:314
4694 msgid "host database file"
4698 #: build/C/man3/gethostbyname.3:314 build/C/man5/nsswitch.conf.5:306 build/C/man3/setnetgrent.3:92
4700 msgid "I</etc/nsswitch.conf>"
4704 #: build/C/man3/gethostbyname.3:317
4705 msgid "name service switch configuration"
4709 #: build/C/man3/gethostbyname.3:341
4711 "POSIX.1-2001 specifies B<gethostbyname>(), B<gethostbyaddr>(), "
4712 "B<sethostent>(), B<endhostent>(), B<gethostent>(), and I<h_errno>; "
4713 "B<gethostbyname>(), B<gethostbyaddr>(), and I<h_errno> are marked "
4714 "obsolescent in that standard. POSIX.1-2008 removes the specifications of "
4715 "B<gethostbyname>(), B<gethostbyaddr>(), and I<h_errno>, recommending the use "
4716 "of B<getaddrinfo>(3) and B<getnameinfo>(3) instead."
4720 #: build/C/man3/gethostbyname.3:351
4722 "The functions B<gethostbyname>() and B<gethostbyaddr>() may return "
4723 "pointers to static data, which may be overwritten by later calls. Copying "
4724 "the I<struct hostent> does not suffice, since it contains pointers; a deep "
4729 #: build/C/man3/gethostbyname.3:375
4731 "In the original BSD implementation the I<len> argument of B<gethostbyname>() "
4732 "was an I<int>. The SUSv2 standard is buggy and declares the I<len> argument "
4733 "of B<gethostbyaddr>() to be of type I<size_t>. (That is wrong, because it "
4734 "has to be I<int>, and I<size_t> is not. POSIX.1-2001 makes it I<socklen_t>, "
4735 "which is OK.) See also B<accept>(2)."
4739 #: build/C/man3/gethostbyname.3:381
4741 "The BSD prototype for B<gethostbyaddr>() uses I<const char\\ *> for the "
4746 #: build/C/man3/gethostbyname.3:381
4748 msgid "System V/POSIX extension"
4751 #. e.g., Linux, FreeBSD, UnixWare, HP-UX
4752 #. e.g., FreeBSD, AIX
4754 #: build/C/man3/gethostbyname.3:398
4756 "POSIX requires the B<gethostent>() call, that should return the next entry "
4757 "in the host data base. When using DNS/BIND this does not make much sense, "
4758 "but it may be reasonable if the host data base is a file that can be read "
4759 "line by line. On many systems a routine of this name reads from the file "
4760 "I</etc/hosts>. It may be available only when the library was built without "
4761 "DNS support. The glibc version will ignore ipv6 entries. This function is "
4762 "not reentrant, and glibc adds a reentrant version B<gethostent_r>()."
4766 #: build/C/man3/gethostbyname.3:398
4768 msgid "GNU extensions"
4772 #: build/C/man3/gethostbyname.3:404
4774 "Glibc2 also has a B<gethostbyname2>() that works like B<gethostbyname>(), "
4775 "but permits to specify the address family to which the address must belong."
4779 #: build/C/man3/gethostbyname.3:438
4781 "Glibc2 also has reentrant versions B<gethostent_r>(), B<gethostbyaddr_r>(), "
4782 "B<gethostbyname_r>() and B<gethostbyname2_r>(). The caller supplies a "
4783 "I<hostent> structure I<ret> which will be filled in on success, and a "
4784 "temporary work buffer I<buf> of size I<buflen>. After the call, I<result> "
4785 "will point to the result on success. In case of an error or if no entry is "
4786 "found I<result> will be NULL. The functions return 0 on success and a "
4787 "nonzero error number on failure. In addition to the errors returned by the "
4788 "nonreentrant versions of these functions, if I<buf> is too small, the "
4789 "functions will return B<ERANGE>, and the call should be retried with a "
4790 "larger buffer. The global variable I<h_errno> is not modified, but the "
4791 "address of a variable in which to store error numbers is passed in "
4795 #. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973
4797 #: build/C/man3/gethostbyname.3:443
4799 "B<gethostbyname>() does not recognize components of a dotted IPv4 address "
4800 "string that are expressed in hexadecimal."
4803 #. .BR getipnodebyaddr (3),
4804 #. .BR getipnodebyname (3),
4807 #: build/C/man3/gethostbyname.3:457
4809 "B<getaddrinfo>(3), B<getnameinfo>(3), B<inet>(3), B<inet_ntop>(3), "
4810 "B<inet_pton>(3), B<resolver>(3), B<hosts>(5), B<nsswitch.conf>(5), "
4811 "B<hostname>(7), B<named>(8)"
4815 #: build/C/man3/getipnodebyname.3:26
4817 msgid "GETIPNODEBYNAME"
4821 #: build/C/man3/getipnodebyname.3:26
4827 #: build/C/man3/getipnodebyname.3:30
4829 "getipnodebyname, getipnodebyaddr, freehostent - get network hostnames and "
4834 #: build/C/man3/getipnodebyname.3:38
4837 "B<struct hostent *getipnodebyname(const char *>I<name>B<, int >I<af>B<,>\n"
4838 "B< int >I<flags>B<, int *>I<error_num>B<);>\n"
4842 #: build/C/man3/getipnodebyname.3:41
4845 "B<struct hostent *getipnodebyaddr(const void *>I<addr>B<, size_t "
4847 "B< int >I<af>B<, int *>I<error_num>B<);>\n"
4851 #: build/C/man3/getipnodebyname.3:43
4853 msgid "B<void freehostent(struct hostent *>I<ip>B<);>\n"
4857 #: build/C/man3/getipnodebyname.3:51
4859 "These functions are deprecated (and unavailable in glibc). Use "
4860 "B<getaddrinfo>(3) and B<getnameinfo>(3) instead."
4864 #: build/C/man3/getipnodebyname.3:59
4866 "The B<getipnodebyname>() and B<getipnodebyaddr>() functions return the "
4867 "names and addresses of a network host. These functions return a pointer to "
4868 "the following structure:"
4872 #: build/C/man3/getipnodebyname.3:69
4875 "struct hostent {\n"
4877 " char **h_aliases;\n"
4878 " int h_addrtype;\n"
4880 " char **h_addr_list;\n"
4885 #: build/C/man3/getipnodebyname.3:82
4887 "These functions replace the B<gethostbyname>(3) and B<gethostbyaddr>(3) "
4888 "functions, which could access only the IPv4 network address family. The "
4889 "B<getipnodebyname>() and B<getipnodebyaddr>() functions can access "
4890 "multiple network address families."
4894 #: build/C/man3/getipnodebyname.3:93
4896 "Unlike the B<gethostby> functions, these functions return pointers to "
4897 "dynamically allocated memory. The B<freehostent>() function is used to "
4898 "release the dynamically allocated memory after the caller no longer needs "
4899 "the I<hostent> structure."
4903 #: build/C/man3/getipnodebyname.3:93
4905 msgid "getipnodebyname() arguments"
4909 #: build/C/man3/getipnodebyname.3:104
4911 "The B<getipnodebyname>() function looks up network addresses for the host "
4912 "specified by the I<name> argument. The I<af> argument specifies one of the "
4917 #: build/C/man3/getipnodebyname.3:104 build/C/man3/getipnodebyname.3:166 build/C/man3/inet_ntop.3:57 build/C/man3/inet_pton.3:53
4923 #: build/C/man3/getipnodebyname.3:110
4925 "The I<name> argument points to a dotted-quad IPv4 address or a name of an "
4926 "IPv4 network host."
4930 #: build/C/man3/getipnodebyname.3:110 build/C/man3/getipnodebyname.3:176 build/C/man3/inet_ntop.3:70 build/C/man3/inet_pton.3:67
4936 #: build/C/man3/getipnodebyname.3:116
4938 "The I<name> argument points to a hexadecimal IPv6 address or a name of an "
4939 "IPv6 network host."
4943 #: build/C/man3/getipnodebyname.3:125
4945 "The I<flags> argument specifies additional options. More than one option "
4946 "can be specified by bitwise OR-ing them together. I<flags> should be set to "
4947 "0 if no options are desired."
4951 #: build/C/man3/getipnodebyname.3:125
4953 msgid "B<AI_V4MAPPED>"
4957 #: build/C/man3/getipnodebyname.3:132
4959 "This flag is used with B<AF_INET6> to request a query for IPv4 addresses "
4960 "instead of IPv6 addresses; the IPv4 addresses will be mapped to IPv6 "
4965 #: build/C/man3/getipnodebyname.3:132
4971 #: build/C/man3/getipnodebyname.3:138
4973 "This flag is used with B<AI_V4MAPPED> to request a query for both IPv4 and "
4974 "IPv6 addresses. Any IPv4 address found will be mapped to an IPv6 address."
4978 #: build/C/man3/getipnodebyname.3:138
4980 msgid "B<AI_ADDRCONFIG>"
4984 #: build/C/man3/getipnodebyname.3:150
4986 "This flag is used with B<AF_INET6> to further request that queries for IPv6 "
4987 "addresses should not be made unless the system has at least one IPv6 address "
4988 "assigned to a network interface, and that queries for IPv4 addresses should "
4989 "not be made unless the system has at least one IPv4 address assigned to a "
4990 "network interface. This flag may be used by itself or with the "
4991 "B<AI_V4MAPPED> flag."
4995 #: build/C/man3/getipnodebyname.3:150
4997 msgid "B<AI_DEFAULT>"
5001 #: build/C/man3/getipnodebyname.3:154
5002 msgid "This flag is equivalent to B<(AI_ADDRCONFIG | AI_V4MAPPED)>."
5006 #: build/C/man3/getipnodebyname.3:154
5008 msgid "getipnodebyaddr() arguments"
5012 #: build/C/man3/getipnodebyname.3:166
5014 "The B<getipnodebyaddr>() function looks up the name of the host whose "
5015 "network address is specified by the I<addr> argument. The I<af> argument "
5016 "specifies one of the following values:"
5020 #: build/C/man3/getipnodebyname.3:176
5022 "The I<addr> argument points to a I<struct in_addr> and I<len> must be set to "
5023 "I<sizeof(struct in_addr)>."
5027 #: build/C/man3/getipnodebyname.3:186
5029 "The I<addr> argument points to a I<struct in6_addr> and I<len> must be set "
5030 "to I<sizeof(struct in6_addr)>."
5034 #: build/C/man3/getipnodebyname.3:190
5036 "NULL is returned if an error occurred, and I<error_num> will contain an "
5037 "error code from the following list:"
5041 #: build/C/man3/getipnodebyname.3:193
5042 msgid "The hostname or network address was not found."
5046 #: build/C/man3/getipnodebyname.3:193
5048 msgid "B<NO_ADDRESS>"
5052 #: build/C/man3/getipnodebyname.3:199
5054 "The domain name server recognized the network address or name, but no answer "
5055 "was returned. This can happen if the network host has only IPv4 addresses "
5056 "and a request has been made for IPv6 information only, or vice versa."
5060 #: build/C/man3/getipnodebyname.3:202
5061 msgid "The domain name server returned a permanent failure response."
5065 #: build/C/man3/getipnodebyname.3:206
5067 "The domain name server returned a temporary failure response. You might "
5068 "have better luck next time."
5072 #: build/C/man3/getipnodebyname.3:210
5074 "A successful query returns a pointer to a I<hostent> structure that contains "
5075 "the following fields:"
5079 #: build/C/man3/getipnodebyname.3:213
5080 msgid "This is the official name of this network host."
5084 #: build/C/man3/getipnodebyname.3:217
5086 "This is an array of pointers to unofficial aliases for the same host. The "
5087 "array is terminated by a null pointer."
5091 #: build/C/man3/getipnodebyname.3:239
5093 "This is a copy of the I<af> argument to B<getipnodebyname>() or "
5094 "B<getipnodebyaddr>(). I<h_addrtype> will always be B<AF_INET> if the I<af> "
5095 "argument was B<AF_INET>. I<h_addrtype> will always be B<AF_INET6> if the "
5096 "I<af> argument was B<AF_INET6>."
5100 #: build/C/man3/getipnodebyname.3:253
5102 "This field will be set to I<sizeof(struct in_addr)> if I<h_addrtype> is "
5103 "B<AF_INET>, and to I<sizeof(struct in6_addr)> if I<h_addrtype> is "
5108 #: build/C/man3/getipnodebyname.3:258
5110 "This is an array of one or more pointers to network address structures for "
5111 "the network host. The array is terminated by a null pointer."
5114 #. Not in POSIX.1-2001.
5116 #: build/C/man3/getipnodebyname.3:261
5121 #: build/C/man3/getipnodebyname.3:266
5123 "These functions were present in glibc 2.1.91-95, but were removed again. "
5124 "Several UNIX-like systems support them, but all call them deprecated."
5128 #: build/C/man3/getipnodebyname.3:271
5129 msgid "B<getaddrinfo>(3), B<getnameinfo>(3), B<inet_ntop>(3), B<inet_pton>(3)"
5133 #: build/C/man3/getnameinfo.3:10
5139 #: build/C/man3/getnameinfo.3:13
5140 msgid "getnameinfo - address-to-name translation in protocol-independent manner"
5144 #: build/C/man3/getnameinfo.3:17
5147 "B<#include E<lt>sys/socket.hE<gt>>\n"
5148 "B<#include E<lt>netdb.hE<gt>>\n"
5152 #: build/C/man3/getnameinfo.3:21
5155 "B<int getnameinfo(const struct sockaddr *>I<sa>B<, socklen_t >I<salen>B<,>\n"
5156 "B< char *>I<host>B<, socklen_t >I<hostlen>B<,>\n"
5157 "B< char *>I<serv>B<, socklen_t >I<servlen>B<, int "
5162 #: build/C/man3/getnameinfo.3:31
5164 "B<getnameinfo>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
5169 #: build/C/man3/getnameinfo.3:47
5171 "The B<getnameinfo>() function is the inverse of B<getaddrinfo>(3): it "
5172 "converts a socket address to a corresponding host and service, in a "
5173 "protocol-independent manner. It combines the functionality of "
5174 "B<gethostbyaddr>(3) and B<getservbyport>(3), but unlike those functions, "
5175 "B<getnameinfo>() is reentrant and allows programs to eliminate "
5176 "IPv4-versus-IPv6 dependencies."
5180 #: build/C/man3/getnameinfo.3:70
5182 "The I<sa> argument is a pointer to a generic socket address structure (of "
5183 "type I<sockaddr_in> or I<sockaddr_in6>) of size I<salen> that holds the "
5184 "input IP address and port number. The arguments I<host> and I<serv> are "
5185 "pointers to caller-allocated buffers (of size I<hostlen> and I<servlen> "
5186 "respectively) into which B<getnameinfo>() places null-terminated strings "
5187 "containing the host and service names respectively."
5191 #: build/C/man3/getnameinfo.3:83
5193 "The caller can specify that no hostname (or no service name) is required by "
5194 "providing a NULL I<host> (or I<serv>) argument or a zero I<hostlen> (or "
5195 "I<servlen>) argument. However, at least one of hostname or service name "
5196 "must be requested."
5200 #: build/C/man3/getnameinfo.3:89
5201 msgid "The I<flags> argument modifies the behavior of B<getnameinfo>() as follows:"
5205 #: build/C/man3/getnameinfo.3:89
5207 msgid "B<NI_NAMEREQD>"
5211 #: build/C/man3/getnameinfo.3:92
5212 msgid "If set, then an error is returned if the hostname cannot be determined."
5216 #: build/C/man3/getnameinfo.3:92
5222 #: build/C/man3/getnameinfo.3:98
5224 "If set, then the service is datagram (UDP) based rather than stream (TCP) "
5225 "based. This is required for the few ports (512-514) that have different "
5226 "services for UDP and TCP."
5230 #: build/C/man3/getnameinfo.3:98
5232 msgid "B<NI_NOFQDN>"
5236 #: build/C/man3/getnameinfo.3:102
5238 "If set, return only the hostname part of the fully qualified domain name for "
5243 #: build/C/man3/getnameinfo.3:102
5245 msgid "B<NI_NUMERICHOST>"
5248 #. For example, by calling
5251 #. .BR gethostbyaddr ().
5252 #. POSIX.1-2003 has NI_NUMERICSCOPE, but glibc doesn't have it.
5254 #: build/C/man3/getnameinfo.3:112
5256 "If set, then the numeric form of the hostname is returned. (When not set, "
5257 "this will still happen in case the node's name cannot be determined.)"
5261 #: build/C/man3/getnameinfo.3:112
5263 msgid "B<NI_NUMERICSERV>"
5267 #: build/C/man3/getnameinfo.3:117
5269 "If set, then the numeric form of the service address is returned. (When not "
5270 "set, this will still happen in case the service's name cannot be "
5275 #: build/C/man3/getnameinfo.3:117
5277 msgid "Extensions to getnameinfo() for Internationalized Domain Names"
5281 #: build/C/man3/getnameinfo.3:126
5283 "Starting with glibc 2.3.4, B<getnameinfo>() has been extended to "
5284 "selectively allow hostnames to be transparently converted to and from the "
5285 "Internationalized Domain Name (IDN) format (see RFC 3490, "
5286 "I<Internationalizing Domain Names in Applications (IDNA)>). Three new flags "
5291 #: build/C/man3/getnameinfo.3:126
5297 #: build/C/man3/getnameinfo.3:132
5299 "If this flag is used, then the name found in the lookup process is converted "
5300 "from IDN format to the locale's encoding if necessary. ASCII-only names are "
5301 "not affected by the conversion, which makes this flag usable in existing "
5302 "programs and environments."
5306 #: build/C/man3/getnameinfo.3:132
5308 msgid "B<NI_IDN_ALLOW_UNASSIGNED>, B<NI_IDN_USE_STD3_ASCII_RULES>"
5311 #. FIXME glibc defines the following additional errors, some which
5312 #. can probably be returned by getnameinfo(); they need to
5315 #. #define EAI_INPROGRESS -100 /* Processing request in progress. */
5316 #. #define EAI_CANCELED -101 /* Request canceled. */
5317 #. #define EAI_NOTCANCELED -102 /* Request not canceled. */
5318 #. #define EAI_ALLDONE -103 /* All requests done. */
5319 #. #define EAI_INTR -104 /* Interrupted by a signal. */
5320 #. #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
5323 #: build/C/man3/getnameinfo.3:155
5325 "On success 0 is returned, and node and service names, if requested, are "
5326 "filled with null-terminated strings, possibly truncated to fit the specified "
5327 "buffer lengths. On error, one of the following nonzero error codes is "
5332 #: build/C/man3/getnameinfo.3:159
5333 msgid "The name could not be resolved at this time. Try again later."
5337 #: build/C/man3/getnameinfo.3:164
5338 msgid "The I<flags> argument has an invalid value."
5342 #: build/C/man3/getnameinfo.3:167
5343 msgid "A nonrecoverable error occurred."
5347 #: build/C/man3/getnameinfo.3:171
5349 "The address family was not recognized, or the address length was invalid for "
5350 "the specified family."
5354 #: build/C/man3/getnameinfo.3:180
5356 "The name does not resolve for the supplied arguments. B<NI_NAMEREQD> is set "
5357 "and the host's name cannot be located, or neither hostname nor service name "
5362 #: build/C/man3/getnameinfo.3:180
5364 msgid "B<EAI_OVERFLOW>"
5368 #: build/C/man3/getnameinfo.3:187
5369 msgid "The buffer pointed to by I<host> or I<serv> was too small."
5373 #: build/C/man3/getnameinfo.3:192
5374 msgid "A system error occurred. The error code can be found in I<errno>."
5378 #: build/C/man3/getnameinfo.3:199
5383 #: build/C/man3/getnameinfo.3:201
5384 msgid "/etc/nsswitch.conf"
5388 #: build/C/man3/getnameinfo.3:203
5389 msgid "/etc/resolv.conf"
5393 #: build/C/man3/getnameinfo.3:206
5394 msgid "B<getnameinfo>() is provided in glibc since version 2.1."
5398 #: build/C/man3/getnameinfo.3:208
5399 msgid "RFC\\ 2553, POSIX.1-2001."
5403 #: build/C/man3/getnameinfo.3:213
5405 "In order to assist the programmer in choosing reasonable sizes for the "
5406 "supplied buffers, I<E<lt>netdb.hE<gt>> defines the constants"
5410 #: build/C/man3/getnameinfo.3:218
5413 "#define NI_MAXHOST 1025\n"
5414 "#define NI_MAXSERV 32\n"
5418 #: build/C/man3/getnameinfo.3:228
5420 "Since glibc 2.8, these definitions are exposed only if one of the feature "
5421 "test macros B<_BSD_SOURCE>, B<_SVID_SOURCE>, or B<_GNU_SOURCE> is defined."
5425 #: build/C/man3/getnameinfo.3:236
5427 "The former is the constant B<MAXDNAME> in recent versions of BIND's "
5428 "I<E<lt>arpa/nameser.hE<gt>> header file. The latter is a guess based on the "
5429 "services listed in the current Assigned Numbers RFC."
5433 #: build/C/man3/getnameinfo.3:243
5435 "Before glibc version 2.2, the I<hostlen> and I<servlen> arguments were typed "
5440 #: build/C/man3/getnameinfo.3:248
5442 "The following code tries to get the numeric hostname and service name, for a "
5443 "given socket address. Note that there is no hardcoded reference to a "
5444 "particular address family."
5448 #: build/C/man3/getnameinfo.3:254
5451 "struct sockaddr *sa; /* input */\n"
5452 "socklen_t len; /* input */\n"
5453 "char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];\n"
5457 #: build/C/man3/getnameinfo.3:258
5460 "if (getnameinfo(sa, len, hbuf, sizeof(hbuf), sbuf,\n"
5461 " sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)\n"
5462 " printf(\"host=%s, serv=%s\\en\", hbuf, sbuf);\n"
5466 #: build/C/man3/getnameinfo.3:263
5468 "The following version checks if the socket address has a reverse address "
5473 #: build/C/man3/getnameinfo.3:269
5476 "struct sockaddr *sa; /* input */\n"
5477 "socklen_t len; /* input */\n"
5478 "char hbuf[NI_MAXHOST];\n"
5482 #: build/C/man3/getnameinfo.3:275
5485 "if (getnameinfo(sa, len, hbuf, sizeof(hbuf),\n"
5486 " NULL, 0, NI_NAMEREQD))\n"
5487 " printf(\"could not resolve hostname\");\n"
5489 " printf(\"host=%s\\en\", hbuf);\n"
5493 #: build/C/man3/getnameinfo.3:282
5495 "An example program using B<getnameinfo>() can be found in "
5496 "B<getaddrinfo>(3)."
5500 #: build/C/man3/getnameinfo.3:297
5502 "B<accept>(2), B<getpeername>(2), B<getsockname>(2), B<recvfrom>(2), "
5503 "B<socket>(2), B<getaddrinfo>(3), B<gethostbyaddr>(3), B<getservbyname>(3), "
5504 "B<getservbyport>(3), B<inet_ntop>(3), B<hosts>(5), B<services>(5), "
5505 "B<hostname>(7), B<named>(8)"
5509 #: build/C/man3/getnameinfo.3:301
5511 "R. Gilligan, S. Thomson, J. Bound and W. Stevens, I<Basic Socket Interface "
5512 "Extensions for IPv6>, RFC\\ 2553, March 1999."
5516 #: build/C/man3/getnameinfo.3:307
5518 "Tatsuya Jinmei and Atsushi Onoe, I<An Extension of Format for IPv6 Scoped "
5519 "Addresses>, internet draft, work in progress E<.UR "
5520 "ftp://ftp.ietf.org\\:/internet-drafts\\:/draft-ietf-ipngwg-scopedaddr-format-02.txt> "
5525 #: build/C/man3/getnameinfo.3:312
5527 "Craig Metz, I<Protocol Independence Using the Sockets API>, Proceedings of "
5528 "the freenix track: 2000 USENIX annual technical conference, June 2000"
5532 #: build/C/man3/getnameinfo.3:315
5535 "http://www.usenix.org\\:/publications\\:/library\\:/proceedings\\:/usenix2000\\:/freenix\\:/metzprotocol.html> "
5540 #: build/C/man3/getnetent.3:30
5546 #: build/C/man3/getnetent.3:30 build/C/man3/getprotoent.3:30 build/C/man3/getservent.3:34
5552 #: build/C/man3/getnetent.3:34
5554 "getnetent, getnetbyname, getnetbyaddr, setnetent, endnetent - get network "
5559 #: build/C/man3/getnetent.3:37 build/C/man3/getnetent_r.3:33 build/C/man3/getprotoent.3:37 build/C/man3/getprotoent_r.3:33 build/C/man3/getservent.3:41 build/C/man3/getservent_r.3:33 build/C/man3/setnetgrent.3:17
5561 msgid "B<#include E<lt>netdb.hE<gt>>\n"
5565 #: build/C/man3/getnetent.3:39
5567 msgid "B<struct netent *getnetent(void);>\n"
5571 #: build/C/man3/getnetent.3:41
5573 msgid "B<struct netent *getnetbyname(const char *>I<name>B<);>\n"
5577 #: build/C/man3/getnetent.3:43
5579 msgid "B<struct netent *getnetbyaddr(uint32_t >I<net>B<, int >I<type>B<);>\n"
5583 #: build/C/man3/getnetent.3:45
5585 msgid "B<void setnetent(int >I<stayopen>B<);>\n"
5589 #: build/C/man3/getnetent.3:47
5591 msgid "B<void endnetent(void);>\n"
5595 #: build/C/man3/getnetent.3:57
5597 "The B<getnetent>() function reads the next entry from the networks database "
5598 "and returns a I<netent> structure containing the broken-out fields from the "
5599 "entry. A connection is opened to the database if necessary."
5603 #: build/C/man3/getnetent.3:66
5605 "The B<getnetbyname>() function returns a I<netent> structure for the entry "
5606 "from the database that matches the network I<name>."
5610 #: build/C/man3/getnetent.3:80
5612 "The B<getnetbyaddr>() function returns a I<netent> structure for the entry "
5613 "from the database that matches the network number I<net> of type I<type>. "
5614 "The I<net> argument must be in host byte order."
5618 #: build/C/man3/getnetent.3:92
5620 "The B<setnetent>() function opens a connection to the database, and sets "
5621 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
5622 "connection to the database will not be closed between calls to one of the "
5623 "B<getnet*>() functions."
5627 #: build/C/man3/getnetent.3:96
5628 msgid "The B<endnetent>() function closes the connection to the database."
5632 #: build/C/man3/getnetent.3:102
5633 msgid "The I<netent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
5637 #: build/C/man3/getnetent.3:111
5641 " char *n_name; /* official network name */\n"
5642 " char **n_aliases; /* alias list */\n"
5643 " int n_addrtype; /* net address type */\n"
5644 " uint32_t n_net; /* network number */\n"
5649 #: build/C/man3/getnetent.3:117
5650 msgid "The members of the I<netent> structure are:"
5654 #: build/C/man3/getnetent.3:117
5660 #: build/C/man3/getnetent.3:120
5661 msgid "The official name of the network."
5665 #: build/C/man3/getnetent.3:120
5667 msgid "I<n_aliases>"
5671 #: build/C/man3/getnetent.3:123
5672 msgid "A NULL-terminated list of alternative names for the network."
5676 #: build/C/man3/getnetent.3:123
5678 msgid "I<n_addrtype>"
5682 #: build/C/man3/getnetent.3:127
5683 msgid "The type of the network number; always B<AF_INET>."
5687 #: build/C/man3/getnetent.3:127
5693 #: build/C/man3/getnetent.3:130
5694 msgid "The network number in host byte order."
5698 #: build/C/man3/getnetent.3:141
5700 "The B<getnetent>(), B<getnetbyname>() and B<getnetbyaddr>() functions "
5701 "return a pointer to a statically allocated I<netent> structure, or a null "
5702 "pointer if an error occurs or the end of the file is reached."
5706 #: build/C/man3/getnetent.3:142 build/C/man5/networks.5:71
5708 msgid "I</etc/networks>"
5712 #: build/C/man3/getnetent.3:145
5713 msgid "networks database file"
5717 #: build/C/man3/getnetent.3:147 build/C/man3/getprotoent.3:142 build/C/man3/getservent.3:159
5718 msgid "4.3BSD, POSIX.1-2001."
5722 #: build/C/man3/getnetent.3:154
5724 "In glibc versions before 2.2, the I<net> argument of B<getnetbyaddr>() was "
5730 #: build/C/man3/getnetent.3:159
5731 msgid "B<getnetent_r>(3), B<getprotoent>(3), B<getservent>(3)"
5735 #: build/C/man3/getnetent.3:161
5740 #: build/C/man3/getnetent_r.3:26
5746 #: build/C/man3/getnetent_r.3:30
5747 msgid "getnetent_r, getnetbyname_r, getnetbyaddr_r - get network entry (reentrant)"
5751 #: build/C/man3/getnetent_r.3:37
5754 "B<int getnetent_r(struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5755 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5756 "B< int *>I<h_errnop>B<);>\n"
5760 #: build/C/man3/getnetent_r.3:42
5763 "B<int getnetbyname_r(const char *>I<name>B<,>\n"
5764 "B< struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5765 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5766 "B< int *>I<h_errnop>B<);>\n"
5770 #: build/C/man3/getnetent_r.3:47
5773 "B<int getnetbyaddr_r(uint32_t >I<net>B<, int >I<type>B<,>\n"
5774 "B< struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5775 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5776 "B< int *>I<h_errnop>B<);>\n"
5780 #: build/C/man3/getnetent_r.3:58
5781 msgid "B<getnetent_r>(), B<getnetbyname_r>(), B<getnetbyaddr_r>():"
5785 #: build/C/man3/getnetent_r.3:79
5787 "The B<getnetent_r>(), B<getnetbyname_r>(), and B<getnetbyaddr_r>() "
5788 "functions are the reentrant equivalents of, respectively, B<getnetent>(3), "
5789 "B<getnetbyname>(3), and B<getnetbynumber>(3). They differ in the way that "
5790 "the I<netent> structure is returned, and in the function calling signature "
5791 "and return value. This manual page describes just the differences from the "
5792 "nonreentrant functions."
5796 #: build/C/man3/getnetent_r.3:85
5798 "Instead of returning a pointer to a statically allocated I<netent> structure "
5799 "as the function result, these functions copy the structure into the location "
5800 "pointed to by I<result_buf>."
5803 #. I can find no information on the required/recommended buffer size;
5804 #. the nonreentrant functions use a 1024 byte buffer -- mtk.
5806 #: build/C/man3/getnetent_r.3:102
5808 "The I<buf> array is used to store the string fields pointed to by the "
5809 "returned I<netent> structure. (The nonreentrant functions allocate these "
5810 "strings in static storage.) The size of this array is specified in "
5811 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
5812 "and the caller must try again with a larger buffer. (A buffer of length "
5813 "1024 bytes should be sufficient for most applications.)"
5817 #: build/C/man3/getnetent_r.3:110
5819 "If the function call successfully obtains a network record, then I<*result> "
5820 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
5823 #. getnetent.3 doesn't document any use of h_errno, but nevertheless
5824 #. the nonreentrant functions no seem to set h_errno.
5826 #: build/C/man3/getnetent_r.3:118
5828 "The buffer pointed to by I<h_errnop> is used to return the value that would "
5829 "be stored in the global variable I<h_errno> by the nonreentrant versions of "
5834 #: build/C/man3/getnetent_r.3:121 build/C/man3/getprotoent_r.3:111
5836 "On success, these functions return 0. On error, they return one of the "
5837 "positive error numbers listed in ERRORS."
5841 #: build/C/man3/getnetent_r.3:129
5843 "On error, record not found (B<getnetbyname_r>(), B<getnetbyaddr_r>()), or "
5844 "end of input (B<getnetent_r>()) I<result> is set to NULL."
5848 #: build/C/man3/getnetent_r.3:134
5849 msgid "(B<getnetent_r>()) No more records in database."
5853 #: build/C/man3/getnetent_r.3:134 build/C/man3/getprotoent_r.3:124 build/C/man3/getservent_r.3:123
5859 #: build/C/man3/getnetent_r.3:141 build/C/man3/getprotoent_r.3:131 build/C/man3/getservent_r.3:130
5861 "I<buf> is too small. Try again with a larger buffer (and increased "
5866 #: build/C/man3/getnetent_r.3:145 build/C/man3/getprotoent_r.3:135 build/C/man3/getservent_r.3:134
5868 "These functions are GNU extensions. Functions with similar names exist on "
5869 "some other systems, though typically with different calling signatures."
5873 #: build/C/man3/getnetent_r.3:148
5874 msgid "B<getnetent>(3), B<networks>(5)"
5878 #: build/C/man2/getpeername.2:42
5884 #: build/C/man2/getpeername.2:42 build/C/man5/nsswitch.conf.5:25
5890 #: build/C/man2/getpeername.2:45
5891 msgid "getpeername - get name of connected peer socket"
5895 #: build/C/man2/getpeername.2:50
5897 "B<int getpeername(int >I<sockfd>B<, struct sockaddr *>I<addr>B<, socklen_t "
5902 #: build/C/man2/getpeername.2:63
5904 "B<getpeername>() returns the address of the peer connected to the socket "
5905 "I<sockfd>, in the buffer pointed to by I<addr>. The I<addrlen> argument "
5906 "should be initialized to indicate the amount of space pointed to by "
5907 "I<addr>. On return it contains the actual size of the name returned (in "
5908 "bytes). The name is truncated if the buffer provided is too small."
5912 #: build/C/man2/getpeername.2:68
5914 "The returned address is truncated if the buffer provided is too small; in "
5915 "this case, I<addrlen> will return a value greater than was supplied to the "
5920 #: build/C/man2/getpeername.2:73 build/C/man2/shutdown.2:74
5922 "On success, zero is returned. On error, -1 is returned, and I<errno> is set "
5927 #: build/C/man2/getpeername.2:74 build/C/man2/shutdown.2:75
5933 #: build/C/man2/getpeername.2:79
5934 msgid "The argument I<sockfd> is not a valid descriptor."
5938 #: build/C/man2/getpeername.2:79 build/C/man7/packet.7:500 build/C/man7/raw.7:149 build/C/man7/unix.7:419
5944 #: build/C/man2/getpeername.2:85
5946 "The I<addr> argument points to memory not in a valid part of the process "
5951 #: build/C/man2/getpeername.2:89
5952 msgid "I<addrlen> is invalid (e.g., is negative)."
5956 #: build/C/man2/getpeername.2:89 build/C/man7/packet.7:512
5962 #: build/C/man2/getpeername.2:93
5964 "Insufficient resources were available in the system to perform the "
5969 #: build/C/man2/getpeername.2:96
5970 msgid "The socket is not connected."
5974 #: build/C/man2/getpeername.2:96 build/C/man2/shutdown.2:87
5980 #: build/C/man2/getpeername.2:101
5981 msgid "The argument I<sockfd> is a file, not a socket."
5985 #: build/C/man2/getpeername.2:105
5987 "SVr4, 4.4BSD (the B<getpeername>() function call first appeared in 4.2BSD), "
5992 #: build/C/man2/getpeername.2:116
5994 "The third argument of B<getpeername>() is in reality an I<int\\ *> (and "
5995 "this is what 4.x BSD and libc4 and libc5 have). Some POSIX confusion "
5996 "resulted in the present I<socklen_t>, also used by glibc. See also "
6001 #: build/C/man2/getpeername.2:143
6003 "For stream sockets, once a B<connect>(2) has been performed, either socket "
6004 "can call B<getpeername>() to obtain the address of the peer socket. On the "
6005 "other hand, datagram sockets are connectionless. Calling B<connect>(2) on "
6006 "a datagram socket merely sets the peer address for outgoing datagrams sent "
6007 "with B<write>(2) or B<recv>(2). The caller of B<connect>(2) can use "
6008 "B<getpeername>() to obtain the peer address that it earlier set for the "
6009 "socket. However, the peer socket is unaware of this information, and "
6010 "calling B<getpeername>() on the peer socket will return no useful "
6011 "information (unless a B<connect>(2) call was also executed on the peer). "
6012 "Note also that the receiver of a datagram can obtain the address of the "
6013 "sender when using B<recvfrom>(2)."
6017 #: build/C/man2/getpeername.2:150
6019 "B<accept>(2), B<bind>(2), B<getsockname>(2), B<ip>(7), B<socket>(7), "
6024 #: build/C/man3/getprotoent.3:30
6030 #: build/C/man3/getprotoent.3:34
6032 "getprotoent, getprotobyname, getprotobynumber, setprotoent, endprotoent - "
6033 "get protocol entry"
6037 #: build/C/man3/getprotoent.3:39
6039 msgid "B<struct protoent *getprotoent(void);>\n"
6043 #: build/C/man3/getprotoent.3:41
6045 msgid "B<struct protoent *getprotobyname(const char *>I<name>B<);>\n"
6049 #: build/C/man3/getprotoent.3:43
6051 msgid "B<struct protoent *getprotobynumber(int >I<proto>B<);>\n"
6055 #: build/C/man3/getprotoent.3:45
6057 msgid "B<void setprotoent(int >I<stayopen>B<);>\n"
6061 #: build/C/man3/getprotoent.3:47
6063 msgid "B<void endprotoent(void);>\n"
6067 #: build/C/man3/getprotoent.3:58
6069 "The B<getprotoent>() function reads the next entry from the protocols "
6070 "database (see B<protocols>(5)) and returns a I<protoent> structure "
6071 "containing the broken-out fields from the entry. A connection is opened to "
6072 "the database if necessary."
6076 #: build/C/man3/getprotoent.3:68
6078 "The B<getprotobyname>() function returns a I<protoent> structure for the "
6079 "entry from the database that matches the protocol name I<name>. A "
6080 "connection is opened to the database if necessary."
6084 #: build/C/man3/getprotoent.3:78
6086 "The B<getprotobynumber>() function returns a I<protoent> structure for the "
6087 "entry from the database that matches the protocol number I<number>. A "
6088 "connection is opened to the database if necessary."
6092 #: build/C/man3/getprotoent.3:90
6094 "The B<setprotoent>() function opens a connection to the database, and sets "
6095 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
6096 "connection to the database will not be closed between calls to one of the "
6097 "B<getproto*>() functions."
6101 #: build/C/man3/getprotoent.3:94
6102 msgid "The B<endprotoent>() function closes the connection to the database."
6106 #: build/C/man3/getprotoent.3:100
6107 msgid "The I<protoent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
6111 #: build/C/man3/getprotoent.3:108
6114 "struct protoent {\n"
6115 " char *p_name; /* official protocol name */\n"
6116 " char **p_aliases; /* alias list */\n"
6117 " int p_proto; /* protocol number */\n"
6122 #: build/C/man3/getprotoent.3:114
6123 msgid "The members of the I<protoent> structure are:"
6127 #: build/C/man3/getprotoent.3:114
6133 #: build/C/man3/getprotoent.3:117
6134 msgid "The official name of the protocol."
6138 #: build/C/man3/getprotoent.3:117
6140 msgid "I<p_aliases>"
6144 #: build/C/man3/getprotoent.3:120
6145 msgid "A NULL-terminated list of alternative names for the protocol."
6149 #: build/C/man3/getprotoent.3:120
6155 #: build/C/man3/getprotoent.3:123
6156 msgid "The protocol number."
6160 #: build/C/man3/getprotoent.3:134
6162 "The B<getprotoent>(), B<getprotobyname>() and B<getprotobynumber>() "
6163 "functions return a pointer to a statically allocated I<protoent> structure, "
6164 "or a null pointer if an error occurs or the end of the file is reached."
6168 #: build/C/man3/getprotoent.3:136 build/C/man5/protocols.5:78
6170 msgid "I</etc/protocols>"
6174 #: build/C/man3/getprotoent.3:139
6175 msgid "protocol database file"
6179 #: build/C/man3/getprotoent.3:147
6180 msgid "B<getnetent>(3), B<getprotoent_r>(3), B<getservent>(3), B<protocols>(5)"
6184 #: build/C/man3/getprotoent_r.3:26
6186 msgid "GETPROTOENT_R"
6190 #: build/C/man3/getprotoent_r.3:30
6192 "getprotoent_r, getprotobyname_r, getprotobynumber_r - get protocol entry "
6197 #: build/C/man3/getprotoent_r.3:36
6200 "B<int getprotoent_r(struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6201 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
6205 #: build/C/man3/getprotoent_r.3:40
6208 "B<int getprotobyname_r(const char *>I<name>B<,>\n"
6209 "B< struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6210 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
6214 #: build/C/man3/getprotoent_r.3:44
6217 "B<int getprotobynumber_r(int >I<proto>B<,>\n"
6218 "B< struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6219 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
6223 #: build/C/man3/getprotoent_r.3:55
6224 msgid "B<getprotoent_r>(), B<getprotobyname_r>(), B<getprotobynumber_r>():"
6228 #: build/C/man3/getprotoent_r.3:76
6230 "The B<getprotoent_r>(), B<getprotobyname_r>(), and B<getprotobynumber_r>() "
6231 "functions are the reentrant equivalents of, respectively, B<getprotoent>(3), "
6232 "B<getprotobyname>(3), and B<getprotobynumber>(3). They differ in the way "
6233 "that the I<protoent> structure is returned, and in the function calling "
6234 "signature and return value. This manual page describes just the differences "
6235 "from the nonreentrant functions."
6239 #: build/C/man3/getprotoent_r.3:82
6241 "Instead of returning a pointer to a statically allocated I<protoent> "
6242 "structure as the function result, these functions copy the structure into "
6243 "the location pointed to by I<result_buf>."
6246 #. I can find no information on the required/recommended buffer size;
6247 #. the nonreentrant functions use a 1024 byte buffer.
6248 #. The 1024 byte value is also what the Solaris man page suggests. -- mtk
6250 #: build/C/man3/getprotoent_r.3:100
6252 "The I<buf> array is used to store the string fields pointed to by the "
6253 "returned I<protoent> structure. (The nonreentrant functions allocate these "
6254 "strings in static storage.) The size of this array is specified in "
6255 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
6256 "and the caller must try again with a larger buffer. (A buffer of length "
6257 "1024 bytes should be sufficient for most applications.)"
6261 #: build/C/man3/getprotoent_r.3:108
6263 "If the function call successfully obtains a protocol record, then I<*result> "
6264 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
6268 #: build/C/man3/getprotoent_r.3:119
6270 "On error, record not found (B<getprotobyname_r>(), B<getprotobynumber_r>()), "
6271 "or end of input (B<getprotoent_r>()) I<result> is set to NULL."
6275 #: build/C/man3/getprotoent_r.3:124
6276 msgid "(B<getprotoent_r>()) No more records in database."
6280 #: build/C/man3/getprotoent_r.3:149
6282 "The program below uses B<getprotobyname_r>() to retrieve the protocol "
6283 "record for the protocol named in its first command-line argument. If a "
6284 "second (integer) command-line argument is supplied, it is used as the "
6285 "initial value for I<buflen>; if B<getprotobyname_r>() fails with the error "
6286 "B<ERANGE>, the program retries with larger buffer sizes. The following "
6287 "shell session shows a couple of sample runs:"
6291 #: build/C/man3/getprotoent_r.3:160
6294 "$B< ./a.out tcp 1>\n"
6295 "ERANGE! Retrying with larger buffer\n"
6296 "getprotobyname_r() returned: 0 (success) (buflen=78)\n"
6297 "p_name=tcp; p_proto=6; aliases=TCP\n"
6298 "$B< ./a.out xxx 1>\n"
6299 "ERANGE! Retrying with larger buffer\n"
6300 "getprotobyname_r() returned: 0 (success) (buflen=100)\n"
6301 "Call failed/record not found\n"
6305 #: build/C/man3/getprotoent_r.3:172 build/C/man3/getservent_r.3:170
6308 "#define _GNU_SOURCE\n"
6309 "#include E<lt>ctype.hE<gt>\n"
6310 "#include E<lt>netdb.hE<gt>\n"
6311 "#include E<lt>stdlib.hE<gt>\n"
6312 "#include E<lt>stdio.hE<gt>\n"
6313 "#include E<lt>errno.hE<gt>\n"
6314 "#include E<lt>string.hE<gt>\n"
6318 #: build/C/man3/getprotoent_r.3:174 build/C/man3/getservent_r.3:172
6320 msgid "#define MAX_BUF 10000\n"
6324 #: build/C/man3/getprotoent_r.3:183
6328 "main(int argc, char *argv[])\n"
6330 " int buflen, erange_cnt, s;\n"
6331 " struct protoent result_buf;\n"
6332 " struct protoent *result;\n"
6333 " char buf[MAX_BUF];\n"
6338 #: build/C/man3/getprotoent_r.3:188
6341 " if (argc E<lt> 2) {\n"
6342 " printf(\"Usage: %s proto-name [buflen]\\en\", argv[0]);\n"
6343 " exit(EXIT_FAILURE);\n"
6348 #: build/C/man3/getprotoent_r.3:192
6352 " if (argc E<gt> 2)\n"
6353 " buflen = atoi(argv[2]);\n"
6357 #: build/C/man3/getprotoent_r.3:197 build/C/man3/getservent_r.3:200
6360 " if (buflen E<gt> MAX_BUF) {\n"
6361 " printf(\"Exceeded buffer limit (%d)\\en\", MAX_BUF);\n"
6362 " exit(EXIT_FAILURE);\n"
6367 #: build/C/man3/getprotoent_r.3:206
6370 " erange_cnt = 0;\n"
6372 " s = getprotobyname_r(argv[1], &result_buf,\n"
6373 " buf, buflen, &result);\n"
6374 " if (s == ERANGE) {\n"
6375 " if (erange_cnt == 0)\n"
6376 " printf(\"ERANGE! Retrying with larger buffer\\en\");\n"
6381 #: build/C/man3/getprotoent_r.3:209 build/C/man3/getservent_r.3:212
6384 " /* Increment a byte at a time so we can see exactly\n"
6385 " what size buffer was required */\n"
6389 #: build/C/man3/getprotoent_r.3:211 build/C/man3/getservent_r.3:214
6391 msgid " buflen++;\n"
6395 #: build/C/man3/getprotoent_r.3:218 build/C/man3/getservent_r.3:221
6398 " if (buflen E<gt> MAX_BUF) {\n"
6399 " printf(\"Exceeded buffer limit (%d)\\en\", MAX_BUF);\n"
6400 " exit(EXIT_FAILURE);\n"
6403 " } while (s == ERANGE);\n"
6407 #: build/C/man3/getprotoent_r.3:222
6410 " printf(\"getprotobyname_r() returned: %s (buflen=%d)\\en\",\n"
6411 " (s == 0) ? \"0 (success)\" : (s == ENOENT) ? \"ENOENT\" :\n"
6412 " strerror(s), buflen);\n"
6416 #: build/C/man3/getprotoent_r.3:227 build/C/man3/getservent_r.3:230
6419 " if (s != 0 || result == NULL) {\n"
6420 " printf(\"Call failed/record not found\\en\");\n"
6421 " exit(EXIT_FAILURE);\n"
6426 #: build/C/man3/getprotoent_r.3:233
6429 " printf(\"p_name=%s; p_proto=%d; aliases=\",\n"
6430 " result_buf.p_name, result_buf.p_proto);\n"
6431 " for (p = result_buf.p_aliases; *p != NULL; p++)\n"
6432 " printf(\"%s \", *p);\n"
6433 " printf(\"\\en\");\n"
6437 #: build/C/man3/getprotoent_r.3:240
6438 msgid "B<getprotoent>(3), B<protocols>(5)"
6442 #: build/C/man3/getservent.3:34
6448 #: build/C/man3/getservent.3:38
6450 "getservent, getservbyname, getservbyport, setservent, endservent - get "
6455 #: build/C/man3/getservent.3:43
6457 msgid "B<struct servent *getservent(void);>\n"
6461 #: build/C/man3/getservent.3:45
6464 "B<struct servent *getservbyname(const char *>I<name>B<, const char "
6469 #: build/C/man3/getservent.3:47
6471 msgid "B<struct servent *getservbyport(int >I<port>B<, const char *>I<proto>B<);>\n"
6475 #: build/C/man3/getservent.3:49
6477 msgid "B<void setservent(int >I<stayopen>B<);>\n"
6481 #: build/C/man3/getservent.3:51
6483 msgid "B<void endservent(void);>\n"
6487 #: build/C/man3/getservent.3:62
6489 "The B<getservent>() function reads the next entry from the services "
6490 "database (see B<services>(5)) and returns a I<servent> structure containing "
6491 "the broken-out fields from the entry. A connection is opened to the "
6492 "database if necessary."
6496 #: build/C/man3/getservent.3:77
6498 "The B<getservbyname>() function returns a I<servent> structure for the "
6499 "entry from the database that matches the service I<name> using protocol "
6500 "I<proto>. If I<proto> is NULL, any protocol will be matched. A connection "
6501 "is opened to the database if necessary."
6505 #: build/C/man3/getservent.3:93
6507 "The B<getservbyport>() function returns a I<servent> structure for the "
6508 "entry from the database that matches the port I<port> (given in network byte "
6509 "order) using protocol I<proto>. If I<proto> is NULL, any protocol will be "
6510 "matched. A connection is opened to the database if necessary."
6514 #: build/C/man3/getservent.3:105
6516 "The B<setservent>() function opens a connection to the database, and sets "
6517 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
6518 "connection to the database will not be closed between calls to one of the "
6519 "B<getserv*>() functions."
6523 #: build/C/man3/getservent.3:109
6524 msgid "The B<endservent>() function closes the connection to the database."
6528 #: build/C/man3/getservent.3:115
6529 msgid "The I<servent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
6533 #: build/C/man3/getservent.3:124
6536 "struct servent {\n"
6537 " char *s_name; /* official service name */\n"
6538 " char **s_aliases; /* alias list */\n"
6539 " int s_port; /* port number */\n"
6540 " char *s_proto; /* protocol to use */\n"
6545 #: build/C/man3/getservent.3:130
6546 msgid "The members of the I<servent> structure are:"
6550 #: build/C/man3/getservent.3:130
6556 #: build/C/man3/getservent.3:133
6557 msgid "The official name of the service."
6561 #: build/C/man3/getservent.3:133
6563 msgid "I<s_aliases>"
6567 #: build/C/man3/getservent.3:136
6568 msgid "A NULL-terminated list of alternative names for the service."
6572 #: build/C/man3/getservent.3:136
6578 #: build/C/man3/getservent.3:139
6579 msgid "The port number for the service given in network byte order."
6583 #: build/C/man3/getservent.3:139
6589 #: build/C/man3/getservent.3:142
6590 msgid "The name of the protocol to use with this service."
6594 #: build/C/man3/getservent.3:153
6596 "The B<getservent>(), B<getservbyname>() and B<getservbyport>() functions "
6597 "return a pointer to a statically allocated I<servent> structure, or NULL if "
6598 "an error occurs or the end of the file is reached."
6602 #: build/C/man3/getservent.3:154 build/C/man5/services.5:186
6604 msgid "I</etc/services>"
6608 #: build/C/man3/getservent.3:157
6609 msgid "services database file"
6613 #: build/C/man3/getservent.3:164
6614 msgid "B<getnetent>(3), B<getprotoent>(3), B<getservent_r>(3), B<services>(5)"
6618 #: build/C/man3/getservent_r.3:26
6620 msgid "GETSERVENT_R"
6624 #: build/C/man3/getservent_r.3:30
6626 "getservent_r, getservbyname_r, getservbyport_r - get service entry "
6631 #: build/C/man3/getservent_r.3:36
6634 "B<int getservent_r(struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6635 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6639 #: build/C/man3/getservent_r.3:40
6642 "B<int getservbyname_r(const char *>I<name>B<, const char *>I<proto>B<,>\n"
6643 "B< struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6644 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6648 #: build/C/man3/getservent_r.3:44
6651 "B<int getservbyport_r(int >I<port>B<, const char *>I<proto>B<,>\n"
6652 "B< struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6653 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6657 #: build/C/man3/getservent_r.3:55
6658 msgid "B<getservent_r>(), B<getservbyname_r>(), B<getservbyport_r>():"
6662 #: build/C/man3/getservent_r.3:76
6664 "The B<getservent_r>(), B<getservbyname_r>(), and B<getservbyport_r>() "
6665 "functions are the reentrant equivalents of, respectively, B<getservent>(3), "
6666 "B<getservbyname>(3), and B<getservbyport>(3). They differ in the way that "
6667 "the I<servent> structure is returned, and in the function calling signature "
6668 "and return value. This manual page describes just the differences from the "
6669 "nonreentrant functions."
6673 #: build/C/man3/getservent_r.3:82
6675 "Instead of returning a pointer to a statically allocated I<servent> "
6676 "structure as the function result, these functions copy the structure into "
6677 "the location pointed to by I<result_buf>."
6680 #. I can find no information on the required/recommended buffer size;
6681 #. the nonreentrant functions use a 1024 byte buffer -- mtk.
6683 #: build/C/man3/getservent_r.3:99
6685 "The I<buf> array is used to store the string fields pointed to by the "
6686 "returned I<servent> structure. (The nonreentrant functions allocate these "
6687 "strings in static storage.) The size of this array is specified in "
6688 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
6689 "and the caller must try again with a larger buffer. (A buffer of length "
6690 "1024 bytes should be sufficient for most applications.)"
6694 #: build/C/man3/getservent_r.3:107
6696 "If the function call successfully obtains a service record, then I<*result> "
6697 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
6701 #: build/C/man3/getservent_r.3:110
6703 "On success, these functions return 0. On error, they return one of the "
6704 "positive error numbers listed in errors."
6708 #: build/C/man3/getservent_r.3:118
6710 "On error, record not found (B<getservbyname_r>(), B<getservbyport_r>()), or "
6711 "end of input (B<getservent_r>()) I<result> is set to NULL."
6715 #: build/C/man3/getservent_r.3:123
6716 msgid "(B<getservent_r>()) No more records in database."
6720 #: build/C/man3/getservent_r.3:148
6722 "The program below uses B<getservbyport_r>() to retrieve the service record "
6723 "for the port and protocol named in its first command-line argument. If a "
6724 "third (integer) command-line argument is supplied, it is used as the initial "
6725 "value for I<buflen>; if B<getservbyport_r>() fails with the error "
6726 "B<ERANGE>, the program retries with larger buffer sizes. The following "
6727 "shell session shows a couple of sample runs:"
6731 #: build/C/man3/getservent_r.3:158
6734 "$B< ./a.out 7 tcp 1>\n"
6735 "ERANGE! Retrying with larger buffer\n"
6736 "getservbyport_r() returned: 0 (success) (buflen=87)\n"
6737 "s_name=echo; s_proto=tcp; s_port=7; aliases=\n"
6738 "$B< ./a.out 77777 tcp>\n"
6739 "getservbyport_r() returned: 0 (success) (buflen=1024)\n"
6740 "Call failed/record not found\n"
6744 #: build/C/man3/getservent_r.3:182
6748 "main(int argc, char *argv[])\n"
6750 " int buflen, erange_cnt, port, s;\n"
6751 " struct servent result_buf;\n"
6752 " struct servent *result;\n"
6753 " char buf[MAX_BUF];\n"
6759 #: build/C/man3/getservent_r.3:187
6762 " if (argc E<lt> 3) {\n"
6763 " printf(\"Usage: %s port-num proto-name [buflen]\\en\", argv[0]);\n"
6764 " exit(EXIT_FAILURE);\n"
6769 #: build/C/man3/getservent_r.3:191
6772 " port = htons(atoi(argv[1]));\n"
6773 " protop = (strcmp(argv[2], \"null\") == 0 ||\n"
6774 " strcmp(argv[2], \"NULL\") == 0) ? NULL : argv[2];\n"
6778 #: build/C/man3/getservent_r.3:195
6782 " if (argc E<gt> 3)\n"
6783 " buflen = atoi(argv[3]);\n"
6787 #: build/C/man3/getservent_r.3:209
6790 " erange_cnt = 0;\n"
6792 " s = getservbyport_r(port, protop, &result_buf,\n"
6793 " buf, buflen, &result);\n"
6794 " if (s == ERANGE) {\n"
6795 " if (erange_cnt == 0)\n"
6796 " printf(\"ERANGE! Retrying with larger buffer\\en\");\n"
6801 #: build/C/man3/getservent_r.3:225
6804 " printf(\"getservbyport_r() returned: %s (buflen=%d)\\en\",\n"
6805 " (s == 0) ? \"0 (success)\" : (s == ENOENT) ? \"ENOENT\" :\n"
6806 " strerror(s), buflen);\n"
6810 #: build/C/man3/getservent_r.3:237
6813 " printf(\"s_name=%s; s_proto=%s; s_port=%d; aliases=\",\n"
6814 " result_buf.s_name, result_buf.s_proto,\n"
6815 " ntohs(result_buf.s_port));\n"
6816 " for (p = result_buf.s_aliases; *p != NULL; p++)\n"
6817 " printf(\"%s \", *p);\n"
6818 " printf(\"\\en\");\n"
6822 #: build/C/man3/getservent_r.3:244
6823 msgid "B<getservent>(3), B<services>(5)"
6827 #: build/C/man5/host.conf.5:26
6833 #: build/C/man5/host.conf.5:26
6839 #: build/C/man5/host.conf.5:26 build/C/man5/networks.5:26
6841 msgid "Linux System Administration"
6845 #: build/C/man5/host.conf.5:29
6846 msgid "host.conf - resolver configuration file"
6850 #: build/C/man5/host.conf.5:38
6852 "The file I</etc/host.conf> contains configuration information specific to "
6853 "the resolver library. It should contain one configuration keyword per line, "
6854 "followed by appropriate configuration information. The keywords recognized "
6855 "are I<order>, I<trim>, I<multi>, I<nospoof>, I<spoof>, and I<reorder>. "
6856 "These keywords are described below."
6860 #: build/C/man5/host.conf.5:38
6866 #: build/C/man5/host.conf.5:44
6868 "This keyword specifies how host lookups are to be performed. It should be "
6869 "followed by one or more lookup methods, separated by commas. Valid methods "
6870 "are I<bind>, I<hosts>, and I<nis>."
6874 #: build/C/man5/host.conf.5:44
6880 #: build/C/man5/host.conf.5:61
6882 "This keyword may be listed more than once. Each time it should be followed "
6883 "by a list of domains, separated by colons (\\(aq:\\(aq), semicolons "
6884 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot. When set, the "
6885 "resolv+ library will automatically trim the given domain name from the end "
6886 "of any hostname resolved via DNS. This is intended for use with local hosts "
6887 "and domains. (Related note: trim will not affect hostnames gathered via NIS "
6888 "or the hosts file. Care should be taken to ensure that the first hostname "
6889 "for each entry in the hosts file is fully qualified or unqualified, as "
6890 "appropriate for the local installation.)"
6894 #: build/C/man5/host.conf.5:61
6900 #: build/C/man5/host.conf.5:76
6902 "Valid values are I<on> and I<off>. If set to I<on>, the resolv+ library "
6903 "will return all valid addresses for a host that appears in the I</etc/hosts> "
6904 "file, instead of only the first. This is I<off> by default, as it may cause "
6905 "a substantial performance loss at sites with large hosts files."
6909 #: build/C/man5/host.conf.5:76
6915 #: build/C/man5/host.conf.5:91
6917 "Valid values are I<on> and I<off>. If set to I<on>, the resolv+ library "
6918 "will attempt to prevent hostname spoofing to enhance the security of "
6919 "B<rlogin> and B<rsh>. It works as follows: after performing a host address "
6920 "lookup, resolv+ will perform a hostname lookup for that address. If the two "
6921 "hostnames do not match, the query will fail. The default value is I<off>."
6925 #: build/C/man5/host.conf.5:91
6927 msgid "I<spoofalert>"
6931 #: build/C/man5/host.conf.5:103
6933 "Valid values are I<on> and I<off>. If this option is set to I<on> and the "
6934 "I<nospoof> option is also set, resolv+ will log a warning of the error via "
6935 "the syslog facility. The default value is I<off>."
6939 #: build/C/man5/host.conf.5:103
6945 #: build/C/man5/host.conf.5:122
6947 "Valid values are I<off>, I<nowarn> and I<warn>. If this option is set to "
6948 "I<off>, spoofed addresses are permitted and no warnings will be emitted via "
6949 "the syslog facility. If this option is set to I<warn>, resolv+ will attempt "
6950 "to prevent hostname spoofing to enhance the security and log a warning of "
6951 "the error via the syslog facility. If this option is set to I<nowarn>, the "
6952 "resolv+ library will attempt to prevent hostname spoofing to enhance the "
6953 "security but not emit warnings via the syslog facility. Setting this option "
6954 "to anything else is equal to setting it to I<nowarn>."
6958 #: build/C/man5/host.conf.5:122
6964 #: build/C/man5/host.conf.5:135
6966 "Valid values are I<on> and I<off>. If set to I<on>, resolv+ will attempt to "
6967 "reorder host addresses so that local addresses (i.e., on the same subnet) "
6968 "are listed first when a B<gethostbyname>(3) is performed. Reordering is "
6969 "done for all lookup methods. The default value is I<off>."
6973 #: build/C/man5/host.conf.5:135
6979 #: build/C/man5/host.conf.5:139
6981 "There are six environment variables that can be used to allow users to "
6982 "override the behavior which is configured in I</etc/host.conf>."
6986 #: build/C/man5/host.conf.5:139
6988 msgid "B<RESOLV_HOST_CONF>"
6992 #: build/C/man5/host.conf.5:143
6994 "If set, this variable points to a file that should be read instead of "
6995 "I</etc/host.conf>."
6999 #: build/C/man5/host.conf.5:143
7001 msgid "B<RESOLV_SERV_ORDER>"
7005 #: build/C/man5/host.conf.5:148
7006 msgid "Overrides the I<order> command."
7010 #: build/C/man5/host.conf.5:148
7012 msgid "B<RESOLV_SPOOF_CHECK>"
7016 #: build/C/man5/host.conf.5:157
7018 "Overrides the I<nospoof>, I<spoofalert> and I<spoof> commands in the same "
7019 "way as the I<spoof> command is parsed. Valid values are I<off>, I<nowarn> "
7024 #: build/C/man5/host.conf.5:157
7026 msgid "B<RESOLV_MULTI>"
7030 #: build/C/man5/host.conf.5:162
7031 msgid "Overrides the I<multi> command."
7035 #: build/C/man5/host.conf.5:162
7037 msgid "B<RESOLV_REORDER>"
7041 #: build/C/man5/host.conf.5:167
7042 msgid "Overrides the I<reorder> command."
7046 #: build/C/man5/host.conf.5:167
7048 msgid "B<RESOLV_ADD_TRIM_DOMAINS>"
7052 #: build/C/man5/host.conf.5:172
7054 "A list of domains, separated by colons (\\(aq:\\(aq), semicolons "
7055 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot, which will be "
7056 "added to the list of domains that should be trimmed."
7060 #: build/C/man5/host.conf.5:172
7062 msgid "B<RESOLV_OVERRIDE_TRIM_DOMAINS>"
7066 #: build/C/man5/host.conf.5:180
7068 "A list of domains, separated by colons (\\(aq:\\(aq), semicolons "
7069 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot, which will "
7070 "replace the list of domains that should be trimmed. Overrides the I<trim> "
7075 #: build/C/man5/host.conf.5:184 build/C/man5/host.conf.5:187
7076 msgid "Resolver configuration file"
7080 #: build/C/man5/host.conf.5:184
7082 msgid "I</etc/resolv.conf>"
7086 #: build/C/man5/host.conf.5:190
7087 msgid "Local hosts database"
7091 #: build/C/man5/host.conf.5:199
7093 "The following differences exist compared to the original implementation. A "
7094 "new command I<spoof> and a new environment variable B<RESOLV_SPOOF_CHECK> "
7095 "can take arguments like I<off>, I<nowarn> and I<warn>. Line comments can "
7096 "appear anywhere and not only at the beginning of a line."
7100 #: build/C/man5/host.conf.5:204
7101 msgid "B<gethostbyname>(3), B<hostname>(7), B<named>(8), B<resolv+>(8)"
7105 #: build/C/man7/hostname.7:39
7111 #: build/C/man7/hostname.7:39
7117 #: build/C/man7/hostname.7:42
7118 msgid "hostname - hostname resolution description"
7122 #: build/C/man7/hostname.7:46
7124 "Hostnames are domains, where a domain is a hierarchical, dot-separated list "
7125 "of subdomains; for example, the machine monet, in the Berkeley subdomain of "
7126 "the EDU domain would be represented as \"monet.Berkeley.EDU\"."
7130 #: build/C/man7/hostname.7:55
7132 "Hostnames are often used with network client and server programs, which must "
7133 "generally translate the name to an address for use. (This task is generally "
7134 "performed by either B<getaddrinfo>(3) or the obsolete B<gethostbyname>(3).) "
7135 "Hostnames are resolved by the Internet name resolver in the following "
7140 #: build/C/man7/hostname.7:68
7142 "If the name consists of a single component, that is, contains no dot, and if "
7143 "the environment variable B<HOSTALIASES> is set to the name of a file, that "
7144 "file is searched for any string matching the input hostname. The file "
7145 "should consist of lines made up of two white-space separated strings, the "
7146 "first of which is the hostname alias, and the second of which is the "
7147 "complete hostname to be substituted for that alias. If a case-insensitive "
7148 "match is found between the hostname to be resolved and the first field of a "
7149 "line in the file, the substituted name is looked up with no further "
7154 #: build/C/man7/hostname.7:72
7156 "If the input name ends with a trailing dot, the trailing dot is removed, and "
7157 "the remaining name is looked up with no further processing."
7161 #: build/C/man7/hostname.7:85
7163 "If the input name does not end with a trailing dot, it is looked up by "
7164 "searching through a list of domains until a match is found. The default "
7165 "search list includes first the local domain, then its parent domains with at "
7166 "least 2 name components (longest first). For example, in the domain "
7167 "CS.Berkeley.EDU, the name lithium.CChem will be checked first as "
7168 "lithium.CChem.CS.Berkeley.EDU and then as lithium.CChem.Berkeley.EDU. "
7169 "Lithium.CChem.EDU will not be tried, as there is only one component "
7170 "remaining from the local domain. The search path can be changed from the "
7171 "default by a system-wide configuration file (see B<resolver>(5))."
7175 #. Hostname appeared in
7178 #: build/C/man7/hostname.7:93
7179 msgid "B<gethostbyname>(3), B<resolver>(5), B<mailaddr>(7), B<named>(8)"
7183 #: build/C/man5/hosts.5:27
7189 #: build/C/man5/hosts.5:27
7195 #: build/C/man5/hosts.5:30
7196 msgid "hosts - static table lookup for hostnames"
7200 #: build/C/man5/hosts.5:32
7201 msgid "B</etc/hosts>"
7205 #: build/C/man5/hosts.5:40
7207 "This manual page describes the format of the I</etc/hosts> file. This file "
7208 "is a simple text file that associates IP addresses with hostnames, one line "
7209 "per IP address. For each host a single line should be present with the "
7210 "following information:"
7214 #: build/C/man5/hosts.5:43
7215 msgid "IP_address canonical_hostname [aliases...]"
7219 #: build/C/man5/hosts.5:56
7221 "Fields of the entry are separated by any number of blanks and/or tab "
7222 "characters. Text from a \"#\" character until the end of the line is a "
7223 "comment, and is ignored. Host names may contain only alphanumeric "
7224 "characters, minus signs (\"-\"), and periods (\".\"). They must begin with "
7225 "an alphabetic character and end with an alphanumeric character. Optional "
7226 "aliases provide for name changes, alternate spellings, shorter hostnames, or "
7227 "generic hostnames (for example, I<localhost>)."
7231 #: build/C/man5/hosts.5:64
7233 "The Berkeley Internet Name Domain (BIND) Server implements the Internet name "
7234 "server for UNIX systems. It augments or replaces the I</etc/hosts> file or "
7235 "hostname lookup, and frees a host from relying on I</etc/hosts> being up to "
7236 "date and complete."
7240 #: build/C/man5/hosts.5:67
7242 "In modern systems, even though the host table has been superseded by DNS, it "
7243 "is still widely used for:"
7247 #: build/C/man5/hosts.5:67
7249 msgid "B<bootstrapping>"
7253 #: build/C/man5/hosts.5:73
7255 "Most systems have a small host table containing the name and address "
7256 "information for important hosts on the local network. This is useful when "
7257 "DNS is not running, for example during system bootup."
7261 #: build/C/man5/hosts.5:73
7267 #: build/C/man5/hosts.5:79
7269 "Sites that use NIS use the host table as input to the NIS host database. "
7270 "Even though NIS can be used with DNS, most NIS sites still use the host "
7271 "table with an entry for all local hosts as a backup."
7275 #: build/C/man5/hosts.5:79
7277 msgid "B<isolated nodes>"
7281 #: build/C/man5/hosts.5:86
7283 "Very small sites that are isolated from the network use the host table "
7284 "instead of DNS. If the local information rarely changes, and the network is "
7285 "not connected to the Internet, DNS offers little advantage."
7289 #: build/C/man5/hosts.5:91
7291 "Modifications to this file normally take effect immediately, except in cases "
7292 "where the file is cached by applications."
7296 #: build/C/man5/hosts.5:91
7298 msgid "Historical notes"
7302 #: build/C/man5/hosts.5:94
7304 "RFC\\ 952 gave the original format for the host table, though it has since "
7309 #: build/C/man5/hosts.5:107
7311 "Before the advent of DNS, the host table was the only way of resolving "
7312 "hostnames on the fledgling Internet. Indeed, this file could be created "
7313 "from the official host data base maintained at the Network Information "
7314 "Control Center (NIC), though local changes were often required to bring it "
7315 "up to date regarding unofficial aliases and/or unknown hosts. The NIC no "
7316 "longer maintains the hosts.txt files, though looking around at the time of "
7317 "writing (circa 2000), there are historical hosts.txt files on the WWW. I "
7318 "just found three, from 92, 94, and 95."
7322 #: build/C/man5/hosts.5:114
7325 "127.0.0.1 localhost\n"
7326 "192.168.1.10 foo.mydomain.org foo\n"
7327 "192.168.1.13 bar.mydomain.org bar\n"
7328 "146.82.138.7 master.debian.org master\n"
7329 "209.237.226.90 www.opensource.org\n"
7333 #: build/C/man5/hosts.5:121
7334 msgid "B<hostname>(1), B<resolver>(3), B<resolver>(5), B<hostname>(7), B<named>(8)"
7338 #. This manual page was written by Manoj Srivastava <srivasta@debian.org>,
7339 #. for the Debian GNU/Linux system.
7341 #: build/C/man5/hosts.5:126
7342 msgid "Internet RFC\\ 952"
7346 #: build/C/man5/hosts.equiv.5:6
7352 #: build/C/man5/hosts.equiv.5:6
7358 #: build/C/man5/hosts.equiv.5:11
7360 "/etc/hosts.equiv - list of hosts and users that are granted \"trusted\" B<r> "
7361 "command access to your system"
7365 #: build/C/man5/hosts.equiv.5:22
7367 "The B<hosts.equiv> file allows or denies hosts and users to use the "
7368 "B<r>-commands (e.g., B<rlogin>, B<rsh>, or B<rcp>) without supplying a "
7373 #: build/C/man5/hosts.equiv.5:24
7374 msgid "The file uses the following format:"
7378 #: build/C/man5/hosts.equiv.5:24
7380 msgid "I<[ + | - ]> I<[hostname]> I<[username]>"
7384 #: build/C/man5/hosts.equiv.5:43
7386 "The I<hostname> is the name of a host which is logically equivalent to the "
7387 "local host. Users logged into that host are allowed to access like-named "
7388 "user accounts on the local host without supplying a password. The "
7389 "I<hostname> may be (optionally) preceded by a plus (+) sign. If the plus "
7390 "sign is used alone, it allows any host to access your system. You can "
7391 "explicitly deny access to a host by preceding the I<hostname> by a minus (-) "
7392 "sign. Users from that host must always supply a password. For security "
7393 "reasons you should always use the FQDN of the hostname and not the short "
7398 #: build/C/man5/hosts.equiv.5:61
7400 "The I<username> entry grants a specific user access to all user accounts "
7401 "(except root) without supplying a password. That means the user is NOT "
7402 "restricted to like-named accounts. The I<username> may be (optionally) "
7403 "preceded by a plus (+) sign. You can also explicitly deny access to a "
7404 "specific user by preceding the I<username> with a minus (-) sign. This says "
7405 "that the user is not trusted no matter what other entries for that host "
7410 #: build/C/man5/hosts.equiv.5:63
7411 msgid "Netgroups can be specified by preceding the netgroup by an @ sign."
7415 #: build/C/man5/hosts.equiv.5:69
7417 "Be extremely careful when using the plus (+) sign. A simple typographical "
7418 "error could result in a standalone plus sign. A standalone plus sign is a "
7419 "wildcard character that means \"any host\"!"
7423 #: build/C/man5/hosts.equiv.5:71
7424 msgid "I</etc/hosts.equiv>"
7428 #: build/C/man5/hosts.equiv.5:76
7430 "Some systems will honor the contents of this file only when it has owner "
7431 "root and no write permission for anybody else. Some exceptionally paranoid "
7432 "systems even require that there be no other hard links to the file."
7436 #: build/C/man5/hosts.equiv.5:84
7438 "Modern systems use the Pluggable Authentication Modules library (PAM). With "
7439 "PAM a standalone plus sign is considered a wildcard character which means "
7440 "\"any host\" only when the word I<promiscuous> is added to the auth "
7441 "component line in your PAM file for the particular service (e.g., "
7446 #: build/C/man5/hosts.equiv.5:88
7447 msgid "B<rhosts>(5), B<rlogind>(8), B<rshd>(8)"
7451 #: build/C/man7/icmp.7:12
7457 #: build/C/man7/icmp.7:12 build/C/man8/nscd.8:23 build/C/man7/raw.7:13
7463 #: build/C/man7/icmp.7:15
7464 msgid "icmp - Linux IPv4 ICMP kernel module."
7468 #: build/C/man7/icmp.7:23
7470 "This kernel protocol module implements the Internet Control Message Protocol "
7471 "defined in RFC\\ 792. It is used to signal error conditions and for "
7472 "diagnosis. The user doesn't interact directly with this module; instead it "
7473 "communicates with the other protocols in the kernel and these pass the ICMP "
7474 "errors to the application layers. The kernel ICMP module also answers ICMP "
7479 #: build/C/man7/icmp.7:35
7481 "A user protocol may receive ICMP packets for all local sockets by opening a "
7482 "raw socket with the protocol B<IPPROTO_ICMP>. See B<raw>(7) for more "
7483 "information. The types of ICMP packets passed to the socket can be filtered "
7484 "using the B<ICMP_FILTER> socket option. ICMP packets are always processed "
7485 "by the kernel too, even when passed to a user socket."
7489 #: build/C/man7/icmp.7:41
7491 "Linux limits the rate of ICMP error packets to each destination. "
7492 "B<ICMP_REDIRECT> and B<ICMP_DEST_UNREACH> are also limited by the "
7493 "destination route of the incoming packets."
7496 #. FIXME . better description needed
7498 #: build/C/man7/icmp.7:54
7500 "ICMP supports a set of I</proc> interfaces to configure some global IP "
7501 "parameters. The parameters can be accessed by reading or writing files in "
7502 "the directory I</proc/sys/net/ipv4/>. Most of these parameters are rate "
7503 "limitations for specific ICMP types. Linux 2.2 uses a token bucket filter "
7504 "to limit ICMPs. The value is the timeout in jiffies until the token bucket "
7505 "filter is cleared after a burst. A jiffy is a system dependent unit, "
7506 "usually 10ms on i386 and about 1ms on alpha and ia64."
7510 #: build/C/man7/icmp.7:54
7512 msgid "I<icmp_destunreach_rate> (Linux 2.2 to 2.4.9)"
7515 #. Precisely: from 2.1.102
7517 #: build/C/man7/icmp.7:63
7519 "Maximum rate to send ICMP Destination Unreachable packets. This limits the "
7520 "rate at which packets are sent to any individual route or destination. The "
7521 "limit does not affect sending of B<ICMP_FRAG_NEEDED> packets needed for path "
7526 #: build/C/man7/icmp.7:63
7528 msgid "I<icmp_echo_ignore_all> (since Linux 2.2)"
7531 #. Precisely: 2.1.68
7533 #: build/C/man7/icmp.7:69
7534 msgid "If this value is nonzero, Linux will ignore all B<ICMP_ECHO> requests."
7538 #: build/C/man7/icmp.7:69
7540 msgid "I<icmp_echo_ignore_broadcasts> (since Linux 2.2)"
7543 #. Precisely: from 2.1.68
7545 #: build/C/man7/icmp.7:75
7547 "If this value is nonzero, Linux will ignore all B<ICMP_ECHO> packets sent to "
7548 "broadcast addresses."
7552 #: build/C/man7/icmp.7:75
7554 msgid "I<icmp_echoreply_rate> (Linux 2.2 to 2.4.9)"
7557 #. Precisely: from 2.1.102
7559 #: build/C/man7/icmp.7:83
7561 "Maximum rate for sending B<ICMP_ECHOREPLY> packets in response to "
7562 "B<ICMP_ECHOREQUEST> packets."
7566 #: build/C/man7/icmp.7:83
7569 "I<icmp_errors_use_inbound_ifaddr> (Boolean; default: disabled; since Linux "
7573 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7575 #: build/C/man7/icmp.7:88
7577 "If disabled, ICMP error messages are sent with the primary address of the "
7578 "exiting interface."
7582 #: build/C/man7/icmp.7:94
7584 "If enabled, the message will be sent with the primary address of the "
7585 "interface that received the packet that caused the ICMP error. This is the "
7586 "behavior that many network administrators will expect from a router. And it "
7587 "can make debugging complicated network layouts much easier."
7591 #: build/C/man7/icmp.7:98
7593 "Note that if no primary address exists for the interface selected, then the "
7594 "primary address of the first non-loopback interface that has one will be "
7595 "used regardless of this setting."
7599 #: build/C/man7/icmp.7:98
7602 "I<icmp_ignore_bogus_error_responses> (Boolean; default: disabled; since "
7606 #. precisely: since 2.1.32
7607 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7609 #: build/C/man7/icmp.7:106
7611 "Some routers violate RFC1122 by sending bogus responses to broadcast "
7612 "frames. Such violations are normally logged via a kernel warning. If this "
7613 "parameter is enabled, the kernel will not give such warnings, which will "
7614 "avoid log file clutter."
7618 #: build/C/man7/icmp.7:106
7620 msgid "I<icmp_paramprob_rate> (Linux 2.2 to 2.4.9)"
7623 #. Precisely: from 2.1.102
7625 #: build/C/man7/icmp.7:113
7627 "Maximum rate for sending B<ICMP_PARAMETERPROB> packets. These packets are "
7628 "sent when a packet arrives with an invalid IP header."
7632 #: build/C/man7/icmp.7:113
7634 msgid "I<icmp_ratelimit> (integer; default: 1000; since Linux 2.4.10)"
7637 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7639 #: build/C/man7/icmp.7:121
7641 "Limit the maximum rates for sending ICMP packets whose type matches "
7642 "I<icmp_ratemask> (see below) to specific targets. 0 to disable any "
7643 "limiting, otherwise the minimum space between responses in milliseconds."
7647 #: build/C/man7/icmp.7:121
7649 msgid "I<icmp_ratemask> (integer; default: see below; since Linux 2.4.10)"
7652 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7654 #: build/C/man7/icmp.7:125
7655 msgid "Mask made of ICMP types for which rates are being limited."
7659 #: build/C/man7/icmp.7:127
7660 msgid "Significant bits: IHGFEDCBA9876543210"
7664 #: build/C/man7/icmp.7:129
7665 msgid "Default mask: 0000001100000011000 (0x1818)"
7669 #: build/C/man7/icmp.7:132
7670 msgid "Bit definitions (see the Linux kernel source file I<include/linux/icmp.h>):"
7674 #: build/C/man7/icmp.7:136
7676 msgid "0 Echo Reply\n"
7680 #: build/C/man7/icmp.7:137
7682 msgid "3 Destination Unreachable *\n"
7686 #: build/C/man7/icmp.7:138
7688 msgid "4 Source Quench *\n"
7692 #: build/C/man7/icmp.7:139
7694 msgid "5 Redirect\n"
7698 #: build/C/man7/icmp.7:140
7700 msgid "8 Echo Request\n"
7704 #: build/C/man7/icmp.7:141
7706 msgid "B Time Exceeded *\n"
7710 #: build/C/man7/icmp.7:142
7712 msgid "C Parameter Problem *\n"
7716 #: build/C/man7/icmp.7:143
7718 msgid "D Timestamp Request\n"
7722 #: build/C/man7/icmp.7:144
7724 msgid "E Timestamp Reply\n"
7728 #: build/C/man7/icmp.7:145
7730 msgid "F Info Request\n"
7734 #: build/C/man7/icmp.7:146
7736 msgid "G Info Reply\n"
7740 #: build/C/man7/icmp.7:147
7742 msgid "H Address Mask Request\n"
7746 #: build/C/man7/icmp.7:148
7748 msgid "I Address Mask Reply\n"
7752 #: build/C/man7/icmp.7:154
7754 "The bits marked with an asterisk are rate limited by default (see the "
7755 "default mask above)."
7759 #: build/C/man7/icmp.7:154
7761 msgid "I<icmp_timeexceed_rate> (Linux 2.2 to 2.4.9)"
7765 #: build/C/man7/icmp.7:161
7767 "Maximum rate for sending B<ICMP_TIME_EXCEEDED> packets. These packets are "
7768 "sent to prevent loops when a packet has crossed too many hops."
7772 #: build/C/man7/icmp.7:165
7773 msgid "Support for the B<ICMP_ADDRESS> request was removed in 2.2."
7777 #: build/C/man7/icmp.7:169
7778 msgid "Support for B<ICMP_SOURCE_QUENCH> was removed in Linux 2.2."
7781 #. not really true ATM
7783 #. Linux ICMP should be compliant to RFC 1122.
7785 #: build/C/man7/icmp.7:177
7787 "As many other implementations don't support B<IPPROTO_ICMP> raw sockets, "
7788 "this feature should not be relied on in portable programs."
7792 #: build/C/man7/icmp.7:182
7794 "B<ICMP_REDIRECT> packets are not sent when Linux is not acting as a router. "
7795 "They are also accepted only from the old gateway defined in the routing "
7796 "table and the redirect routes are expired after some time."
7800 #: build/C/man7/icmp.7:186
7802 "The 64-bit timestamp returned by B<ICMP_TIMESTAMP> is in milliseconds since "
7803 "the Epoch, 1970-01-01 00:00:00 +0000 (UTC)."
7807 #: build/C/man7/icmp.7:191
7809 "Linux ICMP internally uses a raw socket to send ICMPs. This raw socket may "
7810 "appear in B<netstat>(8) output with a zero inode."
7814 #: build/C/man7/icmp.7:193
7819 #: build/C/man7/icmp.7:195
7820 msgid "RFC\\ 792 for a description of the ICMP protocol."
7824 #: build/C/man3/inet.3:42
7830 #: build/C/man3/inet.3:46
7832 "inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, "
7833 "inet_netof - Internet address manipulation routines"
7837 #: build/C/man3/inet.3:51
7840 "B<#include E<lt>sys/socket.hE<gt>>\n"
7841 "B<#include E<lt>netinet/in.hE<gt>>\n"
7842 "B<#include E<lt>arpa/inet.hE<gt>>\n"
7846 #: build/C/man3/inet.3:53
7848 msgid "B<int inet_aton(const char *>I<cp>B<, struct in_addr *>I<inp>B<);>\n"
7852 #: build/C/man3/inet.3:55
7854 msgid "B<in_addr_t inet_addr(const char *>I<cp>B<);>\n"
7858 #: build/C/man3/inet.3:57
7860 msgid "B<in_addr_t inet_network(const char *>I<cp>B<);>\n"
7864 #: build/C/man3/inet.3:59
7866 msgid "B<char *inet_ntoa(struct in_addr >I<in>B<);>\n"
7870 #: build/C/man3/inet.3:61
7873 "B<struct in_addr inet_makeaddr(in_addr_t >I<net>B<, in_addr_t "
7878 #: build/C/man3/inet.3:63
7880 msgid "B<in_addr_t inet_lnaof(struct in_addr >I<in>B<);>\n"
7884 #: build/C/man3/inet.3:65
7886 msgid "B<in_addr_t inet_netof(struct in_addr >I<in>B<);>\n"
7890 #: build/C/man3/inet.3:75
7891 msgid "B<inet_aton>(), B<inet_ntoa>(): _BSD_SOURCE || _SVID_SOURCE"
7895 #: build/C/man3/inet.3:85
7897 "B<inet_aton>() converts the Internet host address I<cp> from the IPv4 "
7898 "numbers-and-dots notation into binary form (in network byte order) and "
7899 "stores it in the structure that I<inp> points to. B<inet_aton>() returns "
7900 "nonzero if the address is valid, zero if not. The address supplied in I<cp> "
7901 "can have one of the following forms:"
7905 #: build/C/man3/inet.3:85
7911 #: build/C/man3/inet.3:89
7913 "Each of the four numeric parts specifies a byte of the address; the bytes "
7914 "are assigned in left-to-right order to produce the binary address."
7918 #: build/C/man3/inet.3:89
7924 #: build/C/man3/inet.3:102
7926 "Parts I<a> and I<b> specify the first two bytes of the binary address. Part "
7927 "I<c> is interpreted as a 16-bit value that defines the rightmost two bytes "
7928 "of the binary address. This notation is suitable for specifying (outmoded) "
7929 "Class B network addresses."
7933 #: build/C/man3/inet.3:102
7939 #: build/C/man3/inet.3:113
7941 "Part I<a> specifies the first byte of the binary address. Part I<b> is "
7942 "interpreted as a 24-bit value that defines the rightmost three bytes of the "
7943 "binary address. This notation is suitable for specifying (outmoded) Class A "
7944 "network addresses."
7948 #: build/C/man3/inet.3:113
7954 #: build/C/man3/inet.3:119
7956 "The value I<a> is interpreted as a 32-bit value that is stored directly into "
7957 "the binary address without any byte rearrangement."
7961 #: build/C/man3/inet.3:132
7963 "In all of the above forms, components of the dotted address can be specified "
7964 "in decimal, octal (with a leading I<0>), or hexadecimal, with a leading "
7965 "I<0X>). Addresses in any of these forms are collectively termed I<IPV4 "
7966 "numbers-and-dots notation>. The form that uses exactly four decimal numbers "
7967 "is referred to as I<IPv4 dotted-decimal notation> (or sometimes: I<IPv4 "
7968 "dotted-quad notation>)."
7972 #: build/C/man3/inet.3:140
7974 "B<inet_aton>() returns 1 if the supplied string was successfully "
7975 "interpreted, or 0 if the string is invalid (B<errno> is I<not> set on "
7980 #: build/C/man3/inet.3:157
7982 "The B<inet_addr>() function converts the Internet host address I<cp> from "
7983 "IPv4 numbers-and-dots notation into binary data in network byte order. If "
7984 "the input is invalid, B<INADDR_NONE> (usually -1) is returned. Use of this "
7985 "function is problematic because -1 is a valid address (255.255.255.255). "
7986 "Avoid its use in favor of B<inet_aton>(), B<inet_pton>(3), or "
7987 "B<getaddrinfo>(3), which provide a cleaner way to indicate error return."
7991 #: build/C/man3/inet.3:167
7993 "The B<inet_network>() function converts I<cp>, a string in IPv4 "
7994 "numbers-and-dots notation, into a number in host byte order suitable for use "
7995 "as an Internet network address. On success, the converted address is "
7996 "returned. If the input is invalid, -1 is returned."
8000 #: build/C/man3/inet.3:175
8002 "The B<inet_ntoa>() function converts the Internet host address I<in>, given "
8003 "in network byte order, to a string in IPv4 dotted-decimal notation. The "
8004 "string is returned in a statically allocated buffer, which subsequent calls "
8009 #: build/C/man3/inet.3:181
8011 "The B<inet_lnaof>() function returns the local network address part of the "
8012 "Internet address I<in>. The returned value is in host byte order."
8016 #: build/C/man3/inet.3:187
8018 "The B<inet_netof>() function returns the network number part of the "
8019 "Internet address I<in>. The returned value is in host byte order."
8023 #: build/C/man3/inet.3:198
8025 "The B<inet_makeaddr>() function is the converse of B<inet_netof>() and "
8026 "B<inet_lnaof>(). It returns an Internet host address in network byte order, "
8027 "created by combining the network number I<net> with the local address "
8028 "I<host>, both in host byte order."
8032 #: build/C/man3/inet.3:208
8034 "The structure I<in_addr> as used in B<inet_ntoa>(), B<inet_makeaddr>(), "
8035 "B<inet_lnaof>() and B<inet_netof>() is defined in "
8036 "I<E<lt>netinet/in.hE<gt>> as:"
8040 #: build/C/man3/inet.3:212
8042 msgid "typedef uint32_t in_addr_t;\n"
8046 #: build/C/man3/inet.3:216
8049 "struct in_addr {\n"
8050 " in_addr_t s_addr;\n"
8055 #: build/C/man3/inet.3:226
8057 "4.3BSD. B<inet_addr>() and B<inet_ntoa>() are specified in POSIX.1-2001. "
8058 "B<inet_aton>() is not specified in POSIX.1-2001, but is available on most "
8063 #: build/C/man3/inet.3:230
8065 "On the i386 the host byte order is Least Significant Byte first (little "
8066 "endian), whereas the network byte order, as used on the Internet, is Most "
8067 "Significant Byte first (big endian)."
8071 #: build/C/man3/inet.3:239
8073 "B<inet_lnaof>(), B<inet_netof>(), and B<inet_makeaddr>() are legacy "
8074 "functions that assume they are dealing with I<classful network addresses>. "
8075 "Classful networking divides IPv4 network addresses into host and network "
8076 "components at byte boundaries, as follows:"
8080 #: build/C/man3/inet.3:239
8086 #: build/C/man3/inet.3:245
8088 "This address type is indicated by the value 0 in the most significant bit of "
8089 "the (network byte ordered) address. The network address is contained in the "
8090 "most significant byte, and the host address occupies the remaining three "
8095 #: build/C/man3/inet.3:245
8101 #: build/C/man3/inet.3:251
8103 "This address type is indicated by the binary value 10 in the most "
8104 "significant two bits of the address. The network address is contained in "
8105 "the two most significant bytes, and the host address occupies the remaining "
8110 #: build/C/man3/inet.3:251
8116 #: build/C/man3/inet.3:257
8118 "This address type is indicated by the binary value 110 in the most "
8119 "significant three bits of the address. The network address is contained in "
8120 "the three most significant bytes, and the host address occupies the "
8125 #: build/C/man3/inet.3:262
8127 "Classful network addresses are now obsolete, having been superseded by "
8128 "Classless Inter-Domain Routing (CIDR), which divides addresses into network "
8129 "and host components at arbitrary bit (rather than byte) boundaries."
8133 #: build/C/man3/inet.3:269
8135 "An example of the use of B<inet_aton>() and B<inet_ntoa>() is shown "
8136 "below. Here are some example runs:"
8140 #: build/C/man3/inet.3:276
8143 "$B< ./a.out 226.000.000.037> # Last byte is in octal\n"
8145 "$B< ./a.out 0x7f.1 > # First byte is in hex\n"
8150 #: build/C/man3/inet.3:285
8153 "#define _BSD_SOURCE\n"
8154 "#include E<lt>arpa/inet.hE<gt>\n"
8155 "#include E<lt>stdio.hE<gt>\n"
8156 "#include E<lt>stdlib.hE<gt>\n"
8160 #: build/C/man3/inet.3:290
8164 "main(int argc, char *argv[])\n"
8166 " struct in_addr addr;\n"
8170 #: build/C/man3/inet.3:295
8173 " if (argc != 2) {\n"
8174 " fprintf(stderr, \"%s E<lt>dotted-addressE<gt>\\en\", argv[0]);\n"
8175 " exit(EXIT_FAILURE);\n"
8180 #: build/C/man3/inet.3:300
8183 " if (inet_aton(argv[1], &addr) == 0) {\n"
8184 " fprintf(stderr, \"Invalid address\\en\");\n"
8185 " exit(EXIT_FAILURE);\n"
8190 #: build/C/man3/inet.3:304
8193 " printf(\"%s\\en\", inet_ntoa(addr));\n"
8194 " exit(EXIT_SUCCESS);\n"
8199 #: build/C/man3/inet.3:316
8201 "B<byteorder>(3), B<getaddrinfo>(3), B<gethostbyname>(3), B<getnameinfo>(3), "
8202 "B<getnetent>(3), B<inet_net_pton>(3), B<inet_ntop>(3), B<inet_pton>(3), "
8203 "B<hosts>(5), B<networks>(5)"
8207 #: build/C/man3/inet_net_pton.3:26
8209 msgid "INET_NET_PTON"
8213 #: build/C/man3/inet_net_pton.3:29
8214 msgid "inet_net_pton, inet_net_ntop - Internet network number conversion"
8218 #: build/C/man3/inet_net_pton.3:35
8221 "B<int inet_net_pton(int >I<af>B<, const char *>I<pres>B<,>\n"
8222 "B< void *>I<netp>B<, size_t >I<nsize>B<);>\n"
8226 #: build/C/man3/inet_net_pton.3:38
8229 "B<char *inet_net_ntop(int >I<af>B<, const void *>I<netp>B<, int "
8231 "B< char *>I<pres>B<, size_t >I<psize>B<);>\n"
8235 #: build/C/man3/inet_net_pton.3:41 build/C/man3/resolver.3:85
8236 msgid "Link with I<-lresolv>."
8240 #: build/C/man3/inet_net_pton.3:49
8241 msgid "B<inet_net_pton>(), B<inet_net_ntop>():"
8245 #: build/C/man3/inet_net_pton.3:52
8247 msgid "Since glibc 2.20:"
8251 #: build/C/man3/inet_net_pton.3:55
8252 msgid "_DEFAULT_SOURCE"
8256 #: build/C/man3/inet_net_pton.3:55
8258 msgid "Before glibc 2.20:"
8262 #: build/C/man3/inet_net_pton.3:64
8264 "These functions convert network numbers between presentation (i.e., "
8265 "printable) format and network (i.e., binary) format."
8269 #: build/C/man3/inet_net_pton.3:70
8271 "For both functions, I<af> specifies the address family for the conversion; "
8272 "the only supported value is B<AF_INET>."
8276 #: build/C/man3/inet_net_pton.3:70
8278 msgid "inet_net_pton()"
8282 #: build/C/man3/inet_net_pton.3:89
8284 "The B<inet_net_pton>() function converts I<pres>, a null-terminated string "
8285 "containing an Internet network number in presentation format to network "
8286 "format. The result of the conversion, which is in network byte order, is "
8287 "placed in the buffer pointed to by I<net>. (The I<netp> argument typically "
8288 "points to an I<in_addr> structure.) The I<nsize> argument specifies the "
8289 "number of bytes available in I<netp>."
8293 #: build/C/man3/inet_net_pton.3:97
8295 "On success, B<inet_net_pton>() returns the number of bits in the network "
8296 "number field of the result placed in I<netp>. For a discussion of the input "
8297 "presentation format and the return value, see NOTES."
8301 #: build/C/man3/inet_net_pton.3:107
8303 "I<Note>: the buffer pointed to by I<netp> should be zeroed out before "
8304 "calling B<inet_net_pton>(), since the call writes only as many bytes as are "
8305 "required for the network number (or as are explicitly specified by I<pres>), "
8306 "which may be less than the number of bytes in a complete network address."
8310 #: build/C/man3/inet_net_pton.3:107
8312 msgid "inet_net_ntop()"
8316 #: build/C/man3/inet_net_pton.3:119
8318 "The B<inet_net_ntop>() function converts the network number in the buffer "
8319 "pointed to by I<netp> to presentation format; I<*netp> is interpreted as a "
8320 "value in network byte order. The I<bits> argument specifies the number of "
8321 "bits in the network number in I<*netp>."
8325 #: build/C/man3/inet_net_pton.3:130
8327 "The null-terminated presentation-format string is placed in the buffer "
8328 "pointed to by I<pres>. The I<psize> argument specifies the number of bytes "
8329 "available in I<pres>. The presentation string is in CIDR format: a "
8330 "dotted-decimal number representing the network address, followed by a slash, "
8331 "and the size of the network number in bits."
8335 #: build/C/man3/inet_net_pton.3:137
8337 "On success, B<inet_net_pton>() returns the number of bits in the network "
8338 "number. On error, it returns -1, and I<errno> is set to indicate the cause "
8343 #: build/C/man3/inet_net_pton.3:145
8345 "On success, B<inet_net_ntop>() returns I<pres>. On error, it returns NULL, "
8346 "and I<errno> is set to indicate the cause of the error."
8350 #: build/C/man3/inet_net_pton.3:146 build/C/man3/inet_ntop.3:92
8352 msgid "B<EAFNOSUPPORT>"
8356 #: build/C/man3/inet_net_pton.3:151
8357 msgid "I<af> specified a value other than B<AF_INET>."
8361 #: build/C/man3/inet_net_pton.3:154
8362 msgid "The size of the output buffer was insufficient."
8366 #: build/C/man3/inet_net_pton.3:159
8367 msgid "(B<inet_net_pton>()) I<pres> was not in correct presentation format."
8371 #: build/C/man3/inet_net_pton.3:165
8373 "The B<inet_net_pton>() and B<inet_net_ntop>() functions are nonstandard, "
8374 "but widely available."
8378 #: build/C/man3/inet_net_pton.3:166
8380 msgid "Input presentation format for inet_net_pton()"
8384 #: build/C/man3/inet_net_pton.3:170
8386 "The network number may be specified either as a hexadecimal value or in "
8387 "dotted-decimal notation."
8390 #. If the hexadecimal string is short, the remaining nibbles are zeroed.
8392 #: build/C/man3/inet_net_pton.3:175
8394 "Hexadecimal values are indicated by an initial \"0x\" or \"0X\". The "
8395 "hexadecimal digits populate the nibbles (half octets) of the network number "
8396 "from left to right in network byte order."
8400 #: build/C/man3/inet_net_pton.3:179
8402 "In dotted-decimal notation, up to four octets are specified, as decimal "
8403 "numbers separated by dots. Thus, any of the following forms are accepted:"
8407 #: build/C/man3/inet_net_pton.3:184
8416 #. Reading other man pages, some other implementations treat
8417 #. 'c' in a.b.c as a 16-bit number that populates right-most two bytes
8418 #. 'b' in a.b as a 24-bit number that populates right-most three bytes
8420 #: build/C/man3/inet_net_pton.3:192
8422 "Each part is a number in the range 0 to 255 that populates one byte of the "
8423 "resulting network number, going from left to right, in network-byte (big "
8424 "endian) order. Where a part is omitted, the resulting byte in the network "
8429 #: build/C/man3/inet_net_pton.3:197
8431 "For either hexadecimal or dotted-decimal format, the network number can "
8432 "optionally be followed by a slash and a number in the range 0 to 32, which "
8433 "specifies the size of the network number in bits."
8437 #: build/C/man3/inet_net_pton.3:197
8439 msgid "Return value of inet_net_pton()"
8443 #: build/C/man3/inet_net_pton.3:207
8445 "The return value of B<inet_net_pton>() is the number of bits in the network "
8446 "number field. If the input presentation string terminates with a slash and "
8447 "an explicit size value, then that size becomes the return value of "
8448 "B<inet_net_pton>(). Otherwise, the return value, I<bits>, is inferred as "
8453 #: build/C/man3/inet_net_pton.3:213
8455 "If the most significant byte of the network number is greater than or equal "
8456 "to 240, then I<bits> is 32."
8460 #: build/C/man3/inet_net_pton.3:220
8462 "Otherwise, if the most significant byte of the network number is greater "
8463 "than or equal to 224, then I<bits> is 4."
8467 #: build/C/man3/inet_net_pton.3:227
8469 "Otherwise, if the most significant byte of the network number is greater "
8470 "than or equal to 192, then I<bits> is 24."
8474 #: build/C/man3/inet_net_pton.3:234
8476 "Otherwise, if the most significant byte of the network number is greater "
8477 "than or equal to 128, then I<bits> is 16."
8481 #: build/C/man3/inet_net_pton.3:238
8482 msgid "Otherwise, I<bits> is 8."
8486 #: build/C/man3/inet_net_pton.3:247
8488 "If the resulting I<bits> value from the above steps is greater than or equal "
8489 "to 8, but the number of octets specified in the network number exceed "
8490 "I<bits/8>, then I<bits> is set to 8 times the number of octets actually "
8495 #: build/C/man3/inet_net_pton.3:261
8497 "The program below demonstrates the use of B<inet_net_pton>() and "
8498 "B<inet_net_ntop>(). It uses B<inet_net_pton>() to convert the presentation "
8499 "format network address provided in its first command-line argument to binary "
8500 "form, displays the return value from B<inet_net_pton>(). It then uses "
8501 "B<inet_net_ntop>() to convert the binary form back to presentation format, "
8502 "and displays the resulting string."
8506 #: build/C/man3/inet_net_pton.3:275
8508 "In order to demonstrate that B<inet_net_pton>() may not write to all bytes "
8509 "of its I<netp> argument, the program allows an optional second command-line "
8510 "argument, a number used to initialize the buffer before B<inet_net_pton>() "
8511 "is called. As its final line of output, the program displays all of the "
8512 "bytes of the buffer returned by B<inet_net_pton>() allowing the user to see "
8513 "which bytes have not been touched by B<inet_net_pton>()."
8517 #: build/C/man3/inet_net_pton.3:279
8519 "An example run, showing that B<inet_net_pton>() infers the number of bits "
8520 "in the network number:"
8524 #: build/C/man3/inet_net_pton.3:286
8527 "$ B<./a.out 193.168>\n"
8528 "inet_net_pton() returned: 24\n"
8529 "inet_net_ntop() yielded: 193.168.0/24\n"
8530 "Raw address: c1a80000\n"
8534 #: build/C/man3/inet_net_pton.3:292
8536 "Demonstrate that B<inet_net_pton>() does not zero out unused bytes in its "
8541 #: build/C/man3/inet_net_pton.3:299
8544 "$ B<./a.out 193.168 0xffffffff>\n"
8545 "inet_net_pton() returned: 24\n"
8546 "inet_net_ntop() yielded: 193.168.0/24\n"
8547 "Raw address: c1a800ff\n"
8551 #: build/C/man3/inet_net_pton.3:307
8553 "Demonstrate that B<inet_net_pton>() will widen the inferred size of the "
8554 "network number, if the supplied number of bytes in the presentation string "
8555 "exceeds the inferred value:"
8559 #: build/C/man3/inet_net_pton.3:314
8562 "$ B<./a.out 193.168.1.128>\n"
8563 "inet_net_pton() returned: 32\n"
8564 "inet_net_ntop() yielded: 193.168.1.128/32\n"
8565 "Raw address: c1a80180\n"
8569 #: build/C/man3/inet_net_pton.3:322
8571 "Explicitly specifying the size of the network number overrides any inference "
8572 "about its size (but any extra bytes that are explicitly specified will still "
8573 "be used by B<inet_net_pton>(): to populate the result buffer):"
8577 #: build/C/man3/inet_net_pton.3:329
8580 "$ B<./a.out 193.168.1.128/24>\n"
8581 "inet_net_pton() returned: 24\n"
8582 "inet_net_ntop() yielded: 193.168.1/24\n"
8583 "Raw address: c1a80180\n"
8587 #: build/C/man3/inet_net_pton.3:334
8589 msgid "/* Link with \"-lresolv\" */\n"
8593 #: build/C/man3/inet_net_pton.3:338
8596 "#include E<lt>arpa/inet.hE<gt>\n"
8597 "#include E<lt>stdio.hE<gt>\n"
8598 "#include E<lt>stdlib.hE<gt>\n"
8602 #: build/C/man3/inet_net_pton.3:341
8605 "#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \\e\n"
8610 #: build/C/man3/inet_net_pton.3:348
8614 "main(int argc, char *argv[])\n"
8617 " struct in_addr addr;\n"
8622 #: build/C/man3/inet_net_pton.3:355
8625 " if (argc E<lt> 2) {\n"
8626 " fprintf(stderr,\n"
8627 " \"Usage: %s presentation-form [addr-init-value]\\en\",\n"
8629 " exit(EXIT_FAILURE);\n"
8634 #: build/C/man3/inet_net_pton.3:361
8637 " /* If argv[2] is supplied (a numeric value), use it to initialize\n"
8638 " the output buffer given to inet_net_pton(), so that we can see\n"
8639 " that inet_net_pton() initializes only those bytes needed for\n"
8640 " the network number. If argv[2] is not supplied, then initialize\n"
8641 " the buffer to zero (as is recommended practice). */\n"
8645 #: build/C/man3/inet_net_pton.3:363
8647 msgid " addr.s_addr = (argc E<gt> 2) ? strtod(argv[2], NULL) : 0;\n"
8651 #: build/C/man3/inet_net_pton.3:365
8653 msgid " /* Convert presentation network number in argv[1] to binary */\n"
8657 #: build/C/man3/inet_net_pton.3:369
8660 " bits = inet_net_pton(AF_INET, argv[1], &addr, sizeof(addr));\n"
8661 " if (bits == -1)\n"
8662 " errExit(\"inet_net_ntop\");\n"
8666 #: build/C/man3/inet_net_pton.3:371
8668 msgid " printf(\"inet_net_pton() returned: %d\\en\", bits);\n"
8672 #: build/C/man3/inet_net_pton.3:374
8675 " /* Convert binary format back to presentation, using \\(aqbits\\(aq\n"
8676 " returned by inet_net_pton() */\n"
8680 #: build/C/man3/inet_net_pton.3:377
8683 " if (inet_net_ntop(AF_INET, &addr, bits, buf, sizeof(buf)) == NULL)\n"
8684 " errExit(\"inet_net_ntop\");\n"
8688 #: build/C/man3/inet_net_pton.3:379
8690 msgid " printf(\"inet_net_ntop() yielded: %s\\en\", buf);\n"
8694 #: build/C/man3/inet_net_pton.3:384
8697 " /* Display \\(aqaddr\\(aq in raw form (in network byte order), so we "
8699 " see bytes not displayed by inet_net_ntop(); some of those bytes\n"
8700 " may not have been touched by inet_net_ntop(), and so will still\n"
8701 " have any initial value that was specified in argv[2]. */\n"
8705 #: build/C/man3/inet_net_pton.3:386
8707 msgid " printf(\"Raw address: %x\\en\", htonl(addr.s_addr));\n"
8711 #: build/C/man3/inet_net_pton.3:393
8712 msgid "B<inet>(3), B<networks>(5)"
8716 #: build/C/man3/inet_ntop.3:26
8722 #: build/C/man3/inet_ntop.3:26
8728 #: build/C/man3/inet_ntop.3:29
8729 msgid "inet_ntop - convert IPv4 and IPv6 addresses from binary to text form"
8733 #: build/C/man3/inet_ntop.3:35
8736 "B<const char *inet_ntop(int >I<af>B<, const void *>I<src>B<,>\n"
8737 "B< char *>I<dst>B<, socklen_t >I<size>B<);>\n"
8741 #: build/C/man3/inet_ntop.3:48
8743 "This function converts the network address structure I<src> in the I<af> "
8744 "address family into a character string. The resulting string is copied to "
8745 "the buffer pointed to by I<dst>, which must be a non-null pointer. The "
8746 "caller specifies the number of bytes available in this buffer in the "
8751 #: build/C/man3/inet_ntop.3:57
8753 "B<inet_ntop>() extends the B<inet_ntoa>(3) function to support multiple "
8754 "address families, B<inet_ntoa>(3) is now considered to be deprecated in "
8755 "favor of B<inet_ntop>(). The following address families are currently "
8760 #: build/C/man3/inet_ntop.3:70
8762 "I<src> points to a I<struct in_addr> (in network byte order) which is "
8763 "converted to an IPv4 network address in the dotted-decimal format, "
8764 "\"I<ddd.ddd.ddd.ddd>\". The buffer I<dst> must be at least "
8765 "B<INET_ADDRSTRLEN> bytes long."
8769 #: build/C/man3/inet_ntop.3:83
8771 "I<src> points to a I<struct in6_addr> (in network byte order) which is "
8772 "converted to a representation of this address in the most appropriate IPv6 "
8773 "network address format for this address. The buffer I<dst> must be at least "
8774 "B<INET6_ADDRSTRLEN> bytes long."
8778 #: build/C/man3/inet_ntop.3:91
8780 "On success, B<inet_ntop>() returns a non-null pointer to I<dst>. NULL is "
8781 "returned if there was an error, with I<errno> set to indicate the error."
8785 #: build/C/man3/inet_ntop.3:96
8786 msgid "I<af> was not a valid address family."
8790 #: build/C/man3/inet_ntop.3:96
8796 #: build/C/man3/inet_ntop.3:100
8797 msgid "The converted address string would exceed the size given by I<size>."
8800 #. 2.1.3: size_t, 2.1.91: socklen_t
8802 #: build/C/man3/inet_ntop.3:112
8804 "POSIX.1-2001. Note that RFC\\ 2553 defines a prototype where the last "
8805 "argument I<size> is of type I<size_t>. Many systems follow RFC\\ 2553. "
8806 "Glibc 2.0 and 2.1 have I<size_t>, but 2.2 and later have I<socklen_t>."
8810 #: build/C/man3/inet_ntop.3:115
8811 msgid "B<AF_INET6> converts IPv4-mapped IPv6 addresses into an IPv6 format."
8815 #: build/C/man3/inet_ntop.3:118
8816 msgid "See B<inet_pton>(3)."
8820 #: build/C/man3/inet_ntop.3:122
8821 msgid "B<getnameinfo>(3), B<inet>(3), B<inet_pton>(3)"
8825 #: build/C/man3/inet_pton.3:27
8831 #: build/C/man3/inet_pton.3:27
8837 #: build/C/man3/inet_pton.3:30
8838 msgid "inet_pton - convert IPv4 and IPv6 addresses from text to binary form"
8842 #: build/C/man3/inet_pton.3:35
8844 msgid "B<int inet_pton(int >I<af>B<, const char *>I<src>B<, void *>I<dst>B<);>\n"
8848 #: build/C/man3/inet_pton.3:51
8850 "This function converts the character string I<src> into a network address "
8851 "structure in the I<af> address family, then copies the network address "
8852 "structure to I<dst>. The I<af> argument must be either B<AF_INET> or "
8857 #: build/C/man3/inet_pton.3:53
8858 msgid "The following address families are currently supported:"
8862 #: build/C/man3/inet_pton.3:67
8864 "I<src> points to a character string containing an IPv4 network address in "
8865 "dotted-decimal format, \"I<ddd.ddd.ddd.ddd>\", where I<ddd> is a decimal "
8866 "number of up to three digits in the range 0 to 255. The address is "
8867 "converted to a I<struct in_addr> and copied to I<dst>, which must be "
8868 "I<sizeof(struct in_addr)> (4) bytes (32 bits) long."
8872 #: build/C/man3/inet_pton.3:79
8874 "I<src> points to a character string containing an IPv6 network address. The "
8875 "address is converted to a I<struct in6_addr> and copied to I<dst>, which "
8876 "must be I<sizeof(struct in6_addr)> (16) bytes (128 bits) long. The allowed "
8877 "formats for IPv6 addresses follow these rules:"
8881 #: build/C/man3/inet_pton.3:80
8887 #: build/C/man3/inet_pton.3:87
8889 "The preferred format is I<x:x:x:x:x:x:x:x>. This form consists of eight "
8890 "hexadecimal numbers, each of which expresses a 16-bit value (i.e., each I<x> "
8891 "can be up to 4 hex digits)."
8895 #: build/C/man3/inet_pton.3:87
8901 #: build/C/man3/inet_pton.3:100
8903 "A series of contiguous zero values in the preferred format can be "
8904 "abbreviated to I<::>. Only one instance of I<::> can occur in an address. "
8905 "For example, the loopback address I<0:0:0:0:0:0:0:1> can be abbreviated as "
8906 "I<::1>. The wildcard address, consisting of all zeros, can be written as "
8911 #: build/C/man3/inet_pton.3:100
8917 #: build/C/man3/inet_pton.3:113
8919 "An alternate format is useful for expressing IPv4-mapped IPv6 addresses. "
8920 "This form is written as I<x:x:x:x:x:x:d.d.d.d>, where the six leading I<x>s "
8921 "are hexadecimal values that define the six most-significant 16-bit pieces of "
8922 "the address (i.e., 96 bits), and the I<d>s express a value in dotted-decimal "
8923 "notation that defines the least significant 32 bits of the address. An "
8924 "example of such an address is I<::FFFF:204.152.189.116>."
8928 #: build/C/man3/inet_pton.3:116
8929 msgid "See RFC 2373 for further details on the representation of IPv6 addresses."
8933 #: build/C/man3/inet_pton.3:129
8935 "B<inet_pton>() returns 1 on success (network address was successfully "
8936 "converted). 0 is returned if I<src> does not contain a character string "
8937 "representing a valid network address in the specified address family. If "
8938 "I<af> does not contain a valid address family, -1 is returned and I<errno> "
8939 "is set to B<EAFNOSUPPORT>."
8943 #: build/C/man3/inet_pton.3:150
8945 "Unlike B<inet_aton>(3) and B<inet_addr>(3), B<inet_pton>() supports IPv6 "
8946 "addresses. On the other hand, B<inet_pton>() accepts only IPv4 addresses "
8947 "in dotted-decimal notation, whereas B<inet_aton>(3) and B<inet_addr>(3) "
8948 "allow the more general numbers-and-dots notation (hexadecimal and octal "
8949 "number formats, and formats that don't require all four bytes to be "
8950 "explicitly written). For an interface that handles both IPv6 addresses, and "
8951 "IPv4 addresses in numbers-and-dots notation, see B<getaddrinfo>(3)."
8955 #: build/C/man3/inet_pton.3:156
8957 "B<AF_INET6> does not recognize IPv4 addresses. An explicit IPv4-mapped IPv6 "
8958 "address must be supplied in I<src> instead."
8962 #: build/C/man3/inet_pton.3:162
8964 "The program below demonstrates the use of B<inet_pton>() and "
8965 "B<inet_ntop>(3). Here are some example runs:"
8969 #: build/C/man3/inet_pton.3:171
8972 "$B< ./a.out i6 0:0:0:0:0:0:0:0>\n"
8974 "$B< ./a.out i6 1:0:0:0:0:0:0:8>\n"
8976 "$B< ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116>\n"
8977 "::ffff:204.152.189.116\n"
8981 #: build/C/man3/inet_pton.3:180
8984 "#include E<lt>arpa/inet.hE<gt>\n"
8985 "#include E<lt>stdio.hE<gt>\n"
8986 "#include E<lt>stdlib.hE<gt>\n"
8987 "#include E<lt>string.hE<gt>\n"
8991 #: build/C/man3/inet_pton.3:187
8995 "main(int argc, char *argv[])\n"
8997 " unsigned char buf[sizeof(struct in6_addr)];\n"
8999 " char str[INET6_ADDRSTRLEN];\n"
9003 #: build/C/man3/inet_pton.3:192
9006 " if (argc != 3) {\n"
9007 " fprintf(stderr, \"Usage: %s {i4|i6|E<lt>numE<gt>} string\\en\", "
9009 " exit(EXIT_FAILURE);\n"
9014 #: build/C/man3/inet_pton.3:195
9017 " domain = (strcmp(argv[1], \"i4\") == 0) ? AF_INET :\n"
9018 " (strcmp(argv[1], \"i6\") == 0) ? AF_INET6 : atoi(argv[1]);\n"
9022 #: build/C/man3/inet_pton.3:204
9025 " s = inet_pton(domain, argv[2], buf);\n"
9026 " if (s E<lt>= 0) {\n"
9028 " fprintf(stderr, \"Not in presentation format\");\n"
9030 " perror(\"inet_pton\");\n"
9031 " exit(EXIT_FAILURE);\n"
9036 #: build/C/man3/inet_pton.3:209
9039 " if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL) {\n"
9040 " perror(\"inet_ntop\");\n"
9041 " exit(EXIT_FAILURE);\n"
9046 #: build/C/man3/inet_pton.3:211
9048 msgid " printf(\"%s\\en\", str);\n"
9052 #: build/C/man3/inet_pton.3:219
9053 msgid "B<getaddrinfo>(3), B<inet>(3), B<inet_ntop>(3)"
9057 #: build/C/man7/ip.7:36
9063 #: build/C/man7/ip.7:36
9069 #: build/C/man7/ip.7:39
9070 msgid "ip - Linux IPv4 protocol implementation"
9074 #: build/C/man7/ip.7:45 build/C/man7/ipv6.7:93 build/C/man7/raw.7:20 build/C/man7/tcp.7:83 build/C/man7/udp.7:19
9075 msgid "B<#include E<lt>netinet/in.hE<gt>>"
9079 #: build/C/man7/ip.7:47
9080 msgid "B<#include E<lt>netinet/ip.hE<gt> >/* superset of previous */"
9084 #: build/C/man7/ip.7:49
9085 msgid "I<tcp_socket>B< = socket(AF_INET, SOCK_STREAM, 0);>"
9089 #: build/C/man7/ip.7:51
9090 msgid "I<udp_socket>B< = socket(AF_INET, SOCK_DGRAM, 0);>"
9094 #: build/C/man7/ip.7:53
9095 msgid "I<raw_socket>B< = socket(AF_INET, SOCK_RAW, >I<protocol>B<);>"
9098 #. FIXME . has someone verified that 2.1 is really 1812 compliant?
9100 #: build/C/man7/ip.7:60
9102 "Linux implements the Internet Protocol, version 4, described in RFC\\ 791 "
9103 "and RFC\\ 1122. B<ip> contains a level 2 multicasting implementation "
9104 "conforming to RFC\\ 1112. It also contains an IP router including a packet "
9109 #: build/C/man7/ip.7:64
9111 "The programming interface is BSD-sockets compatible. For more information "
9112 "on sockets, see B<socket>(7)."
9116 #: build/C/man7/ip.7:95
9118 "An IP socket is created by calling the B<socket>(2) function as "
9119 "B<socket(AF_INET, >I<socket_type>B<, >I<protocol>B<)>. Valid socket types "
9120 "are B<SOCK_STREAM> to open a B<tcp>(7) socket, B<SOCK_DGRAM> to open a "
9121 "B<udp>(7) socket, or B<SOCK_RAW> to open a B<raw>(7) socket to access the "
9122 "IP protocol directly. I<protocol> is the IP protocol in the IP header to be "
9123 "received or sent. The only valid values for I<protocol> are 0 and "
9124 "B<IPPROTO_TCP> for TCP sockets, and 0 and B<IPPROTO_UDP> for UDP sockets. "
9125 "For B<SOCK_RAW> you may specify a valid IANA IP protocol defined in RFC\\ "
9126 "1700 assigned numbers."
9130 #: build/C/man7/ip.7:117
9132 "When a process wants to receive new incoming packets or connections, it "
9133 "should bind a socket to a local interface address using B<bind>(2). In this "
9134 "case, only one IP socket may be bound to any given local (address, port) "
9135 "pair. When B<INADDR_ANY> is specified in the bind call, the socket will be "
9136 "bound to I<all> local interfaces. When B<listen>(2) is called on an "
9137 "unbound socket, the socket is automatically bound to a random free port with "
9138 "the local address set to B<INADDR_ANY>. When B<connect>(2) is called on an "
9139 "unbound socket, the socket is automatically bound to a random free port or "
9140 "to a usable shared port with the local address set to B<INADDR_ANY>."
9144 #: build/C/man7/ip.7:123
9146 "A TCP local socket address that has been bound is unavailable for some time "
9147 "after closing, unless the B<SO_REUSEADDR> flag has been set. Care should be "
9148 "taken when using this flag as it makes TCP less reliable."
9152 #: build/C/man7/ip.7:134
9154 "An IP socket address is defined as a combination of an IP interface address "
9155 "and a 16-bit port number. The basic IP protocol does not supply port "
9156 "numbers, they are implemented by higher level protocols like B<udp>(7) and "
9157 "B<tcp>(7). On raw sockets I<sin_port> is set to the IP protocol."
9161 #: build/C/man7/ip.7:142
9164 "struct sockaddr_in {\n"
9165 " sa_family_t sin_family; /* address family: AF_INET */\n"
9166 " in_port_t sin_port; /* port in network byte order */\n"
9167 " struct in_addr sin_addr; /* internet address */\n"
9172 #: build/C/man7/ip.7:147
9175 "/* Internet address. */\n"
9176 "struct in_addr {\n"
9177 " uint32_t s_addr; /* address in network byte order */\n"
9182 #: build/C/man7/ip.7:172
9184 "I<sin_family> is always set to B<AF_INET>. This is required; in Linux 2.2 "
9185 "most networking functions return B<EINVAL> when this setting is missing. "
9186 "I<sin_port> contains the port in network byte order. The port numbers below "
9187 "1024 are called I<privileged ports> (or sometimes: I<reserved ports>). Only "
9188 "privileged processes (i.e., those having the B<CAP_NET_BIND_SERVICE> "
9189 "capability) may B<bind>(2) to these sockets. Note that the raw IPv4 "
9190 "protocol as such has no concept of a port, they are implemented only by "
9191 "higher protocols like B<tcp>(7) and B<udp>(7)."
9195 #: build/C/man7/ip.7:191
9197 "I<sin_addr> is the IP host address. The I<s_addr> member of I<struct "
9198 "in_addr> contains the host interface address in network byte order. "
9199 "I<in_addr> should be assigned one of the B<INADDR_*> values (e.g., "
9200 "B<INADDR_ANY>) or set using the B<inet_aton>(3), B<inet_addr>(3), "
9201 "B<inet_makeaddr>(3) library functions or directly with the name resolver "
9202 "(see B<gethostbyname>(3))."
9205 #. Leave a loophole for XTP @)
9207 #: build/C/man7/ip.7:203
9209 "IPv4 addresses are divided into unicast, broadcast and multicast addresses. "
9210 "Unicast addresses specify a single interface of a host, broadcast addresses "
9211 "specify all hosts on a network and multicast addresses address all hosts in "
9212 "a multicast group. Datagrams to broadcast addresses can be sent or received "
9213 "only when the B<SO_BROADCAST> socket flag is set. In the current "
9214 "implementation, connection-oriented sockets are allowed to use only unicast "
9219 #: build/C/man7/ip.7:211
9221 "Note that the address and the port are always stored in network byte order. "
9222 "In particular, this means that you need to call B<htons>(3) on the number "
9223 "that is assigned to a port. All address/port manipulation functions in the "
9224 "standard library work in network byte order."
9228 #: build/C/man7/ip.7:224
9230 "There are several special addresses: B<INADDR_LOOPBACK> (127.0.0.1) always "
9231 "refers to the local host via the loopback device; B<INADDR_ANY> (0.0.0.0) "
9232 "means any address for binding; B<INADDR_BROADCAST> (255.255.255.255) means "
9233 "any host and has the same effect on bind as B<INADDR_ANY> for historical "
9237 #. or SOL_IP on Linux
9239 #: build/C/man7/ip.7:233
9241 "IP supports some protocol-specific socket options that can be set with "
9242 "B<setsockopt>(2) and read with B<getsockopt>(2). The socket option level "
9243 "for IP is B<IPPROTO_IP>. A boolean integer flag is zero when it is false, "
9248 #: build/C/man7/ip.7:233
9250 msgid "B<IP_ADD_MEMBERSHIP> (since Linux 1.2)"
9254 #: build/C/man7/ip.7:239
9255 msgid "Join a multicast group. Argument is an I<ip_mreqn> structure."
9259 #: build/C/man7/ip.7:249
9262 "struct ip_mreqn {\n"
9263 " struct in_addr imr_multiaddr; /* IP multicast group\n"
9265 " struct in_addr imr_address; /* IP address of local\n"
9267 " int imr_ifindex; /* interface index */\n"
9271 #. (i.e., within the 224.0.0.0-239.255.255.255 range)
9273 #: build/C/man7/ip.7:270
9275 "I<imr_multiaddr> contains the address of the multicast group the application "
9276 "wants to join or leave. It must be a valid multicast address (or "
9277 "B<setsockopt>(2) fails with the error B<EINVAL>). I<imr_address> is the "
9278 "address of the local interface with which the system should join the "
9279 "multicast group; if it is equal to B<INADDR_ANY>, an appropriate interface "
9280 "is chosen by the system. I<imr_ifindex> is the interface index of the "
9281 "interface that should join/leave the I<imr_multiaddr> group, or 0 to "
9282 "indicate any interface."
9286 #: build/C/man7/ip.7:285
9288 "The I<ip_mreqn> structure is available only since Linux 2.2. For "
9289 "compatibility, the old I<ip_mreq> structure (present since Linux 1.2) is "
9290 "still supported; it differs from I<ip_mreqn> only by not including the "
9291 "I<imr_ifindex> field. Only valid as a B<setsockopt>(2)."
9295 #: build/C/man7/ip.7:285
9297 msgid "B<IP_ADD_SOURCE_MEMBERSHIP> (since Linux 2.4.22 / 2.5.68)"
9301 #: build/C/man7/ip.7:292
9303 "Join a multicast group and allow receiving data only from a specified "
9304 "source. Argument is an I<ip_mreq_source> structure."
9308 #: build/C/man7/ip.7:303
9311 "struct ip_mreq_source {\n"
9312 " struct in_addr imr_multiaddr; /* IP multicast group\n"
9314 " struct in_addr imr_interface; /* IP address of local\n"
9316 " struct in_addr imr_sourceaddr; /* IP address of\n"
9317 " multicast source */\n"
9322 #: build/C/man7/ip.7:324
9324 "The I<ip_mreq_source> structure is similar to I<ip_mreqn> described under "
9325 "B<IP_ADD_MEMBERSIP>. The I<imr_multiaddr> field contains the address of the "
9326 "multicast group the application wants to join or leave. The "
9327 "I<imr_interface> field is the address of the local interface with which the "
9328 "system should join the multicast group. Finally, the I<imr_sourceaddr> "
9329 "field contains the address of the source the application wants to receive "
9334 #: build/C/man7/ip.7:327
9336 "This option can be used multiple times to allow receiving data from more "
9341 #: build/C/man7/ip.7:327
9343 msgid "B<IP_BLOCK_SOURCE> (since Linux 2.4.22 / 2.5.68)"
9347 #: build/C/man7/ip.7:335
9349 "Stop receiving multicast data from a specific source in a given group. This "
9350 "is valid only after the application has subscribed to the multicast group "
9351 "using either B<IP_ADD_MEMBERSHIP> or B<IP_ADD_SOURCE_MEMBERSHIP>."
9355 #: build/C/man7/ip.7:340 build/C/man7/ip.7:362 build/C/man7/ip.7:926
9357 "Argument is an I<ip_mreq_source> structure as described under "
9358 "B<IP_ADD_SOURCE_MEMBERSHIP>."
9362 #: build/C/man7/ip.7:340
9364 msgid "B<IP_DROP_MEMBERSHIP> (since Linux 1.2)"
9368 #: build/C/man7/ip.7:349
9370 "Leave a multicast group. Argument is an I<ip_mreqn> or I<ip_mreq> structure "
9371 "similar to B<IP_ADD_MEMBERSHIP>."
9375 #: build/C/man7/ip.7:349
9377 msgid "B<IP_DROP_SOURCE_MEMBERSHIP> (since Linux 2.4.22 / 2.5.68)"
9381 #: build/C/man7/ip.7:357
9383 "Leave a source-specific group\\(emthat is, stop receiving data from a given "
9384 "multicast group that come from a given source. If the application has "
9385 "subscribed to multiple sources within the same group, data from the "
9386 "remaining sources will still be delivered. To stop receiving data from all "
9387 "sources at once, use B<IP_LEAVE_GROUP>."
9391 #: build/C/man7/ip.7:362
9393 msgid "B<IP_FREEBIND> (since Linux 2.4)"
9396 #. Precisely: 2.4.0-test10
9398 #: build/C/man7/ip.7:375
9400 "If enabled, this boolean option allows binding to an IP address that is "
9401 "nonlocal or does not (yet) exist. This permits listening on a socket, "
9402 "without requiring the underlying network interface or the specified dynamic "
9403 "IP address to be up at the time that the application is trying to bind to "
9404 "it. This option is the per-socket equivalent of the I<ip_nonlocal_bind> "
9405 "I</proc> interface described below."
9409 #: build/C/man7/ip.7:375
9411 msgid "B<IP_HDRINCL> (since Linux 2.0)"
9415 #: build/C/man7/ip.7:391
9417 "If enabled, the user supplies an IP header in front of the user data. Only "
9418 "valid for B<SOCK_RAW> sockets. See B<raw>(7) for more information. When "
9419 "this flag is enabled the values set by B<IP_OPTIONS>, B<IP_TTL> and "
9420 "B<IP_TOS> are ignored."
9424 #: build/C/man7/ip.7:391
9426 msgid "B<IP_MSFILTER> (since Linux 2.4.22 / 2.5.68)"
9430 #: build/C/man7/ip.7:397
9432 "This option provides access to the advanced full-state filtering API. "
9433 "Argument is an I<ip_msfilter> structure."
9437 #: build/C/man7/ip.7:406
9440 "struct ip_msfilter {\n"
9441 " struct in_addr imsf_multiaddr; /* IP multicast group\n"
9443 " struct in_addr imsf_interface; /* IP address of local\n"
9445 " uint32_t imsf_fmode; /* Filter-mode */\n"
9449 #: build/C/man7/ip.7:412
9452 " uint32_t imsf_numsrc; /* Number of sources in\n"
9453 " the following array */\n"
9454 " struct in_addr imsf_slist[1]; /* Array of source\n"
9460 #: build/C/man7/ip.7:427
9462 "There are two macros, B<MCAST_INCLUDE> and B<MCAST_EXCLUDE>, which can be "
9463 "used to specify the filtering mode. Additionally, the "
9464 "B<IP_MSFILTER_SIZE>(n) macro exists to determine how much memory is needed "
9465 "to store I<ip_msfilter> structure with I<n> sources in the source list."
9469 #: build/C/man7/ip.7:430
9470 msgid "For the full description of multicast source filtering refer to RFC 3376."
9474 #: build/C/man7/ip.7:430
9476 msgid "B<IP_MTU> (since Linux 2.2)"
9479 #. Precisely: 2.1.124
9481 #: build/C/man7/ip.7:438
9483 "Retrieve the current known path MTU of the current socket. Valid only when "
9484 "the socket has been connected. Returns an integer. Only valid as a "
9489 #: build/C/man7/ip.7:438
9491 msgid "B<IP_MTU_DISCOVER> (since Linux 2.2)"
9494 #. Precisely: 2.1.124
9496 #: build/C/man7/ip.7:459
9498 "Set or receive the Path MTU Discovery setting for a socket. When enabled, "
9499 "Linux will perform Path MTU Discovery as defined in RFC\\ 1191 on "
9500 "B<SOCK_STREAM> sockets. For non-B<SOCK_STREAM> sockets, B<IP_PMTUDISC_DO> "
9501 "forces the don't-fragment flag to be set on all outgoing packets. It is the "
9502 "user's responsibility to packetize the data in MTU-sized chunks and to do "
9503 "the retransmits if necessary. The kernel will reject (with B<EMSGSIZE>) "
9504 "datagrams that are bigger than the known path MTU. B<IP_PMTUDISC_WANT> will "
9505 "fragment a datagram if needed according to the path MTU, or will set the "
9506 "don't-fragment flag otherwise."
9510 #: build/C/man7/ip.7:467
9512 "The system-wide default can be toggled between B<IP_PMTUDISC_WANT> and "
9513 "B<IP_PMTUDISC_DONT> by writing (respectively, zero and nonzero values) to "
9514 "the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file."
9518 #: build/C/man7/ip.7:471
9520 msgid "Path MTU discovery value:Meaning\n"
9524 #: build/C/man7/ip.7:472
9526 msgid "IP_PMTUDISC_WANT:Use per-route settings.\n"
9530 #: build/C/man7/ip.7:473
9532 msgid "IP_PMTUDISC_DONT:Never do Path MTU Discovery.\n"
9536 #: build/C/man7/ip.7:474
9538 msgid "IP_PMTUDISC_DO:Always do Path MTU Discovery.\n"
9542 #: build/C/man7/ip.7:475
9544 msgid "IP_PMTUDISC_PROBE:Set DF but ignore Path MTU.\n"
9548 #: build/C/man7/ip.7:493
9550 "When PMTU discovery is enabled, the kernel automatically keeps track of the "
9551 "path MTU per destination host. When it is connected to a specific peer with "
9552 "B<connect>(2), the currently known path MTU can be retrieved conveniently "
9553 "using the B<IP_MTU> socket option (e.g., after an B<EMSGSIZE> error "
9554 "occurred). The path MTU may change over time. For connectionless sockets "
9555 "with many destinations, the new MTU for a given destination can also be "
9556 "accessed using the error queue (see B<IP_RECVERR>). A new error will be "
9557 "queued for every incoming MTU update."
9561 #: build/C/man7/ip.7:498
9563 "While MTU discovery is in progress, initial packets from datagram sockets "
9564 "may be dropped. Applications using UDP should be aware of this and not take "
9565 "it into account for their packet retransmit strategy."
9568 #. FIXME . this is an ugly hack
9570 #: build/C/man7/ip.7:503
9572 "To bootstrap the path MTU discovery process on unconnected sockets, it is "
9573 "possible to start with a big datagram size (up to 64K-headers bytes long) "
9574 "and let it shrink by updates of the path MTU."
9578 #: build/C/man7/ip.7:512
9580 "To get an initial estimate of the path MTU, connect a datagram socket to the "
9581 "destination address using B<connect>(2) and retrieve the MTU by calling "
9582 "B<getsockopt>(2) with the B<IP_MTU> option."
9586 #: build/C/man7/ip.7:524
9588 "It is possible to implement RFC 4821 MTU probing with B<SOCK_DGRAM> or "
9589 "B<SOCK_RAW> sockets by setting a value of B<IP_PMTUDISC_PROBE> (available "
9590 "since Linux 2.6.22). This is also particularly useful for diagnostic tools "
9591 "such as B<tracepath>(8) that wish to deliberately send probe packets larger "
9592 "than the observed Path MTU."
9596 #: build/C/man7/ip.7:524
9598 msgid "B<IP_MULTICAST_ALL> (since Linux 2.6.31)"
9602 #: build/C/man7/ip.7:538
9604 "This option can be used to modify the delivery policy of multicast messages "
9605 "to sockets bound to the wildcard B<INADDR_ANY> address. The argument is a "
9606 "boolean integer (defaults to 1). If set to 1, the socket will receive "
9607 "messages from all the groups that have been joined globally on the whole "
9608 "system. Otherwise, it will deliver messages only from the groups that have "
9609 "been explicitly joined (for example via the B<IP_ADD_MEMBERSHIP> option) on "
9610 "this particular socket."
9614 #: build/C/man7/ip.7:538
9616 msgid "B<IP_MULTICAST_IF> (since Linux 1.2)"
9619 #. net: IP_MULTICAST_IF setsockopt now recognizes struct mreq
9620 #. Commit: 3a084ddb4bf299a6e898a9a07c89f3917f0713f7
9622 #: build/C/man7/ip.7:550
9624 "Set the local device for a multicast socket. Argument is an I<ip_mreqn> or "
9625 "I<ip_mreq> (since Linux 3.5) structure similar to B<IP_ADD_MEMBERSHIP>."
9629 #: build/C/man7/ip.7:554
9630 msgid "When an invalid socket option is passed, B<ENOPROTOOPT> is returned."
9634 #: build/C/man7/ip.7:554
9636 msgid "B<IP_MULTICAST_LOOP> (since Linux 1.2)"
9640 #: build/C/man7/ip.7:558
9642 "Set or read a boolean integer argument that determines whether sent "
9643 "multicast packets should be looped back to the local sockets."
9647 #: build/C/man7/ip.7:558
9649 msgid "B<IP_MULTICAST_TTL> (since Linux 1.2)"
9653 #: build/C/man7/ip.7:566
9655 "Set or read the time-to-live value of outgoing multicast packets for this "
9656 "socket. It is very important for multicast packets to set the smallest TTL "
9657 "possible. The default is 1 which means that multicast packets don't leave "
9658 "the local network unless the user program explicitly requests it. Argument "
9663 #: build/C/man7/ip.7:566
9665 msgid "B<IP_NODEFRAG> (since Linux 2.6.36)"
9669 #: build/C/man7/ip.7:574
9671 "If enabled (argument is nonzero), the reassembly of outgoing packets is "
9672 "disabled in the netfilter layer. This option is valid only for B<SOCK_RAW> "
9673 "sockets. The argument is an integer."
9677 #: build/C/man7/ip.7:574
9679 msgid "B<IP_OPTIONS> (since Linux 2.0)"
9682 #. Precisely: 1.3.30
9684 #: build/C/man7/ip.7:603
9686 "Set or get the IP options to be sent with every packet from this socket. "
9687 "The arguments are a pointer to a memory buffer containing the options and "
9688 "the option length. The B<setsockopt>(2) call sets the IP options "
9689 "associated with a socket. The maximum option size for IPv4 is 40 bytes. "
9690 "See RFC\\ 791 for the allowed options. When the initial connection request "
9691 "packet for a B<SOCK_STREAM> socket contains IP options, the IP options will "
9692 "be set automatically to the options from the initial packet with routing "
9693 "headers reversed. Incoming packets are not allowed to change options after "
9694 "the connection is established. The processing of all incoming source "
9695 "routing options is disabled by default and can be enabled by using the "
9696 "I<accept_source_route> I</proc> interface. Other options like timestamps "
9697 "are still handled. For datagram sockets, IP options can be only set by the "
9698 "local user. Calling B<getsockopt>(2) with B<IP_OPTIONS> puts the current "
9699 "IP options used for sending into the supplied buffer."
9703 #: build/C/man7/ip.7:603
9705 msgid "B<IP_PKTINFO> (since Linux 2.2)"
9708 #. Precisely: 2.1.68
9710 #: build/C/man7/ip.7:620
9712 "Pass an B<IP_PKTINFO> ancillary message that contains a I<pktinfo> structure "
9713 "that supplies some information about the incoming packet. This only works "
9714 "for datagram oriented sockets. The argument is a flag that tells the socket "
9715 "whether the B<IP_PKTINFO> message should be passed or not. The message "
9716 "itself can only be sent/retrieved as control message with a packet using "
9717 "B<recvmsg>(2) or B<sendmsg>(2)."
9721 #: build/C/man7/ip.7:629
9724 "struct in_pktinfo {\n"
9725 " unsigned int ipi_ifindex; /* Interface index */\n"
9726 " struct in_addr ipi_spec_dst; /* Local address */\n"
9727 " struct in_addr ipi_addr; /* Header Destination\n"
9732 #. FIXME . elaborate on that.
9733 #. This field is grossly misnamed
9735 #: build/C/man7/ip.7:654
9737 "I<ipi_ifindex> is the unique index of the interface the packet was received "
9738 "on. I<ipi_spec_dst> is the local address of the packet and I<ipi_addr> is "
9739 "the destination address in the packet header. If B<IP_PKTINFO> is passed to "
9740 "B<sendmsg>(2) and I<ipi_spec_dst> is not zero, then it is used as the local "
9741 "source address for the routing table lookup and for setting up IP source "
9742 "route options. When I<ipi_ifindex> is not zero, the primary local address "
9743 "of the interface specified by the index overwrites I<ipi_spec_dst> for the "
9744 "routing table lookup."
9748 #: build/C/man7/ip.7:654
9750 msgid "B<IP_RECVERR> (since Linux 2.2)"
9753 #. Precisely: 2.1.15
9754 #. or SOL_IP on Linux
9756 #: build/C/man7/ip.7:676
9758 "Enable extended reliable error message passing. When enabled on a datagram "
9759 "socket, all generated errors will be queued in a per-socket error queue. "
9760 "When the user receives an error from a socket operation, the errors can be "
9761 "received by calling B<recvmsg>(2) with the B<MSG_ERRQUEUE> flag set. The "
9762 "I<sock_extended_err> structure describing the error will be passed in an "
9763 "ancillary message with the type B<IP_RECVERR> and the level B<IPPROTO_IP>. "
9764 "This is useful for reliable error handling on unconnected sockets. The "
9765 "received data portion of the error queue contains the error packet."
9769 #: build/C/man7/ip.7:682
9770 msgid "The B<IP_RECVERR> control message contains a I<sock_extended_err> structure:"
9774 #: build/C/man7/ip.7:690
9777 "#define SO_EE_ORIGIN_NONE 0\n"
9778 "#define SO_EE_ORIGIN_LOCAL 1\n"
9779 "#define SO_EE_ORIGIN_ICMP 2\n"
9780 "#define SO_EE_ORIGIN_ICMP6 3\n"
9784 #: build/C/man7/ip.7:701
9787 "struct sock_extended_err {\n"
9788 " uint32_t ee_errno; /* error number */\n"
9789 " uint8_t ee_origin; /* where the error originated */\n"
9790 " uint8_t ee_type; /* type */\n"
9791 " uint8_t ee_code; /* code */\n"
9792 " uint8_t ee_pad;\n"
9793 " uint32_t ee_info; /* additional information */\n"
9794 " uint32_t ee_data; /* other data */\n"
9795 " /* More data may follow */\n"
9800 #: build/C/man7/ip.7:703
9802 msgid "struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);\n"
9806 #: build/C/man7/ip.7:726
9808 "I<ee_errno> contains the I<errno> number of the queued error. I<ee_origin> "
9809 "is the origin code of where the error originated. The other fields are "
9810 "protocol-specific. The macro B<SO_EE_OFFENDER> returns a pointer to the "
9811 "address of the network object where the error originated from given a "
9812 "pointer to the ancillary message. If this address is not known, the "
9813 "I<sa_family> member of the I<sockaddr> contains B<AF_UNSPEC> and the other "
9814 "fields of the I<sockaddr> are undefined."
9817 #. FIXME . Is it a good idea to document that? It is a dubious feature.
9822 #. has slightly different semantics. Instead of
9823 #. saving the errors for the next timeout, it passes all incoming
9824 #. errors immediately to the user.
9825 #. This might be useful for very short-lived TCP connections which
9826 #. need fast error handling. Use this option with care:
9827 #. it makes TCP unreliable
9828 #. by not allowing it to recover properly from routing
9829 #. shifts and other normal
9830 #. conditions and breaks the protocol specification.
9832 #: build/C/man7/ip.7:785
9834 "IP uses the I<sock_extended_err> structure as follows: I<ee_origin> is set "
9835 "to B<SO_EE_ORIGIN_ICMP> for errors received as an ICMP packet, or "
9836 "B<SO_EE_ORIGIN_LOCAL> for locally generated errors. Unknown values should "
9837 "be ignored. I<ee_type> and I<ee_code> are set from the type and code fields "
9838 "of the ICMP header. I<ee_info> contains the discovered MTU for B<EMSGSIZE> "
9839 "errors. The message also contains the I<sockaddr_in of the node> caused the "
9840 "error, which can be accessed with the B<SO_EE_OFFENDER> macro. The "
9841 "I<sin_family> field of the B<SO_EE_OFFENDER> address is B<AF_UNSPEC> when "
9842 "the source was unknown. When the error originated from the network, all IP "
9843 "options (B<IP_OPTIONS>, B<IP_TTL>, etc.) enabled on the socket and contained "
9844 "in the error packet are passed as control messages. The payload of the "
9845 "packet causing the error is returned as normal payload. Note that TCP has "
9846 "no error queue; B<MSG_ERRQUEUE> is not permitted on B<SOCK_STREAM> sockets. "
9847 "B<IP_RECVERR> is valid for TCP, but all errors are returned by socket "
9848 "function return or B<SO_ERROR> only."
9852 #: build/C/man7/ip.7:790
9854 "For raw sockets, B<IP_RECVERR> enables passing of all received ICMP errors "
9855 "to the application, otherwise errors are only reported on connected sockets"
9859 #: build/C/man7/ip.7:794
9861 "It sets or retrieves an integer boolean flag. B<IP_RECVERR> defaults to "
9866 #: build/C/man7/ip.7:794
9868 msgid "B<IP_RECVOPTS> (since Linux 2.2)"
9871 #. Precisely: 2.1.15
9873 #: build/C/man7/ip.7:805
9875 "Pass all incoming IP options to the user in a B<IP_OPTIONS> control "
9876 "message. The routing header and other options are already filled in for the "
9877 "local host. Not supported for B<SOCK_STREAM> sockets."
9881 #: build/C/man7/ip.7:805
9883 msgid "B<IP_RECVORIGDSTADDR> (since Linux 2.6.29)"
9886 #. commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69
9888 #: build/C/man7/ip.7:816
9890 "This boolean option enables the B<IP_ORIGDSTADDR> ancillary message in "
9891 "B<recvmsg>(2), in which the kernel returns the original destination address "
9892 "of the datagram being received. The ancillary message contains a I<struct "
9897 #: build/C/man7/ip.7:816
9899 msgid "B<IP_RECVTOS> (since Linux 2.2)"
9902 #. Precisely: 2.1.68
9904 #: build/C/man7/ip.7:825
9906 "If enabled, the B<IP_TOS> ancillary message is passed with incoming "
9907 "packets. It contains a byte which specifies the Type of Service/Precedence "
9908 "field of the packet header. Expects a boolean integer flag."
9912 #: build/C/man7/ip.7:825
9914 msgid "B<IP_RECVTTL> (since Linux 2.2)"
9917 #. Precisely: 2.1.68
9919 #: build/C/man7/ip.7:835
9921 "When this flag is set, pass a B<IP_TTL> control message with the time to "
9922 "live field of the received packet as a byte. Not supported for "
9923 "B<SOCK_STREAM> sockets."
9927 #: build/C/man7/ip.7:835
9929 msgid "B<IP_RETOPTS> (since Linux 2.2)"
9932 #. Precisely: 2.1.15
9934 #: build/C/man7/ip.7:842
9936 "Identical to B<IP_RECVOPTS>, but returns raw unprocessed options with "
9937 "timestamp and route record options not filled in for this hop."
9941 #: build/C/man7/ip.7:842
9943 msgid "B<IP_ROUTER_ALERT> (since Linux 2.2)"
9946 #. Precisely: 2.1.68
9948 #: build/C/man7/ip.7:854
9950 "Pass all to-be forwarded packets with the IP Router Alert option set to this "
9951 "socket. Only valid for raw sockets. This is useful, for instance, for "
9952 "user-space RSVP daemons. The tapped packets are not forwarded by the "
9953 "kernel; it is the user's responsibility to send them out again. Socket "
9954 "binding is ignored, such packets are only filtered by protocol. Expects an "
9959 #: build/C/man7/ip.7:854
9961 msgid "B<IP_TOS> (since Linux 1.0)"
9964 #. FIXME elaborate on this
9965 #. Needs CAP_NET_ADMIN
9967 #. Since Linux 2.6.27
9968 #. Author: KOVACS Krisztian <hidden@sch.bme.hu>
9969 #. http://lwn.net/Articles/252545/
9971 #: build/C/man7/ip.7:888
9973 "Set or receive the Type-Of-Service (TOS) field that is sent with every IP "
9974 "packet originating from this socket. It is used to prioritize packets on "
9975 "the network. TOS is a byte. There are some standard TOS flags defined: "
9976 "B<IPTOS_LOWDELAY> to minimize delays for interactive traffic, "
9977 "B<IPTOS_THROUGHPUT> to optimize throughput, B<IPTOS_RELIABILITY> to optimize "
9978 "for reliability, B<IPTOS_MINCOST> should be used for \"filler data\" where "
9979 "slow transmission doesn't matter. At most one of these TOS values can be "
9980 "specified. Other bits are invalid and shall be cleared. Linux sends "
9981 "B<IPTOS_LOWDELAY> datagrams first by default, but the exact behavior depends "
9982 "on the configured queueing discipline. Some high priority levels may "
9983 "require superuser privileges (the B<CAP_NET_ADMIN> capability). The "
9984 "priority can also be set in a protocol independent way by the "
9985 "(B<SOL_SOCKET>, B<SO_PRIORITY>) socket option (see B<socket>(7))."
9989 #: build/C/man7/ip.7:888
9991 msgid "B<IP_TRANSPARENT> (since Linux 2.6.24)"
9994 #. commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
9995 #. This patch introduces the IP_TRANSPARENT socket option: enabling that
9996 #. will make the IPv4 routing omit the non-local source address check on
9997 #. output. Setting IP_TRANSPARENT requires NET_ADMIN capability.
9998 #. http://lwn.net/Articles/252545/
10000 #: build/C/man7/ip.7:908
10002 "Setting this boolean option enables transparent proxying on this socket. "
10003 "This socket option allows the calling application to bind to a nonlocal IP "
10004 "address and operate both as a client and a server with the foreign address "
10005 "as the local endpoint. NOTE: this requires that routing be set up in a way "
10006 "that packets going to the foreign address are routed through the TProxy box "
10007 "(i.e., the system hosting the application that employs the B<IP_TRANSPARENT> "
10008 "socket option). Enabling this socket option requires superuser privileges "
10009 "(the B<CAP_NET_ADMIN> capability)."
10012 #. type: Plain text
10013 #: build/C/man7/ip.7:911
10015 "TProxy redirection with the iptables TPROXY target also requires that this "
10016 "option be set on the redirected socket."
10020 #: build/C/man7/ip.7:911
10022 msgid "B<IP_TTL> (since Linux 1.0)"
10025 #. type: Plain text
10026 #: build/C/man7/ip.7:915
10028 "Set or retrieve the current time-to-live field that is used in every packet "
10029 "sent from this socket."
10033 #: build/C/man7/ip.7:915
10035 msgid "B<IP_UNBLOCK_SOURCE> (since Linux 2.4.22 / 2.5.68)"
10038 #. type: Plain text
10039 #: build/C/man7/ip.7:921
10041 "Unblock previously blocked multicast source. Returns B<EADDRNOTAVAIL> when "
10042 "given source is not being blocked."
10045 #. FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
10047 #. ip_conntrack_max
10048 #. type: Plain text
10049 #: build/C/man7/ip.7:942
10051 "The IP protocol supports a set of I</proc> interfaces to configure some "
10052 "global parameters. The parameters can be accessed by reading or writing "
10053 "files in the directory I</proc/sys/net/ipv4/>. Interfaces described as "
10054 "I<Boolean> take an integer value, with a nonzero value (\"true\") meaning "
10055 "that the corresponding option is enabled, and a zero value (\"false\") "
10056 "meaning that the option is disabled."
10060 #: build/C/man7/ip.7:942
10062 msgid "I<ip_always_defrag> (Boolean; since Linux 2.2.13)"
10065 #. type: Plain text
10066 #: build/C/man7/ip.7:948
10068 "[New with kernel 2.2.13; in earlier kernel versions this feature was "
10069 "controlled at compile time by the B<CONFIG_IP_ALWAYS_DEFRAG> option; this "
10070 "option is not present in 2.4.x and later]"
10073 #. type: Plain text
10074 #: build/C/man7/ip.7:955
10076 "When this boolean flag is enabled (not equal 0), incoming fragments (parts "
10077 "of IP packets that arose when some host between origin and destination "
10078 "decided that the packets were too large and cut them into pieces) will be "
10079 "reassembled (defragmented) before being processed, even if they are about to "
10083 #. type: Plain text
10084 #: build/C/man7/ip.7:962
10086 "Only enable if running either a firewall that is the sole link to your "
10087 "network or a transparent proxy; never ever use it for a normal router or "
10088 "host. Otherwise, fragmented communication can be disturbed if the fragments "
10089 "travel over different links. Defragmentation also has a large memory and "
10093 #. type: Plain text
10094 #: build/C/man7/ip.7:966
10096 "This is automagically turned on when masquerading or transparent proxying "
10101 #: build/C/man7/ip.7:966
10103 msgid "I<ip_autoconfig> (since Linux 2.2 to 2.6.17)"
10106 #. Precisely: since 2.1.68
10107 #. FIXME document ip_autoconfig
10108 #. type: Plain text
10109 #: build/C/man7/ip.7:972
10110 msgid "Not documented."
10114 #: build/C/man7/ip.7:972
10116 msgid "I<ip_default_ttl> (integer; default: 64; since Linux 2.2)"
10119 #. Precisely: 2.1.15
10120 #. type: Plain text
10121 #: build/C/man7/ip.7:980
10123 "Set the default time-to-live value of outgoing packets. This can be changed "
10124 "per socket with the B<IP_TTL> option."
10128 #: build/C/man7/ip.7:980
10130 msgid "I<ip_dynaddr> (Boolean; default: disabled; since Linux 2.0.31)"
10133 #. type: Plain text
10134 #: build/C/man7/ip.7:987
10136 "Enable dynamic socket address and masquerading entry rewriting on interface "
10137 "address change. This is useful for dialup interface with changing IP "
10138 "addresses. 0 means no rewriting, 1 turns it on and 2 enables verbose mode."
10142 #: build/C/man7/ip.7:987
10144 msgid "I<ip_forward> (Boolean; default: disabled; since Linux 1.2)"
10147 #. type: Plain text
10148 #: build/C/man7/ip.7:992
10150 "Enable IP forwarding with a boolean flag. IP forwarding can be also set on "
10151 "a per-interface basis."
10155 #: build/C/man7/ip.7:992
10157 msgid "I<ip_local_port_range> (since Linux 2.2)"
10160 #. Precisely: since 2.1.68
10161 #. type: Plain text
10162 #: build/C/man7/ip.7:1000
10164 "This file contains two integers that define the default local port range "
10165 "allocated to sockets that are not explicitly bound to a port number\\(emthat "
10166 "is, the range used for I<ephemeral ports>. An ephemeral port is allocated "
10167 "to a socket in the following circumstances:"
10170 #. type: Plain text
10171 #: build/C/man7/ip.7:1004
10173 "the port number in a socket address is specified as 0 when calling "
10177 #. type: Plain text
10178 #: build/C/man7/ip.7:1007
10179 msgid "B<listen>(2) is called on a stream socket that was not previously bound;"
10182 #. type: Plain text
10183 #: build/C/man7/ip.7:1010
10184 msgid "B<connect>(2) was called on a socket that was not previously bound;"
10187 #. type: Plain text
10188 #: build/C/man7/ip.7:1013
10189 msgid "B<sendto>(2) is called on a datagram socket that was not previously bound."
10192 #. type: Plain text
10193 #: build/C/man7/ip.7:1020
10195 "Allocation of ephemeral ports starts with the first number in "
10196 "I<ip_local_port_range> and ends with the second number. If the range of "
10197 "ephemeral ports is exhausted, then the relevant system call returns an error "
10201 #. type: Plain text
10202 #: build/C/man7/ip.7:1031
10204 "Note that the port range in I<ip_local_port_range> should not conflict with "
10205 "the ports used by masquerading (although the case is handled). Also, "
10206 "arbitrary choices may cause problems with some firewall packet filters that "
10207 "make assumptions about the local ports in use. The first number should be "
10208 "at least greater than 1024, or better, greater than 4096, to avoid clashes "
10209 "with well known ports and to minimize firewall problems."
10213 #: build/C/man7/ip.7:1031
10215 msgid "I<ip_no_pmtu_disc> (Boolean; default: disabled; since Linux 2.2)"
10218 #. Precisely: 2.1.15
10220 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
10221 #. type: Plain text
10222 #: build/C/man7/ip.7:1043
10224 "If enabled, don't do Path MTU Discovery for TCP sockets by default. Path "
10225 "MTU discovery may fail if misconfigured firewalls (that drop all ICMP "
10226 "packets) or misconfigured interfaces (e.g., a point-to-point link where the "
10227 "both ends don't agree on the MTU) are on the path. It is better to fix the "
10228 "broken routers on the path than to turn off Path MTU Discovery globally, "
10229 "because not doing it incurs a high cost to the network."
10233 #: build/C/man7/ip.7:1043
10235 msgid "I<ip_nonlocal_bind> (Boolean; default: disabled; since Linux 2.4)"
10238 #. Precisely: patch-2.4.0-test10
10240 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
10241 #. type: Plain text
10242 #: build/C/man7/ip.7:1052
10244 "If set, allows processes to B<bind>(2) to nonlocal IP addresses, which can "
10245 "be quite useful, but may break some applications."
10249 #: build/C/man7/ip.7:1052
10251 msgid "I<ip6frag_time> (integer; default: 30)"
10255 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
10256 #. type: Plain text
10257 #: build/C/man7/ip.7:1057
10258 msgid "Time in seconds to keep an IPv6 fragment in memory."
10262 #: build/C/man7/ip.7:1057
10264 msgid "I<ip6frag_secret_interval> (integer; default: 600)"
10267 #. type: Plain text
10268 #: build/C/man7/ip.7:1061
10270 "Regeneration interval (in seconds) of the hash secret (or lifetime for the "
10271 "hash secret) for IPv6 fragments."
10275 #: build/C/man7/ip.7:1061
10277 msgid "I<ipfrag_high_thresh> (integer), I<ipfrag_low_thresh> (integer)"
10280 #. type: Plain text
10281 #: build/C/man7/ip.7:1068
10283 "If the amount of queued IP fragments reaches I<ipfrag_high_thresh>, the "
10284 "queue is pruned down to I<ipfrag_low_thresh>. Contains an integer with the "
10289 #: build/C/man7/ip.7:1068
10294 #. FIXME Document the conf/*/* interfaces
10296 #. FIXME Document the route/* interfaces
10297 #. type: Plain text
10298 #: build/C/man7/ip.7:1075
10299 msgid "See B<arp>(7)."
10303 #. commented out the following because ipchains is obsolete
10305 #. The ioctls to configure firewalling are documented in
10310 #. type: Plain text
10311 #: build/C/man7/ip.7:1088
10312 msgid "All ioctls described in B<socket>(7) apply to B<ip>."
10315 #. FIXME Add a discussion of multicasting
10316 #. type: Plain text
10317 #: build/C/man7/ip.7:1092
10319 "Ioctls to configure generic device parameters are described in "
10323 #. type: Plain text
10324 #: build/C/man7/ip.7:1112
10326 "The user tried to execute an operation without the necessary permissions. "
10327 "These include: sending a packet to a broadcast address without having the "
10328 "B<SO_BROADCAST> flag set; sending a packet via a I<prohibit> route; "
10329 "modifying firewall settings without superuser privileges (the "
10330 "B<CAP_NET_ADMIN> capability); binding to a privileged port without superuser "
10331 "privileges (the B<CAP_NET_BIND_SERVICE> capability)."
10334 #. type: Plain text
10335 #: build/C/man7/ip.7:1125
10336 msgid "An connection operation on a nonblocking socket is already in progress."
10339 #. type: Plain text
10340 #: build/C/man7/ip.7:1134
10342 "No valid routing table entry matches the destination address. This error "
10343 "can be caused by a ICMP message from a remote router or for the local "
10347 #. type: Plain text
10348 #: build/C/man7/ip.7:1140
10350 "Invalid argument passed. For send operations this can be caused by sending "
10351 "to a I<blackhole> route."
10354 #. type: Plain text
10355 #: build/C/man7/ip.7:1147
10356 msgid "Datagram is bigger than an MTU on the path and it cannot be fragmented."
10360 #: build/C/man7/ip.7:1147
10362 msgid "B<ENOBUFS>, B<ENOMEM>"
10365 #. type: Plain text
10366 #: build/C/man7/ip.7:1152
10368 "Not enough free memory. This often means that the memory allocation is "
10369 "limited by the socket buffer limits, not by the system memory, but this is "
10370 "not 100% consistent."
10373 #. type: Plain text
10374 #: build/C/man7/ip.7:1170
10376 "User doesn't have permission to set high priority, change configuration, or "
10377 "send signals to the requested process or group."
10380 #. type: Plain text
10381 #: build/C/man7/ip.7:1176
10382 msgid "The socket is not configured or an unknown socket type was requested."
10385 #. type: Plain text
10386 #: build/C/man7/ip.7:1183
10388 "Other errors may be generated by the overlaying protocols; see B<tcp>(7), "
10389 "B<raw>(7), B<udp>(7), and B<socket>(7)."
10392 #. IP_PASSSEC is Linux-specific
10393 #. IP_XFRM_POLICY is Linux-specific
10394 #. IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
10395 #. type: Plain text
10396 #: build/C/man7/ip.7:1198
10398 "B<IP_FREEBIND>, B<IP_MSFILTER>, B<IP_MTU>, B<IP_MTU_DISCOVER>, "
10399 "B<IP_RECVORIGDSTADDR>, B<IP_PKTINFO>, B<IP_RECVERR>, B<IP_ROUTER_ALERT>, and "
10400 "B<IP_TRANSPARENT> are Linux-specific."
10403 #. type: Plain text
10404 #: build/C/man7/ip.7:1207
10406 "Be very careful with the B<SO_BROADCAST> option - it is not privileged in "
10407 "Linux. It is easy to overload the network with careless broadcasts. For "
10408 "new application protocols it is better to use a multicast group instead of "
10409 "broadcasting. Broadcasting is discouraged."
10412 #. type: Plain text
10413 #: build/C/man7/ip.7:1217
10415 "Some other BSD sockets implementations provide B<IP_RCVDSTADDR> and "
10416 "B<IP_RECVIF> socket options to get the destination address and the interface "
10417 "of received datagrams. Linux has the more general B<IP_PKTINFO> for the "
10421 #. type: Plain text
10422 #: build/C/man7/ip.7:1226
10424 "Some BSD sockets implementations also provide an B<IP_RECVTTL> option, but "
10425 "an ancillary message with type B<IP_RECVTTL> is passed with the incoming "
10426 "packet. This is different from the B<IP_TTL> option used in Linux."
10429 #. type: Plain text
10430 #: build/C/man7/ip.7:1232
10432 "Using B<SOL_IP> socket options level isn't portable, BSD-based stacks use "
10433 "B<IPPROTO_IP> level."
10436 #. type: Plain text
10437 #: build/C/man7/ip.7:1245
10439 "For compatibility with Linux 2.0, the obsolete B<socket(AF_INET, "
10440 "SOCK_PACKET, >I<protocol>B<)> syntax is still supported to open a "
10441 "B<packet>(7) socket. This is deprecated and should be replaced by "
10442 "B<socket(AF_PACKET, SOCK_RAW, >I<protocol>B<)> instead. The main difference "
10443 "is the new I<sockaddr_ll> address structure for generic link layer "
10444 "information instead of the old B<sockaddr_pkt>."
10447 #. type: Plain text
10448 #: build/C/man7/ip.7:1255
10450 "The error used to diagnose exhaustion of the ephemeral port range differs "
10451 "across the various system calls (B<connect>(2), B<bind>(2), B<listen>(2), "
10452 "B<sendto>(2)) that can assign ephemeral ports."
10456 #. Some versions of glibc forget to declare
10457 #. .IR in_pktinfo .
10458 #. Workaround currently is to copy it into your program from this man page.
10459 #. type: Plain text
10460 #: build/C/man7/ip.7:1262
10462 "The ioctls to configure IP-specific interface options and ARP tables are not "
10467 #. This man page was written by Andi Kleen.
10468 #. type: Plain text
10469 #: build/C/man7/ip.7:1272
10471 "Receiving the original destination address with B<MSG_ERRQUEUE> in "
10472 "I<msg_name> by B<recvmsg>(2) does not work in some 2.2 kernels."
10475 #. type: Plain text
10476 #: build/C/man7/ip.7:1285
10478 "B<recvmsg>(2), B<sendmsg>(2), B<byteorder>(3), B<ipfw>(4), "
10479 "B<capabilities>(7), B<icmp>(7), B<ipv6>(7), B<netlink>(7), B<raw>(7), "
10480 "B<socket>(7), B<tcp>(7), B<udp>(7)"
10483 #. type: Plain text
10484 #: build/C/man7/ip.7:1289
10486 "RFC\\ 791 for the original IP specification. RFC\\ 1122 for the IPv4 host "
10487 "requirements. RFC\\ 1812 for the IPv4 router requirements."
10491 #: build/C/man7/ipv6.7:86
10497 #: build/C/man7/ipv6.7:86 build/C/man7/packet.7:12
10502 #. type: Plain text
10503 #: build/C/man7/ipv6.7:89
10504 msgid "ipv6 - Linux IPv6 protocol implementation"
10507 #. type: Plain text
10508 #: build/C/man7/ipv6.7:95
10509 msgid "I<tcp6_socket>B< = socket(AF_INET6, SOCK_STREAM, 0);>"
10512 #. type: Plain text
10513 #: build/C/man7/ipv6.7:97
10514 msgid "I<raw6_socket>B< = socket(AF_INET6, SOCK_RAW, >I<protocol>B<);>"
10517 #. type: Plain text
10518 #: build/C/man7/ipv6.7:99
10519 msgid "I<udp6_socket>B< = socket(AF_INET6, SOCK_DGRAM, >I<protocol>B<);>"
10522 #. type: Plain text
10523 #: build/C/man7/ipv6.7:106
10525 "Linux 2.2 optionally implements the Internet Protocol, version 6. This man "
10526 "page contains a description of the IPv6 basic API as implemented by the "
10527 "Linux kernel and glibc 2.1. The interface is based on the BSD sockets "
10528 "interface; see B<socket>(7)."
10531 #. type: Plain text
10532 #: build/C/man7/ipv6.7:111
10534 "The IPv6 API aims to be mostly compatible with the IPv4 API (see B<ip>(7)). "
10535 "Only differences are described in this man page."
10538 #. type: Plain text
10539 #: build/C/man7/ipv6.7:123
10541 "To bind an B<AF_INET6> socket to any process, the local address should be "
10542 "copied from the I<in6addr_any> variable which has I<in6_addr> type. In "
10543 "static initializations, B<IN6ADDR_ANY_INIT> may also be used, which expands "
10544 "to a constant expression. Both of them are in network byte order."
10547 #. type: Plain text
10548 #: build/C/man7/ipv6.7:130
10550 "The IPv6 loopback address (::1) is available in the global "
10551 "I<in6addr_loopback> variable. For initializations, B<IN6ADDR_LOOPBACK_INIT> "
10555 #. type: Plain text
10556 #: build/C/man7/ipv6.7:137
10558 "IPv4 connections can be handled with the v6 API by using the v4-mapped-on-v6 "
10559 "address type; thus a program needs to support only this API type to support "
10560 "both protocols. This is handled transparently by the address handling "
10561 "functions in the C library."
10564 #. type: Plain text
10565 #: build/C/man7/ipv6.7:142
10567 "IPv4 and IPv6 share the local port space. When you get an IPv4 connection "
10568 "or packet to a IPv6 socket, its source address will be mapped to v6 and it "
10569 "will be mapped to v6."
10572 #. type: Plain text
10573 #: build/C/man7/ipv6.7:152
10576 "struct sockaddr_in6 {\n"
10577 " sa_family_t sin6_family; /* AF_INET6 */\n"
10578 " in_port_t sin6_port; /* port number */\n"
10579 " uint32_t sin6_flowinfo; /* IPv6 flow information */\n"
10580 " struct in6_addr sin6_addr; /* IPv6 address */\n"
10581 " uint32_t sin6_scope_id; /* Scope ID (new in 2.4) */\n"
10585 #. type: Plain text
10586 #: build/C/man7/ipv6.7:156
10589 "struct in6_addr {\n"
10590 " unsigned char s6_addr[16]; /* IPv6 address */\n"
10594 #. type: Plain text
10595 #: build/C/man7/ipv6.7:178
10597 "I<sin6_family> is always set to B<AF_INET6>; I<sin6_port> is the protocol "
10598 "port (see I<sin_port> in B<ip>(7)); I<sin6_flowinfo> is the IPv6 flow "
10599 "identifier; I<sin6_addr> is the 128-bit IPv6 address. I<sin6_scope_id> is "
10600 "an ID depending on the scope of the address. It is new in Linux 2.4. Linux "
10601 "supports it only for link-local addresses, in that case I<sin6_scope_id> "
10602 "contains the interface index (see B<netdevice>(7))"
10605 #. type: Plain text
10606 #: build/C/man7/ipv6.7:184
10608 "IPv6 supports several address types: unicast to address a single host, "
10609 "multicast to address a group of hosts, anycast to address the nearest member "
10610 "of a group of hosts (not implemented in Linux), IPv4-on-IPv6 to address a "
10611 "IPv4 host, and other reserved address types."
10614 #. type: Plain text
10615 #: build/C/man7/ipv6.7:190
10617 "The address notation for IPv6 is a group of 8 4-digit hexadecimal numbers, "
10618 "separated with a \\(aq:\\(aq. \\&\"::\" stands for a string of 0 bits. "
10619 "Special addresses are ::1 for loopback and ::FFFF:E<lt>IPv4 addressE<gt> for "
10620 "IPv4-mapped-on-IPv6."
10623 #. type: Plain text
10624 #: build/C/man7/ipv6.7:192
10625 msgid "The port space of IPv6 is shared with IPv4."
10628 #. type: Plain text
10629 #: build/C/man7/ipv6.7:200
10631 "IPv6 supports some protocol-specific socket options that can be set with "
10632 "B<setsockopt>(2) and read with B<getsockopt>(2). The socket option level "
10633 "for IPv6 is B<IPPROTO_IPV6>. A boolean integer flag is zero when it is "
10634 "false, otherwise true."
10638 #: build/C/man7/ipv6.7:200
10640 msgid "B<IPV6_ADDRFORM>"
10643 #. type: Plain text
10644 #: build/C/man7/ipv6.7:214
10646 "Turn an B<AF_INET6> socket into a socket of a different address family. "
10647 "Only B<AF_INET> is currently supported for that. It is allowed only for "
10648 "IPv6 sockets that are connected and bound to a v4-mapped-on-v6 address. The "
10649 "argument is a pointer to an integer containing B<AF_INET>. This is useful "
10650 "to pass v4-mapped sockets as file descriptors to programs that don't know "
10651 "how to deal with the IPv6 API."
10655 #: build/C/man7/ipv6.7:214
10657 msgid "B<IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP>"
10660 #. type: Plain text
10661 #: build/C/man7/ipv6.7:219
10663 "Control membership in multicast groups. Argument is a pointer to a I<struct "
10668 #: build/C/man7/ipv6.7:219
10670 msgid "B<IPV6_MTU>"
10673 #. type: Plain text
10674 #: build/C/man7/ipv6.7:225
10676 "B<getsockopt>(): Retrieve the current known path MTU of the current socket. "
10677 "Only valid when the socket has been connected. Returns an integer."
10680 #. type: Plain text
10681 #: build/C/man7/ipv6.7:231
10683 "B<setsockopt>(): Set the MTU to be used for the socket. The MTU is limited "
10684 "by the device MTU or the path MTU when path MTU discovery is enabled. "
10685 "Argument is a pointer to integer."
10689 #: build/C/man7/ipv6.7:231
10691 msgid "B<IPV6_MTU_DISCOVER>"
10694 #. type: Plain text
10695 #: build/C/man7/ipv6.7:239
10697 "Control path-MTU discovery on the socket. See B<IP_MTU_DISCOVER> in "
10698 "B<ip>(7) for details."
10702 #: build/C/man7/ipv6.7:239
10704 msgid "B<IPV6_MULTICAST_HOPS>"
10707 #. type: Plain text
10708 #: build/C/man7/ipv6.7:246
10710 "Set the multicast hop limit for the socket. Argument is a pointer to an "
10711 "integer. -1 in the value means use the route default, otherwise it should "
10712 "be between 0 and 255."
10716 #: build/C/man7/ipv6.7:246
10718 msgid "B<IPV6_MULTICAST_IF>"
10721 #. type: Plain text
10722 #: build/C/man7/ipv6.7:257
10724 "Set the device for outgoing multicast packets on the socket. This is "
10725 "allowed only for B<SOCK_DGRAM> and B<SOCK_RAW> socket. The argument is a "
10726 "pointer to an interface index (see B<netdevice>(7)) in an integer."
10730 #: build/C/man7/ipv6.7:257
10732 msgid "B<IPV6_MULTICAST_LOOP>"
10735 #. type: Plain text
10736 #: build/C/man7/ipv6.7:261
10738 "Control whether the socket sees multicast packets that it has send itself. "
10739 "Argument is a pointer to boolean."
10743 #: build/C/man7/ipv6.7:261
10745 msgid "B<IPV6_RECVPKTINFO> (since Linux 2.6.14)"
10748 #. type: Plain text
10749 #: build/C/man7/ipv6.7:275
10751 "Set delivery of the B<IPV6_PKTINFO> control message on incoming datagrams. "
10752 "Such control messages contain a I<struct in6_pktinfo>, as per RFC 3542. "
10753 "Only allowed for B<SOCK_DGRAM> or B<SOCK_RAW> sockets. Argument is a "
10754 "pointer to a boolean value in an integer."
10757 #. type: Plain text
10758 #: build/C/man7/ipv6.7:278
10761 "B<IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, "
10765 #. type: Plain text
10766 #: build/C/man7/ipv6.7:303
10768 "Set delivery of control messages for incoming datagrams containing extension "
10769 "headers from the received packet. B<IPV6_RTHDR> delivers the routing "
10770 "header, B<IPV6_AUTHHDR> delivers the authentication header, B<IPV6_DSTOPTS> "
10771 "delivers the destination options, B<IPV6_HOPOPTS> delivers the hop options, "
10772 "B<IPV6_FLOWINFO> delivers an integer containing the flow ID, "
10773 "B<IPV6_HOPLIMIT> delivers an integer containing the hop count of the "
10774 "packet. The control messages have the same type as the socket option. All "
10775 "these header options can also be set for outgoing packets by putting the "
10776 "appropriate control message into the control buffer of B<sendmsg>(2). Only "
10777 "allowed for B<SOCK_DGRAM> or B<SOCK_RAW> sockets. Argument is a pointer to "
10782 #: build/C/man7/ipv6.7:303
10784 msgid "B<IPV6_RECVERR>"
10787 #. type: Plain text
10788 #: build/C/man7/ipv6.7:312
10790 "Control receiving of asynchronous error options. See B<IP_RECVERR> in "
10791 "B<ip>(7) for details. Argument is a pointer to boolean."
10795 #: build/C/man7/ipv6.7:312
10797 msgid "B<IPV6_ROUTER_ALERT>"
10800 #. type: Plain text
10801 #: build/C/man7/ipv6.7:327
10803 "Pass forwarded packets containing a router alert hop-by-hop option to this "
10804 "socket. Only allowed for B<SOCK_RAW> sockets. The tapped packets are not "
10805 "forwarded by the kernel, it is the user's responsibility to send them out "
10806 "again. Argument is a pointer to an integer. A positive integer indicates a "
10807 "router alert option value to intercept. Packets carrying a router alert "
10808 "option with a value field containing this integer will be delivered to the "
10809 "socket. A negative integer disables delivery of packets with router alert "
10810 "options to this socket."
10814 #: build/C/man7/ipv6.7:327
10816 msgid "B<IPV6_UNICAST_HOPS>"
10819 #. type: Plain text
10820 #: build/C/man7/ipv6.7:333
10822 "Set the unicast hop limit for the socket. Argument is a pointer to an "
10823 "integer. -1 in the value means use the route default, otherwise it should "
10824 "be between 0 and 255."
10828 #: build/C/man7/ipv6.7:333
10830 msgid "B<IPV6_V6ONLY> (since Linux 2.4.21 and 2.6)"
10834 #. type: Plain text
10835 #: build/C/man7/ipv6.7:340
10837 "If this flag is set to true (nonzero), then the socket is restricted to "
10838 "sending and receiving IPv6 packets only. In this case, an IPv4 and an IPv6 "
10839 "application can bind to a single port at the same time."
10842 #. type: Plain text
10843 #: build/C/man7/ipv6.7:344
10845 "If this flag is set to false (zero), then the socket can be used to send and "
10846 "receive packets to and from an IPv6 address or an IPv4-mapped IPv6 address."
10849 #. type: Plain text
10850 #: build/C/man7/ipv6.7:346
10851 msgid "The argument is a pointer to a boolean value in an integer."
10854 #. FLOWLABEL_MGR, FLOWINFO_SEND
10855 #. type: Plain text
10856 #: build/C/man7/ipv6.7:351
10858 "The default value for this flag is defined by the contents of the file "
10859 "I</proc/sys/net/ipv6/bindv6only>. The default value for that file is 0 "
10863 #. type: Plain text
10864 #: build/C/man7/ipv6.7:362
10866 "The user tried to B<bind>(2) to a link-local IPv6 address, but the "
10867 "I<sin6_scope_id> in the supplied I<sockaddr_in6> structure is not a valid "
10871 #. type: Plain text
10872 #: build/C/man7/ipv6.7:378
10874 "Linux 2.4 will break binary compatibility for the I<sockaddr_in6> for 64-bit "
10875 "hosts by changing the alignment of I<in6_addr> and adding an additional "
10876 "I<sin6_scope_id> field. The kernel interfaces stay compatible, but a "
10877 "program including I<sockaddr_in6> or I<in6_addr> into other structures may "
10878 "not be. This is not a problem for 32-bit hosts like i386."
10881 #. type: Plain text
10882 #: build/C/man7/ipv6.7:386
10884 "The I<sin6_flowinfo> field is new in Linux 2.4. It is transparently "
10885 "passed/read by the kernel when the passed address length contains it. Some "
10886 "programs that pass a longer address buffer and then check the outgoing "
10887 "address length may break."
10890 #. type: Plain text
10891 #: build/C/man7/ipv6.7:396
10893 "The I<sockaddr_in6> structure is bigger than the generic I<sockaddr>. "
10894 "Programs that assume that all address types can be stored safely in a "
10895 "I<struct sockaddr> need to be changed to use I<struct sockaddr_storage> for "
10899 #. type: Plain text
10900 #: build/C/man7/ipv6.7:401
10902 "The IPv6 extended API as in RFC\\ 2292 is currently only partly implemented; "
10903 "although the 2.2 kernel has near complete support for receiving options, the "
10904 "macros for generating IPv6 options are missing in glibc 2.1."
10907 #. type: Plain text
10908 #: build/C/man7/ipv6.7:403
10909 msgid "IPSec support for EH and AH headers is missing."
10912 #. type: Plain text
10913 #: build/C/man7/ipv6.7:405
10914 msgid "Flow label management is not complete and not documented here."
10917 #. type: Plain text
10918 #: build/C/man7/ipv6.7:407
10919 msgid "This man page is not complete."
10922 #. type: Plain text
10923 #: build/C/man7/ipv6.7:410
10924 msgid "B<cmsg>(3), B<ip>(7)"
10927 #. type: Plain text
10928 #: build/C/man7/ipv6.7:414
10930 "RFC\\ 2553: IPv6 BASIC API; Linux tries to be compliant to this. RFC\\ "
10931 "2460: IPv6 specification."
10935 #: build/C/man7/netdevice.7:18
10941 #: build/C/man7/netdevice.7:18
10946 #. type: Plain text
10947 #: build/C/man7/netdevice.7:21
10948 msgid "netdevice - low-level access to Linux network devices"
10951 #. type: Plain text
10952 #: build/C/man7/netdevice.7:23
10953 msgid "B<#include E<lt>sys/ioctl.hE<gt>>"
10956 #. type: Plain text
10957 #: build/C/man7/netdevice.7:25
10958 msgid "B<#include E<lt>net/if.hE<gt>>"
10961 #. type: Plain text
10962 #: build/C/man7/netdevice.7:28
10964 "This man page describes the sockets interface which is used to configure "
10968 #. type: Plain text
10969 #: build/C/man7/netdevice.7:35
10971 "Linux supports some standard ioctls to configure network devices. They can "
10972 "be used on any socket's file descriptor regardless of the family or type. "
10973 "Most of them pass an I<ifreq> structure:"
10976 #. type: Plain text
10977 #: build/C/man7/netdevice.7:56
10981 " char ifr_name[IFNAMSIZ]; /* Interface name */\n"
10983 " struct sockaddr ifr_addr;\n"
10984 " struct sockaddr ifr_dstaddr;\n"
10985 " struct sockaddr ifr_broadaddr;\n"
10986 " struct sockaddr ifr_netmask;\n"
10987 " struct sockaddr ifr_hwaddr;\n"
10988 " short ifr_flags;\n"
10989 " int ifr_ifindex;\n"
10990 " int ifr_metric;\n"
10992 " struct ifmap ifr_map;\n"
10993 " char ifr_slave[IFNAMSIZ];\n"
10994 " char ifr_newname[IFNAMSIZ];\n"
10995 " char *ifr_data;\n"
11000 #. type: Plain text
11001 #: build/C/man7/netdevice.7:64
11003 "Normally, the user specifies which device to affect by setting I<ifr_name> "
11004 "to the name of the interface. All other members of the structure may share "
11008 #. type: Plain text
11009 #: build/C/man7/netdevice.7:72
11011 "If an ioctl is marked as privileged, then using it requires an effective "
11012 "user ID of 0 or the B<CAP_NET_ADMIN> capability. If this is not the case, "
11013 "B<EPERM> will be returned."
11017 #: build/C/man7/netdevice.7:72
11019 msgid "B<SIOCGIFNAME>"
11022 #. type: Plain text
11023 #: build/C/man7/netdevice.7:80
11025 "Given the I<ifr_ifindex>, return the name of the interface in I<ifr_name>. "
11026 "This is the only ioctl which returns its result in I<ifr_name>."
11030 #: build/C/man7/netdevice.7:80
11032 msgid "B<SIOCGIFINDEX>"
11035 #. type: Plain text
11036 #: build/C/man7/netdevice.7:84
11037 msgid "Retrieve the interface index of the interface into I<ifr_ifindex>."
11041 #: build/C/man7/netdevice.7:84
11043 msgid "B<SIOCGIFFLAGS>, B<SIOCSIFFLAGS>"
11046 #. Do not right adjust text blocks in tables
11047 #. type: Plain text
11048 #: build/C/man7/netdevice.7:90
11050 "Get or set the active flag word of the device. I<ifr_flags> contains a bit "
11051 "mask of the following values:"
11055 #: build/C/man7/netdevice.7:95
11057 msgid "Device flags\n"
11061 #: build/C/man7/netdevice.7:96
11063 msgid "IFF_UP:Interface is running.\n"
11067 #: build/C/man7/netdevice.7:97
11069 msgid "IFF_BROADCAST:Valid broadcast address set.\n"
11073 #: build/C/man7/netdevice.7:98
11075 msgid "IFF_DEBUG:Internal debugging flag.\n"
11079 #: build/C/man7/netdevice.7:99
11081 msgid "IFF_LOOPBACK:Interface is a loopback interface.\n"
11085 #: build/C/man7/netdevice.7:100
11087 msgid "IFF_POINTOPOINT:Interface is a point-to-point link.\n"
11091 #: build/C/man7/netdevice.7:101
11093 msgid "IFF_RUNNING:Resources allocated.\n"
11097 #: build/C/man7/netdevice.7:102
11099 msgid "IFF_NOARP:T{\n"
11103 #: build/C/man7/netdevice.7:103
11105 msgid "No arp protocol, L2 destination address not set.\n"
11109 #: build/C/man7/netdevice.7:104 build/C/man7/netdevice.7:115
11115 #: build/C/man7/netdevice.7:105
11117 msgid "IFF_PROMISC:Interface is in promiscuous mode.\n"
11121 #: build/C/man7/netdevice.7:106
11123 msgid "IFF_NOTRAILERS:Avoid use of trailers.\n"
11127 #: build/C/man7/netdevice.7:107
11129 msgid "IFF_ALLMULTI:Receive all multicast packets.\n"
11133 #: build/C/man7/netdevice.7:108
11135 msgid "IFF_MASTER:Master of a load balancing bundle.\n"
11139 #: build/C/man7/netdevice.7:109
11141 msgid "IFF_SLAVE:Slave of a load balancing bundle.\n"
11145 #: build/C/man7/netdevice.7:110
11147 msgid "IFF_MULTICAST:Supports multicast\n"
11151 #: build/C/man7/netdevice.7:111
11153 msgid "IFF_PORTSEL:Is able to select media type via ifmap.\n"
11157 #: build/C/man7/netdevice.7:112
11159 msgid "IFF_AUTOMEDIA:Auto media selection active.\n"
11163 #: build/C/man7/netdevice.7:113
11165 msgid "IFF_DYNAMIC:T{\n"
11169 #: build/C/man7/netdevice.7:114
11171 msgid "The addresses are lost when the interface goes down.\n"
11175 #: build/C/man7/netdevice.7:116
11177 msgid "IFF_LOWER_UP:Driver signals L1 up (since Linux 2.6.17)\n"
11181 #: build/C/man7/netdevice.7:117
11183 msgid "IFF_DORMANT:Driver signals dormant (since Linux 2.6.17)\n"
11187 #: build/C/man7/netdevice.7:118
11189 msgid "IFF_ECHO:Echo sent packets (since Linux 2.6.25)\n"
11192 #. type: Plain text
11193 #: build/C/man7/netdevice.7:124
11195 "Setting the active flag word is a privileged operation, but any process may "
11200 #: build/C/man7/netdevice.7:124
11202 msgid "B<SIOCGIFPFLAGS>, B<SIOCSIFPFLAGS>"
11205 #. type: Plain text
11206 #: build/C/man7/netdevice.7:129
11208 "Get or set extended (private) flags for the device. I<ifr_flags> contains a "
11209 "bit mask of the following values:"
11213 #: build/C/man7/netdevice.7:133
11215 msgid "Private flags\n"
11219 #: build/C/man7/netdevice.7:134
11221 msgid "IFF_802_1Q_VLAN:Interface is 802.1Q VLAN device.\n"
11225 #: build/C/man7/netdevice.7:135
11227 msgid "IFF_EBRIDGE:Interface is Ethernet bridging device.\n"
11231 #: build/C/man7/netdevice.7:136
11233 msgid "IFF_SLAVE_INACTIVE:Interface is inactive bonding slave.\n"
11237 #: build/C/man7/netdevice.7:137
11239 msgid "IFF_MASTER_8023AD:Interface is 802.3ad bonding master.\n"
11243 #: build/C/man7/netdevice.7:138
11245 msgid "IFF_MASTER_ALB:Interface is balanced-alb bonding master.\n"
11249 #: build/C/man7/netdevice.7:139
11251 msgid "IFF_BONDING:Interface is a bonding master or slave.\n"
11255 #: build/C/man7/netdevice.7:140
11257 msgid "IFF_SLAVE_NEEDARP:Interface needs ARPs for validation.\n"
11261 #: build/C/man7/netdevice.7:141
11263 msgid "IFF_ISATAP:Interface is RFC4214 ISATAP interface.\n"
11266 #. type: Plain text
11267 #: build/C/man7/netdevice.7:145
11268 msgid "Setting the extended (private) interface flags is a privileged operation."
11272 #: build/C/man7/netdevice.7:145
11274 msgid "B<SIOCGIFADDR>, B<SIOCSIFADDR>"
11277 #. type: Plain text
11278 #: build/C/man7/netdevice.7:153
11280 "Get or set the address of the device using I<ifr_addr>. Setting the "
11281 "interface address is a privileged operation. For compatibility, only "
11282 "B<AF_INET> addresses are accepted or returned."
11286 #: build/C/man7/netdevice.7:153
11288 msgid "B<SIOCGIFDSTADDR>, B<SIOCSIFDSTADDR>"
11291 #. type: Plain text
11292 #: build/C/man7/netdevice.7:161
11294 "Get or set the destination address of a point-to-point device using "
11295 "I<ifr_dstaddr>. For compatibility, only B<AF_INET> addresses are accepted "
11296 "or returned. Setting the destination address is a privileged operation."
11300 #: build/C/man7/netdevice.7:161
11302 msgid "B<SIOCGIFBRDADDR>, B<SIOCSIFBRDADDR>"
11305 #. type: Plain text
11306 #: build/C/man7/netdevice.7:169
11308 "Get or set the broadcast address for a device using I<ifr_brdaddr>. For "
11309 "compatibility, only B<AF_INET> addresses are accepted or returned. Setting "
11310 "the broadcast address is a privileged operation."
11314 #: build/C/man7/netdevice.7:169
11316 msgid "B<SIOCGIFNETMASK>, B<SIOCSIFNETMASK>"
11319 #. type: Plain text
11320 #: build/C/man7/netdevice.7:177
11322 "Get or set the network mask for a device using I<ifr_netmask>. For "
11323 "compatibility, only B<AF_INET> addresses are accepted or returned. Setting "
11324 "the network mask is a privileged operation."
11328 #: build/C/man7/netdevice.7:177
11330 msgid "B<SIOCGIFMETRIC>, B<SIOCSIFMETRIC>"
11333 #. type: Plain text
11334 #: build/C/man7/netdevice.7:186
11336 "Get or set the metric of the device using I<ifr_metric>. This is currently "
11337 "not implemented; it sets I<ifr_metric> to 0 if you attempt to read it and "
11338 "returns B<EOPNOTSUPP> if you attempt to set it."
11342 #: build/C/man7/netdevice.7:186
11344 msgid "B<SIOCGIFMTU>, B<SIOCSIFMTU>"
11347 #. type: Plain text
11348 #: build/C/man7/netdevice.7:193
11350 "Get or set the MTU (Maximum Transfer Unit) of a device using I<ifr_mtu>. "
11351 "Setting the MTU is a privileged operation. Setting the MTU to too small "
11352 "values may cause kernel crashes."
11356 #: build/C/man7/netdevice.7:193
11358 msgid "B<SIOCGIFHWADDR>, B<SIOCSIFHWADDR>"
11361 #. type: Plain text
11362 #: build/C/man7/netdevice.7:204
11364 "Get or set the hardware address of a device using I<ifr_hwaddr>. The "
11365 "hardware address is specified in a struct I<sockaddr>. I<sa_family> "
11366 "contains the ARPHRD_* device type, I<sa_data> the L2 hardware address "
11367 "starting from byte 0. Setting the hardware address is a privileged "
11372 #: build/C/man7/netdevice.7:204
11374 msgid "B<SIOCSIFHWBROADCAST>"
11377 #. type: Plain text
11378 #: build/C/man7/netdevice.7:209
11380 "Set the hardware broadcast address of a device from I<ifr_hwaddr>. This is "
11381 "a privileged operation."
11385 #: build/C/man7/netdevice.7:209
11387 msgid "B<SIOCGIFMAP>, B<SIOCSIFMAP>"
11390 #. type: Plain text
11391 #: build/C/man7/netdevice.7:214
11393 "Get or set the interface's hardware parameters using I<ifr_map>. Setting "
11394 "the parameters is a privileged operation."
11397 #. type: Plain text
11398 #: build/C/man7/netdevice.7:225
11402 " unsigned long mem_start;\n"
11403 " unsigned long mem_end;\n"
11404 " unsigned short base_addr;\n"
11405 " unsigned char irq;\n"
11406 " unsigned char dma;\n"
11407 " unsigned char port;\n"
11411 #. type: Plain text
11412 #: build/C/man7/netdevice.7:230
11414 "The interpretation of the ifmap structure depends on the device driver and "
11415 "the architecture."
11419 #: build/C/man7/netdevice.7:230
11421 msgid "B<SIOCADDMULTI>, B<SIOCDELMULTI>"
11424 #. type: Plain text
11425 #: build/C/man7/netdevice.7:239
11427 "Add an address to or delete an address from the device's link layer "
11428 "multicast filters using I<ifr_hwaddr>. These are privileged operations. "
11429 "See also B<packet>(7) for an alternative."
11433 #: build/C/man7/netdevice.7:239
11435 msgid "B<SIOCGIFTXQLEN>, B<SIOCSIFTXQLEN>"
11438 #. type: Plain text
11439 #: build/C/man7/netdevice.7:244
11441 "Get or set the transmit queue length of a device using I<ifr_qlen>. Setting "
11442 "the transmit queue length is a privileged operation."
11446 #: build/C/man7/netdevice.7:244
11448 msgid "B<SIOCSIFNAME>"
11451 #. type: Plain text
11452 #: build/C/man7/netdevice.7:253
11454 "Changes the name of the interface specified in I<ifr_name> to "
11455 "I<ifr_newname>. This is a privileged operation. It is allowed only when "
11456 "the interface is not up."
11460 #: build/C/man7/netdevice.7:253
11462 msgid "B<SIOCGIFCONF>"
11465 #. type: Plain text
11466 #: build/C/man7/netdevice.7:263
11468 "Return a list of interface (transport layer) addresses. This currently "
11469 "means only addresses of the B<AF_INET> (IPv4) family for compatibility. "
11470 "Unlike the others, this ioctl passes an I<ifconf> structure:"
11473 #. type: Plain text
11474 #: build/C/man7/netdevice.7:273
11477 "struct ifconf {\n"
11478 " int ifc_len; /* size of buffer */\n"
11480 " char *ifc_buf; /* buffer address */\n"
11481 " struct ifreq *ifc_req; /* array of structures */\n"
11486 #. type: Plain text
11487 #: build/C/man7/netdevice.7:299
11489 "If I<ifc_req> is NULL, B<SIOCGIFCONF> returns the necessary buffer size in "
11490 "bytes for receiving all available addresses in I<ifc_len>. Otherwise, "
11491 "I<ifc_req> contains a pointer to an array of I<ifreq> structures to be "
11492 "filled with all currently active L3 interface addresses. I<ifc_len> "
11493 "contains the size of the array in bytes. Within each I<ifreq> structure, "
11494 "I<ifr_name> will receive the interface name, and I<ifr_addr> the address. "
11495 "The actual number of bytes transferred is returned in I<ifc_len>."
11498 #. type: Plain text
11499 #: build/C/man7/netdevice.7:315
11501 "If the size specified by I<ifc_len> is insufficient to store all the "
11502 "addresses, the kernel will skip the exceeding ones and return success. "
11503 "There is no reliable way of detecting this condition once it has occurred. "
11504 "It is therefore recommended to either determine the necessary buffer size "
11505 "beforehand by calling B<SIOCGIFCONF> with I<ifc_req> set to NULL, or to "
11506 "retry the call with a bigger buffer whenever I<ifc_len> upon return differs "
11507 "by less than I<sizeof(struct ifreq)> from its original value."
11510 #. Slaving isn't supported in 2.2
11513 #. .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
11514 #. Get or set the slave device using
11516 #. Setting the slave device is a privileged operation.
11518 #. FIXME . add amateur radio stuff.
11519 #. type: Plain text
11520 #: build/C/man7/netdevice.7:332
11522 "If an error occurs accessing the I<ifconf> or I<ifreq> structures, B<EFAULT> "
11523 "will be returned."
11526 #. type: Plain text
11527 #: build/C/man7/netdevice.7:338
11529 "Most protocols support their own ioctls to configure protocol-specific "
11530 "interface options. See the protocol man pages for a description. For "
11531 "configuring IP addresses, see B<ip>(7)."
11534 #. type: Plain text
11535 #: build/C/man7/netdevice.7:341
11537 "In addition, some devices support private ioctls. These are not described "
11541 #. type: Plain text
11542 #: build/C/man7/netdevice.7:349
11544 "Strictly speaking, B<SIOCGIFCONF> and the other ioctls that accept or return "
11545 "only B<AF_INET> socket addresses, are IP-specific and belong in B<ip>(7)."
11548 #. type: Plain text
11549 #: build/C/man7/netdevice.7:354
11551 "The names of interfaces with no addresses or that don't have the "
11552 "B<IFF_RUNNING> flag set can be found via I</proc/net/dev>."
11555 #. type: Plain text
11556 #: build/C/man7/netdevice.7:359
11558 "Local IPv6 IP addresses can be found via I</proc/net> or via "
11562 #. type: Plain text
11563 #: build/C/man7/netdevice.7:365
11565 "glibc 2.1 is missing the I<ifr_newname> macro in I<E<lt>net/if.hE<gt>>. Add "
11566 "the following to your program as a workaround:"
11569 #. type: Plain text
11570 #: build/C/man7/netdevice.7:371
11573 "#ifndef ifr_newname\n"
11574 "#define ifr_newname ifr_ifru.ifru_slave\n"
11578 #. type: Plain text
11579 #: build/C/man7/netdevice.7:378
11580 msgid "B<proc>(5), B<capabilities>(7), B<ip>(7), B<rtnetlink>(7)"
11584 #: build/C/man5/networks.5:26
11590 #: build/C/man5/networks.5:26
11596 #: build/C/man5/networks.5:26
11601 #. type: Plain text
11602 #: build/C/man5/networks.5:29
11603 msgid "networks - network name information"
11606 #. type: Plain text
11607 #: build/C/man5/networks.5:35
11609 "The file I</etc/networks> is a plain ASCII file that describes known DARPA "
11610 "networks and symbolic names for these networks. Each line represents a "
11611 "network and has the following structure:"
11614 #. type: Plain text
11615 #: build/C/man5/networks.5:38
11616 msgid "I<name number aliases ...>"
11619 #. type: Plain text
11620 #: build/C/man5/networks.5:46
11622 "where the fields are delimited by spaces or tabs. Empty lines are ignored. "
11623 "The hash character (B<#>) indicates the start of a comment: this character, "
11624 "and the remaining characters up to the end of the current line, are ignored "
11625 "by library functions that process the file."
11628 #. type: Plain text
11629 #: build/C/man5/networks.5:48 build/C/man5/protocols.5:59
11630 msgid "The field descriptions are:"
11634 #: build/C/man5/networks.5:48
11639 #. type: Plain text
11640 #: build/C/man5/networks.5:53
11642 "The symbolic name for the network. Network names can contain any printable "
11643 "characters except white-space characters or the comment character."
11647 #: build/C/man5/networks.5:53 build/C/man5/protocols.5:67
11652 #. type: Plain text
11653 #: build/C/man5/networks.5:58
11655 "The official number for this network in numbers-and-dots notation (see "
11656 "B<inet>(3)). The trailing \".0\" (for the host component of the network "
11657 "address) may be omitted."
11661 #: build/C/man5/networks.5:58 build/C/man5/protocols.5:71 build/C/man5/services.5:120
11666 #. type: Plain text
11667 #: build/C/man5/networks.5:61
11668 msgid "Optional aliases for the network."
11671 #. type: Plain text
11672 #: build/C/man5/networks.5:70
11674 "This file is read by the B<route>(8) and B<netstat>(8) utilities. Only "
11675 "Class A, B or C networks are supported, partitioned networks (i.e., "
11676 "network/26 or network/28) are not supported by this facility."
11679 #. type: Plain text
11680 #: build/C/man5/networks.5:74
11681 msgid "The networks definition file."
11684 #. type: Plain text
11685 #: build/C/man5/networks.5:80
11687 "B<getnetbyaddr>(3), B<getnetbyname>(3), B<getnetent>(3), B<netstat>(8), "
11692 #: build/C/man8/nscd.8:23
11697 #. type: Plain text
11698 #: build/C/man8/nscd.8:26
11699 msgid "nscd - name service cache daemon"
11702 #. type: Plain text
11703 #: build/C/man8/nscd.8:34
11705 "Nscd is a daemon that provides a cache for the most common name service "
11706 "requests. The default configuration file, I</etc/nscd.conf>, determines the "
11707 "behavior of the cache daemon. See B<nscd.conf>(5)."
11710 #. type: Plain text
11711 #: build/C/man8/nscd.8:47
11713 "Nscd provides caching for accesses of the B<passwd>(5), B<group>(5), and "
11714 "B<hosts>(5) databases through standard libc interfaces, such as "
11715 "B<getpwnam>(3), B<getpwuid>(3), B<getgrnam>(3), B<getgrgid>(3), "
11716 "B<gethostbyname>(3), and others."
11719 #. type: Plain text
11720 #: build/C/man8/nscd.8:56
11722 "There are two caches for each database: a positive one for items found, and "
11723 "a negative one for items not found. Each cache has a separate TTL "
11724 "(time-to-live) period for its data. Note that the shadow file is "
11725 "specifically not cached. B<getspnam>(3) calls remain uncached as a result."
11729 #: build/C/man8/nscd.8:56
11735 #: build/C/man8/nscd.8:57
11740 #. type: Plain text
11741 #: build/C/man8/nscd.8:60
11742 msgid "will give you a list with all options and what they do."
11745 #. type: Plain text
11746 #: build/C/man8/nscd.8:83
11748 "The daemon will try to watch for changes in configuration files appropriate "
11749 "for each database (e.g., I</etc/passwd> for the I<passwd> database or "
11750 "I</etc/hosts> and I</etc/resolv.conf> for the I<hosts> database), and flush "
11751 "the cache when these are changed. However, this will happen only after a "
11752 "short delay (unless the B<inotify>(7) mechanism is available and glibc 2.9 "
11753 "or later is available), and this auto-detection does not cover configuration "
11754 "files required by nonstandard NSS modules, if any are specified in "
11755 "I</etc/nsswitch.conf>. In that case, you need to run the following command "
11756 "after changing the configuration file of the database so that B<nscd> "
11757 "invalidates its cache:"
11760 #. type: Plain text
11761 #: build/C/man8/nscd.8:85
11763 msgid " $ B<nscd -i> I<E<lt>databaseE<gt>>\n"
11768 #. was written by Thorsten Kukuk and Ulrich Drepper.
11769 #. type: Plain text
11770 #: build/C/man8/nscd.8:91
11771 msgid "B<nscd.conf>(5), B<nsswitch.conf>(5)"
11775 #: build/C/man5/nscd.conf.5:20
11781 #: build/C/man5/nscd.conf.5:20
11786 #. type: Plain text
11787 #: build/C/man5/nscd.conf.5:23
11788 msgid "/etc/nscd.conf - name service cache daemon configuration file"
11791 #. type: Plain text
11792 #: build/C/man5/nscd.conf.5:36
11794 "The file I</etc/nscd.conf> is read from B<nscd>(8) at startup. Each line "
11795 "specifies either an attribute and a value, or an attribute, service, and a "
11796 "value. Fields are separated either by SPACE or TAB characters. A "
11797 "\\(aq#\\(aq (number sign) indicates the beginning of a comment; following "
11798 "characters, up to the end of the line, are not interpreted by nscd."
11801 #. type: Plain text
11802 #: build/C/man5/nscd.conf.5:39
11804 "Valid services are I<passwd>, I<group>, I<hosts>, I<services>, or "
11808 #. type: Plain text
11809 #: build/C/man5/nscd.conf.5:42
11810 msgid "B<logfile> I<debug-file-name>"
11813 #. type: Plain text
11814 #: build/C/man5/nscd.conf.5:44
11815 msgid "Specifies name of the file to which debug info should be written."
11818 #. type: Plain text
11819 #: build/C/man5/nscd.conf.5:48
11820 msgid "B<debug-level> I<value>"
11823 #. type: Plain text
11824 #: build/C/man5/nscd.conf.5:51
11825 msgid "Sets the desired debug level. The default is 0."
11828 #. type: Plain text
11829 #: build/C/man5/nscd.conf.5:55
11830 msgid "B<threads> I<number>"
11833 #. type: Plain text
11834 #: build/C/man5/nscd.conf.5:59
11836 "This is the number of threads that are started to wait for requests. At "
11837 "least five threads will always be created."
11840 #. type: Plain text
11841 #: build/C/man5/nscd.conf.5:63
11842 msgid "B<max-threads> I<number>"
11845 #. type: Plain text
11846 #: build/C/man5/nscd.conf.5:66
11847 msgid "Specifies the maximum number of threads. The default is 32."
11850 #. type: Plain text
11851 #: build/C/man5/nscd.conf.5:70
11852 msgid "B<server-user> I<user>"
11855 #. type: Plain text
11856 #: build/C/man5/nscd.conf.5:74
11858 "If this option is set, nscd will run as this user and not as root. If a "
11859 "separate cache for every user is used (-S parameter), this option is "
11863 #. type: Plain text
11864 #: build/C/man5/nscd.conf.5:78
11865 msgid "B<stat-user> I<user>"
11868 #. type: Plain text
11869 #: build/C/man5/nscd.conf.5:80
11870 msgid "Specifies the user who is allowed to request statistics."
11873 #. type: Plain text
11874 #: build/C/man5/nscd.conf.5:85
11875 msgid "B<reload-count> unlimited | I<number>"
11878 #. type: Plain text
11879 #: build/C/man5/nscd.conf.5:89
11881 "Limit on the number of times a cached entry gets reloaded without being used "
11882 "before it gets removed. The default is 5."
11885 #. type: Plain text
11886 #: build/C/man5/nscd.conf.5:93
11887 msgid "B<paranoia> I<E<lt>yes|noE<gt>>"
11890 #. type: Plain text
11891 #: build/C/man5/nscd.conf.5:96
11893 "Enabling paranoia mode causes nscd to restart itself periodically. The "
11897 #. type: Plain text
11898 #: build/C/man5/nscd.conf.5:100
11899 msgid "B<restart-interval> I<time>"
11902 #. type: Plain text
11903 #: build/C/man5/nscd.conf.5:108
11905 "Sets the restart interval to I<time> seconds if periodic restart is enabled "
11906 "by enabling B<paranoia> mode. The default is 3600."
11909 #. type: Plain text
11910 #: build/C/man5/nscd.conf.5:113
11911 msgid "B<enable-cache> I<service> I<E<lt>yes|noE<gt>>"
11914 #. type: Plain text
11915 #: build/C/man5/nscd.conf.5:118
11916 msgid "Enables or disables the specified I<service> cache. The default is no."
11919 #. type: Plain text
11920 #: build/C/man5/nscd.conf.5:123
11921 msgid "B<positive-time-to-live> I<service> I<value>"
11924 #. type: Plain text
11925 #: build/C/man5/nscd.conf.5:131
11927 "Sets the TTL (time-to-live) for positive entries (successful queries) in "
11928 "the specified cache for I<service>. I<Value> is in seconds. Larger values "
11929 "increase cache hit rates and reduce mean response times, but increase "
11930 "problems with cache coherence."
11933 #. type: Plain text
11934 #: build/C/man5/nscd.conf.5:136
11935 msgid "B<negative-time-to-live> I<service> I<value>"
11938 #. type: Plain text
11939 #: build/C/man5/nscd.conf.5:146
11941 "Sets the TTL (time-to-live) for negative entries (unsuccessful queries) in "
11942 "the specified cache for I<service>. I<Value> is in seconds. Can result in "
11943 "significant performance improvements if there are several files owned by "
11944 "UIDs (user IDs) not in system databases (for example untarring the Linux "
11945 "kernel sources as root); should be kept small to reduce cache coherency "
11949 #. type: Plain text
11950 #: build/C/man5/nscd.conf.5:151
11951 msgid "B<suggested-size> I<service> I<value>"
11954 #. type: Plain text
11955 #: build/C/man5/nscd.conf.5:156
11957 "This is the internal hash table size, I<value> should remain a prime number "
11958 "for optimum efficiency. The default is 211."
11961 #. type: Plain text
11962 #: build/C/man5/nscd.conf.5:161
11963 msgid "B<check-files> I<service> I<E<lt>yes|noE<gt>>"
11966 #. type: Plain text
11967 #: build/C/man5/nscd.conf.5:173
11969 "Enables or disables checking the file belonging to the specified I<service> "
11970 "for changes. The files are I</etc/passwd>, I</etc/group>, I</etc/hosts>, "
11971 "I</etc/services> and I</etc/netgroup>. The default is yes."
11974 #. type: Plain text
11975 #: build/C/man5/nscd.conf.5:178
11976 msgid "B<persistent> I<service> I<E<lt>yes|noE<gt>>"
11979 #. type: Plain text
11980 #: build/C/man5/nscd.conf.5:185
11982 "Keep the content of the cache for I<service> over server restarts; useful "
11983 "when B<paranoia> mode is set. The default is no."
11986 #. type: Plain text
11987 #: build/C/man5/nscd.conf.5:190
11988 msgid "B<shared> I<service> I<E<lt>yes|noE<gt>>"
11991 #. type: Plain text
11992 #: build/C/man5/nscd.conf.5:197
11994 "The memory mapping of the nscd databases for I<service> is shared with the "
11995 "clients so that they can directly search in them instead of having to ask "
11996 "the daemon over the socket each time a lookup is performed. The default is "
12000 #. type: Plain text
12001 #: build/C/man5/nscd.conf.5:202
12002 msgid "B<max-db-size> I<service> I<bytes>"
12005 #. type: Plain text
12006 #: build/C/man5/nscd.conf.5:206
12008 "The maximum allowable size, in bytes, of the database files for the "
12009 "I<service>. The default is 33554432."
12012 #. type: Plain text
12013 #: build/C/man5/nscd.conf.5:211
12014 msgid "B<auto-propagate> I<service> I<E<lt>yes|noE<gt>>"
12017 #. type: Plain text
12018 #: build/C/man5/nscd.conf.5:231
12020 "When set to I<no> for I<passwd> or I<group> service, then the I<.byname> "
12021 "requests are not added to I<passwd.byuid> or I<group.bygid> cache. This can "
12022 "help with tables containing multiple records for the same ID. The default "
12023 "is yes. This option is valid only for services I<passwd> and I<group>."
12026 #. type: Plain text
12027 #: build/C/man5/nscd.conf.5:239
12029 "The default values stated in this manual page originate from the source code "
12030 "of B<nscd>(8) and are used if not overridden in the configuration file. "
12031 "The default values used in the configuration file of your distribution might "
12037 #. was written by Thorsten Kukuk and Ulrich Drepper.
12038 #. type: Plain text
12039 #: build/C/man5/nscd.conf.5:244
12044 #: build/C/man5/nss.5:19
12049 #. type: Plain text
12050 #: build/C/man5/nss.5:22
12051 msgid "nss - Name Service Switch configuration file"
12054 #. type: Plain text
12055 #: build/C/man5/nss.5:29
12057 "Each call to a function which retrieves data from a system database like the "
12058 "password or group database is handled by the Name Service Switch "
12059 "implementation in the GNU C library. The various services provided are "
12060 "implemented by independent modules, each of which naturally varies widely "
12064 #. type: Plain text
12065 #: build/C/man5/nss.5:38
12067 "The default implementations coming with the GNU C library are by default "
12068 "conservative and do not use unsafe data. This might be very costly in some "
12069 "situations, especially when the databases are large. Some modules allow the "
12070 "system administrator to request taking shortcuts if these are known to be "
12071 "safe. It is then the system administrator's responsibility to ensure the "
12072 "assumption is correct."
12075 #. type: Plain text
12076 #: build/C/man5/nss.5:42
12078 "There are other modules where the implementation changed over time. If an "
12079 "implementation used to sacrifice speed for memory consumption, it might "
12080 "create problems if the preference is switched."
12083 #. type: Plain text
12084 #: build/C/man5/nss.5:51
12086 "The I</etc/default/nss> file contains a number of variable assignments. "
12087 "Each variable controls the behavior of one or more NSS modules. White "
12088 "spaces are ignored. Lines beginning with \\(aq#\\(aq are treated as "
12092 #. type: Plain text
12093 #: build/C/man5/nss.5:53
12094 msgid "The variables currently recognized are:"
12098 #: build/C/man5/nss.5:53
12100 msgid "B<NETID_AUTHORITATIVE => I<TRUE>|I<FALSE>"
12103 #. type: Plain text
12104 #: build/C/man5/nss.5:68
12106 "If set to TRUE, the NIS backend for the B<initgroups>(3) function will "
12107 "accept the information from the I<netid.byname> NIS map as authoritative. "
12108 "This can speed up the function significantly if the I<group.byname> map is "
12109 "large. The content of the I<netid.byname> map is used B<as is>. The system "
12110 "administrator has to make sure it is correctly generated."
12114 #: build/C/man5/nss.5:68
12116 msgid "B<SERVICES_AUTHORITATIVE => I<TRUE>|I<FALSE>"
12119 #. type: Plain text
12120 #: build/C/man5/nss.5:80
12122 "If set to TRUE, the NIS backend for the B<getservbyname>(3) and "
12123 "B<getservbyname_r>(3) functions will assume that the "
12124 "I<services.byservicename> NIS map exists and is authoritative, particularly "
12125 "that it contains both keys with /proto and without /proto for both primary "
12126 "service names and service aliases. The system administrator has to make "
12127 "sure it is correctly generated."
12131 #: build/C/man5/nss.5:80
12133 msgid "B<SETENT_BATCH_READ => I<TRUE>|I<FALSE>"
12136 #. type: Plain text
12137 #: build/C/man5/nss.5:98
12139 "If set to TRUE, the NIS backend for the B<setpwent>(3) and B<setgrent>(3) "
12140 "functions will read the entire database at once and then hand out the "
12141 "requests one by one from memory with every corresponding B<getpwent>(3) or "
12142 "B<getgrent>(3) call respectively. Otherwise, each B<getpwent>(3) or "
12143 "B<getgrent>(3) call might result in a network communication with the server "
12144 "to get the next entry."
12147 #. type: Plain text
12148 #: build/C/man5/nss.5:100
12149 msgid "I</etc/default/nss>"
12152 #. type: Plain text
12153 #: build/C/man5/nss.5:102
12154 msgid "The default configuration corresponds to the following configuration file:"
12158 #. Ulrich Drepper <drepper@redhat.com>
12159 #. type: Plain text
12160 #: build/C/man5/nss.5:110
12163 "NETID_AUTHORITATIVE=FALSE\n"
12164 "SERVICES_AUTHORITATIVE=FALSE\n"
12165 "SETENT_BATCH_READ=FALSE\n"
12168 #. type: Plain text
12169 #: build/C/man5/nss.5:112
12170 msgid "I<nsswitch.conf>"
12174 #: build/C/man5/nsswitch.conf.5:25
12176 msgid "NSSWITCH.CONF"
12179 #. type: Plain text
12180 #: build/C/man5/nsswitch.conf.5:28
12181 msgid "nsswitch.conf - Name Service Switch configuration file"
12184 #. type: Plain text
12185 #: build/C/man5/nsswitch.conf.5:36
12187 "The Name Service Switch (NSS) configuration file, I</etc/nsswitch.conf>, is "
12188 "used by the GNU C Library to determine the sources from which to obtain "
12189 "name-service information in a range of categories, and in what order. Each "
12190 "category of information is identified by a database name."
12193 #. type: Plain text
12194 #: build/C/man5/nsswitch.conf.5:42
12196 "The file is plain ASCII text, with columns separated by spaces or tab "
12197 "characters. The first column specifies the database name. The remaining "
12198 "columns describe the order of sources to query and a limited set of actions "
12199 "that can be performed by lookup result."
12202 #. type: Plain text
12203 #: build/C/man5/nsswitch.conf.5:44
12204 msgid "The following databases are understood by the GNU C Library:"
12207 #. type: Plain text
12208 #: build/C/man5/nsswitch.conf.5:49
12209 msgid "Mail aliases, used by B<getaliasent>(3) and related functions."
12212 #. type: Plain text
12213 #: build/C/man5/nsswitch.conf.5:52
12214 msgid "Ethernet numbers."
12217 #. type: Plain text
12218 #: build/C/man5/nsswitch.conf.5:57
12219 msgid "Groups of users, used by B<getgrent>(3) and related functions."
12222 #. type: Plain text
12223 #: build/C/man5/nsswitch.conf.5:62
12224 msgid "Host names and numbers, used by B<gethostbyname>(3) and related functions."
12227 #. type: Plain text
12228 #: build/C/man5/nsswitch.conf.5:67
12229 msgid "Supplementary group access list, used by B<getgrouplist>(3) function."
12232 #. type: Plain text
12233 #: build/C/man5/nsswitch.conf.5:71
12235 "Network-wide list of hosts and users, used for access rules. C libraries "
12236 "before glibc 2.1 supported netgroups only over NIS."
12239 #. type: Plain text
12240 #: build/C/man5/nsswitch.conf.5:76
12241 msgid "Network names and numbers, used by B<getnetent>(3) and related functions."
12244 #. type: Plain text
12245 #: build/C/man5/nsswitch.conf.5:81
12246 msgid "User passwords, used by B<getpwent>(3) and related functions."
12249 #. type: Plain text
12250 #: build/C/man5/nsswitch.conf.5:86
12251 msgid "Network protocols, used by B<getprotoent>(3) and related functions."
12255 #: build/C/man5/nsswitch.conf.5:86
12257 msgid "B<publickey>"
12260 #. type: Plain text
12261 #: build/C/man5/nsswitch.conf.5:89
12262 msgid "Public and secret keys for Secure_RPC used by NFS and NIS+."
12265 #. type: Plain text
12266 #: build/C/man5/nsswitch.conf.5:94
12268 "Remote procedure call names and numbers, used by B<getrpcbyname>(3) and "
12269 "related functions."
12272 #. type: Plain text
12273 #: build/C/man5/nsswitch.conf.5:99
12274 msgid "Network services, used by B<getservent>(3) and related functions."
12277 #. type: Plain text
12278 #: build/C/man5/nsswitch.conf.5:104
12279 msgid "Shadow user passwords, used by B<getspnam>(3) and related functions."
12282 #. type: Plain text
12283 #: build/C/man5/nsswitch.conf.5:108
12284 msgid "Here is an example I</etc/nsswitch.conf> file:"
12288 #: build/C/man5/nsswitch.conf.5:111
12293 #. type: Plain text
12294 #: build/C/man5/nsswitch.conf.5:114 build/C/man5/nsswitch.conf.5:117 build/C/man5/nsswitch.conf.5:120
12299 #: build/C/man5/nsswitch.conf.5:114
12305 #: build/C/man5/nsswitch.conf.5:117
12311 #: build/C/man5/nsswitch.conf.5:121
12316 #. type: Plain text
12317 #: build/C/man5/nsswitch.conf.5:124
12318 msgid "dns [!UNAVAIL=return] files"
12322 #: build/C/man5/nsswitch.conf.5:124
12327 #. type: Plain text
12328 #: build/C/man5/nsswitch.conf.5:127 build/C/man5/nsswitch.conf.5:130 build/C/man5/nsswitch.conf.5:133 build/C/man5/nsswitch.conf.5:136 build/C/man5/nsswitch.conf.5:139
12329 msgid "nis [NOTFOUND=return] files"
12333 #: build/C/man5/nsswitch.conf.5:127
12339 #: build/C/man5/nsswitch.conf.5:130
12345 #: build/C/man5/nsswitch.conf.5:133
12351 #: build/C/man5/nsswitch.conf.5:136
12356 #. type: Plain text
12357 #: build/C/man5/nsswitch.conf.5:144
12358 msgid "The first column is the database name. The remaining columns specify:"
12361 #. type: Plain text
12362 #: build/C/man5/nsswitch.conf.5:148
12364 "One or more service specifications, for example, \"files\", \"db\", or "
12365 "\"nis\". The order of the services on the line determines the order in "
12366 "which those services will be queried, in turn, until a result is found."
12369 #. type: Plain text
12370 #: build/C/man5/nsswitch.conf.5:151
12372 "Optional actions to perform if a particular result is obtained from the "
12373 "preceding service, for example, \"[NOTFOUND=return]\"."
12376 #. type: Plain text
12377 #: build/C/man5/nsswitch.conf.5:177
12379 "The service specifications supported on your system depend on the presence "
12380 "of shared libraries, and are therefore extensible. Libraries called "
12381 "I</lib/libnss_SERVICE.so.>B<X> will provide the named I<SERVICE>. On a "
12382 "standard installation, you can use \"files\", \"db\", \"nis\", and "
12383 "\"nisplus\". For the B<hosts> database, you can additionally specify "
12384 "\"dns\". For the B<passwd>, B<group>, and B<shadow> databases, you can "
12385 "additionally specify \"compat\" (see B<Compatibility mode> below). The "
12386 "version number B<X> may be 1 for glibc 2.0, or 2 for glibc 2.1 and later. "
12387 "On systems with additional libraries installed, you may have access to "
12388 "further services such as \"hesiod\", \"ldap\", \"winbind\" and \"wins\"."
12391 #. type: Plain text
12392 #: build/C/man5/nsswitch.conf.5:182
12394 "An action may also be specified following a service specification. The "
12395 "action modifies the behavior following a result obtained from the preceding "
12396 "data source. Action items take the general form:"
12399 #. type: Plain text
12400 #: build/C/man5/nsswitch.conf.5:185
12401 msgid "[I<STATUS>=I<ACTION>]"
12404 #. type: Plain text
12405 #: build/C/man5/nsswitch.conf.5:187
12406 msgid "[!I<STATUS>=I<ACTION>]"
12409 #. type: Plain text
12410 #: build/C/man5/nsswitch.conf.5:190
12414 #. type: Plain text
12415 #: build/C/man5/nsswitch.conf.5:201
12416 msgid "I<STATUS> =E<gt> B<success> | B<notfound> | B<unavail> | B<tryagain>"
12419 #. type: Plain text
12420 #: build/C/man5/nsswitch.conf.5:207
12421 msgid "I<ACTION> =E<gt> B<return> | B<continue>"
12424 #. type: Plain text
12425 #: build/C/man5/nsswitch.conf.5:212
12427 "The ! negates the test, matching all possible results except the one "
12428 "specified. The case of the keywords is not significant."
12431 #. type: Plain text
12432 #: build/C/man5/nsswitch.conf.5:217
12434 "The I<STATUS> value is matched against the result of the lookup function "
12435 "called by the preceding service specification, and can be one of:"
12439 #: build/C/man5/nsswitch.conf.5:218
12444 #. type: Plain text
12445 #: build/C/man5/nsswitch.conf.5:222
12447 "No error occurred and the requested entry is returned. The default action "
12448 "for this condition is \"return\"."
12452 #: build/C/man5/nsswitch.conf.5:222
12454 msgid "B<notfound>"
12457 #. type: Plain text
12458 #: build/C/man5/nsswitch.conf.5:226
12460 "The lookup succeeded, but the requested entry was not found. The default "
12461 "action for this condition is \"continue\"."
12465 #: build/C/man5/nsswitch.conf.5:226
12470 #. type: Plain text
12471 #: build/C/man5/nsswitch.conf.5:233
12473 "The service is permanently unavailable. This can mean either that the "
12474 "required file cannot be read, or, for network services, that the server is "
12475 "not available or does not allow queries. The default action for this "
12476 "condition is \"continue\"."
12480 #: build/C/man5/nsswitch.conf.5:233
12482 msgid "B<tryagain>"
12485 #. type: Plain text
12486 #: build/C/man5/nsswitch.conf.5:239
12488 "The service is temporarily unavailable. This could mean a file is locked or "
12489 "a server currently cannot accept more connections. The default action for "
12490 "this condition is \"continue\"."
12493 #. type: Plain text
12494 #: build/C/man5/nsswitch.conf.5:244
12495 msgid "The I<ACTION> value can be one of:"
12499 #: build/C/man5/nsswitch.conf.5:245
12504 #. type: Plain text
12505 #: build/C/man5/nsswitch.conf.5:257
12507 "Return a result now. Do not call any further lookup functions. However, "
12508 "for compatibility reasons, if this is the selected action for the B<group> "
12509 "database and the B<notfound> status, and the configuration file does not "
12510 "contain the B<initgroups> line, the next lookup function is always called, "
12511 "without affecting the search result."
12515 #: build/C/man5/nsswitch.conf.5:257
12517 msgid "B<continue>"
12520 #. type: Plain text
12521 #: build/C/man5/nsswitch.conf.5:260
12522 msgid "Call the next lookup function."
12526 #: build/C/man5/nsswitch.conf.5:261
12528 msgid "Compatibility mode (compat)"
12531 #. type: Plain text
12532 #: build/C/man5/nsswitch.conf.5:267
12534 "The NSS \"compat\" service is similar to \"files\" except that it "
12535 "additionally permits special entries in I</etc/passwd> for granting users or "
12536 "members of netgroups access to the system. The following entries are valid "
12541 #: build/C/man5/nsswitch.conf.5:268
12543 msgid "B<+>I<user>"
12546 #. type: Plain text
12547 #: build/C/man5/nsswitch.conf.5:273
12548 msgid "Include the specified I<user> from the NIS passwd map."
12552 #: build/C/man5/nsswitch.conf.5:273
12554 msgid "B<+@>I<netgroup>"
12557 #. type: Plain text
12558 #: build/C/man5/nsswitch.conf.5:277
12559 msgid "Include all users in the given I<netgroup>."
12563 #: build/C/man5/nsswitch.conf.5:277
12565 msgid "B<->I<user>"
12568 #. type: Plain text
12569 #: build/C/man5/nsswitch.conf.5:282
12570 msgid "Exclude the specified I<user> from the NIS passwd map."
12574 #: build/C/man5/nsswitch.conf.5:282
12576 msgid "B<-@>I<netgroup>"
12579 #. type: Plain text
12580 #: build/C/man5/nsswitch.conf.5:286
12581 msgid "Exclude all users in the given I<netgroup>."
12585 #: build/C/man5/nsswitch.conf.5:286
12590 #. type: Plain text
12591 #: build/C/man5/nsswitch.conf.5:290
12593 "Include every user, except previously excluded ones, from the NIS passwd "
12597 #. type: Plain text
12598 #: build/C/man5/nsswitch.conf.5:298
12600 "By default the source is \"nis\", but this may be overridden by specifying "
12601 "\"nisplus\" as the source for the pseudo-databases B<passwd_compat>, "
12602 "B<group_compat>, and B<shadow_compat>."
12605 #. type: Plain text
12606 #: build/C/man5/nsswitch.conf.5:305
12608 "A service named I<SERVICE> is implemented by a shared object library named "
12609 "I<libnss_SERVICE.so.>B<X> that resides in I</lib>."
12612 #. type: Plain text
12613 #: build/C/man5/nsswitch.conf.5:310
12614 msgid "NSS configuration file."
12618 #: build/C/man5/nsswitch.conf.5:310
12620 msgid "I</lib/libnss_compat.so.>B<X>"
12623 #. type: Plain text
12624 #: build/C/man5/nsswitch.conf.5:313
12625 msgid "implements \"compat\" source."
12629 #: build/C/man5/nsswitch.conf.5:313
12631 msgid "I</lib/libnss_db.so.>B<X>"
12634 #. type: Plain text
12635 #: build/C/man5/nsswitch.conf.5:316
12636 msgid "implements \"db\" source."
12640 #: build/C/man5/nsswitch.conf.5:316
12642 msgid "I</lib/libnss_dns.so.>B<X>"
12645 #. type: Plain text
12646 #: build/C/man5/nsswitch.conf.5:319
12647 msgid "implements \"dns\" source."
12651 #: build/C/man5/nsswitch.conf.5:319
12653 msgid "I</lib/libnss_files.so.>B<X>"
12656 #. type: Plain text
12657 #: build/C/man5/nsswitch.conf.5:322
12658 msgid "implements \"files\" source."
12662 #: build/C/man5/nsswitch.conf.5:322
12664 msgid "I</lib/libnss_hesiod.so.>B<X>"
12667 #. type: Plain text
12668 #: build/C/man5/nsswitch.conf.5:325
12669 msgid "implements \"hesiod\" source."
12673 #: build/C/man5/nsswitch.conf.5:325
12675 msgid "I</lib/libnss_nis.so.>B<X>"
12678 #. type: Plain text
12679 #: build/C/man5/nsswitch.conf.5:328
12680 msgid "implements \"nis\" source."
12684 #: build/C/man5/nsswitch.conf.5:328
12686 msgid "I</lib/libnss_nisplus.so.>B<X>"
12689 #. type: Plain text
12690 #: build/C/man5/nsswitch.conf.5:331
12691 msgid "implements \"nisplus\" source."
12694 #. type: Plain text
12695 #: build/C/man5/nsswitch.conf.5:339
12697 "Within each process that uses B<nsswitch.conf>, the entire file is read only "
12698 "once. If the file is later changed, the process will continue using the old "
12702 #. type: Plain text
12703 #: build/C/man5/nsswitch.conf.5:352
12705 "Traditionally, there was only a single source for service information, often "
12706 "in the form of a single configuration file (e.g., I</etc/passwd>). However, "
12707 "as other name services, such as the Network Information Service (NIS) and "
12708 "the Domain Name Service (DNS), became popular, a method was needed that "
12709 "would be more flexible than fixed search orders coded into the C library. "
12710 "The Name Service Switch mechanism, which was based on the mechanism used by "
12711 "Sun Microsystems in the Solaris 2 C library, introduced a cleaner solution "
12715 #. type: Plain text
12716 #: build/C/man5/nsswitch.conf.5:355
12717 msgid "B<getent>(1), B<nss>(5)"
12721 #: build/C/man7/packet.7:12
12726 #. type: Plain text
12727 #: build/C/man7/packet.7:15
12728 msgid "packet - packet interface on device level"
12731 #. type: Plain text
12732 #: build/C/man7/packet.7:18
12734 msgid "B<#include E<lt>sys/socket.hE<gt>>\n"
12737 #. type: Plain text
12738 #: build/C/man7/packet.7:20
12740 msgid "B<#include E<lt>linux/if_packet.hE<gt>>\n"
12743 #. type: Plain text
12744 #: build/C/man7/packet.7:22
12746 msgid "B<#include E<lt>net/ethernet.hE<gt> /* the L2 protocols */>\n"
12749 #. type: Plain text
12750 #: build/C/man7/packet.7:24
12753 "B<packet_socket = socket(AF_PACKET, int >I<socket_type>B<, int "
12754 ">I<protocol>B<);>\n"
12757 #. type: Plain text
12758 #: build/C/man7/packet.7:30
12760 "Packet sockets are used to receive or send raw packets at the device driver "
12761 "(OSI Layer 2) level. They allow the user to implement protocol modules in "
12762 "user space on top of the physical layer."
12765 #. type: Plain text
12766 #: build/C/man7/packet.7:51
12768 "The I<socket_type> is either B<SOCK_RAW> for raw packets including the "
12769 "link-level header or B<SOCK_DGRAM> for cooked packets with the link-level "
12770 "header removed. The link-level header information is available in a common "
12771 "format in a I<sockaddr_ll>. I<protocol> is the IEEE 802.3 protocol number "
12772 "in network byte order. See the I<E<lt>linux/if_ether.hE<gt>> include file "
12773 "for a list of allowed protocols. When protocol is set to "
12774 "B<htons(ETH_P_ALL)> then all protocols are received. All incoming packets "
12775 "of that protocol type will be passed to the packet socket before they are "
12776 "passed to the protocols implemented in the kernel."
12779 #. type: Plain text
12780 #: build/C/man7/packet.7:55
12782 "Only processes with effective UID 0 or the B<CAP_NET_RAW> capability may "
12783 "open packet sockets."
12786 #. type: Plain text
12787 #: build/C/man7/packet.7:73
12789 "B<SOCK_RAW> packets are passed to and from the device driver without any "
12790 "changes in the packet data. When receiving a packet, the address is still "
12791 "parsed and passed in a standard I<sockaddr_ll> address structure. When "
12792 "transmitting a packet, the user supplied buffer should contain the physical "
12793 "layer header. That packet is then queued unmodified to the network driver "
12794 "of the interface defined by the destination address. Some device drivers "
12795 "always add other headers. B<SOCK_RAW> is similar to but not compatible with "
12796 "the obsolete B<AF_INET/SOCK_PACKET> of Linux 2.0."
12799 #. type: Plain text
12800 #: build/C/man7/packet.7:83
12802 "B<SOCK_DGRAM> operates on a slightly higher level. The physical header is "
12803 "removed before the packet is passed to the user. Packets sent through a "
12804 "B<SOCK_DGRAM> packet socket get a suitable physical layer header based on "
12805 "the information in the I<sockaddr_ll> destination address before they are "
12809 #. type: Plain text
12810 #: build/C/man7/packet.7:96
12812 "By default all packets of the specified protocol type are passed to a packet "
12813 "socket. To get packets only from a specific interface use B<bind>(2) "
12814 "specifying an address in a I<struct sockaddr_ll> to bind the packet socket "
12815 "to an interface. Only the I<sll_protocol> and the I<sll_ifindex> address "
12816 "fields are used for purposes of binding."
12819 #. type: Plain text
12820 #: build/C/man7/packet.7:100
12821 msgid "The B<connect>(2) operation is not supported on packet sockets."
12824 #. type: Plain text
12825 #: build/C/man7/packet.7:109
12827 "When the B<MSG_TRUNC> flag is passed to B<recvmsg>(2), B<recv>(2), "
12828 "B<recvfrom>(2) the real length of the packet on the wire is always "
12829 "returned, even when it is longer than the buffer."
12833 #: build/C/man7/packet.7:109
12835 msgid "Address types"
12838 #. type: Plain text
12839 #: build/C/man7/packet.7:113
12840 msgid "The I<sockaddr_ll> is a device independent physical layer address."
12843 #. type: Plain text
12844 #: build/C/man7/packet.7:125
12847 "struct sockaddr_ll {\n"
12848 " unsigned short sll_family; /* Always AF_PACKET */\n"
12849 " unsigned short sll_protocol; /* Physical layer protocol */\n"
12850 " int sll_ifindex; /* Interface number */\n"
12851 " unsigned short sll_hatype; /* ARP hardware type */\n"
12852 " unsigned char sll_pkttype; /* Packet type */\n"
12853 " unsigned char sll_halen; /* Length of address */\n"
12854 " unsigned char sll_addr[8]; /* Physical layer address */\n"
12858 #. type: Plain text
12859 #: build/C/man7/packet.7:164
12861 "I<sll_protocol> is the standard ethernet protocol type in network byte order "
12862 "as defined in the I<E<lt>linux/if_ether.hE<gt>> include file. It defaults "
12863 "to the socket's protocol. I<sll_ifindex> is the interface index of the "
12864 "interface (see B<netdevice>(7)); 0 matches any interface (only permitted for "
12865 "binding). I<sll_hatype> is an ARP type as defined in the "
12866 "I<E<lt>linux/if_arp.hE<gt>> include file. I<sll_pkttype> contains the "
12867 "packet type. Valid types are B<PACKET_HOST> for a packet addressed to the "
12868 "local host, B<PACKET_BROADCAST> for a physical layer broadcast packet, "
12869 "B<PACKET_MULTICAST> for a packet sent to a physical layer multicast address, "
12870 "B<PACKET_OTHERHOST> for a packet to some other host that has been caught by "
12871 "a device driver in promiscuous mode, and B<PACKET_OUTGOING> for a packet "
12872 "originated from the local host that is looped back to a packet socket. "
12873 "These types make sense only for receiving. I<sll_addr> and I<sll_halen> "
12874 "contain the physical layer (e.g., IEEE 802.3) address and its length. The "
12875 "exact interpretation depends on the device."
12878 #. type: Plain text
12879 #: build/C/man7/packet.7:180
12881 "When you send packets it is enough to specify I<sll_family>, I<sll_addr>, "
12882 "I<sll_halen>, I<sll_ifindex>. The other fields should be 0. I<sll_hatype> "
12883 "and I<sll_pkttype> are set on received packets for your information. For "
12884 "bind only I<sll_protocol> and I<sll_ifindex> are used."
12887 #. type: Plain text
12888 #: build/C/man7/packet.7:185
12890 "Packet socket options are configured by calling B<setsockopt>(2) with level "
12895 #: build/C/man7/packet.7:185
12897 msgid "B<PACKET_ADD_MEMBERSHIP>"
12901 #: build/C/man7/packet.7:188
12903 msgid "B<PACKET_DROP_MEMBERSHIP>"
12906 #. type: Plain text
12907 #: build/C/man7/packet.7:200
12909 "Packet sockets can be used to configure physical layer multicasting and "
12910 "promiscuous mode. B<PACKET_ADD_MEMBERSHIP> adds a binding and "
12911 "B<PACKET_DROP_MEMBERSHIP> drops it. They both expect a I<packet_mreq> "
12912 "structure as argument:"
12915 #. type: Plain text
12916 #: build/C/man7/packet.7:209
12919 "struct packet_mreq {\n"
12920 " int mr_ifindex; /* interface index */\n"
12921 " unsigned short mr_type; /* action */\n"
12922 " unsigned short mr_alen; /* address length */\n"
12923 " unsigned char mr_address[8]; /* physical layer address */\n"
12927 #. type: Plain text
12928 #: build/C/man7/packet.7:230
12930 "B<mr_ifindex> contains the interface index for the interface whose status "
12931 "should be changed. The B<mr_type> parameter specifies which action to "
12932 "perform. B<PACKET_MR_PROMISC> enables receiving all packets on a shared "
12933 "medium (often known as \"promiscuous mode\"), B<PACKET_MR_MULTICAST> binds "
12934 "the socket to the physical layer multicast group specified in B<mr_address> "
12935 "and B<mr_alen>, and B<PACKET_MR_ALLMULTI> sets the socket up to receive all "
12936 "multicast packets arriving at the interface."
12939 #. type: Plain text
12940 #: build/C/man7/packet.7:236
12942 "In addition, the traditional ioctls B<SIOCSIFFLAGS>, B<SIOCADDMULTI>, "
12943 "B<SIOCDELMULTI> can be used for the same purpose."
12947 #: build/C/man7/packet.7:236
12949 msgid "B<PACKET_AUXDATA> (since Linux 2.6.21)"
12952 #. commit 8dc4194474159660d7f37c495e3fc3f10d0db8cc
12953 #. type: Plain text
12954 #: build/C/man7/packet.7:246
12956 "If this binary option is enabled, the packet socket passes a metadata "
12957 "structure along with each packet in the B<recvmsg>(2) control field. The "
12958 "structure can be read with B<cmsg>(3). It is defined as"
12961 #. type: Plain text
12962 #: build/C/man7/packet.7:258
12965 "struct tpacket_auxdata {\n"
12966 " __u32 tp_status;\n"
12967 " __u32 tp_len; /* packet length */\n"
12968 " __u32 tp_snaplen; /* captured length */\n"
12971 " __u16 tp_vlan_tci;\n"
12972 " __u16 tp_padding;\n"
12977 #: build/C/man7/packet.7:260
12979 msgid "B<PACKET_FANOUT> (since Linux 3.1)"
12982 #. commit dc99f600698dcac69b8f56dda9a8a00d645c5ffc
12983 #. type: Plain text
12984 #: build/C/man7/packet.7:282
12986 "To scale processing across threads, packet sockets can form a fanout group. "
12987 "In this mode, each matching packet is enqueued onto only one socket in the "
12988 "group. A socket joins a fanout group by calling B<setsockopt>(2) with "
12989 "level B<SOL_PACKET> and option B<PACKET_FANOUT>. Each network namespace can "
12990 "have up to 65536 independent groups. A socket selects a group by encoding "
12991 "the ID in the first 16 bits of the integer option value. The first packet "
12992 "socket to join a group implicitly creates it. To successfully join an "
12993 "existing group, subsequent packet sockets must have the same protocol, "
12994 "device settings, fanout mode and flags (see below). Packet sockets can "
12995 "leave a fanout group only by closing the socket. The group is deleted when "
12996 "the last socket is closed."
12999 #. commit 2d36097d26b5991d71a2cf4a20c1a158f0f1bfcd
13000 #. type: Plain text
13001 #: build/C/man7/packet.7:305
13003 "Fanout supports multiple algorithms to spread traffic between sockets. The "
13004 "default mode, B<PACKET_FANOUT_HASH>, sends packets from the same flow to the "
13005 "same socket to maintain per-flow ordering. For each packet, it chooses a "
13006 "socket by taking the packet flow hash modulo the number of sockets in the "
13007 "group, where a flow hash is a hash over network-layer address and optional "
13008 "transport-layer port fields. The load-balance mode B<PACKET_FANOUT_LB> "
13009 "implements a round-robin algorithm. B<PACKET_FANOUT_CPU> selects the socket "
13010 "based on the CPU that the packet arrived on. B<PACKET_FANOUT_ROLLOVER> "
13011 "processes all data on a single socket, moves to the next when one becomes "
13012 "backlogged. B<PACKET_FANOUT_RND> selects the socket using a pseudo-random "
13013 "number generator. B<PACKET_FANOUT_QM> (available since Linux 3.14) selects "
13014 "the socket using the recorded queue_mapping of the received skb."
13017 #. type: Plain text
13018 #: build/C/man7/packet.7:320
13020 "Fanout modes can take additional options. IP fragmentation causes packets "
13021 "from the same flow to have different flow hashes. The flag "
13022 "B<PACKET_FANOUT_FLAG_DEFRAG>, if set, causes packet to be defragmented "
13023 "before fanout is applied, to preserve order even in this case. Fanout mode "
13024 "and options are communicated in the second 16 bits of the integer option "
13025 "value. The flag B<PACKET_FANOUT_FLAG_ROLLOVER> enables the roll over "
13026 "mechanism as a backup strategy: if the original fanout algorithm selects a "
13027 "backlogged socket, the packet rolls over to the next available one."
13031 #: build/C/man7/packet.7:320
13033 msgid "B<PACKET_LOSS> (with B<PACKET_TX_RING>)"
13036 #. type: Plain text
13037 #: build/C/man7/packet.7:343
13039 "When a malformed packet is encountered on a transmit ring, the default is to "
13040 "reset its I<tp_status> to B<TP_STATUS_WRONG_FORMAT> and abort the "
13041 "transmission immediately. The malformed packet blocks itself and "
13042 "subsequently enqueued packets from being sent. The format error must be "
13043 "fixed, the associated I<tp_status> reset to B<TP_STATUS_SEND_REQUEST>, and "
13044 "the transmission process restarted via B<send>(2). However, if "
13045 "B<PACKET_LOSS> is set, any malformed packet will be skipped, its "
13046 "I<tp_status> reset to B<TP_STATUS_AVAILABLE>, and the transmission process "
13051 #: build/C/man7/packet.7:343
13053 msgid "B<PACKET_RESERVE> (with B<PACKET_RX_RING>)"
13056 #. type: Plain text
13057 #: build/C/man7/packet.7:348
13059 "By default, a packet receive ring writes packets immediately following the "
13060 "metadata structure and alignment padding. This integer option reserves "
13061 "additional headroom."
13065 #: build/C/man7/packet.7:348
13067 msgid "B<PACKET_RX_RING>"
13070 #. type: Plain text
13071 #: build/C/man7/packet.7:394
13073 "Create a memory-mapped ring buffer for asynchronous packet reception. The "
13074 "packet socket reserves a contiguous region of application address space, "
13075 "lays it out into an array of packet slots and copies packets (up to "
13076 "I<tp_snaplen>) into subsequent slots. Each packet is preceded by a "
13077 "metadata structure similar to I<tpacket_auxdata>. The protocol fields "
13078 "encode the offset to the data from the start of the metadata header. "
13079 "I<tp_net> stores the offset to the network layer. If the packet socket is "
13080 "of type B<SOCK_DGRAM>, then I<tp_mac> is the same. If it is of type "
13081 "B<SOCK_RAW>, then that field stores the offset to the link-layer frame. "
13082 "Packet socket and application communicate the head and tail of the ring "
13083 "through the I<tp_status> field. The packet socket owns all slots with "
13084 "I<tp_status> equal to B<TP_STATUS_KERNEL>. After filling a slot, it changes "
13085 "the status of the slot to transfer ownership to the application. During "
13086 "normal operation, the new I<tp_status> value has at least the "
13087 "B<TP_STATUS_USER> bit set to signal that a received packet has been stored. "
13088 "When the application has finished processing a packet, it transfers "
13089 "ownership of the slot back to the socket by setting I<tp_status> equal to "
13090 "B<TP_STATUS_KERNEL>. Packet sockets implement multiple variants of the "
13091 "packet ring. The implementation details are described in "
13092 "I<Documentation/networking/packet_mmap.txt> in the Linux kernel source tree."
13096 #: build/C/man7/packet.7:394
13098 msgid "B<PACKET_STATISTICS>"
13101 #. type: Plain text
13102 #: build/C/man7/packet.7:397
13103 msgid "Retrieve packet socket statistics in the form of a structure"
13106 #. type: Plain text
13107 #: build/C/man7/packet.7:404
13110 "struct tpacket_stats {\n"
13111 " unsigned int tp_packets; /* Total packet count */\n"
13112 " unsigned int tp_drops; /* Dropped packet count */\n"
13116 #. type: Plain text
13117 #: build/C/man7/packet.7:410
13119 "Receiving statistics resets the internal counters. The statistics structure "
13120 "differs when using a ring of variant B<TPACKET_V3>."
13124 #: build/C/man7/packet.7:410
13126 msgid "B<PACKET_TIMESTAMP> (with B<PACKET_RX_RING>; since Linux 2.6.36)"
13129 #. commit 614f60fa9d73a9e8fdff3df83381907fea7c5649
13130 #. type: Plain text
13131 #: build/C/man7/packet.7:420
13133 "The packet receive ring always stores a timestamp in the metadata header. "
13134 "By default, this is a software generated timestamp generated when the packet "
13135 "is copied into the ring. This integer option selects the type of "
13136 "timestamp. Besides the default, it support the two hardware formats "
13137 "described in I<Documentation/networking/timestamping.txt> in the Linux "
13138 "kernel source tree."
13142 #: build/C/man7/packet.7:420
13144 msgid "B<PACKET_TX_RING> (since Linux 2.6.31)"
13147 #. commit 69e3c75f4d541a6eb151b3ef91f34033cb3ad6e1
13148 #. type: Plain text
13149 #: build/C/man7/packet.7:455
13151 "Create a memory-mapped ring buffer for packet transmission. This option is "
13152 "similar to B<PACKET_RX_RING> and takes the same arguments. The application "
13153 "writes packets into slots with I<tp_status> equal to B<TP_STATUS_AVAILABLE> "
13154 "and schedules them for transmission by changing I<tp_status> to "
13155 "B<TP_STATUS_SEND_REQUEST>. When packets are ready to be transmitted, the "
13156 "application calls B<send>(2) or a variant thereof. The I<buf> and I<len> "
13157 "fields of this call are ignored. If an address is passed using B<sendto>(2) "
13158 "or B<sendmsg>(2), then that overrides the socket default. On successful "
13159 "transmission, the socket resets I<tp_status> to B<TP_STATUS_AVAILABLE>. It "
13160 "immediately aborts the transmission on error unless B<PACKET_LOSS> is set."
13164 #: build/C/man7/packet.7:455
13166 msgid "B<PACKET_VERSION> (with B<PACKET_RX_RING>; since Linux 2.6.27)"
13169 #. commit bbd6ef87c544d88c30e4b762b1b61ef267a7d279
13170 #. type: Plain text
13171 #: build/C/man7/packet.7:464
13173 "By default, B<PACKET_RX_RING> creates a packet receive ring of variant "
13174 "B<TPACKET_V1>. To create another variant, configure the desired variant by "
13175 "setting this integer option before creating the ring."
13179 #: build/C/man7/packet.7:464
13181 msgid "B<PACKET_QDISC_BYPASS> (since Linux 3.14)"
13184 #. commit d346a3fae3ff1d99f5d0c819bf86edf9094a26a1
13185 #. type: Plain text
13186 #: build/C/man7/packet.7:479
13188 "By default, packets sent through packet sockets pass through the kernel's "
13189 "qdisc (traffic control) layer, which is fine for the vast majority of use "
13190 "cases. For traffic generator appliances using packet sockets that intend to "
13191 "brute-force flood the network\\(emfor example, to test devices under load in "
13192 "a similar fashion to pktgen\\(emthis layer can be bypassed by setting this "
13193 "integer option to 1. A side effect is that packet buffering in the qdisc "
13194 "layer is avoided, which will lead to increased drops when network device "
13195 "transmit queues are busy; therefore, use at your own risk."
13198 #. FIXME Document SIOCGSTAMPNS
13199 #. type: Plain text
13200 #: build/C/man7/packet.7:486
13202 "B<SIOCGSTAMP> can be used to receive the timestamp of the last received "
13203 "packet. Argument is a I<struct timeval> variable."
13206 #. type: Plain text
13207 #: build/C/man7/packet.7:492
13209 "In addition, all standard ioctls defined in B<netdevice>(7) and "
13210 "B<socket>(7) are valid on packet sockets."
13214 #: build/C/man7/packet.7:492 build/C/man7/raw.7:131 build/C/man7/tcp.7:1210 build/C/man7/udp.7:103
13216 msgid "Error handling"
13219 #. type: Plain text
13220 #: build/C/man7/packet.7:496
13222 "Packet sockets do no error handling other than errors occurred while passing "
13223 "the packet to the device driver. They don't have the concept of a pending "
13227 #. type: Plain text
13228 #: build/C/man7/packet.7:500
13229 msgid "Unknown multicast group address passed."
13232 #. type: Plain text
13233 #: build/C/man7/packet.7:503
13234 msgid "User passed invalid memory address."
13237 #. type: Plain text
13238 #: build/C/man7/packet.7:506 build/C/man7/raw.7:155
13239 msgid "Invalid argument."
13242 #. type: Plain text
13243 #: build/C/man7/packet.7:509
13244 msgid "Packet is bigger than interface MTU."
13248 #: build/C/man7/packet.7:509
13250 msgid "B<ENETDOWN>"
13253 #. type: Plain text
13254 #: build/C/man7/packet.7:512
13255 msgid "Interface is not up."
13258 #. type: Plain text
13259 #: build/C/man7/packet.7:515
13260 msgid "Not enough memory to allocate the packet."
13263 #. type: Plain text
13264 #: build/C/man7/packet.7:518
13265 msgid "Unknown device name or interface index specified in interface address."
13268 #. type: Plain text
13269 #: build/C/man7/packet.7:521
13270 msgid "No packet received."
13273 #. type: Plain text
13274 #: build/C/man7/packet.7:524
13275 msgid "No interface address passed."
13279 #: build/C/man7/packet.7:524
13284 #. type: Plain text
13285 #: build/C/man7/packet.7:527
13286 msgid "Interface address contained an invalid interface index."
13289 #. type: Plain text
13290 #: build/C/man7/packet.7:530
13291 msgid "User has insufficient privileges to carry out this operation."
13294 #. type: Plain text
13295 #: build/C/man7/packet.7:532
13296 msgid "In addition, other errors may be generated by the low-level driver."
13299 #. type: Plain text
13300 #: build/C/man7/packet.7:537
13302 "B<AF_PACKET> is a new feature in Linux 2.2. Earlier Linux versions "
13303 "supported only B<SOCK_PACKET>."
13306 #. type: Plain text
13307 #: build/C/man7/packet.7:546
13309 "For portable programs it is suggested to use B<AF_PACKET> via B<pcap>(3); "
13310 "although this covers only a subset of the B<AF_PACKET> features."
13313 #. type: Plain text
13314 #: build/C/man7/packet.7:567
13316 "The B<SOCK_DGRAM> packet sockets make no attempt to create or parse the IEEE "
13317 "802.2 LLC header for a IEEE 802.3 frame. When B<ETH_P_802_3> is specified "
13318 "as protocol for sending the kernel creates the 802.3 frame and fills out the "
13319 "length field; the user has to supply the LLC header to get a fully "
13320 "conforming packet. Incoming 802.3 packets are not multiplexed on the "
13321 "DSAP/SSAP protocol fields; instead they are supplied to the user as protocol "
13322 "B<ETH_P_802_2> with the LLC header prefixed. It is thus not possible to "
13323 "bind to B<ETH_P_802_3>; bind to B<ETH_P_802_2> instead and do the protocol "
13324 "multiplex yourself. The default for sending is the standard Ethernet DIX "
13325 "encapsulation with the protocol filled in."
13328 #. type: Plain text
13329 #: build/C/man7/packet.7:569
13330 msgid "Packet sockets are not subject to the input or output firewall chains."
13333 #. type: Plain text
13334 #: build/C/man7/packet.7:579
13336 "In Linux 2.0, the only way to get a packet socket was by calling "
13337 "B<socket(AF_INET, SOCK_PACKET, >I<protocol>B<)>. This is still supported "
13338 "but strongly deprecated. The main difference between the two methods is "
13339 "that B<SOCK_PACKET> uses the old I<struct sockaddr_pkt> to specify an "
13340 "interface, which doesn't provide physical layer independence."
13343 #. type: Plain text
13344 #: build/C/man7/packet.7:587
13347 "struct sockaddr_pkt {\n"
13348 " unsigned short spkt_family;\n"
13349 " unsigned char spkt_device[14];\n"
13350 " unsigned short spkt_protocol;\n"
13354 #. type: Plain text
13355 #: build/C/man7/packet.7:599
13357 "I<spkt_family> contains the device type, I<spkt_protocol> is the IEEE 802.3 "
13358 "protocol type as defined in I<E<lt>sys/if_ether.hE<gt>> and I<spkt_device> "
13359 "is the device name as a null-terminated string, for example, eth0."
13362 #. type: Plain text
13363 #: build/C/man7/packet.7:601
13364 msgid "This structure is obsolete and should not be used in new code."
13367 #. type: Plain text
13368 #: build/C/man7/packet.7:605
13370 "glibc 2.1 does not have a define for B<SOL_PACKET>. The suggested "
13371 "workaround is to use:"
13374 #. type: Plain text
13375 #: build/C/man7/packet.7:611
13378 "#ifndef SOL_PACKET\n"
13379 "#define SOL_PACKET 263\n"
13383 #. type: Plain text
13384 #: build/C/man7/packet.7:615
13385 msgid "This is fixed in later glibc versions."
13388 #. type: Plain text
13389 #: build/C/man7/packet.7:617
13390 msgid "The IEEE 802.2/803.3 LLC handling could be considered as a bug."
13393 #. type: Plain text
13394 #: build/C/man7/packet.7:619
13395 msgid "Socket filters are not documented."
13399 #. This man page was written by Andi Kleen with help from Matthew Wilcox.
13400 #. AF_PACKET in Linux 2.2 was implemented
13401 #. by Alexey Kuznetsov, based on code by Alan Cox and others.
13402 #. type: Plain text
13403 #: build/C/man7/packet.7:631
13405 "The B<MSG_TRUNC> B<recvmsg>(2) extension is an ugly hack and should be "
13406 "replaced by a control message. There is currently no way to get the "
13407 "original destination address of packets via B<SOCK_DGRAM>."
13410 #. type: Plain text
13411 #: build/C/man7/packet.7:638
13413 "B<socket>(2), B<pcap>(3), B<capabilities>(7), B<ip>(7), B<raw>(7), "
13417 #. type: Plain text
13418 #: build/C/man7/packet.7:641
13420 "RFC\\ 894 for the standard IP Ethernet encapsulation. RFC\\ 1700 for the "
13421 "IEEE 802.3 IP encapsulation."
13424 #. type: Plain text
13425 #: build/C/man7/packet.7:645
13426 msgid "The I<E<lt>linux/if_ether.hE<gt>> include file for physical layer protocols."
13429 #. type: Plain text
13430 #: build/C/man7/packet.7:654
13432 "The Linux kernel source tree. I</Documentation/networking/filter.txt> "
13433 "describes how to apply Berkeley Packet Filters to packet sockets. "
13434 "I</tools/testing/selftests/net/psock_tpacket.c> contains example source code "
13435 "for all available versions of B<PACKET_RX_RING> and B<PACKET_TX_RING>."
13439 #: build/C/man5/protocols.5:29
13445 #: build/C/man5/protocols.5:29 build/C/man7/x25.7:12
13450 #. type: Plain text
13451 #: build/C/man5/protocols.5:32
13452 msgid "protocols - protocols definition file"
13455 #. type: Plain text
13456 #: build/C/man5/protocols.5:40
13458 "This file is a plain ASCII file, describing the various DARPA internet "
13459 "protocols that are available from the TCP/IP subsystem. It should be "
13460 "consulted instead of using the numbers in the ARPA include files, or, even "
13461 "worse, just guessing them. These numbers will occur in the protocol field "
13462 "of any IP header."
13465 #. .. by the DDN Network Information Center.
13466 #. type: Plain text
13467 #: build/C/man5/protocols.5:46
13469 "Keep this file untouched since changes would result in incorrect IP "
13470 "packages. Protocol numbers and names are specified by the IANA (Internet "
13471 "Assigned Numbers Authority)."
13474 #. type: Plain text
13475 #: build/C/man5/protocols.5:48
13476 msgid "Each line is of the following format:"
13479 #. type: Plain text
13480 #: build/C/man5/protocols.5:51
13481 msgid "I<protocol number aliases ...>"
13484 #. type: Plain text
13485 #: build/C/man5/protocols.5:57
13487 "where the fields are delimited by spaces or tabs. Empty lines are ignored. "
13488 "If a line contains a hash mark (#), the hash mark and the part of the line "
13489 "following it are ignored."
13493 #: build/C/man5/protocols.5:59 build/C/man5/services.5:109
13495 msgid "I<protocol>"
13498 #. type: Plain text
13499 #: build/C/man5/protocols.5:67
13500 msgid "the native name for the protocol. For example I<ip>, I<tcp>, or I<udp>."
13503 #. type: Plain text
13504 #: build/C/man5/protocols.5:71
13506 "the official number for this protocol as it will appear within the IP "
13510 #. type: Plain text
13511 #: build/C/man5/protocols.5:74
13512 msgid "optional aliases for the protocol."
13515 #. The following is not true as at glibc 2.8 (a line with a comma is
13516 #. ignored by getservent()); it's not clear if/when it was ever true.
13517 #. As a backward compatibility feature, the slash (/) between the
13521 #. name can in fact be either a slash or a comma (,).
13522 #. Use of the comma in
13523 #. modern installations is deprecated.
13524 #. type: Plain text
13525 #: build/C/man5/protocols.5:77 build/C/man5/services.5:165
13527 "This file might be distributed over a network using a network-wide naming "
13528 "service like Yellow Pages/NIS or BIND/Hesiod."
13531 #. type: Plain text
13532 #: build/C/man5/protocols.5:81
13533 msgid "The protocols definition file."
13536 #. type: Plain text
13537 #: build/C/man5/protocols.5:83
13538 msgid "B<getprotoent>(3)"
13541 #. type: Plain text
13542 #: build/C/man5/protocols.5:86
13543 msgid "E<.UR http://www.iana.org\\:/assignments\\:/protocol-numbers> E<.UE>"
13547 #: build/C/man7/raw.7:13
13552 #. type: Plain text
13553 #: build/C/man7/raw.7:16
13554 msgid "raw - Linux IPv4 raw sockets"
13557 #. type: Plain text
13558 #: build/C/man7/raw.7:22
13559 msgid "B<raw_socket = socket(AF_INET, SOCK_RAW, int >I<protocol>B<);>"
13562 #. type: Plain text
13563 #: build/C/man7/raw.7:26
13565 "Raw sockets allow new IPv4 protocols to be implemented in user space. A raw "
13566 "socket receives or sends the raw datagram not including link level headers."
13569 #. type: Plain text
13570 #: build/C/man7/raw.7:32
13572 "The IPv4 layer generates an IP header when sending a packet unless the "
13573 "B<IP_HDRINCL> socket option is enabled on the socket. When it is enabled, "
13574 "the packet must contain an IP header. For receiving the IP header is always "
13575 "included in the packet."
13578 #. type: Plain text
13579 #: build/C/man7/raw.7:36
13581 "Only processes with an effective user ID of 0 or the B<CAP_NET_RAW> "
13582 "capability are allowed to open raw sockets."
13585 #. type: Plain text
13586 #: build/C/man7/raw.7:43
13588 "All packets or errors matching the I<protocol> number specified for the raw "
13589 "socket are passed to this socket. For a list of the allowed protocols see "
13590 "RFC\\ 1700 assigned numbers and B<getprotobyname>(3)."
13593 #. type: Plain text
13594 #: build/C/man7/raw.7:53
13596 "A protocol of B<IPPROTO_RAW> implies enabled B<IP_HDRINCL> and is able to "
13597 "send any IP protocol that is specified in the passed header. Receiving of "
13598 "all IP protocols via B<IPPROTO_RAW> is not possible using raw sockets."
13602 #: build/C/man7/raw.7:58
13604 msgid "IP Header fields modified on sending by B<IP_HDRINCL>\n"
13608 #: build/C/man7/raw.7:59
13610 msgid "IP Checksum:Always filled in.\n"
13614 #: build/C/man7/raw.7:60
13616 msgid "Source Address:Filled in when zero.\n"
13620 #: build/C/man7/raw.7:61
13622 msgid "Packet Id:Filled in when zero.\n"
13626 #: build/C/man7/raw.7:62
13628 msgid "Total Length:Always filled in.\n"
13631 #. type: Plain text
13632 #: build/C/man7/raw.7:76
13634 "If B<IP_HDRINCL> is specified and the IP header has a nonzero destination "
13635 "address, then the destination address of the socket is used to route the "
13636 "packet. When B<MSG_DONTROUTE> is specified, the destination address should "
13637 "refer to a local interface, otherwise a routing table lookup is done anyway "
13638 "but gatewayed routes are ignored."
13641 #. type: Plain text
13642 #: build/C/man7/raw.7:84
13644 "If B<IP_HDRINCL> isn't set, then IP header options can be set on raw sockets "
13645 "with B<setsockopt>(2); see B<ip>(7) for more information."
13648 #. type: Plain text
13649 #: build/C/man7/raw.7:89
13651 "In Linux 2.2, all IP header fields and options can be set using IP socket "
13652 "options. This means raw sockets are usually needed only for new protocols "
13653 "or protocols with no user interface (like ICMP)."
13656 #. type: Plain text
13657 #: build/C/man7/raw.7:93
13659 "When a packet is received, it is passed to any raw sockets which have been "
13660 "bound to its protocol before it is passed to other protocol handlers (e.g., "
13661 "kernel protocol modules)."
13664 #. type: Plain text
13665 #: build/C/man7/raw.7:109
13667 "Raw sockets use the standard I<sockaddr_in> address structure defined in "
13668 "B<ip>(7). The I<sin_port> field could be used to specify the IP protocol "
13669 "number, but it is ignored for sending in Linux 2.2 and should be always set "
13670 "to 0 (see BUGS). For incoming packets, I<sin_port> is set to the protocol "
13671 "of the packet. See the I<E<lt>netinet/in.hE<gt>> include file for valid IP "
13675 #. Or SOL_RAW on Linux
13676 #. type: Plain text
13677 #: build/C/man7/raw.7:118
13679 "Raw socket options can be set with B<setsockopt>(2) and read with "
13680 "B<getsockopt>(2) by passing the B<IPPROTO_RAW> family flag."
13684 #: build/C/man7/raw.7:118
13686 msgid "B<ICMP_FILTER>"
13689 #. type: Plain text
13690 #: build/C/man7/raw.7:126
13692 "Enable a special filter for raw sockets bound to the B<IPPROTO_ICMP> "
13693 "protocol. The value has a bit set for each ICMP message type which should "
13694 "be filtered out. The default is to filter no ICMP messages."
13697 #. type: Plain text
13698 #: build/C/man7/raw.7:131
13700 "In addition, all B<ip>(7) B<IPPROTO_IP> socket options valid for datagram "
13701 "sockets are supported."
13704 #. type: Plain text
13705 #: build/C/man7/raw.7:144
13707 "Errors originating from the network are passed to the user only when the "
13708 "socket is connected or the B<IP_RECVERR> flag is enabled. For connected "
13709 "sockets, only B<EMSGSIZE> and B<EPROTO> are passed for compatibility. With "
13710 "B<IP_RECVERR>, all network errors are saved in the error queue."
13713 #. type: Plain text
13714 #: build/C/man7/raw.7:149
13716 "User tried to send to a broadcast address without having the broadcast flag "
13717 "set on the socket."
13720 #. type: Plain text
13721 #: build/C/man7/raw.7:152
13722 msgid "An invalid memory address was supplied."
13725 #. type: Plain text
13726 #: build/C/man7/raw.7:162
13728 "Packet too big. Either Path MTU Discovery is enabled (the "
13729 "B<IP_MTU_DISCOVER> socket flag) or the packet size exceeds the maximum "
13730 "allowed IPv4 packet size of 64KB."
13734 #: build/C/man7/raw.7:162 build/C/man7/unix.7:447
13736 msgid "B<EOPNOTSUPP>"
13739 #. type: Plain text
13740 #: build/C/man7/raw.7:166
13741 msgid "Invalid flag has been passed to a socket call (like B<MSG_OOB>)."
13744 #. type: Plain text
13745 #: build/C/man7/raw.7:172
13747 "The user doesn't have permission to open raw sockets. Only processes with "
13748 "an effective user ID of 0 or the B<CAP_NET_RAW> attribute may do that."
13752 #: build/C/man7/raw.7:172
13757 #. type: Plain text
13758 #: build/C/man7/raw.7:175
13759 msgid "An ICMP error has arrived reporting a parameter problem."
13762 #. type: Plain text
13763 #: build/C/man7/raw.7:181
13765 "B<IP_RECVERR> and B<ICMP_FILTER> are new in Linux 2.2. They are Linux "
13766 "extensions and should not be used in portable programs."
13769 #. type: Plain text
13770 #: build/C/man7/raw.7:187
13772 "Linux 2.0 enabled some bug-to-bug compatibility with BSD in the raw socket "
13773 "code when the B<SO_BSDCOMPAT> socket option was set \\(em since Linux 2.2, "
13774 "this option no longer has that effect."
13777 #. type: Plain text
13778 #: build/C/man7/raw.7:205
13780 "By default, raw sockets do path MTU (Maximum Transmission Unit) discovery. "
13781 "This means the kernel will keep track of the MTU to a specific target IP "
13782 "address and return B<EMSGSIZE> when a raw packet write exceeds it. When "
13783 "this happens, the application should decrease the packet size. Path MTU "
13784 "discovery can be also turned off using the B<IP_MTU_DISCOVER> socket option "
13785 "or the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file, see B<ip>(7) for "
13786 "details. When turned off, raw sockets will fragment outgoing packets that "
13787 "exceed the interface MTU. However, disabling it is not recommended for "
13788 "performance and reliability reasons."
13791 #. type: Plain text
13792 #: build/C/man7/raw.7:214
13794 "A raw socket can be bound to a specific local address using the B<bind>(2) "
13795 "call. If it isn't bound, all packets with the specified IP protocol are "
13796 "received. In addition, a RAW socket can be bound to a specific network "
13797 "device using B<SO_BINDTODEVICE>; see B<socket>(7)."
13800 #. type: Plain text
13801 #: build/C/man7/raw.7:225
13803 "An B<IPPROTO_RAW> socket is send only. If you really want to receive all IP "
13804 "packets, use a B<packet>(7) socket with the B<ETH_P_IP> protocol. Note "
13805 "that packet sockets don't reassemble IP fragments, unlike raw sockets."
13808 #. type: Plain text
13809 #: build/C/man7/raw.7:231
13811 "If you want to receive all ICMP packets for a datagram socket, it is often "
13812 "better to use B<IP_RECVERR> on that particular socket; see B<ip>(7)."
13815 #. type: Plain text
13816 #: build/C/man7/raw.7:238
13818 "Raw sockets may tap all IP protocols in Linux, even protocols like ICMP or "
13819 "TCP which have a protocol module in the kernel. In this case, the packets "
13820 "are passed to both the kernel module and the raw socket(s). This should not "
13821 "be relied upon in portable programs, many other BSD socket implementation "
13822 "have limitations here."
13825 #. type: Plain text
13826 #: build/C/man7/raw.7:243
13828 "Linux never changes headers passed from the user (except for filling in some "
13829 "zeroed fields as described for B<IP_HDRINCL>). This differs from many other "
13830 "implementations of raw sockets."
13833 #. type: Plain text
13834 #: build/C/man7/raw.7:246
13836 "RAW sockets are generally rather unportable and should be avoided in "
13837 "programs intended to be portable."
13840 #. type: Plain text
13841 #: build/C/man7/raw.7:252
13843 "Sending on raw sockets should take the IP protocol from I<sin_port>; this "
13844 "ability was lost in Linux 2.2. The workaround is to use B<IP_HDRINCL>."
13847 #. type: Plain text
13848 #: build/C/man7/raw.7:254
13849 msgid "Transparent proxy extensions are not described."
13852 #. type: Plain text
13853 #: build/C/man7/raw.7:259
13855 "When the B<IP_HDRINCL> option is set, datagrams will not be fragmented and "
13856 "are limited to the interface MTU."
13860 #. This man page was written by Andi Kleen.
13861 #. type: Plain text
13862 #: build/C/man7/raw.7:269
13864 "Setting the IP protocol for sending in I<sin_port> got lost in Linux 2.2. "
13865 "The protocol that the socket was bound to or that was specified in the "
13866 "initial B<socket>(2) call is always used."
13869 #. type: Plain text
13870 #: build/C/man7/raw.7:275
13871 msgid "B<recvmsg>(2), B<sendmsg>(2), B<capabilities>(7), B<ip>(7), B<socket>(7)"
13874 #. type: Plain text
13875 #: build/C/man7/raw.7:282
13877 "B<RFC\\ 1191> for path MTU discovery. B<RFC\\ 791> and the "
13878 "I<E<lt>linux/ip.hE<gt>> header file for the IP protocol."
13882 #: build/C/man3/rcmd.3:43
13887 #. type: Plain text
13888 #: build/C/man3/rcmd.3:48
13890 "rcmd, rresvport, iruserok, ruserok, rcmd_af, rresvport_af, iruserok_af, "
13891 "ruserok_af - routines for returning a stream to a remote command"
13894 #. type: Plain text
13895 #: build/C/man3/rcmd.3:51
13898 "B<#include E<lt>netdb.hE<gt> \\ \\ >/* Or E<lt>unistd.hE<gt> on some systems "
13902 #. type: Plain text
13903 #: build/C/man3/rcmd.3:54
13906 "B<int rcmd(char **>I<ahost>B<, unsigned short >I<inport>B<, const char "
13907 "*>I<locuser>B<, >\n"
13908 "B< const char *>I<remuser>B<, const char *>I<cmd>B<, int "
13912 #. type: Plain text
13913 #: build/C/man3/rcmd.3:56
13915 msgid "B<int rresvport(int *>I<port>B<);>\n"
13918 #. type: Plain text
13919 #: build/C/man3/rcmd.3:59
13922 "B<int iruserok(uint32_t >I<raddr>B<, int >I<superuser>B<, >\n"
13923 "B< const char *>I<ruser>B<, const char *>I<luser>B<);>\n"
13926 #. type: Plain text
13927 #: build/C/man3/rcmd.3:62
13930 "B<int ruserok(const char *>I<rhost>B<, int >I<superuser>B<, >\n"
13931 "B< const char *>I<ruser>B<, const char *>I<luser>B<);>\n"
13934 #. type: Plain text
13935 #: build/C/man3/rcmd.3:66
13938 "B<int rcmd_af(char **>I<ahost>B<, unsigned short >I<inport>B<, const char "
13939 "*>I<locuser>B<, >\n"
13940 "B< const char *>I<remuser>B<, const char *>I<cmd>B<, int "
13942 "B< sa_family_t >I<af>B<);>\n"
13945 #. type: Plain text
13946 #: build/C/man3/rcmd.3:68
13948 msgid "B<int rresvport_af(int *>I<port>B<, sa_family_t >I<af>B<);>\n"
13951 #. type: Plain text
13952 #: build/C/man3/rcmd.3:72
13955 "B<int iruserok_af(const void *>I<raddr>B<, int >I<superuser>B<, >\n"
13956 "B< const char *>I<ruser>B<, const char *>I<luser>B<, "
13957 "sa_family_t >I<af>B<);>\n"
13960 #. type: Plain text
13961 #: build/C/man3/rcmd.3:76
13964 "B<int ruserok_af(const char *>I<rhost>B<, int >I<superuser>B<, >\n"
13965 "B< const char *>I<ruser>B<, const char *>I<luser>B<, "
13966 "sa_family_t >I<af>B<);>\n"
13969 #. type: Plain text
13970 #: build/C/man3/rcmd.3:92
13972 "B<rcmd>(), B<rcmd_af>(), B<rresvport>(), B<rresvport_af>(), B<iruserok>(), "
13973 "B<iruserok_af>(), B<ruserok>(), B<ruserok_af>(): _BSD_SOURCE"
13976 #. type: Plain text
13977 #: build/C/man3/rcmd.3:113
13979 "The B<rcmd>() function is used by the superuser to execute a command on a "
13980 "remote machine using an authentication scheme based on privileged port "
13981 "numbers. The B<rresvport>() function returns a descriptor to a socket with "
13982 "an address in the privileged port space. The B<iruserok>() and "
13983 "B<ruserok>() functions are used by servers to authenticate clients "
13984 "requesting service with B<rcmd>(). All four functions are used by the "
13985 "B<rshd>(8) server (among others)."
13989 #: build/C/man3/rcmd.3:113
13994 #. type: Plain text
13995 #: build/C/man3/rcmd.3:129
13997 "The B<rcmd>() function looks up the host I<*ahost> using "
13998 "B<gethostbyname>(3), returning -1 if the host does not exist. Otherwise, "
13999 "I<*ahost> is set to the standard name of the host and a connection is "
14000 "established to a server residing at the well-known Internet port I<inport>."
14003 #. type: Plain text
14004 #: build/C/man3/rcmd.3:158
14006 "If the connection succeeds, a socket in the Internet domain of type "
14007 "B<SOCK_STREAM> is returned to the caller, and given to the remote command as "
14008 "I<stdin> and I<stdout>. If I<fd2p> is nonzero, then an auxiliary channel to "
14009 "a control process will be set up, and a descriptor for it will be placed in "
14010 "I<*fd2p>. The control process will return diagnostic output from the "
14011 "command (unit 2) on this channel, and will also accept bytes on this channel "
14012 "as being UNIX signal numbers, to be forwarded to the process group of the "
14013 "command. If I<fd2p> is 0, then the I<stderr> (unit 2 of the remote command) "
14014 "will be made the same as the I<stdout> and no provision is made for sending "
14015 "arbitrary signals to the remote process, although you may be able to get its "
14016 "attention by using out-of-band data."
14019 #. type: Plain text
14020 #: build/C/man3/rcmd.3:161
14021 msgid "The protocol is described in detail in B<rshd>(8)."
14025 #: build/C/man3/rcmd.3:161
14027 msgid "rresvport()"
14030 #. type: Plain text
14031 #: build/C/man3/rcmd.3:183
14033 "The B<rresvport>() function is used to obtain a socket with a privileged "
14034 "port bound to it. This socket is suitable for use by B<rcmd>() and several "
14035 "other functions. Privileged ports are those in the range 0 to 1023. Only a "
14036 "privileged process (B<CAP_NET_BIND_SERVICE>) is allowed to bind to a "
14037 "privileged port. In the glibc implementation, this function restricts its "
14038 "search to the ports from 512 to 1023. The I<port> argument is value-result: "
14039 "the value it supplies to the call is used as the starting point for a "
14040 "circular search of the port range; on (successful) return, it contains the "
14041 "port number that was bound to."
14045 #: build/C/man3/rcmd.3:183
14047 msgid "iruserok() and ruserok()"
14050 #. type: Plain text
14051 #: build/C/man3/rcmd.3:201
14053 "The B<iruserok>() and B<ruserok>() functions take a remote host's IP "
14054 "address or name, respectively, two usernames and a flag indicating whether "
14055 "the local user's name is that of the superuser. Then, if the user is I<not> "
14056 "the superuser, it checks the I</etc/hosts.equiv> file. If that lookup is "
14057 "not done, or is unsuccessful, the I<.rhosts> in the local user's home "
14058 "directory is checked to see if the request for service is allowed."
14061 #. type: Plain text
14062 #: build/C/man3/rcmd.3:217
14064 "If this file does not exist, is not a regular file, is owned by anyone other "
14065 "than the user or the superuser, or is writable by anyone other than the "
14066 "owner, the check automatically fails. Zero is returned if the machine name "
14067 "is listed in the I<hosts.equiv> file, or the host and remote username are "
14068 "found in the I<.rhosts> file; otherwise B<iruserok>() and B<ruserok>() "
14069 "return -1. If the local domain (as obtained from B<gethostname>(2)) is the "
14070 "same as the remote domain, only the machine name need be specified."
14073 #. type: Plain text
14074 #: build/C/man3/rcmd.3:223
14076 "If the IP address of the remote host is known, B<iruserok>() should be used "
14077 "in preference to B<ruserok>(), as it does not require trusting the DNS "
14078 "server for the remote host's domain."
14082 #: build/C/man3/rcmd.3:223
14084 msgid "*_af() variants"
14087 #. type: Plain text
14088 #: build/C/man3/rcmd.3:239
14090 "All of the functions described above work with IPv4 (B<AF_INET>) sockets. "
14091 "The \"_af\" variants take an extra argument that allows the socket address "
14092 "family to be specified. For these functions, the I<af> argument can be "
14093 "specified as B<AF_INET> or B<AF_INET6>. In addition, B<rcmd_af>() supports "
14094 "the use of B<AF_UNSPEC>."
14097 #. type: Plain text
14098 #: build/C/man3/rcmd.3:245
14100 "The B<rcmd>() function returns a valid socket descriptor on success. It "
14101 "returns -1 on error and prints a diagnostic message on the standard error."
14104 #. type: Plain text
14105 #: build/C/man3/rcmd.3:256
14107 "The B<rresvport>() function returns a valid, bound socket descriptor on "
14108 "success. It returns -1 on error with the global value I<errno> set "
14109 "according to the reason for failure. The error code B<EAGAIN> is overloaded "
14110 "to mean \"All network ports in use.\""
14113 #. type: Plain text
14114 #: build/C/man3/rcmd.3:262
14116 "For information on the return from B<ruserok>() and B<iruserok>(), see "
14120 #. type: Plain text
14121 #: build/C/man3/rcmd.3:270
14123 "The functions B<iruserok_af>(), B<rcmd_af>(), B<rresvport_af>(), and "
14124 "B<ruserok_af>() functions are provide in glibc since version 2.2."
14127 #. type: Plain text
14128 #: build/C/man3/rcmd.3:278
14130 "Not in POSIX.1-2001. Present on the BSDs, Solaris, and many other systems. "
14131 "These functions appeared in 4.2BSD. The \"_af\" variants are more recent "
14132 "additions, and are not present on as wide a range of systems."
14135 #. Bug filed 25 Nov 2007:
14136 #. http://sources.redhat.com/bugzilla/show_bug.cgi?id=5399
14137 #. type: Plain text
14138 #: build/C/man3/rcmd.3:285
14140 "B<iruserok>() and B<iruserok_af>() are declared in glibc headers only "
14141 "since version 2.12."
14144 #. type: Plain text
14145 #: build/C/man3/rcmd.3:293
14147 "B<rlogin>(1), B<rsh>(1), B<intro>(2), B<rexec>(3), B<rexecd>(8), "
14148 "B<rlogind>(8), B<rshd>(8)"
14152 #: build/C/man5/resolv.conf.5:23
14154 msgid "RESOLV.CONF"
14157 #. type: Plain text
14158 #: build/C/man5/resolv.conf.5:27
14159 msgid "resolv.conf - resolver configuration file"
14162 #. type: Plain text
14163 #: build/C/man5/resolv.conf.5:29
14164 msgid "B</etc/resolv.conf>"
14167 #. type: Plain text
14168 #: build/C/man5/resolv.conf.5:41
14170 "The I<resolver> is a set of routines in the C library that provide access to "
14171 "the Internet Domain Name System (DNS). The resolver configuration file "
14172 "contains information that is read by the resolver routines the first time "
14173 "they are invoked by a process. The file is designed to be human readable "
14174 "and contains a list of keywords with values that provide various types of "
14175 "resolver information. The configuration file is considered a trusted source "
14176 "of DNS information (e.g., DNSSEC AD-bit information will be returned "
14177 "unmodified from this source)."
14180 #. type: Plain text
14181 #: build/C/man5/resolv.conf.5:46
14183 "If this file does not exist, only the name server on the local machine will "
14184 "be queried; the domain name is determined from the hostname and the domain "
14185 "search path is constructed from the domain name."
14188 #. type: Plain text
14189 #: build/C/man5/resolv.conf.5:48
14190 msgid "The different configuration options are:"
14194 #: build/C/man5/resolv.conf.5:48
14196 msgid "B<nameserver> Name server IP address"
14199 #. type: Plain text
14200 #: build/C/man5/resolv.conf.5:65
14202 "Internet address of a name server that the resolver should query, either an "
14203 "IPv4 address (in dot notation), or an IPv6 address in colon (and possibly "
14204 "dot) notation as per RFC 2373. Up to B<MAXNS> (currently 3, see "
14205 "I<E<lt>resolv.hE<gt>>) name servers may be listed, one per keyword. If "
14206 "there are multiple servers, the resolver library queries them in the order "
14207 "listed. If no B<nameserver> entries are present, the default is to use the "
14208 "name server on the local machine. (The algorithm used is to try a name "
14209 "server, and if the query times out, try the next, until out of name servers, "
14210 "then repeat trying all the name servers until a maximum number of retries "
14215 #: build/C/man5/resolv.conf.5:65
14217 msgid "B<domain> Local domain name."
14220 #. type: Plain text
14221 #: build/C/man5/resolv.conf.5:76
14223 "Most queries for names within this domain can use short names relative to "
14224 "the local domain. If set to \\(aq.\\(aq, the root domain is considered. If "
14225 "no B<domain> entry is present, the domain is determined from the local "
14226 "hostname returned by B<gethostname>(2); the domain part is taken to be "
14227 "everything after the first \\(aq.\\(aq. Finally, if the hostname does not "
14228 "contain a domain part, the root domain is assumed."
14232 #: build/C/man5/resolv.conf.5:76
14234 msgid "B<search> Search list for host-name lookup."
14237 #. When having a resolv.conv with a line
14238 #. search subdomain.domain.tld domain.tld
14239 #. and doing a hostlookup, for example by
14240 #. ping host.anothersubdomain
14241 #. it sends dns-requests for
14242 #. host.anothersubdomain.
14243 #. host.anothersubdomain.subdomain.domain.tld.
14244 #. host.anothersubdomain.domain.tld.
14245 #. thus not only causing unnecessary traffic for the root-dns-servers
14246 #. but broadcasting information to the outside and making man-in-the-middle
14247 #. attacks possible.
14248 #. type: Plain text
14249 #: build/C/man5/resolv.conf.5:106
14251 "The search list is normally determined from the local domain name; by "
14252 "default, it contains only the local domain name. This may be changed by "
14253 "listing the desired domain search path following the I<search> keyword with "
14254 "spaces or tabs separating the names. Resolver queries having fewer than "
14255 "I<ndots> dots (default is 1) in them will be attempted using each component "
14256 "of the search path in turn until a match is found. For environments with "
14257 "multiple subdomains please read B<options ndots:>I<n> below to avoid "
14258 "man-in-the-middle attacks and unnecessary traffic for the root-dns-servers. "
14259 "Note that this process may be slow and will generate a lot of network "
14260 "traffic if the servers for the listed domains are not local, and that "
14261 "queries will time out if no server is available for one of the domains."
14264 #. type: Plain text
14265 #: build/C/man5/resolv.conf.5:109
14267 "The search list is currently limited to six domains with a total of 256 "
14272 #: build/C/man5/resolv.conf.5:109
14274 msgid "B<sortlist>"
14277 #. type: Plain text
14278 #: build/C/man5/resolv.conf.5:122
14280 "This option allows addresses returned by B<gethostbyname>(3) to be sorted. "
14281 "A sortlist is specified by IP-address-netmask pairs. The netmask is "
14282 "optional and defaults to the natural netmask of the net. The IP address and "
14283 "optional network pairs are separated by slashes. Up to 10 pairs may be "
14284 "specified. Here is an example:"
14287 #. type: Plain text
14288 #: build/C/man5/resolv.conf.5:125
14289 msgid "sortlist 130.155.160.0/255.255.240.0 130.155.0.0"
14293 #: build/C/man5/resolv.conf.5:127
14298 #. type: Plain text
14299 #: build/C/man5/resolv.conf.5:131
14301 "Options allows certain internal resolver variables to be modified. The "
14305 #. type: Plain text
14306 #: build/C/man5/resolv.conf.5:134
14307 msgid "B<options> I<option> I<...>"
14310 #. type: Plain text
14311 #: build/C/man5/resolv.conf.5:136
14312 msgid "where I<option> is one of the following:"
14316 #: build/C/man5/resolv.conf.5:136
14321 #. Since glibc 2.2?
14322 #. type: Plain text
14323 #: build/C/man5/resolv.conf.5:145
14325 "sets B<RES_DEBUG> in I<_res.options> (effective only if glibc was built with "
14326 "debug support; see B<resolver>(3))."
14330 #: build/C/man5/resolv.conf.5:145
14332 msgid "B<ndots:>I<n>"
14336 #. type: Plain text
14337 #: build/C/man5/resolv.conf.5:159
14339 "sets a threshold for the number of dots which must appear in a name given to "
14340 "B<res_query>(3) (see B<resolver>(3)) before an I<initial absolute query> "
14341 "will be made. The default for I<n> is 1, meaning that if there are any dots "
14342 "in a name, the name will be tried first as an absolute name before any "
14343 "I<search list> elements are appended to it. The value for this option is "
14344 "silently capped to 15."
14348 #: build/C/man5/resolv.conf.5:159
14350 msgid "B<timeout:>I<n>"
14354 #. type: Plain text
14355 #: build/C/man5/resolv.conf.5:170
14357 "sets the amount of time the resolver will wait for a response from a remote "
14358 "name server before retrying the query via a different name server. Measured "
14359 "in seconds, the default is B<RES_TIMEOUT> (currently 5, see "
14360 "I<E<lt>resolv.hE<gt>>). The value for this option is silently capped to 30."
14364 #: build/C/man5/resolv.conf.5:170
14366 msgid "B<attempts:>I<n>"
14369 #. type: Plain text
14370 #: build/C/man5/resolv.conf.5:179
14372 "sets the number of times the resolver will send a query to its name servers "
14373 "before giving up and returning an error to the calling application. The "
14374 "default is B<RES_DFLRETRY> (currently 2, see I<E<lt>resolv.hE<gt>>). The "
14375 "value for this option is silently capped to 5."
14379 #: build/C/man5/resolv.conf.5:179
14385 #. type: Plain text
14386 #: build/C/man5/resolv.conf.5:189
14388 "sets B<RES_ROTATE> in I<_res.options>, which causes round-robin selection of "
14389 "name servers from among those listed. This has the effect of spreading the "
14390 "query load among all listed servers, rather than having all clients try the "
14391 "first listed server first every time."
14395 #: build/C/man5/resolv.conf.5:189
14397 msgid "B<no-check-names>"
14401 #. type: Plain text
14402 #: build/C/man5/resolv.conf.5:199
14404 "sets B<RES_NOCHECKNAME> in I<_res.options>, which disables the modern BIND "
14405 "checking of incoming hostnames and mail names for invalid characters such as "
14406 "underscore (_), non-ASCII, or control characters."
14410 #: build/C/man5/resolv.conf.5:199
14416 #. type: Plain text
14417 #: build/C/man5/resolv.conf.5:210
14419 "sets B<RES_USE_INET6> in I<_res.options>. This has the effect of trying a "
14420 "AAAA query before an A query inside the B<gethostbyname>(3) function, and "
14421 "of mapping IPv4 responses in IPv6 \"tunneled form\" if no AAAA records are "
14422 "found but an A record set exists."
14426 #: build/C/man5/resolv.conf.5:210
14428 msgid "B<ip6-bytestring> (since glibc 2.3.4)"
14431 #. type: Plain text
14432 #: build/C/man5/resolv.conf.5:219
14434 "sets B<RES_USE_BSTRING> in I<_res.options>. This causes reverse IPv6 "
14435 "lookups to be made using the bit-label format described in RFC\\ 2673; if "
14436 "this option is not set, then nibble format is used."
14440 #: build/C/man5/resolv.conf.5:219
14442 msgid "B<ip6-dotint>/B<no-ip6-dotint> (since glibc 2.3.4)"
14445 #. type: Plain text
14446 #: build/C/man5/resolv.conf.5:236
14448 "Clear/set B<RES_NOIP6DOTINT> in I<_res.options>. When this option is clear "
14449 "(B<ip6-dotint>), reverse IPv6 lookups are made in the (deprecated) "
14450 "I<ip6.int> zone; when this option is set (B<no-ip6-dotint>), reverse IPv6 "
14451 "lookups are made in the I<ip6.arpa> zone by default. This option is set by "
14456 #: build/C/man5/resolv.conf.5:236
14458 msgid "B<edns0> (since glibc 2.6)"
14461 #. type: Plain text
14462 #: build/C/man5/resolv.conf.5:243
14464 "sets B<RES_USE_EDNSO> in I<_res.options>. This enables support for the DNS "
14465 "extensions described in RFC\\ 2671."
14469 #: build/C/man5/resolv.conf.5:243
14471 msgid "B<single-request> (since glibc 2.10)"
14474 #. type: Plain text
14475 #: build/C/man5/resolv.conf.5:256
14477 "sets B<RES_SNGLKUP> in I<_res.options>. By default, glibc performs IPv4 and "
14478 "IPv6 lookups in parallel since version 2.9. Some appliance DNS servers "
14479 "cannot handle these queries properly and make the requests time out. This "
14480 "option disables the behavior and makes glibc perform the IPv6 and IPv4 "
14481 "requests sequentially (at the cost of some slowdown of the resolving "
14486 #: build/C/man5/resolv.conf.5:256
14488 msgid "B<single-request-reopen> (since glibc 2.9)"
14491 #. type: Plain text
14492 #: build/C/man5/resolv.conf.5:264
14494 "The resolver uses the same socket for the A and AAAA requests. Some "
14495 "hardware mistakenly sends back only one reply. When that happens the client "
14496 "system will sit and wait for the second reply. Turning this option on "
14497 "changes this behavior so that if two requests from the same port are not "
14498 "handled correctly it will close the socket and open a new one before sending "
14499 "the second request."
14503 #: build/C/man5/resolv.conf.5:264
14505 msgid "B<no-tld-query> (since glibc 2.14)"
14508 #. type: Plain text
14509 #: build/C/man5/resolv.conf.5:275
14511 "sets RES_NOTLDQUERY in I<_res.options>. This option causes B<res_nsearch>() "
14512 "to not attempt to resolve an unqualified name as if it were a top level "
14513 "domain (TLD). This option can cause problems if the site has ``localhost'' "
14514 "as a TLD rather than having localhost on one or more elements of the search "
14515 "list. This option has no effect if neither RES_DEFNAMES or RES_DNSRCH is "
14519 #. type: Plain text
14520 #: build/C/man5/resolv.conf.5:280
14522 "The I<domain> and I<search> keywords are mutually exclusive. If more than "
14523 "one instance of these keywords is present, the last instance wins."
14526 #. type: Plain text
14527 #: build/C/man5/resolv.conf.5:285
14529 "The I<search> keyword of a system's I<resolv.conf> file can be overridden on "
14530 "a per-process basis by setting the environment variable B<LOCALDOMAIN> to a "
14531 "space-separated list of search domains."
14534 #. type: Plain text
14535 #: build/C/man5/resolv.conf.5:291
14537 "The I<options> keyword of a system's I<resolv.conf> file can be amended on a "
14538 "per-process basis by setting the environment variable B<RES_OPTIONS> to a "
14539 "space-separated list of resolver options as explained above under "
14543 #. type: Plain text
14544 #: build/C/man5/resolv.conf.5:295
14546 "The keyword and value must appear on a single line, and the keyword (e.g., "
14547 "B<nameserver>) must start the line. The value follows the keyword, "
14548 "separated by white space."
14551 #. type: Plain text
14552 #: build/C/man5/resolv.conf.5:298
14554 "Lines that contain a semicolon (;) or hash character (#) in the first "
14555 "column are treated as comments."
14558 #. type: Plain text
14559 #: build/C/man5/resolv.conf.5:301
14560 msgid "I</etc/resolv.conf>, I<E<lt>resolv.hE<gt>>"
14563 #. type: Plain text
14564 #: build/C/man5/resolv.conf.5:306
14565 msgid "B<gethostbyname>(3), B<resolver>(3), B<hostname>(7), B<named>(8)"
14568 #. type: Plain text
14569 #: build/C/man5/resolv.conf.5:308
14570 msgid "Name Server Operations Guide for BIND"
14574 #: build/C/man3/resolver.3:32
14579 #. type: Plain text
14580 #: build/C/man3/resolver.3:36
14582 "res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, "
14583 "dn_comp, dn_expand - resolver routines"
14586 #. type: Plain text
14587 #: build/C/man3/resolver.3:42
14590 "B<#include E<lt>netinet/in.hE<gt>>\n"
14591 "B<#include E<lt>arpa/nameser.hE<gt>>\n"
14592 "B<#include E<lt>resolv.hE<gt>>\n"
14593 "B<extern struct __res_state _res;>\n"
14596 #. type: Plain text
14597 #: build/C/man3/resolver.3:44
14599 msgid "B<int res_init(void);>\n"
14602 #. type: Plain text
14603 #: build/C/man3/resolver.3:46
14605 msgid "B<int res_query(const char *>I<dname>B<, int >I<class>B<, int >I<type>B<,>\n"
14608 #. type: Plain text
14609 #: build/C/man3/resolver.3:48 build/C/man3/resolver.3:53 build/C/man3/resolver.3:70
14611 msgid "B<unsigned char *>I<answer>B<, int >I<anslen>B<);>\n"
14614 #. type: Plain text
14615 #: build/C/man3/resolver.3:51
14618 "B<int res_search(const char *>I<dname>B<, int >I<class>B<, int "
14622 #. type: Plain text
14623 #: build/C/man3/resolver.3:56
14625 msgid "B<int res_querydomain(const char *>I<name>B<, const char *>I<domain>B<,>\n"
14628 #. type: Plain text
14629 #: build/C/man3/resolver.3:59
14632 "B<int >I<class>B<, int >I<type>B<, unsigned char *>I<answer>B<,>\n"
14633 "B<int >I<anslen>B<);>\n"
14636 #. type: Plain text
14637 #: build/C/man3/resolver.3:62
14639 msgid "B<int res_mkquery(int >I<op>B<, const char *>I<dname>B<, int >I<class>B<,>\n"
14642 #. type: Plain text
14643 #: build/C/man3/resolver.3:65
14646 "B<int >I<type>B<, const unsigned char *>I<data>B<, int >I<datalen>B<,>\n"
14647 "B<const unsigned char *>I<newrr>B<, unsigned char *>I<buf>B<, int "
14648 ">I<buflen>B<);>\n"
14651 #. type: Plain text
14652 #: build/C/man3/resolver.3:68
14654 msgid "B<int res_send(const unsigned char *>I<msg>B<, int >I<msglen>B<,>\n"
14657 #. type: Plain text
14658 #: build/C/man3/resolver.3:73
14660 msgid "B<int dn_comp(const char *>I<exp_dn>B<, unsigned char *>I<comp_dn>B<,>\n"
14663 #. type: Plain text
14664 #: build/C/man3/resolver.3:75
14667 "B<int >I<length>B<, unsigned char **>I<dnptrs>B<, unsigned char "
14668 "**>I<lastdnptr>B<);>\n"
14671 #. type: Plain text
14672 #: build/C/man3/resolver.3:78
14675 "B<int dn_expand(const unsigned char *>I<msg>B<, const unsigned char "
14676 "*>I<eomorig>B<,>\n"
14679 #. type: Plain text
14680 #: build/C/man3/resolver.3:81
14683 "B<const unsigned char *>I<comp_dn>B<, char *>I<exp_dn>B<,>\n"
14684 "B<int >I<length>B<);>\n"
14687 #. type: Plain text
14688 #: build/C/man3/resolver.3:88
14690 "These functions make queries to and interpret the responses from Internet "
14691 "domain name servers."
14694 #. type: Plain text
14695 #: build/C/man3/resolver.3:102
14697 "The B<res_init>() function reads the configuration files (see "
14698 "B<resolv.conf>(5)) to get the default domain name, search order and name "
14699 "server address(es). If no server is given, the local host is tried. If no "
14700 "domain is given, that associated with the local host is used. It can be "
14701 "overridden with the environment variable B<LOCALDOMAIN>. B<res_init>() is "
14702 "normally executed by the first call to one of the other functions."
14705 #. type: Plain text
14706 #: build/C/man3/resolver.3:110
14708 "The B<res_query>() function queries the name server for the fully qualified "
14709 "domain name I<name> of specified I<type> and I<class>. The reply is left in "
14710 "the buffer I<answer> of length I<anslen> supplied by the caller."
14713 #. type: Plain text
14714 #: build/C/man3/resolver.3:123
14716 "The B<res_search>() function makes a query and waits for the response like "
14717 "B<res_query>(), but in addition implements the default and search rules "
14718 "controlled by B<RES_DEFNAMES> and B<RES_DNSRCH> (see description of I<_res> "
14722 #. type: Plain text
14723 #: build/C/man3/resolver.3:129
14725 "The B<res_querydomain>() function makes a query using B<res_query>() on "
14726 "the concatenation of I<name> and I<domain>."
14729 #. type: Plain text
14730 #: build/C/man3/resolver.3:132
14731 msgid "The following functions are lower-level routines used by B<res_query>()."
14734 #. type: Plain text
14735 #: build/C/man3/resolver.3:143
14737 "The B<res_mkquery>() function constructs a query message in I<buf> of "
14738 "length I<buflen> for the domain name I<dname>. The query type I<op> is "
14739 "usually B<QUERY>, but can be any of the types defined in "
14740 "I<E<lt>arpa/nameser.hE<gt>>. I<newrr> is currently unused."
14743 #. type: Plain text
14744 #: build/C/man3/resolver.3:153
14746 "The B<res_send>() function sends a preformatted query given in I<msg> of "
14747 "length I<msglen> and returns the answer in I<answer> which is of length "
14748 "I<anslen>. It will call B<res_init>(), if it has not already been called."
14751 #. type: Plain text
14752 #: build/C/man3/resolver.3:166
14754 "The B<dn_comp>() function compresses the domain name I<exp_dn> and stores "
14755 "it in the buffer I<comp_dn> of length I<length>. The compression uses an "
14756 "array of pointers I<dnptrs> to previously compressed names in the current "
14757 "message. The first pointer points to the beginning of the message and the "
14758 "list ends with NULL. The limit of the array is specified by I<lastdnptr>. "
14759 "If I<dnptr> is NULL, domain names are not compressed. If I<lastdnptr> is "
14760 "NULL, the list of labels is not updated."
14763 #. type: Plain text
14764 #: build/C/man3/resolver.3:175
14766 "The B<dn_expand>() function expands the compressed domain name I<comp_dn> "
14767 "to a full domain name, which is placed in the buffer I<exp_dn> of size "
14768 "I<length>. The compressed name is contained in a query or reply message, "
14769 "and I<msg> points to the beginning of the message."
14772 #. type: Plain text
14773 #: build/C/man3/resolver.3:183
14775 "The resolver routines use global configuration and state information "
14776 "contained in the structure I<_res>, which is defined in "
14777 "I<E<lt>resolv.hE<gt>>. The only field that is normally manipulated by the "
14778 "user is I<_res.options>. This field can contain the bitwise \"OR\" of the "
14779 "following options:"
14783 #: build/C/man3/resolver.3:183
14785 msgid "B<RES_INIT>"
14788 #. type: Plain text
14789 #: build/C/man3/resolver.3:188
14790 msgid "True if B<res_init>() has been called."
14794 #: build/C/man3/resolver.3:188
14796 msgid "B<RES_DEBUG>"
14799 #. See resolv/README.
14800 #. Support for RES_DEBUG was made conditional in glibc 2.2.
14801 #. type: Plain text
14802 #: build/C/man3/resolver.3:195
14804 "Print debugging messages. This option is available only if glibc was built "
14805 "with debugging enabled, which is not the default."
14809 #: build/C/man3/resolver.3:195
14811 msgid "B<RES_AAONLY>"
14814 #. type: Plain text
14815 #: build/C/man3/resolver.3:202
14817 "Accept authoritative answers only. B<res_send>() continues until it finds "
14818 "an authoritative answer or returns an error. [Not currently implemented]."
14822 #: build/C/man3/resolver.3:202
14824 msgid "B<RES_USEVC>"
14827 #. type: Plain text
14828 #: build/C/man3/resolver.3:205
14829 msgid "Use TCP connections for queries rather than UDP datagrams."
14833 #: build/C/man3/resolver.3:205
14835 msgid "B<RES_PRIMARY>"
14838 #. type: Plain text
14839 #: build/C/man3/resolver.3:208
14840 msgid "Query primary domain name server only."
14844 #: build/C/man3/resolver.3:208
14846 msgid "B<RES_IGNTC>"
14849 #. type: Plain text
14850 #: build/C/man3/resolver.3:213
14852 "Ignore truncation errors. Don't retry with TCP. [Not currently "
14857 #: build/C/man3/resolver.3:213
14859 msgid "B<RES_RECURSE>"
14862 #. type: Plain text
14863 #: build/C/man3/resolver.3:220
14865 "Set the recursion desired bit in queries. Recursion is carried out by the "
14866 "domain name server, not by B<res_send>(). [Enabled by default]."
14870 #: build/C/man3/resolver.3:220
14872 msgid "B<RES_DEFNAMES>"
14875 #. type: Plain text
14876 #: build/C/man3/resolver.3:227
14878 "If set, B<res_search>() will append the default domain name to single "
14879 "component names\\(emthat is, those that do not contain a dot. [Enabled by "
14884 #: build/C/man3/resolver.3:227
14886 msgid "B<RES_STAYOPEN>"
14889 #. type: Plain text
14890 #: build/C/man3/resolver.3:232
14891 msgid "Used with B<RES_USEVC> to keep the TCP connection open between queries."
14895 #: build/C/man3/resolver.3:232
14897 msgid "B<RES_DNSRCH>"
14900 #. type: Plain text
14901 #: build/C/man3/resolver.3:241
14903 "If set, B<res_search>() will search for hostnames in the current domain and "
14904 "in parent domains. This option is used by B<gethostbyname>(3). [Enabled by "
14908 #. type: Plain text
14909 #: build/C/man3/resolver.3:245
14911 "This list is not complete. You can find some other flags described in "
14912 "B<resolv.conf>(5)."
14915 #. type: Plain text
14916 #: build/C/man3/resolver.3:250
14917 msgid "The B<res_init>() function returns 0 on success, or -1 if an error occurs."
14920 #. type: Plain text
14921 #: build/C/man3/resolver.3:260
14923 "The B<res_query>(), B<res_search>(), B<res_querydomain>(), B<res_mkquery>() "
14924 "and B<res_send>() functions return the length of the response, or -1 if an "
14928 #. type: Plain text
14929 #: build/C/man3/resolver.3:267
14931 "The B<dn_comp>() and B<dn_expand>() functions return the length of the "
14932 "compressed name, or -1 if an error occurs."
14935 #. type: Plain text
14936 #: build/C/man3/resolver.3:271
14939 "/etc/resolv.conf resolver configuration file\n"
14940 "/etc/host.conf resolver configuration file\n"
14943 #. type: Plain text
14944 #: build/C/man3/resolver.3:274
14948 #. type: Plain text
14949 #: build/C/man3/resolver.3:280
14951 "B<gethostbyname>(3), B<resolv.conf>(5), B<resolver>(5), B<hostname>(7), "
14956 #: build/C/man3/rexec.3:41
14961 #. type: Plain text
14962 #: build/C/man3/rexec.3:44
14963 msgid "rexec, rexec_af - return stream to a remote command"
14966 #. type: Plain text
14967 #: build/C/man3/rexec.3:48
14970 "B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
14971 "B<#include E<lt>netdb.hE<gt>>\n"
14974 #. type: Plain text
14975 #: build/C/man3/rexec.3:51
14978 "B<int rexec(char **>I<ahost>B<, int >I<inport>B<, const char *>I<user>B<, "
14980 "B< const char *>I<passwd>B<, const char *>I<cmd>B<, int "
14984 #. type: Plain text
14985 #: build/C/man3/rexec.3:55
14988 "B<int rexec_af(char **>I<ahost>B<, int >I<inport>B<, const char *>I<user>B<, "
14990 "B< const char *>I<passwd>B<, const char *>I<cmd>B<, int "
14992 "B< sa_family_t >I<af>B<);>\n"
14995 #. type: Plain text
14996 #: build/C/man3/rexec.3:59
14997 msgid "This interface is obsoleted by B<rcmd>(3)."
15000 #. type: Plain text
15001 #: build/C/man3/rexec.3:78
15003 "The B<rexec>() function looks up the host I<*ahost> using "
15004 "B<gethostbyname>(3), returning -1 if the host does not exist. Otherwise, "
15005 "I<*ahost> is set to the standard name of the host. If a username and "
15006 "password are both specified, then these are used to authenticate to the "
15007 "foreign host; otherwise the environment and then the I<.netrc> file in "
15008 "user's home directory are searched for appropriate information. If all this "
15009 "fails, the user is prompted for the information."
15012 #. type: Plain text
15013 #: build/C/man3/rexec.3:89
15015 "The port I<inport> specifies which well-known DARPA Internet port to use for "
15016 "the connection; the call I<getservbyname(\"exec\", \"tcp\")> (see "
15017 "B<getservent>(3)) will return a pointer to a structure that contains the "
15018 "necessary port. The protocol for connection is described in detail in "
15022 #. type: Plain text
15023 #: build/C/man3/rexec.3:122
15025 "If the connection succeeds, a socket in the Internet domain of type "
15026 "B<SOCK_STREAM> is returned to the caller, and given to the remote command as "
15027 "I<stdin> and I<stdout>. If I<fd2p> is nonzero, then an auxiliary channel to "
15028 "a control process will be setup, and a descriptor for it will be placed in "
15029 "I<*fd2p>. The control process will return diagnostic output from the "
15030 "command (unit 2) on this channel, and will also accept bytes on this channel "
15031 "as being UNIX signal numbers, to be forwarded to the process group of the "
15032 "command. The diagnostic information returned does not include remote "
15033 "authorization failure, as the secondary connection is set up after "
15034 "authorization has been verified. If I<fd2p> is 0, then the I<stderr> (unit "
15035 "2 of the remote command) will be made the same as the I<stdout> and no "
15036 "provision is made for sending arbitrary signals to the remote process, "
15037 "although you may be able to get its attention by using out-of-band data."
15041 #: build/C/man3/rexec.3:122
15046 #. type: Plain text
15047 #: build/C/man3/rexec.3:138
15049 "The B<rexec>() function works over IPv4 (B<AF_INET>). By contrast, the "
15050 "B<rexec_af>() function provides an extra argument, I<af>, that allows the "
15051 "caller to select the protocol. This argument can be specified as "
15052 "B<AF_INET>, B<AF_INET6>, or B<AF_UNSPEC> (to allow the implementation to "
15053 "select the protocol)."
15056 #. type: Plain text
15057 #: build/C/man3/rexec.3:142
15058 msgid "The B<rexec_af>() function was added to glibc in version 2.2."
15061 #. type: Plain text
15062 #: build/C/man3/rexec.3:149
15063 msgid "The B<rexec>() and B<rexec_af>() functions are not thread-safe."
15066 #. type: Plain text
15067 #: build/C/man3/rexec.3:158
15069 "These functions are not in POSIX.1-2001. The B<rexec>() function first "
15070 "appeared in 4.2BSD, and is present on the BSDs, Solaris, and many other "
15071 "systems. The B<rexec_af>() function is more recent, and less widespread."
15074 #. type: Plain text
15075 #: build/C/man3/rexec.3:162
15076 msgid "The B<rexec>() function sends the unencrypted password across the network."
15079 #. type: Plain text
15080 #: build/C/man3/rexec.3:167
15082 "The underlying service is considered a big security hole and therefore not "
15083 "enabled on many sites; see B<rexecd>(8) for explanations."
15086 #. type: Plain text
15087 #: build/C/man3/rexec.3:170
15088 msgid "B<rcmd>(3), B<rexecd>(8)"
15092 #: build/C/man5/services.5:34
15098 #: build/C/man5/services.5:34
15103 #. type: Plain text
15104 #: build/C/man5/services.5:37
15105 msgid "services - Internet network services list"
15108 #. type: Plain text
15109 #: build/C/man5/services.5:52
15111 "B<services> is a plain ASCII file providing a mapping between human-friendly "
15112 "textual names for internet services, and their underlying assigned port "
15113 "numbers and protocol types. Every networking program should look into this "
15114 "file to get the port number (and protocol) for its service. The C library "
15115 "routines B<getservent>(3), B<getservbyname>(3), B<getservbyport>(3), "
15116 "B<setservent>(3), and B<endservent>(3) support querying this file from "
15120 #. type: Plain text
15121 #: build/C/man5/services.5:58
15123 "Port numbers are assigned by the IANA (Internet Assigned Numbers Authority), "
15124 "and their current policy is to assign both TCP and UDP protocols when "
15125 "assigning a port number. Therefore, most entries will have two entries, "
15126 "even for TCP-only services."
15129 #. type: Plain text
15130 #: build/C/man5/services.5:70
15132 "Port numbers below 1024 (so-called \"low numbered\" ports) can be bound to "
15133 "only by root (see B<bind>(2), B<tcp>(7), and B<udp>(7)). This is so clients "
15134 "connecting to low numbered ports can trust that the service running on the "
15135 "port is the standard implementation, and not a rogue service run by a user "
15136 "of the machine. Well-known port numbers specified by the IANA are normally "
15137 "located in this root-only space."
15140 #. type: Plain text
15141 #: build/C/man5/services.5:85
15143 "The presence of an entry for a service in the B<services> file does not "
15144 "necessarily mean that the service is currently running on the machine. See "
15145 "B<inetd.conf>(5) for the configuration of Internet services offered. Note "
15146 "that not all networking services are started by B<inetd>(8), and so won't "
15147 "appear in B<inetd.conf>(5). In particular, news (NNTP) and mail (SMTP) "
15148 "servers are often initialized from the system boot scripts."
15151 #. type: Plain text
15152 #: build/C/man5/services.5:94
15154 "The location of the B<services> file is defined by B<_PATH_SERVICES> in "
15155 "I<E<lt>netdb.hE<gt>>. This is usually set to I</etc/services>."
15158 #. type: Plain text
15159 #: build/C/man5/services.5:96
15160 msgid "Each line describes one service, and is of the form:"
15163 #. type: Plain text
15164 #: build/C/man5/services.5:98
15165 msgid "I<service-name\\ \\ \\ port>B</>I<protocol\\ \\ \\ >[I<aliases ...>]"
15169 #: build/C/man5/services.5:98
15175 #: build/C/man5/services.5:100
15177 msgid "I<service-name>"
15180 #. type: Plain text
15181 #: build/C/man5/services.5:106
15183 "is the friendly name the service is known by and looked up under. It is "
15184 "case sensitive. Often, the client program is named after the "
15189 #: build/C/man5/services.5:106
15194 #. type: Plain text
15195 #: build/C/man5/services.5:109
15196 msgid "is the port number (in decimal) to use for this service."
15199 #. type: Plain text
15200 #: build/C/man5/services.5:120
15202 "is the type of protocol to be used. This field should match an entry in the "
15203 "B<protocols>(5) file. Typical values include B<tcp> and B<udp>."
15206 #. type: Plain text
15207 #: build/C/man5/services.5:126
15209 "is an optional space or tab separated list of other names for this service. "
15210 "Again, the names are case sensitive."
15213 #. type: Plain text
15214 #: build/C/man5/services.5:128
15215 msgid "Either spaces or tabs may be used to separate the fields."
15218 #. type: Plain text
15219 #: build/C/man5/services.5:132
15221 "Comments are started by the hash sign (#) and continue until the end of the "
15222 "line. Blank lines are skipped."
15225 #. type: Plain text
15226 #: build/C/man5/services.5:143
15228 "The I<service-name> should begin in the first column of the file, since "
15229 "leading spaces are not stripped. I<service-names> can be any printable "
15230 "characters excluding space and tab. However, a conservative choice of "
15231 "characters should be used to minimize compatibility problems. For example, "
15232 "a-z, 0-9, and hyphen (-) would seem a sensible choice."
15235 #. type: Plain text
15236 #: build/C/man5/services.5:152
15238 "Lines not matching this format should not be present in the file. "
15239 "(Currently, they are silently skipped by B<getservent>(3), "
15240 "B<getservbyname>(3), and B<getservbyport>(3). However, this behavior should "
15241 "not be relied on.)"
15244 #. type: Plain text
15245 #: build/C/man5/services.5:169
15246 msgid "A sample B<services> file might look like this:"
15249 #. type: Plain text
15250 #: build/C/man5/services.5:182
15253 "CW<netstat 15/tcp\n"
15254 "qotd 17/tcp quote\n"
15255 "msp 18/tcp # message send protocol\n"
15256 "msp 18/udp # message send protocol\n"
15257 "chargen 19/tcp ttytst source\n"
15258 "chargen 19/udp ttytst source\n"
15260 "# 22 - unassigned\n"
15264 #. type: Plain text
15265 #: build/C/man5/services.5:189
15266 msgid "The Internet network services list"
15270 #: build/C/man5/services.5:189
15272 msgid "I<E<lt>netdb.hE<gt>>"
15276 #. It's not clear when/if the following was ever true;
15277 #. it isn't true for glibc 2.8:
15278 #. There is a maximum of 35 aliases, due to the way the
15279 #. .BR getservent (3)
15280 #. code is written.
15282 #. It's not clear when/if the following was ever true;
15283 #. it isn't true for glibc 2.8:
15284 #. Lines longer than
15286 #. (currently 1024) characters will be ignored by
15287 #. .BR getservent (3),
15288 #. .BR getservbyname (3),
15290 #. .BR getservbyport (3).
15291 #. However, this will also cause the next line to be mis-parsed.
15292 #. type: Plain text
15293 #: build/C/man5/services.5:210
15294 msgid "Definition of B<_PATH_SERVICES>"
15297 #. type: Plain text
15298 #: build/C/man5/services.5:220
15300 "B<listen>(2), B<endservent>(3), B<getservbyname>(3), B<getservbyport>(3), "
15301 "B<getservent>(3), B<setservent>(3), B<inetd.conf>(5), B<protocols>(5), "
15305 #. type: Plain text
15306 #: build/C/man5/services.5:222
15307 msgid "Assigned Numbers RFC, most recently RFC\\ 1700, (AKA STD0002)."
15311 #: build/C/man3/setnetgrent.3:10
15313 msgid "SETNETGRENT"
15316 #. type: Plain text
15317 #: build/C/man3/setnetgrent.3:14
15319 "setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr - handle "
15320 "network group entries"
15323 #. type: Plain text
15324 #: build/C/man3/setnetgrent.3:19
15326 msgid "B<int setnetgrent(const char *>I<netgroup>B<);>\n"
15329 #. type: Plain text
15330 #: build/C/man3/setnetgrent.3:21
15332 msgid "B<void endnetgrent(void);>\n"
15335 #. type: Plain text
15336 #: build/C/man3/setnetgrent.3:23
15339 "B<int getnetgrent(char **>I<host>B<, char **>I<user>B<, char "
15340 "**>I<domain>B<);>\n"
15343 #. type: Plain text
15344 #: build/C/man3/setnetgrent.3:26
15347 "B<int getnetgrent_r(char **>I<host>B<, char **>I<user>B<,>\n"
15348 "B< char **>I<domain>B<, char *>I<buf>B<, size_t "
15349 ">I<buflen>B<);>\n"
15352 #. type: Plain text
15353 #: build/C/man3/setnetgrent.3:29
15356 "B<int innetgr(const char *>I<netgroup>B<, const char *>I<host>B<,>\n"
15357 "B< const char *>I<user>B<, const char *>I<domain>B<);>\n"
15360 #. type: Plain text
15361 #: build/C/man3/setnetgrent.3:43
15363 "B<setnetgrent>(), B<endnetgrent>(), B<getnetgrent>(), B<getnetgrent_r>(), "
15364 "B<innetgr>(): _BSD_SOURCE || _SVID_SOURCE"
15367 #. type: Plain text
15368 #: build/C/man3/setnetgrent.3:57
15370 "The I<netgroup> is a SunOS invention. A netgroup database is a list of "
15371 "string triples (I<hostname>, I<username>, I<domainname>) or other netgroup "
15372 "names. Any of the elements in a triple can be empty, which means that "
15373 "anything matches. The functions described here allow access to the netgroup "
15374 "databases. The file I</etc/nsswitch.conf> defines what database is "
15378 #. type: Plain text
15379 #: build/C/man3/setnetgrent.3:77
15381 "The B<setnetgrent>() call defines the netgroup that will be searched by "
15382 "subsequent B<getnetgrent>() calls. The B<getnetgrent>() function "
15383 "retrieves the next netgroup entry, and returns pointers in I<host>, I<user>, "
15384 "I<domain>. A null pointer means that the corresponding entry matches any "
15385 "string. The pointers are valid only as long as there is no call to other "
15386 "netgroup-related functions. To avoid this problem you can use the GNU "
15387 "function B<getnetgrent_r>() that stores the strings in the supplied "
15388 "buffer. To free all allocated buffers use B<endnetgrent>()."
15391 #. type: Plain text
15392 #: build/C/man3/setnetgrent.3:86
15394 "In most cases you want to check only if the triplet (I<hostname>, "
15395 "I<username>, I<domainname>) is a member of a netgroup. The function "
15396 "B<innetgr>() can be used for this without calling the above three "
15397 "functions. Again, a null pointer is a wildcard and matches any string. The "
15398 "function is thread-safe."
15401 #. type: Plain text
15402 #: build/C/man3/setnetgrent.3:88
15403 msgid "These functions return 1 on success and 0 for failure."
15406 #. type: Plain text
15407 #: build/C/man3/setnetgrent.3:90
15408 msgid "I</etc/netgroup>"
15411 #. getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs.
15412 #. type: Plain text
15413 #: build/C/man3/setnetgrent.3:103
15415 "These functions are not in POSIX.1-2001, but B<setnetgrent>(), "
15416 "B<endnetgrent>(), B<getnetgrent>(), and B<innetgr>() are available on most "
15417 "UNIX systems. B<getnetgrent_r>() is not widely available on other systems."
15420 #. type: Plain text
15421 #: build/C/man3/setnetgrent.3:107
15422 msgid "In the BSD implementation, B<setnetgrent>() returns void."
15425 #. type: Plain text
15426 #: build/C/man3/setnetgrent.3:111
15427 msgid "B<sethostent>(3), B<setprotoent>(3), B<setservent>(3)"
15431 #: build/C/man2/shutdown.2:40
15437 #: build/C/man2/shutdown.2:40
15442 #. type: Plain text
15443 #: build/C/man2/shutdown.2:43
15444 msgid "shutdown - shut down part of a full-duplex connection"
15447 #. type: Plain text
15448 #: build/C/man2/shutdown.2:47
15449 msgid "B<int shutdown(int >I<sockfd>B<, int >I<how>B<);>"
15452 #. type: Plain text
15453 #: build/C/man2/shutdown.2:69
15455 "The B<shutdown>() call causes all or part of a full-duplex connection on "
15456 "the socket associated with I<sockfd> to be shut down. If I<how> is "
15457 "B<SHUT_RD>, further receptions will be disallowed. If I<how> is B<SHUT_WR>, "
15458 "further transmissions will be disallowed. If I<how> is B<SHUT_RDWR>, "
15459 "further receptions and transmissions will be disallowed."
15462 #. type: Plain text
15463 #: build/C/man2/shutdown.2:79
15464 msgid "I<sockfd> is not a valid descriptor."
15467 #. type: Plain text
15468 #: build/C/man2/shutdown.2:84
15469 msgid "An invalid value was specified in I<how> (but see BUGS)."
15472 #. type: Plain text
15473 #: build/C/man2/shutdown.2:87
15474 msgid "The specified socket is not connected."
15477 #. type: Plain text
15478 #: build/C/man2/shutdown.2:91
15479 msgid "I<sockfd> is a file, not a socket."
15482 #. type: Plain text
15483 #: build/C/man2/shutdown.2:95
15485 "POSIX.1-2001, 4.4BSD (the B<shutdown>() function call first appeared in "
15489 #. type: Plain text
15490 #: build/C/man2/shutdown.2:104
15492 "The constants B<SHUT_RD>, B<SHUT_WR>, B<SHUT_RDWR> have the value 0, 1, 2, "
15493 "respectively, and are defined in I<E<lt>sys/socket.hE<gt>> since "
15498 #. https://bugzilla.kernel.org/show_bug.cgi?id=47111
15499 #. type: Plain text
15500 #: build/C/man2/shutdown.2:113
15502 "As currently implemented, checks for the validity of I<how> are done in "
15503 "domain-specific code, and not all domains perform these checks. Most "
15504 "notably, UNIX domain sockets simply ignore invalid values; this may change "
15508 #. type: Plain text
15509 #: build/C/man2/shutdown.2:117
15510 msgid "B<connect>(2), B<socket>(2), B<socket>(7)"
15514 #: build/C/man7/tcp.7:76
15520 #: build/C/man7/tcp.7:76
15525 #. type: Plain text
15526 #: build/C/man7/tcp.7:79
15527 msgid "tcp - TCP protocol"
15530 #. type: Plain text
15531 #: build/C/man7/tcp.7:85
15532 msgid "B<#include E<lt>netinet/tcp.hE<gt>>"
15535 #. type: Plain text
15536 #: build/C/man7/tcp.7:87
15537 msgid "B<tcp_socket = socket(AF_INET, SOCK_STREAM, 0);>"
15540 #. type: Plain text
15541 #: build/C/man7/tcp.7:100
15543 "This is an implementation of the TCP protocol defined in RFC\\ 793, RFC\\ "
15544 "1122 and RFC\\ 2001 with the NewReno and SACK extensions. It provides a "
15545 "reliable, stream-oriented, full-duplex connection between two sockets on top "
15546 "of B<ip>(7), for both v4 and v6 versions. TCP guarantees that the data "
15547 "arrives in order and retransmits lost packets. It generates and checks a "
15548 "per-packet checksum to catch transmission errors. TCP does not preserve "
15549 "record boundaries."
15552 #. type: Plain text
15553 #: build/C/man7/tcp.7:119
15555 "A newly created TCP socket has no remote or local address and is not fully "
15556 "specified. To create an outgoing TCP connection use B<connect>(2) to "
15557 "establish a connection to another TCP socket. To receive new incoming "
15558 "connections, first B<bind>(2) the socket to a local address and port and "
15559 "then call B<listen>(2) to put the socket into the listening state. After "
15560 "that a new socket for each incoming connection can be accepted using "
15561 "B<accept>(2). A socket which has had B<accept>(2) or B<connect>(2) "
15562 "successfully called on it is fully specified and may transmit data. Data "
15563 "cannot be transmitted on listening or not yet connected sockets."
15566 #. type: Plain text
15567 #: build/C/man7/tcp.7:139
15569 "Linux supports RFC\\ 1323 TCP high performance extensions. These include "
15570 "Protection Against Wrapped Sequence Numbers (PAWS), Window Scaling and "
15571 "Timestamps. Window scaling allows the use of large (E<gt> 64K) TCP windows "
15572 "in order to support links with high latency or bandwidth. To make use of "
15573 "them, the send and receive buffer sizes must be increased. They can be set "
15574 "globally with the I</proc/sys/net/ipv4/tcp_wmem> and "
15575 "I</proc/sys/net/ipv4/tcp_rmem> files, or on individual sockets by using the "
15576 "B<SO_SNDBUF> and B<SO_RCVBUF> socket options with the B<setsockopt>(2) "
15580 #. type: Plain text
15581 #: build/C/man7/tcp.7:170
15583 "The maximum sizes for socket buffers declared via the B<SO_SNDBUF> and "
15584 "B<SO_RCVBUF> mechanisms are limited by the values in the "
15585 "I</proc/sys/net/core/rmem_max> and I</proc/sys/net/core/wmem_max> files. "
15586 "Note that TCP actually allocates twice the size of the buffer requested in "
15587 "the B<setsockopt>(2) call, and so a succeeding B<getsockopt>(2) call will "
15588 "not return the same size of buffer as requested in the B<setsockopt>(2) "
15589 "call. TCP uses the extra space for administrative purposes and internal "
15590 "kernel structures, and the I</proc> file values reflect the larger sizes "
15591 "compared to the actual TCP windows. On individual connections, the socket "
15592 "buffer size must be set prior to the B<listen>(2) or B<connect>(2) calls "
15593 "in order to have it take effect. See B<socket>(7) for more information."
15596 #. type: Plain text
15597 #: build/C/man7/tcp.7:202
15599 "TCP supports urgent data. Urgent data is used to signal the receiver that "
15600 "some important message is part of the data stream and that it should be "
15601 "processed as soon as possible. To send urgent data specify the B<MSG_OOB> "
15602 "option to B<send>(2). When urgent data is received, the kernel sends a "
15603 "B<SIGURG> signal to the process or process group that has been set as the "
15604 "socket \"owner\" using the B<SIOCSPGRP> or B<FIOSETOWN> ioctls (or the "
15605 "POSIX.1-2001-specified B<fcntl>(2) B<F_SETOWN> operation). When the "
15606 "B<SO_OOBINLINE> socket option is enabled, urgent data is put into the normal "
15607 "data stream (a program can test for its location using the B<SIOCATMARK> "
15608 "ioctl described below), otherwise it can be received only when the "
15609 "B<MSG_OOB> flag is set for B<recv>(2) or B<recvmsg>(2)."
15612 #. type: Plain text
15613 #: build/C/man7/tcp.7:210
15615 "Linux 2.4 introduced a number of changes for improved throughput and "
15616 "scaling, as well as enhanced functionality. Some of these features include "
15617 "support for zero-copy B<sendfile>(2), Explicit Congestion Notification, new "
15618 "management of TIME_WAIT sockets, keep-alive socket options and support for "
15619 "Duplicate SACK extensions."
15623 #: build/C/man7/tcp.7:210
15625 msgid "Address formats"
15628 #. type: Plain text
15629 #: build/C/man7/tcp.7:219
15631 "TCP is built on top of IP (see B<ip>(7)). The address formats defined by "
15632 "B<ip>(7) apply to TCP. TCP supports point-to-point communication only; "
15633 "broadcasting and multicasting are not supported."
15636 #. type: Plain text
15637 #: build/C/man7/tcp.7:231
15639 "System-wide TCP parameter settings can be accessed by files in the directory "
15640 "I</proc/sys/net/ipv4/>. In addition, most IP I</proc> interfaces also apply "
15641 "to TCP; see B<ip>(7). Variables described as I<Boolean> take an integer "
15642 "value, with a nonzero value (\"true\") meaning that the corresponding option "
15643 "is enabled, and a zero value (\"false\") meaning that the option is "
15648 #: build/C/man7/tcp.7:231
15650 msgid "I<tcp_abc> (Integer; default: 0; since Linux 2.6.15)"
15653 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
15654 #. type: Plain text
15655 #: build/C/man7/tcp.7:239
15657 "Control the Appropriate Byte Count (ABC), defined in RFC 3465. ABC is a way "
15658 "of increasing the congestion window (I<cwnd>) more slowly in response to "
15659 "partial acknowledgments. Possible values are:"
15663 #: build/C/man7/tcp.7:240 build/C/man7/tcp.7:428 build/C/man7/tcp.7:449 build/C/man7/tcp.7:593
15668 #. type: Plain text
15669 #: build/C/man7/tcp.7:244
15670 msgid "increase I<cwnd> once per acknowledgment (no ABC)"
15674 #: build/C/man7/tcp.7:244 build/C/man7/tcp.7:430 build/C/man7/tcp.7:456 build/C/man7/tcp.7:595
15679 #. type: Plain text
15680 #: build/C/man7/tcp.7:248
15681 msgid "increase I<cwnd> once per acknowledgment of full sized segment"
15685 #: build/C/man7/tcp.7:248 build/C/man7/tcp.7:432 build/C/man7/tcp.7:463 build/C/man7/tcp.7:597
15690 #. type: Plain text
15691 #: build/C/man7/tcp.7:253
15693 "allow increase I<cwnd> by two if acknowledgment is of two segments to "
15694 "compensate for delayed acknowledgments."
15698 #: build/C/man7/tcp.7:254
15700 msgid "I<tcp_abort_on_overflow> (Boolean; default: disabled; since Linux 2.4)"
15704 #. type: Plain text
15705 #: build/C/man7/tcp.7:266
15707 "Enable resetting connections if the listening service is too slow and unable "
15708 "to keep up and accept them. It means that if overflow occurred due to a "
15709 "burst, the connection will recover. Enable this option I<only> if you are "
15710 "really sure that the listening daemon cannot be tuned to accept connections "
15711 "faster. Enabling this option can harm the clients of your server."
15715 #: build/C/man7/tcp.7:266
15717 msgid "I<tcp_adv_win_scale> (integer; default: 2; since Linux 2.4)"
15720 #. Since 2.4.0-test7
15721 #. type: Plain text
15722 #: build/C/man7/tcp.7:278
15724 "Count buffering overhead as I<bytes/2^tcp_adv_win_scale>, if "
15725 "I<tcp_adv_win_scale> is greater than 0; or "
15726 "I<bytes-bytes/2^(-tcp_adv_win_scale)>, if I<tcp_adv_win_scale> is less than "
15727 "or equal to zero."
15730 #. type: Plain text
15731 #: build/C/man7/tcp.7:291
15733 "The socket receive buffer space is shared between the application and "
15734 "kernel. TCP maintains part of the buffer as the TCP window, this is the "
15735 "size of the receive window advertised to the other end. The rest of the "
15736 "space is used as the \"application\" buffer, used to isolate the network "
15737 "from scheduling and application latencies. The I<tcp_adv_win_scale> default "
15738 "value of 2 implies that the space used for the application buffer is one "
15739 "fourth that of the total."
15743 #: build/C/man7/tcp.7:291
15746 "I<tcp_allowed_congestion_control> (String; default: see text; since Linux "
15750 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
15751 #. type: Plain text
15752 #: build/C/man7/tcp.7:304
15754 "Show/set the congestion control algorithm choices available to unprivileged "
15755 "processes (see the description of the B<TCP_CONGESTION> socket option). The "
15756 "items in the list are separated by white space and terminated by a newline "
15757 "character. The list is a subset of those listed in "
15758 "I<tcp_available_congestion_control>. The default value for this list is "
15759 "\"reno\" plus the default setting of I<tcp_congestion_control>."
15763 #: build/C/man7/tcp.7:304
15765 msgid "I<tcp_autocorking> (Boolean; default: enabled; since Linux 3.14)"
15768 #. commit f54b311142a92ea2e42598e347b84e1655caf8e3
15769 #. Text heavily based on Documentation/networking/ip-sysctl.txt
15770 #. type: Plain text
15771 #: build/C/man7/tcp.7:321
15773 "If this option is enabled, the kernel tries to coalesce small writes (from "
15774 "consecutive B<write>(2) and B<sendmsg>(2) calls) as much as possible, in "
15775 "order to decrease the total number of sent packets. Coalescing is done if "
15776 "at least one prior packet for the flow is waiting in Qdisc queues or device "
15777 "transmit queue. Applications can still use the B<TCP_CORK> socket option to "
15778 "obtain optimal behavior when they know how/when to uncork their sockets."
15782 #: build/C/man7/tcp.7:321
15784 msgid "I<tcp_available_congestion_control> (String; read-only; since Linux 2.4.20)"
15787 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
15788 #. type: Plain text
15789 #: build/C/man7/tcp.7:332
15791 "Show a list of the congestion-control algorithms that are registered. The "
15792 "items in the list are separated by white space and terminated by a newline "
15793 "character. This list is a limiting set for the list in "
15794 "I<tcp_allowed_congestion_control>. More congestion-control algorithms may "
15795 "be available as modules, but not loaded."
15799 #: build/C/man7/tcp.7:332
15801 msgid "I<tcp_app_win> (integer; default: 31; since Linux 2.4)"
15804 #. Since 2.4.0-test7
15805 #. type: Plain text
15806 #: build/C/man7/tcp.7:337
15808 "This variable defines how many bytes of the TCP window are reserved for "
15809 "buffering overhead."
15813 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
15814 #. type: Plain text
15815 #: build/C/man7/tcp.7:343
15817 "A maximum of (I<window/2^tcp_app_win>, mss) bytes in the window are reserved "
15818 "for the application buffer. A value of 0 implies that no amount is "
15823 #: build/C/man7/tcp.7:343
15825 msgid "I<tcp_base_mss> (Integer; default: 512; since Linux 2.6.17)"
15829 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
15830 #. type: Plain text
15831 #: build/C/man7/tcp.7:352
15833 "The initial value of I<search_low> to be used by the packetization layer "
15834 "Path MTU discovery (MTU probing). If MTU probing is enabled, this is the "
15835 "initial MSS used by the connection."
15839 #: build/C/man7/tcp.7:352
15841 msgid "I<tcp_bic> (Boolean; default: disabled; Linux 2.4.27/2.6.6 to 2.6.13)"
15845 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
15846 #. type: Plain text
15847 #: build/C/man7/tcp.7:366
15849 "Enable BIC TCP congestion control algorithm. BIC-TCP is a sender-side-only "
15850 "change that ensures a linear RTT fairness under large windows while offering "
15851 "both scalability and bounded TCP-friendliness. The protocol combines two "
15852 "schemes called additive increase and binary search increase. When the "
15853 "congestion window is large, additive increase with a large increment ensures "
15854 "linear RTT fairness as well as good scalability. Under small congestion "
15855 "windows, binary search increase provides TCP friendliness."
15859 #: build/C/man7/tcp.7:366
15861 msgid "I<tcp_bic_low_window> (integer; default: 14; Linux 2.4.27/2.6.6 to 2.6.13)"
15865 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
15866 #. type: Plain text
15867 #: build/C/man7/tcp.7:373
15869 "Set the threshold window (in packets) where BIC TCP starts to adjust the "
15870 "congestion window. Below this threshold BIC TCP behaves the same as the "
15871 "default TCP Reno."
15875 #: build/C/man7/tcp.7:373
15878 "I<tcp_bic_fast_convergence> (Boolean; default: enabled; Linux 2.4.27/2.6.6 "
15882 #. type: Plain text
15883 #: build/C/man7/tcp.7:377
15885 "Force BIC TCP to more quickly respond to changes in congestion window. "
15886 "Allows two flows sharing the same connection to converge more rapidly."
15890 #: build/C/man7/tcp.7:377
15892 msgid "I<tcp_congestion_control> (String; default: see text; since Linux 2.4.13)"
15895 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
15896 #. type: Plain text
15897 #: build/C/man7/tcp.7:384
15899 "Set the default congestion-control algorithm to be used for new "
15900 "connections. The algorithm \"reno\" is always available, but additional "
15901 "choices may be available depending on kernel configuration. The default "
15902 "value for this file is set as part of kernel configuration."
15906 #: build/C/man7/tcp.7:384
15908 msgid "I<tcp_dma_copybreak> (integer; default: 4096; since Linux 2.6.24)"
15911 #. type: Plain text
15912 #: build/C/man7/tcp.7:391
15914 "Lower limit, in bytes, of the size of socket reads that will be offloaded to "
15915 "a DMA copy engine, if one is present in the system and the kernel was "
15916 "configured with the B<CONFIG_NET_DMA> option."
15920 #: build/C/man7/tcp.7:391
15922 msgid "I<tcp_dsack> (Boolean; default: enabled; since Linux 2.4)"
15925 #. Since 2.4.0-test7
15926 #. type: Plain text
15927 #: build/C/man7/tcp.7:395
15928 msgid "Enable RFC\\ 2883 TCP Duplicate SACK support."
15932 #: build/C/man7/tcp.7:395
15934 msgid "I<tcp_ecn> (Boolean; default: disabled; since Linux 2.4)"
15937 #. Since 2.4.0-test7
15938 #. type: Plain text
15939 #: build/C/man7/tcp.7:402
15941 "Enable RFC\\ 2884 Explicit Congestion Notification. When enabled, "
15942 "connectivity to some destinations could be affected due to older, "
15943 "misbehaving routers along the path causing connections to be dropped."
15947 #: build/C/man7/tcp.7:402
15949 msgid "I<tcp_fack> (Boolean; default: enabled; since Linux 2.2)"
15953 #. type: Plain text
15954 #: build/C/man7/tcp.7:406
15955 msgid "Enable TCP Forward Acknowledgement support."
15959 #: build/C/man7/tcp.7:406
15961 msgid "I<tcp_fin_timeout> (integer; default: 60; since Linux 2.2)"
15966 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
15967 #. type: Plain text
15968 #: build/C/man7/tcp.7:416
15970 "This specifies how many seconds to wait for a final FIN packet before the "
15971 "socket is forcibly closed. This is strictly a violation of the TCP "
15972 "specification, but required to prevent denial-of-service attacks. In Linux "
15973 "2.2, the default value was 180."
15977 #: build/C/man7/tcp.7:416
15979 msgid "I<tcp_frto> (integer; default: 0; since Linux 2.4.21/2.6)"
15982 #. Since 2.4.21/2.5.43
15983 #. type: Plain text
15984 #: build/C/man7/tcp.7:425
15986 "Enable F-RTO, an enhanced recovery algorithm for TCP retransmission timeouts "
15987 "(RTOs). It is particularly beneficial in wireless environments where packet "
15988 "loss is typically due to random radio interference rather than intermediate "
15989 "router congestion. See RFC 4138 for more details."
15992 #. type: Plain text
15993 #: build/C/man7/tcp.7:427
15994 msgid "This file can have one of the following values:"
15997 #. type: Plain text
15998 #: build/C/man7/tcp.7:430
16002 #. type: Plain text
16003 #: build/C/man7/tcp.7:432
16004 msgid "The basic version F-RTO algorithm is enabled."
16007 #. type: Plain text
16008 #: build/C/man7/tcp.7:437
16010 "Enable SACK-enhanced F-RTO if flow uses SACK. The basic version can be used "
16011 "also when SACK is in use though in that case scenario(s) exists where F-RTO "
16012 "interacts badly with the packet counting of the SACK-enabled TCP flow."
16015 #. type: Plain text
16016 #: build/C/man7/tcp.7:441
16018 "Before Linux 2.6.22, this parameter was a Boolean value, supporting just "
16019 "values 0 and 1 above."
16023 #: build/C/man7/tcp.7:441
16025 msgid "I<tcp_frto_response> (integer; default: 0; since Linux 2.6.22)"
16028 #. type: Plain text
16029 #: build/C/man7/tcp.7:448
16031 "When F-RTO has detected that a TCP retransmission timeout was spurious (i.e, "
16032 "the timeout would have been avoided had TCP set a longer retransmission "
16033 "timeout), TCP has several options concerning what to do next. Possible "
16037 #. type: Plain text
16038 #: build/C/man7/tcp.7:456
16040 "Rate halving based; a smooth and conservative response, results in halved "
16041 "congestion window (I<cwnd>) and slow-start threshold (I<ssthresh>) after "
16045 #. type: Plain text
16046 #: build/C/man7/tcp.7:463
16048 "Very conservative response; not recommended because even though being valid, "
16049 "it interacts poorly with the rest of Linux TCP; halves I<cwnd> and "
16050 "I<ssthresh> immediately."
16053 #. type: Plain text
16054 #: build/C/man7/tcp.7:472
16056 "Aggressive response; undoes congestion-control measures that are now known "
16057 "to be unnecessary (ignoring the possibility of a lost retransmission that "
16058 "would require TCP to be more cautious); I<cwnd> and I<ssthresh> are restored "
16059 "to the values prior to timeout."
16063 #: build/C/man7/tcp.7:473
16065 msgid "I<tcp_keepalive_intvl> (integer; default: 75; since Linux 2.4)"
16069 #. type: Plain text
16070 #: build/C/man7/tcp.7:477
16071 msgid "The number of seconds between TCP keep-alive probes."
16075 #: build/C/man7/tcp.7:477
16077 msgid "I<tcp_keepalive_probes> (integer; default: 9; since Linux 2.2)"
16081 #. type: Plain text
16082 #: build/C/man7/tcp.7:483
16084 "The maximum number of TCP keep-alive probes to send before giving up and "
16085 "killing the connection if no response is obtained from the other end."
16089 #: build/C/man7/tcp.7:483
16091 msgid "I<tcp_keepalive_time> (integer; default: 7200; since Linux 2.2)"
16095 #. type: Plain text
16096 #: build/C/man7/tcp.7:495
16098 "The number of seconds a connection needs to be idle before TCP begins "
16099 "sending out keep-alive probes. Keep-alives are sent only when the "
16100 "B<SO_KEEPALIVE> socket option is enabled. The default value is 7200 seconds "
16101 "(2 hours). An idle connection is terminated after approximately an "
16102 "additional 11 minutes (9 probes an interval of 75 seconds apart) when "
16103 "keep-alive is enabled."
16107 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
16108 #. type: Plain text
16109 #: build/C/man7/tcp.7:500
16111 "Note that underlying connection tracking mechanisms and application timeouts "
16112 "may be much shorter."
16116 #: build/C/man7/tcp.7:500
16118 msgid "I<tcp_low_latency> (Boolean; default: disabled; since Linux 2.4.21/2.6)"
16121 #. Since 2.4.21/2.5.60
16122 #. type: Plain text
16123 #: build/C/man7/tcp.7:508
16125 "If enabled, the TCP stack makes decisions that prefer lower latency as "
16126 "opposed to higher throughput. It this option is disabled, then higher "
16127 "throughput is preferred. An example of an application where this default "
16128 "should be changed would be a Beowulf compute cluster."
16132 #: build/C/man7/tcp.7:508
16134 msgid "I<tcp_max_orphans> (integer; default: see below; since Linux 2.4)"
16138 #. type: Plain text
16139 #: build/C/man7/tcp.7:522
16141 "The maximum number of orphaned (not attached to any user file handle) TCP "
16142 "sockets allowed in the system. When this number is exceeded, the orphaned "
16143 "connection is reset and a warning is printed. This limit exists only to "
16144 "prevent simple denial-of-service attacks. Lowering this limit is not "
16145 "recommended. Network conditions might require you to increase the number of "
16146 "orphans allowed, but note that each orphan can eat up to ~64K of unswappable "
16147 "memory. The default initial value is set equal to the kernel parameter "
16148 "NR_FILE. This initial default is adjusted depending on the memory in the "
16153 #: build/C/man7/tcp.7:522
16155 msgid "I<tcp_max_syn_backlog> (integer; default: see below; since Linux 2.2)"
16159 #. type: Plain text
16160 #: build/C/man7/tcp.7:539
16162 "The maximum number of queued connection requests which have still not "
16163 "received an acknowledgement from the connecting client. If this number is "
16164 "exceeded, the kernel will begin dropping requests. The default value of 256 "
16165 "is increased to 1024 when the memory present in the system is adequate or "
16166 "greater (E<gt>= 128Mb), and reduced to 128 for those systems with very low "
16167 "memory (E<lt>= 32Mb). It is recommended that if this needs to be increased "
16168 "above 1024, TCP_SYNQ_HSIZE in I<include/net/tcp.h> be modified to keep "
16169 "TCP_SYNQ_HSIZE*16E<lt>=tcp_max_syn_backlog, and the kernel be recompiled."
16173 #: build/C/man7/tcp.7:539
16175 msgid "I<tcp_max_tw_buckets> (integer; default: see below; since Linux 2.4)"
16179 #. type: Plain text
16180 #: build/C/man7/tcp.7:549
16182 "The maximum number of sockets in TIME_WAIT state allowed in the system. "
16183 "This limit exists only to prevent simple denial-of-service attacks. The "
16184 "default value of NR_FILE*2 is adjusted depending on the memory in the "
16185 "system. If this number is exceeded, the socket is closed and a warning is "
16190 #: build/C/man7/tcp.7:549
16192 msgid "I<tcp_moderate_rcvbuf> (Boolean; default: enabled; since Linux 2.4.17/2.6.7)"
16195 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
16196 #. type: Plain text
16197 #: build/C/man7/tcp.7:556
16199 "If enabled, TCP performs receive buffer auto-tuning, attempting to "
16200 "automatically size the buffer (no greater than I<tcp_rmem[2]>) to match the "
16201 "size required by the path for full throughput."
16205 #: build/C/man7/tcp.7:556
16207 msgid "I<tcp_mem> (since Linux 2.4)"
16210 #. Since 2.4.0-test7
16211 #. type: Plain text
16212 #: build/C/man7/tcp.7:568
16214 "This is a vector of 3 integers: [low, pressure, high]. These bounds, "
16215 "measured in units of the system page size, are used by TCP to track its "
16216 "memory usage. The defaults are calculated at boot time from the amount of "
16217 "available memory. (TCP can only use I<low memory> for this, which is "
16218 "limited to around 900 megabytes on 32-bit systems. 64-bit systems do not "
16219 "suffer this limitation.)"
16223 #: build/C/man7/tcp.7:569
16228 #. type: Plain text
16229 #: build/C/man7/tcp.7:573
16231 "TCP doesn't regulate its memory allocation when the number of pages it has "
16232 "allocated globally is below this number."
16236 #: build/C/man7/tcp.7:573 build/C/man7/udp.7:151
16238 msgid "I<pressure>"
16241 #. type: Plain text
16242 #: build/C/man7/tcp.7:582
16244 "When the amount of memory allocated by TCP exceeds this number of pages, TCP "
16245 "moderates its memory consumption. This memory pressure state is exited once "
16246 "the number of pages allocated falls below the I<low> mark."
16250 #: build/C/man7/tcp.7:582
16255 #. type: Plain text
16256 #: build/C/man7/tcp.7:586
16258 "The maximum number of pages, globally, that TCP will allocate. This value "
16259 "overrides any other limits imposed by the kernel."
16263 #: build/C/man7/tcp.7:587
16265 msgid "I<tcp_mtu_probing> (integer; default: 0; since Linux 2.6.17)"
16268 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
16269 #. type: Plain text
16270 #: build/C/man7/tcp.7:592
16272 "This parameter controls TCP Packetization-Layer Path MTU Discovery. The "
16273 "following values may be assigned to the file:"
16276 #. type: Plain text
16277 #: build/C/man7/tcp.7:595
16281 #. type: Plain text
16282 #: build/C/man7/tcp.7:597
16283 msgid "Disabled by default, enabled when an ICMP black hole detected"
16286 #. type: Plain text
16287 #: build/C/man7/tcp.7:600
16288 msgid "Always enabled, use initial MSS of I<tcp_base_mss>."
16292 #: build/C/man7/tcp.7:601
16294 msgid "I<tcp_no_metrics_save> (Boolean; default: disabled; since Linux 2.6.6)"
16297 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
16298 #. type: Plain text
16299 #: build/C/man7/tcp.7:612
16301 "By default, TCP saves various connection metrics in the route cache when the "
16302 "connection closes, so that connections established in the near future can "
16303 "use these to set initial conditions. Usually, this increases overall "
16304 "performance, but it may sometimes cause performance degradation. If "
16305 "I<tcp_no_metrics_save> is enabled, TCP will not cache metrics on closing "
16310 #: build/C/man7/tcp.7:612
16312 msgid "I<tcp_orphan_retries> (integer; default: 8; since Linux 2.4)"
16316 #. type: Plain text
16317 #: build/C/man7/tcp.7:617
16319 "The maximum number of attempts made to probe the other end of a connection "
16320 "which has been closed by our end."
16324 #: build/C/man7/tcp.7:617
16326 msgid "I<tcp_reordering> (integer; default: 3; since Linux 2.4)"
16329 #. Since 2.4.0-test7
16330 #. type: Plain text
16331 #: build/C/man7/tcp.7:626
16333 "The maximum a packet can be reordered in a TCP packet stream without TCP "
16334 "assuming packet loss and going into slow start. It is not advisable to "
16335 "change this number. This is a packet reordering detection metric designed "
16336 "to minimize unnecessary back off and retransmits provoked by reordering of "
16337 "packets on a connection."
16341 #: build/C/man7/tcp.7:626
16343 msgid "I<tcp_retrans_collapse> (Boolean; default: enabled; since Linux 2.2)"
16347 #. type: Plain text
16348 #: build/C/man7/tcp.7:630
16349 msgid "Try to send full-sized packets during retransmit."
16353 #: build/C/man7/tcp.7:630
16355 msgid "I<tcp_retries1> (integer; default: 3; since Linux 2.2)"
16359 #. type: Plain text
16360 #: build/C/man7/tcp.7:640
16362 "The number of times TCP will attempt to retransmit a packet on an "
16363 "established connection normally, without the extra effort of getting the "
16364 "network layers involved. Once we exceed this number of retransmits, we "
16365 "first have the network layer update the route if possible before each new "
16366 "retransmit. The default is the RFC specified minimum of 3."
16370 #: build/C/man7/tcp.7:640
16372 msgid "I<tcp_retries2> (integer; default: 15; since Linux 2.2)"
16376 #. type: Plain text
16377 #: build/C/man7/tcp.7:650
16379 "The maximum number of times a TCP packet is retransmitted in established "
16380 "state before giving up. The default value is 15, which corresponds to a "
16381 "duration of approximately between 13 to 30 minutes, depending on the "
16382 "retransmission timeout. The RFC\\ 1122 specified minimum limit of 100 "
16383 "seconds is typically deemed too short."
16387 #: build/C/man7/tcp.7:650
16389 msgid "I<tcp_rfc1337> (Boolean; default: disabled; since Linux 2.2)"
16393 #. type: Plain text
16394 #: build/C/man7/tcp.7:658
16396 "Enable TCP behavior conformant with RFC\\ 1337. When disabled, if a RST is "
16397 "received in TIME_WAIT state, we close the socket immediately without waiting "
16398 "for the end of the TIME_WAIT period."
16402 #: build/C/man7/tcp.7:658
16404 msgid "I<tcp_rmem> (since Linux 2.4)"
16407 #. Since 2.4.0-test7
16408 #. type: Plain text
16409 #: build/C/man7/tcp.7:666
16411 "This is a vector of 3 integers: [min, default, max]. These parameters are "
16412 "used by TCP to regulate receive buffer sizes. TCP dynamically adjusts the "
16413 "size of the receive buffer from the defaults listed below, in the range of "
16414 "these values, depending on memory available in the system."
16418 #: build/C/man7/tcp.7:667 build/C/man7/tcp.7:844 build/C/man7/udp.7:145
16423 #. type: Plain text
16424 #: build/C/man7/tcp.7:682
16426 "minimum size of the receive buffer used by each TCP socket. The default "
16427 "value is the system page size. (On Linux 2.4, the default value is 4K, "
16428 "lowered to B<PAGE_SIZE> bytes in low-memory systems.) This value is used to "
16429 "ensure that in memory pressure mode, allocations below this size will still "
16430 "succeed. This is not used to bound the size of the receive buffer declared "
16431 "using B<SO_RCVBUF> on a socket."
16435 #: build/C/man7/tcp.7:682 build/C/man7/tcp.7:854
16440 #. type: Plain text
16441 #: build/C/man7/tcp.7:696
16443 "the default size of the receive buffer for a TCP socket. This value "
16444 "overwrites the initial default buffer size from the generic global "
16445 "I<net.core.rmem_default> defined for all protocols. The default value is "
16446 "87380 bytes. (On Linux 2.4, this will be lowered to 43689 in low-memory "
16447 "systems.) If larger receive buffer sizes are desired, this value should be "
16448 "increased (to affect all sockets). To employ large TCP windows, the "
16449 "I<net.ipv4.tcp_window_scaling> must be enabled (default)."
16453 #: build/C/man7/tcp.7:696 build/C/man7/tcp.7:868 build/C/man7/udp.7:157
16458 #. type: Plain text
16459 #: build/C/man7/tcp.7:705
16461 "the maximum size of the receive buffer used by each TCP socket. This value "
16462 "does not override the global I<net.core.rmem_max>. This is not used to "
16463 "limit the size of the receive buffer declared using B<SO_RCVBUF> on a "
16464 "socket. The default value is calculated using the formula"
16467 #. type: Plain text
16468 #: build/C/man7/tcp.7:707
16470 msgid " max(87380, min(4MB, I<tcp_mem>[1]*PAGE_SIZE/128))\n"
16473 #. type: Plain text
16474 #: build/C/man7/tcp.7:710
16476 "(On Linux 2.4, the default is 87380*2 bytes, lowered to 87380 in low-memory "
16481 #: build/C/man7/tcp.7:711
16483 msgid "I<tcp_sack> (Boolean; default: enabled; since Linux 2.2)"
16487 #. type: Plain text
16488 #: build/C/man7/tcp.7:715
16489 msgid "Enable RFC\\ 2018 TCP Selective Acknowledgements."
16493 #: build/C/man7/tcp.7:715
16495 msgid "I<tcp_slow_start_after_idle> (Boolean; default: enabled; since Linux 2.6.18)"
16498 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
16499 #. type: Plain text
16500 #: build/C/man7/tcp.7:723
16502 "If enabled, provide RFC 2861 behavior and time out the congestion window "
16503 "after an idle period. An idle period is defined as the current RTO "
16504 "(retransmission timeout). If disabled, the congestion window will not be "
16505 "timed out after an idle period."
16509 #: build/C/man7/tcp.7:723
16511 msgid "I<tcp_stdurg> (Boolean; default: disabled; since Linux 2.2)"
16515 #. RFC 793 was ambiguous in its specification of the meaning of the
16516 #. urgent pointer. RFC 1122 (and RFC 961) fixed on a particular
16517 #. resolution of this ambiguity (unfortunately the "wrong" one).
16518 #. type: Plain text
16519 #: build/C/man7/tcp.7:737
16521 "If this option is enabled, then use the RFC\\ 1122 interpretation of the TCP "
16522 "urgent-pointer field. According to this interpretation, the urgent pointer "
16523 "points to the last byte of urgent data. If this option is disabled, then "
16524 "use the BSD-compatible interpretation of the urgent pointer: the urgent "
16525 "pointer points to the first byte after the urgent data. Enabling this "
16526 "option may lead to interoperability problems."
16530 #: build/C/man7/tcp.7:737
16532 msgid "I<tcp_syn_retries> (integer; default: 5; since Linux 2.2)"
16536 #. type: Plain text
16537 #: build/C/man7/tcp.7:744
16539 "The maximum number of times initial SYNs for an active TCP connection "
16540 "attempt will be retransmitted. This value should not be higher than 255. "
16541 "The default value is 5, which corresponds to approximately 180 seconds."
16545 #: build/C/man7/tcp.7:744
16547 msgid "I<tcp_synack_retries> (integer; default: 5; since Linux 2.2)"
16551 #. type: Plain text
16552 #: build/C/man7/tcp.7:750
16554 "The maximum number of times a SYN/ACK segment for a passive TCP connection "
16555 "will be retransmitted. This number should not be higher than 255."
16559 #: build/C/man7/tcp.7:750
16561 msgid "I<tcp_syncookies> (Boolean; since Linux 2.2)"
16565 #. type: Plain text
16566 #: build/C/man7/tcp.7:770
16568 "Enable TCP syncookies. The kernel must be compiled with "
16569 "B<CONFIG_SYN_COOKIES>. Send out syncookies when the syn backlog queue of a "
16570 "socket overflows. The syncookies feature attempts to protect a socket from "
16571 "a SYN flood attack. This should be used as a last resort, if at all. This "
16572 "is a violation of the TCP protocol, and conflicts with other areas of TCP "
16573 "such as TCP extensions. It can cause problems for clients and relays. It "
16574 "is not recommended as a tuning mechanism for heavily loaded servers to help "
16575 "with overloaded or misconfigured conditions. For recommended alternatives "
16576 "see I<tcp_max_syn_backlog>, I<tcp_synack_retries>, and "
16577 "I<tcp_abort_on_overflow>."
16581 #: build/C/man7/tcp.7:770
16583 msgid "I<tcp_timestamps> (Boolean; default: enabled; since Linux 2.2)"
16587 #. type: Plain text
16588 #: build/C/man7/tcp.7:774
16589 msgid "Enable RFC\\ 1323 TCP timestamps."
16593 #: build/C/man7/tcp.7:774
16595 msgid "I<tcp_tso_win_divisor> (integer; default: 3; since Linux 2.6.9)"
16598 #. type: Plain text
16599 #: build/C/man7/tcp.7:780
16601 "This parameter controls what percentage of the congestion window can be "
16602 "consumed by a single TCP Segmentation Offload (TSO) frame. The setting of "
16603 "this parameter is a tradeoff between burstiness and building larger TSO "
16608 #: build/C/man7/tcp.7:780
16610 msgid "I<tcp_tw_recycle> (Boolean; default: disabled; since Linux 2.4)"
16615 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
16616 #. type: Plain text
16617 #: build/C/man7/tcp.7:790
16619 "Enable fast recycling of TIME_WAIT sockets. Enabling this option is not "
16620 "recommended for devices communicating with the general Internet or using NAT "
16621 "(Network Address Translation). Since some NAT gateways pass through IP "
16622 "timestamp values, one IP can appear to have non-increasing timestamps. See "
16623 "RFC 1323 (PAWS), RFC 6191."
16627 #: build/C/man7/tcp.7:790
16629 msgid "I<tcp_tw_reuse> (Boolean; default: disabled; since Linux 2.4.19/2.6)"
16632 #. Since 2.4.19/2.5.43
16634 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
16635 #. type: Plain text
16636 #: build/C/man7/tcp.7:798
16638 "Allow to reuse TIME_WAIT sockets for new connections when it is safe from "
16639 "protocol viewpoint. It should not be changed without advice/request of "
16640 "technical experts."
16644 #: build/C/man7/tcp.7:798
16646 msgid "I<tcp_vegas_cong_avoid> (Boolean; default: disabled; Linux 2.2 to 2.6.13)"
16649 #. Since 2.1.8; removed in 2.6.13
16651 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
16652 #. type: Plain text
16653 #: build/C/man7/tcp.7:809
16655 "Enable TCP Vegas congestion avoidance algorithm. TCP Vegas is a "
16656 "sender-side-only change to TCP that anticipates the onset of congestion by "
16657 "estimating the bandwidth. TCP Vegas adjusts the sending rate by modifying "
16658 "the congestion window. TCP Vegas should provide less packet loss, but it is "
16659 "not as aggressive as TCP Reno."
16663 #: build/C/man7/tcp.7:809
16665 msgid "I<tcp_westwood> (Boolean; default: disabled; Linux 2.4.26/2.6.3 to 2.6.13)"
16668 #. type: Plain text
16669 #: build/C/man7/tcp.7:821
16671 "Enable TCP Westwood+ congestion control algorithm. TCP Westwood+ is a "
16672 "sender-side-only modification of the TCP Reno protocol stack that optimizes "
16673 "the performance of TCP congestion control. It is based on end-to-end "
16674 "bandwidth estimation to set congestion window and slow start threshold after "
16675 "a congestion episode. Using this estimation, TCP Westwood+ adaptively sets "
16676 "a slow start threshold and a congestion window which takes into account the "
16677 "bandwidth used at the time congestion is experienced. TCP Westwood+ "
16678 "significantly increases fairness with respect to TCP Reno in wired networks "
16679 "and throughput over wireless links."
16683 #: build/C/man7/tcp.7:821
16685 msgid "I<tcp_window_scaling> (Boolean; default: enabled; since Linux 2.2)"
16689 #. type: Plain text
16690 #: build/C/man7/tcp.7:835
16692 "Enable RFC\\ 1323 TCP window scaling. This feature allows the use of a "
16693 "large window (E<gt> 64K) on a TCP connection, should the other end support "
16694 "it. Normally, the 16 bit window length field in the TCP header limits the "
16695 "window size to less than 64K bytes. If larger windows are desired, "
16696 "applications can increase the size of their socket buffers and the window "
16697 "scaling option will be employed. If I<tcp_window_scaling> is disabled, TCP "
16698 "will not negotiate the use of window scaling with the other end during "
16699 "connection setup."
16703 #: build/C/man7/tcp.7:835
16705 msgid "I<tcp_wmem> (since Linux 2.4)"
16708 #. Since 2.4.0-test7
16709 #. type: Plain text
16710 #: build/C/man7/tcp.7:843
16712 "This is a vector of 3 integers: [min, default, max]. These parameters are "
16713 "used by TCP to regulate send buffer sizes. TCP dynamically adjusts the size "
16714 "of the send buffer from the default values listed below, in the range of "
16715 "these values, depending on memory available."
16718 #. type: Plain text
16719 #: build/C/man7/tcp.7:854
16721 "Minimum size of the send buffer used by each TCP socket. The default value "
16722 "is the system page size. (On Linux 2.4, the default value is 4K bytes.) "
16723 "This value is used to ensure that in memory pressure mode, allocations below "
16724 "this size will still succeed. This is not used to bound the size of the "
16725 "send buffer declared using B<SO_SNDBUF> on a socket."
16728 #. True in Linux 2.4 and 2.6
16729 #. type: Plain text
16730 #: build/C/man7/tcp.7:868
16732 "The default size of the send buffer for a TCP socket. This value overwrites "
16733 "the initial default buffer size from the generic global "
16734 "I</proc/sys/net/core/wmem_default> defined for all protocols. The default "
16735 "value is 16K bytes. If larger send buffer sizes are desired, this value "
16736 "should be increased (to affect all sockets). To employ large TCP windows, "
16737 "the I</proc/sys/net/ipv4/tcp_window_scaling> must be set to a nonzero value "
16741 #. type: Plain text
16742 #: build/C/man7/tcp.7:877
16744 "The maximum size of the send buffer used by each TCP socket. This value "
16745 "does not override the value in I</proc/sys/net/core/wmem_max>. This is not "
16746 "used to limit the size of the send buffer declared using B<SO_SNDBUF> on a "
16747 "socket. The default value is calculated using the formula"
16750 #. type: Plain text
16751 #: build/C/man7/tcp.7:879
16753 msgid " max(65536, min(4MB, I<tcp_mem>[1]*PAGE_SIZE/128))\n"
16756 #. type: Plain text
16757 #: build/C/man7/tcp.7:882
16759 "(On Linux 2.4, the default value is 128K bytes, lowered 64K depending on "
16760 "low-memory systems.)"
16764 #: build/C/man7/tcp.7:883
16767 "I<tcp_workaround_signed_windows> (Boolean; default: disabled; since Linux "
16771 #. type: Plain text
16772 #: build/C/man7/tcp.7:889
16774 "If enabled, assume that no receipt of a window-scaling option means that the "
16775 "remote TCP is broken and treats the window as a signed quantity. If "
16776 "disabled, assume that the remote TCP is not broken even if we do not receive "
16777 "a window scaling option from it."
16780 #. or SOL_TCP on Linux
16781 #. type: Plain text
16782 #: build/C/man7/tcp.7:907
16784 "To set or get a TCP socket option, call B<getsockopt>(2) to read or "
16785 "B<setsockopt>(2) to write the option with the option level argument set to "
16786 "B<IPPROTO_TCP>. Unless otherwise noted, I<optval> is a pointer to an "
16787 "I<int>. In addition, most B<IPPROTO_IP> socket options are valid on TCP "
16788 "sockets. For more information see B<ip>(7)."
16792 #: build/C/man7/tcp.7:907
16794 msgid "B<TCP_CONGESTION> (since Linux 2.6.13)"
16797 #. commit 5f8ef48d240963093451bcf83df89f1a1364f51d
16798 #. Author: Stephen Hemminger <shemminger@osdl.org>
16799 #. type: Plain text
16800 #: build/C/man7/tcp.7:923
16802 "The argument for this option is a string. This option allows the caller to "
16803 "set the TCP congestion control algorithm to be used, on a per-socket basis. "
16804 "Unprivileged processes are restricted to choosing one of the algorithms in "
16805 "I<tcp_allowed_congestion_control> (described above). Privileged processes "
16806 "(B<CAP_NET_ADMIN>) can choose from any of the available congestion-control "
16807 "algorithms (see the description of I<tcp_available_congestion_control> "
16812 #: build/C/man7/tcp.7:923
16814 msgid "B<TCP_CORK> (since Linux 2.2)"
16817 #. precisely: since 2.1.127
16818 #. type: Plain text
16819 #: build/C/man7/tcp.7:939
16821 "If set, don't send out partial frames. All queued partial frames are sent "
16822 "when the option is cleared again. This is useful for prepending headers "
16823 "before calling B<sendfile>(2), or for throughput optimization. As currently "
16824 "implemented, there is a 200 millisecond ceiling on the time for which output "
16825 "is corked by B<TCP_CORK>. If this ceiling is reached, then queued data is "
16826 "automatically transmitted. This option can be combined with B<TCP_NODELAY> "
16827 "only since Linux 2.5.71. This option should not be used in code intended to "
16832 #: build/C/man7/tcp.7:939
16834 msgid "B<TCP_DEFER_ACCEPT> (since Linux 2.4)"
16837 #. Precisely: since 2.3.38
16838 #. Useful references:
16839 #. http://www.techrepublic.com/article/take-advantage-of-tcp-ip-options-to-optimize-data-transmission/
16840 #. http://unix.stackexchange.com/questions/94104/real-world-use-of-tcp-defer-accept
16841 #. type: Plain text
16842 #: build/C/man7/tcp.7:950
16844 "Allow a listener to be awakened only when data arrives on the socket. Takes "
16845 "an integer value (seconds), this can bound the maximum number of attempts "
16846 "TCP will make to complete the connection. This option should not be used in "
16847 "code intended to be portable."
16851 #: build/C/man7/tcp.7:950
16853 msgid "B<TCP_INFO> (since Linux 2.4)"
16856 #. type: Plain text
16857 #: build/C/man7/tcp.7:956
16859 "Used to collect information about this socket. The kernel returns a "
16860 "I<struct tcp_info> as defined in the file I</usr/include/linux/tcp.h>. This "
16861 "option should not be used in code intended to be portable."
16865 #: build/C/man7/tcp.7:956
16867 msgid "B<TCP_KEEPCNT> (since Linux 2.4)"
16870 #. Precisely: since 2.3.18
16871 #. type: Plain text
16872 #: build/C/man7/tcp.7:963
16874 "The maximum number of keepalive probes TCP should send before dropping the "
16875 "connection. This option should not be used in code intended to be portable."
16879 #: build/C/man7/tcp.7:963
16881 msgid "B<TCP_KEEPIDLE> (since Linux 2.4)"
16884 #. Precisely: since 2.3.18
16885 #. type: Plain text
16886 #: build/C/man7/tcp.7:972
16888 "The time (in seconds) the connection needs to remain idle before TCP starts "
16889 "sending keepalive probes, if the socket option B<SO_KEEPALIVE> has been set "
16890 "on this socket. This option should not be used in code intended to be "
16895 #: build/C/man7/tcp.7:972
16897 msgid "B<TCP_KEEPINTVL> (since Linux 2.4)"
16900 #. Precisely: since 2.3.18
16901 #. type: Plain text
16902 #: build/C/man7/tcp.7:977
16904 "The time (in seconds) between individual keepalive probes. This option "
16905 "should not be used in code intended to be portable."
16909 #: build/C/man7/tcp.7:977
16911 msgid "B<TCP_LINGER2> (since Linux 2.4)"
16914 #. Precisely: since 2.3.41
16915 #. type: Plain text
16916 #: build/C/man7/tcp.7:989
16918 "The lifetime of orphaned FIN_WAIT2 state sockets. This option can be used "
16919 "to override the system-wide setting in the file "
16920 "I</proc/sys/net/ipv4/tcp_fin_timeout> for this socket. This is not to be "
16921 "confused with the B<socket>(7) level option B<SO_LINGER>. This option "
16922 "should not be used in code intended to be portable."
16926 #: build/C/man7/tcp.7:989
16928 msgid "B<TCP_MAXSEG>"
16931 #. Present in Linux 1.0
16932 #. type: Plain text
16933 #: build/C/man7/tcp.7:999
16935 "The maximum segment size for outgoing TCP packets. In Linux 2.2 and "
16936 "earlier, and in Linux 2.6.28 and later, if this option is set before "
16937 "connection establishment, it also changes the MSS value announced to the "
16938 "other end in the initial packet. Values greater than the (eventual) "
16939 "interface MTU have no effect. TCP will also impose its minimum and maximum "
16940 "bounds over the value provided."
16944 #: build/C/man7/tcp.7:999
16946 msgid "B<TCP_NODELAY>"
16949 #. Present in Linux 1.0
16950 #. type: Plain text
16951 #: build/C/man7/tcp.7:1016
16953 "If set, disable the Nagle algorithm. This means that segments are always "
16954 "sent as soon as possible, even if there is only a small amount of data. "
16955 "When not set, data is buffered until there is a sufficient amount to send "
16956 "out, thereby avoiding the frequent sending of small packets, which results "
16957 "in poor utilization of the network. This option is overridden by "
16958 "B<TCP_CORK>; however, setting this option forces an explicit flush of "
16959 "pending output, even if B<TCP_CORK> is currently set."
16963 #: build/C/man7/tcp.7:1016
16965 msgid "B<TCP_QUICKACK> (since Linux 2.4.4)"
16968 #. type: Plain text
16969 #: build/C/man7/tcp.7:1031
16971 "Enable quickack mode if set or disable quickack mode if cleared. In "
16972 "quickack mode, acks are sent immediately, rather than delayed if needed in "
16973 "accordance to normal TCP operation. This flag is not permanent, it only "
16974 "enables a switch to or from quickack mode. Subsequent operation of the TCP "
16975 "protocol will once again enter/leave quickack mode depending on internal "
16976 "protocol processing and factors such as delayed ack timeouts occurring and "
16977 "data transfer. This option should not be used in code intended to be "
16982 #: build/C/man7/tcp.7:1031
16984 msgid "B<TCP_SYNCNT> (since Linux 2.4)"
16987 #. Precisely: since 2.3.18
16988 #. type: Plain text
16989 #: build/C/man7/tcp.7:1038
16991 "Set the number of SYN retransmits that TCP should send before aborting the "
16992 "attempt to connect. It cannot exceed 255. This option should not be used "
16993 "in code intended to be portable."
16997 #: build/C/man7/tcp.7:1038
16999 msgid "B<TCP_USER_TIMEOUT> (since Linux 2.6.37)"
17002 #. commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
17003 #. Author: Jerry Chu <hkchu@google.com>
17004 #. The following text taken nearly verbatim from Jerry Chu's (excellent)
17006 #. type: Plain text
17007 #: build/C/man7/tcp.7:1056
17009 "This option takes an I<unsigned int> as an argument. When the value is "
17010 "greater than 0, it specifies the maximum amount of time in milliseconds that "
17011 "transmitted data may remain unacknowledged before TCP will forcibly close "
17012 "the corresponding connection and return B<ETIMEDOUT> to the application. If "
17013 "the option value is specified as 0, TCP will to use the system default."
17016 #. type: Plain text
17017 #: build/C/man7/tcp.7:1063
17019 "Increasing user timeouts allows a TCP connection to survive extended periods "
17020 "without end-to-end connectivity. Decreasing user timeouts allows "
17021 "applications to \"fail fast\", if so desired. Otherwise, failure may take "
17022 "up to 20 minutes with the current system defaults in a normal WAN "
17026 #. type: Plain text
17027 #: build/C/man7/tcp.7:1073
17029 "This option can be set during any state of a TCP connection, but is "
17030 "effective only during the synchronized states of a connection (ESTABLISHED, "
17031 "FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, and LAST-ACK). Moreover, when "
17032 "used with the TCP keepalive (B<SO_KEEPALIVE>) option, B<TCP_USER_TIMEOUT> "
17033 "will override keepalive to determine when to close a connection due to "
17034 "keepalive failure."
17037 #. type: Plain text
17038 #: build/C/man7/tcp.7:1076
17040 "The option has no effect on when TCP retransmits a packet, nor when a "
17041 "keepalive probe is sent."
17044 #. type: Plain text
17045 #: build/C/man7/tcp.7:1080
17047 "This option, like many others, will be inherited by the socket returned by "
17048 "B<accept>(2), if it was set on the listening socket."
17051 #. type: Plain text
17052 #: build/C/man7/tcp.7:1083
17054 "Further details on the user timeout feature can be found in RFC\\ 793 and "
17055 "RFC\\ 5482 (\"TCP User Timeout Option\")."
17059 #: build/C/man7/tcp.7:1083
17061 msgid "B<TCP_WINDOW_CLAMP> (since Linux 2.4)"
17064 #. Precisely: since 2.3.41
17065 #. type: Plain text
17066 #: build/C/man7/tcp.7:1090
17068 "Bound the size of the advertised window to this value. The kernel imposes a "
17069 "minimum size of SOCK_MIN_RCVBUF/2. This option should not be used in code "
17070 "intended to be portable."
17074 #: build/C/man7/tcp.7:1090 build/C/man7/unix.7:260
17076 msgid "Sockets API"
17079 #. type: Plain text
17080 #: build/C/man7/tcp.7:1099
17082 "TCP provides limited support for out-of-band data, in the form of (a single "
17083 "byte of) urgent data. In Linux this means if the other end sends newer "
17084 "out-of-band data the older urgent data is inserted as normal data into the "
17085 "stream (even when B<SO_OOBINLINE> is not set). This differs from BSD-based "
17089 #. type: Plain text
17090 #: build/C/man7/tcp.7:1106
17092 "Linux uses the BSD compatible interpretation of the urgent pointer field by "
17093 "default. This violates RFC\\ 1122, but is required for interoperability "
17094 "with other stacks. It can be changed via I</proc/sys/net/ipv4/tcp_stdurg>."
17097 #. type: Plain text
17098 #: build/C/man7/tcp.7:1111
17100 "It is possible to peek at out-of-band data using the B<recv>(2) B<MSG_PEEK> "
17104 #. type: Plain text
17105 #: build/C/man7/tcp.7:1127
17107 "Since version 2.4, Linux supports the use of B<MSG_TRUNC> in the I<flags> "
17108 "argument of B<recv>(2) (and B<recvmsg>(2)). This flag causes the received "
17109 "bytes of data to be discarded, rather than passed back in a caller-supplied "
17110 "buffer. Since Linux 2.4.4, B<MSG_TRUNC> also has this effect when used in "
17111 "conjunction with B<MSG_OOB> to receive out-of-band data."
17114 #. type: Plain text
17115 #: build/C/man7/tcp.7:1133 build/C/man7/unix.7:373
17117 "The following B<ioctl>(2) calls return information in I<value>. The "
17118 "correct syntax is:"
17121 #. type: Plain text
17122 #: build/C/man7/tcp.7:1138
17125 "B<int>I< value>B<;>\n"
17126 "I<error>B< = ioctl(>I<tcp_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
17129 #. type: Plain text
17130 #: build/C/man7/tcp.7:1143
17131 msgid "I<ioctl_type> is one of the following:"
17135 #: build/C/man7/tcp.7:1143 build/C/man7/unix.7:383
17140 #. FIXME . http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
17141 #. filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers
17142 #. SIOCOUTQ also has an effect for UNIX domain sockets, but not
17143 #. quite what userland might expect. It seems to return the number
17144 #. of bytes allocated for buffers containing pending output.
17145 #. That number is normally larger than the number of bytes of pending
17146 #. output. Since this info is, from userland's point of view, imprecise,
17147 #. and it may well change, probably best not to document this now.
17148 #. type: Plain text
17149 #: build/C/man7/tcp.7:1159 build/C/man7/unix.7:405
17151 "Returns the amount of queued unread data in the receive buffer. The socket "
17152 "must not be in LISTEN state, otherwise an error (B<EINVAL>) is returned. "
17153 "B<SIOCINQ> is defined in I<E<lt>linux/sockios.hE<gt>>. Alternatively, you "
17154 "can use the synonymous B<FIONREAD>, defined in I<E<lt>sys/ioctl.hE<gt>>."
17158 #: build/C/man7/tcp.7:1159
17160 msgid "B<SIOCATMARK>"
17163 #. type: Plain text
17164 #: build/C/man7/tcp.7:1164
17166 "Returns true (i.e., I<value> is nonzero) if the inbound data stream is at "
17170 #. type: Plain text
17171 #: build/C/man7/tcp.7:1180
17173 "If the B<SO_OOBINLINE> socket option is set, and B<SIOCATMARK> returns true, "
17174 "then the next read from the socket will return the urgent data. If the "
17175 "B<SO_OOBINLINE> socket option is not set, and B<SIOCATMARK> returns true, "
17176 "then the next read from the socket will return the bytes following the "
17177 "urgent data (to actually read the urgent data requires the B<recv(MSG_OOB)> "
17181 #. type: Plain text
17182 #: build/C/man7/tcp.7:1194
17184 "Note that a read never reads across the urgent mark. If an application is "
17185 "informed of the presence of urgent data via B<select>(2) (using the "
17186 "I<exceptfds> argument) or through delivery of a B<SIGURG> signal, then it "
17187 "can advance up to the mark using a loop which repeatedly tests B<SIOCATMARK> "
17188 "and performs a read (requesting any number of bytes) as long as "
17189 "B<SIOCATMARK> returns false."
17193 #: build/C/man7/tcp.7:1194
17195 msgid "B<SIOCOUTQ>"
17198 #. FIXME . http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
17199 #. filed 2010-09-10, may cause SIOCOUTQ to be defined in glibc headers
17200 #. type: Plain text
17201 #: build/C/man7/tcp.7:1210
17203 "Returns the amount of unsent data in the socket send queue. The socket must "
17204 "not be in LISTEN state, otherwise an error (B<EINVAL>) is returned. "
17205 "B<SIOCOUTQ> is defined in I<E<lt>linux/sockios.hE<gt>>. Alternatively, you "
17206 "can use the synonymous B<TIOCOUTQ>, defined in I<E<lt>sys/ioctl.hE<gt>>."
17209 #. type: Plain text
17210 #: build/C/man7/tcp.7:1215
17212 "When a network error occurs, TCP tries to resend the packet. If it doesn't "
17213 "succeed after some time, either B<ETIMEDOUT> or the last received error on "
17214 "this connection is reported."
17217 #. type: Plain text
17218 #: build/C/man7/tcp.7:1226
17220 "Some applications require a quicker error notification. This can be enabled "
17221 "with the B<IPPROTO_IP> level B<IP_RECVERR> socket option. When this option "
17222 "is enabled, all incoming errors are immediately passed to the user program. "
17223 "Use this option with care \\(em it makes TCP less tolerant to routing "
17224 "changes and other normal network conditions."
17228 #: build/C/man7/tcp.7:1227
17230 msgid "B<EAFNOTSUPPORT>"
17233 #. type: Plain text
17234 #: build/C/man7/tcp.7:1233
17235 msgid "Passed socket address type in I<sin_family> was not B<AF_INET>."
17238 #. type: Plain text
17239 #: build/C/man7/tcp.7:1237
17241 "The other end closed the socket unexpectedly or a read is executed on a shut "
17246 #: build/C/man7/tcp.7:1237
17248 msgid "B<ETIMEDOUT>"
17251 #. type: Plain text
17252 #: build/C/man7/tcp.7:1240
17253 msgid "The other end didn't acknowledge retransmitted data after some time."
17256 #. type: Plain text
17257 #: build/C/man7/tcp.7:1244
17259 "Any errors defined for B<ip>(7) or the generic socket layer may also be "
17260 "returned for TCP."
17263 #. type: Plain text
17264 #: build/C/man7/tcp.7:1251
17266 "Support for Explicit Congestion Notification, zero-copy B<sendfile>(2), "
17267 "reordering support and some SACK extensions (DSACK) were introduced in 2.4. "
17268 "Support for forward acknowledgement (FACK), TIME_WAIT recycling, and "
17269 "per-connection keepalive socket options were introduced in 2.3."
17272 #. type: Plain text
17273 #: build/C/man7/tcp.7:1253
17274 msgid "Not all errors are documented."
17277 #. Only a single Linux kernel version is described
17278 #. Info for 2.2 was lost. Should be added again,
17279 #. or put into a separate page.
17281 #. This man page was originally written by Andi Kleen.
17282 #. It was updated for 2.4 by Nivedita Singhvi with input from
17283 #. Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt
17285 #. type: Plain text
17286 #: build/C/man7/tcp.7:1263
17287 msgid "IPv6 is not described."
17290 #. type: Plain text
17291 #: build/C/man7/tcp.7:1275
17293 "B<accept>(2), B<bind>(2), B<connect>(2), B<getsockopt>(2), B<listen>(2), "
17294 "B<recvmsg>(2), B<sendfile>(2), B<sendmsg>(2), B<socket>(2), B<ip>(7), "
17298 #. type: Plain text
17299 #: build/C/man7/tcp.7:1277
17300 msgid "RFC\\ 793 for the TCP specification."
17303 #. type: Plain text
17304 #: build/C/man7/tcp.7:1279
17306 "RFC\\ 1122 for the TCP requirements and a description of the Nagle "
17310 #. type: Plain text
17311 #: build/C/man7/tcp.7:1281
17312 msgid "RFC\\ 1323 for TCP timestamp and window scaling options."
17315 #. type: Plain text
17316 #: build/C/man7/tcp.7:1283
17317 msgid "RFC\\ 1337 for a description of TIME_WAIT assassination hazards."
17320 #. type: Plain text
17321 #: build/C/man7/tcp.7:1285
17322 msgid "RFC\\ 3168 for a description of Explicit Congestion Notification."
17325 #. type: Plain text
17326 #: build/C/man7/tcp.7:1287
17327 msgid "RFC\\ 2581 for TCP congestion control algorithms."
17330 #. type: Plain text
17331 #: build/C/man7/tcp.7:1289
17332 msgid "RFC\\ 2018 and RFC\\ 2883 for SACK and extensions to SACK."
17336 #: build/C/man7/udp.7:12
17342 #: build/C/man7/udp.7:12
17347 #. type: Plain text
17348 #: build/C/man7/udp.7:15
17349 msgid "udp - User Datagram Protocol for IPv4"
17352 #. type: Plain text
17353 #: build/C/man7/udp.7:21
17354 msgid "B<#include E<lt>netinet/udp.hE<gt>>"
17357 #. type: Plain text
17358 #: build/C/man7/udp.7:23
17359 msgid "B<udp_socket = socket(AF_INET, SOCK_DGRAM, 0);>"
17362 #. type: Plain text
17363 #: build/C/man7/udp.7:29
17365 "This is an implementation of the User Datagram Protocol described in RFC\\ "
17366 "768. It implements a connectionless, unreliable datagram packet service. "
17367 "Packets may be reordered or duplicated before they arrive. UDP generates "
17368 "and checks checksums to catch transmission errors."
17371 #. type: Plain text
17372 #: build/C/man7/udp.7:58
17374 "When a UDP socket is created, its local and remote addresses are "
17375 "unspecified. Datagrams can be sent immediately using B<sendto>(2) or "
17376 "B<sendmsg>(2) with a valid destination address as an argument. When "
17377 "B<connect>(2) is called on the socket, the default destination address is "
17378 "set and datagrams can now be sent using B<send>(2) or B<write>(2) without "
17379 "specifying a destination address. It is still possible to send to other "
17380 "destinations by passing an address to B<sendto>(2) or B<sendmsg>(2). In "
17381 "order to receive packets, the socket can be bound to a local address first "
17382 "by using B<bind>(2). Otherwise, the socket layer will automatically assign "
17383 "a free local port out of the range defined by "
17384 "I</proc/sys/net/ipv4/ip_local_port_range> and bind the socket to "
17388 #. type: Plain text
17389 #: build/C/man7/udp.7:66
17391 "All receive operations return only one packet. When the packet is smaller "
17392 "than the passed buffer, only that much data is returned; when it is bigger, "
17393 "the packet is truncated and the B<MSG_TRUNC> flag is set. B<MSG_WAITALL> is "
17397 #. type: Plain text
17398 #: build/C/man7/udp.7:75
17400 "IP options may be sent or received using the socket options described in "
17401 "B<ip>(7). They are processed by the kernel only when the appropriate "
17402 "I</proc> parameter is enabled (but still passed to the user even when it is "
17403 "turned off). See B<ip>(7)."
17406 #. type: Plain text
17407 #: build/C/man7/udp.7:80
17409 "When the B<MSG_DONTROUTE> flag is set on sending, the destination address "
17410 "must refer to a local interface address and the packet is sent only to that "
17414 #. type: Plain text
17415 #: build/C/man7/udp.7:98
17417 "By default, Linux UDP does path MTU (Maximum Transmission Unit) discovery. "
17418 "This means the kernel will keep track of the MTU to a specific target IP "
17419 "address and return B<EMSGSIZE> when a UDP packet write exceeds it. When "
17420 "this happens, the application should decrease the packet size. Path MTU "
17421 "discovery can be also turned off using the B<IP_MTU_DISCOVER> socket option "
17422 "or the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file; see B<ip>(7) for "
17423 "details. When turned off, UDP will fragment outgoing UDP packets that "
17424 "exceed the interface MTU. However, disabling it is not recommended for "
17425 "performance and reliability reasons."
17428 #. type: Plain text
17429 #: build/C/man7/udp.7:103
17430 msgid "UDP uses the IPv4 I<sockaddr_in> address format described in B<ip>(7)."
17433 #. type: Plain text
17434 #: build/C/man7/udp.7:114
17436 "All fatal errors will be passed to the user as an error return even when the "
17437 "socket is not connected. This includes asynchronous errors received from "
17438 "the network. You may get an error for an earlier packet that was sent on "
17439 "the same socket. This behavior differs from many other BSD socket "
17440 "implementations which don't pass any errors unless the socket is connected. "
17441 "Linux's behavior is mandated by B<RFC\\ 1122>."
17444 #. type: Plain text
17445 #: build/C/man7/udp.7:128
17447 "For compatibility with legacy code, in Linux 2.0 and 2.2 it was possible to "
17448 "set the B<SO_BSDCOMPAT> B<SOL_SOCKET> option to receive remote errors only "
17449 "when the socket has been connected (except for B<EPROTO> and B<EMSGSIZE>). "
17450 "Locally generated errors are always passed. Support for this socket option "
17451 "was removed in later kernels; see B<socket>(7) for further information."
17454 #. type: Plain text
17455 #: build/C/man7/udp.7:137
17457 "When the B<IP_RECVERR> option is enabled, all errors are stored in the "
17458 "socket error queue, and can be received by B<recvmsg>(2) with the "
17459 "B<MSG_ERRQUEUE> flag set."
17462 #. type: Plain text
17463 #: build/C/man7/udp.7:140
17465 "System-wide UDP parameter settings can be accessed by files in the directory "
17466 "I</proc/sys/net/ipv4/>."
17470 #: build/C/man7/udp.7:140
17472 msgid "I<udp_mem> (since Linux 2.6.25)"
17475 #. type: Plain text
17476 #: build/C/man7/udp.7:144
17478 "This is a vector of three integers governing the number of pages allowed for "
17479 "queueing by all UDP sockets."
17482 #. type: Plain text
17483 #: build/C/man7/udp.7:151
17485 "Below this number of pages, UDP is not bothered about its memory appetite. "
17486 "When the amount of memory allocated by UDP exceeds this number, UDP starts "
17487 "to moderate memory usage."
17490 #. type: Plain text
17491 #: build/C/man7/udp.7:157
17493 "This value was introduced to follow the format of I<tcp_mem> (see "
17497 #. type: Plain text
17498 #: build/C/man7/udp.7:160
17499 msgid "Number of pages allowed for queueing by all UDP sockets."
17502 #. type: Plain text
17503 #: build/C/man7/udp.7:164
17505 "Defaults values for these three items are calculated at boot time from the "
17506 "amount of available memory."
17510 #: build/C/man7/udp.7:164
17512 msgid "I<udp_rmem_min> (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
17515 #. type: Plain text
17516 #: build/C/man7/udp.7:171
17518 "Minimal size, in bytes, of receive buffers used by UDP sockets in "
17519 "moderation. Each UDP socket is able to use the size for receiving data, "
17520 "even if total pages of UDP sockets exceed I<udp_mem> pressure."
17524 #: build/C/man7/udp.7:171
17526 msgid "I<udp_wmem_min> (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
17529 #. type: Plain text
17530 #: build/C/man7/udp.7:178
17532 "Minimal size, in bytes, of send buffer used by UDP sockets in moderation. "
17533 "Each UDP socket is able to use the size for sending data, even if total "
17534 "pages of UDP sockets exceed I<udp_mem> pressure."
17537 #. type: Plain text
17538 #: build/C/man7/udp.7:189
17540 "To set or get a UDP socket option, call B<getsockopt>(2) to read or "
17541 "B<setsockopt>(2) to write the option with the option level argument set to "
17542 "B<IPPROTO_UDP>. Unless otherwise noted, I<optval> is a pointer to an "
17547 #: build/C/man7/udp.7:189
17549 msgid "B<UDP_CORK> (since Linux 2.5.44)"
17552 #. FIXME document UDP_ENCAP (new in kernel 2.5.67)
17553 #. From include/linux/udp.h:
17554 #. /* UDP encapsulation types */
17555 #. #define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
17556 #. #define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */
17557 #. #define UDP_ENCAP_L2TPINUDP 3 /* rfc2661 */
17558 #. type: Plain text
17559 #: build/C/man7/udp.7:202
17561 "If this option is enabled, then all data output on this socket is "
17562 "accumulated into a single datagram that is transmitted when the option is "
17563 "disabled. This option should not be used in code intended to be portable."
17566 #. type: Plain text
17567 #: build/C/man7/udp.7:206
17568 msgid "These ioctls can be accessed using B<ioctl>(2). The correct syntax is:"
17571 #. type: Plain text
17572 #: build/C/man7/udp.7:211
17575 "B<int>I< value>B<;>\n"
17576 "I<error>B< = ioctl(>I<udp_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
17580 #: build/C/man7/udp.7:213
17582 msgid "B<FIONREAD> (B<SIOCINQ>)"
17585 #. See http://www.securiteam.com/unixfocus/5KP0I15IKO.html
17586 #. "GNUnet DoS (UDP Socket Unreachable)", 14 May 2006
17587 #. type: Plain text
17588 #: build/C/man7/udp.7:231
17590 "Gets a pointer to an integer as argument. Returns the size of the next "
17591 "pending datagram in the integer in bytes, or 0 when no datagram is pending. "
17592 "B<Warning:> Using B<FIONREAD>, it is impossible to distinguish the case "
17593 "where no datagram is pending from the case where the next pending datagram "
17594 "contains zero bytes of data. It is safer to use B<select>(2), B<poll>(2), "
17595 "or B<epoll>(7) to distinguish these cases."
17599 #: build/C/man7/udp.7:231
17601 msgid "B<TIOCOUTQ> (B<SIOCOUTQ>)"
17604 #. type: Plain text
17605 #: build/C/man7/udp.7:235
17607 "Returns the number of data bytes in the local send queue. Only supported "
17608 "with Linux 2.4 and above."
17611 #. type: Plain text
17612 #: build/C/man7/udp.7:241
17614 "In addition, all ioctls documented in B<ip>(7) and B<socket>(7) are "
17618 #. type: Plain text
17619 #: build/C/man7/udp.7:247
17621 "All errors documented for B<socket>(7) or B<ip>(7) may be returned by a "
17622 "send or receive on a UDP socket."
17626 #: build/C/man7/udp.7:247 build/C/man7/unix.7:410
17628 msgid "B<ECONNREFUSED>"
17631 #. type: Plain text
17632 #: build/C/man7/udp.7:251
17634 "No receiver was associated with the destination address. This might be "
17635 "caused by a previous packet sent over the socket."
17639 #. This man page was written by Andi Kleen.
17640 #. type: Plain text
17641 #: build/C/man7/udp.7:256
17642 msgid "B<IP_RECVERR> is a new feature in Linux 2.2."
17645 #. type: Plain text
17646 #: build/C/man7/udp.7:261
17647 msgid "B<ip>(7), B<raw>(7), B<socket>(7), B<udplite>(7)"
17650 #. type: Plain text
17651 #: build/C/man7/udp.7:263
17652 msgid "RFC\\ 768 for the User Datagram Protocol."
17655 #. type: Plain text
17656 #: build/C/man7/udp.7:265
17657 msgid "RFC\\ 1122 for the host requirements."
17660 #. type: Plain text
17661 #: build/C/man7/udp.7:267
17662 msgid "RFC\\ 1191 for a description of path MTU discovery."
17666 #: build/C/man7/udplite.7:27
17671 #. type: Plain text
17672 #: build/C/man7/udplite.7:30
17673 msgid "udplite - Lightweight User Datagram Protocol"
17676 #. type: Plain text
17677 #: build/C/man7/udplite.7:38
17678 msgid "B<sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);>"
17681 #. type: Plain text
17682 #: build/C/man7/udplite.7:41
17684 "This is an implementation of the Lightweight User Datagram Protocol "
17685 "(UDP-Lite), as described in RFC\\ 3828."
17688 #. type: Plain text
17689 #: build/C/man7/udplite.7:47
17691 "UDP-Lite is an extension of UDP (RFC\\ 768) to support variable-length "
17692 "checksums. This has advantages for some types of multimedia transport that "
17693 "may be able to make use of slightly damaged datagrams, rather than having "
17694 "them discarded by lower-layer protocols."
17697 #. type: Plain text
17698 #: build/C/man7/udplite.7:53
17700 "The variable-length checksum coverage is set via a B<setsockopt>(2) "
17701 "option. If this option is not set, the only difference to UDP is in using a "
17702 "different IP protocol identifier (IANA number 136)."
17705 #. type: Plain text
17706 #: build/C/man7/udplite.7:58
17708 "The UDP-Lite implementation is a full extension of B<udp>(7)\\(emthat is, it "
17709 "shares the same API and API behavior, and in addition offers two socket "
17710 "options to control the checksum coverage."
17713 #. type: Plain text
17714 #: build/C/man7/udplite.7:67
17716 "UDP-Litev4 uses the I<sockaddr_in> address format described in B<ip>(7). "
17717 "UDP-Litev6 uses the I<sockaddr_in6> address format described in B<ipv6>(7)."
17720 #. type: Plain text
17721 #: build/C/man7/udplite.7:80
17723 "To set or get a UDP-Lite socket option, call B<getsockopt>(2) to read or "
17724 "B<setsockopt>(2) to write the option with the option level argument set to "
17725 "B<IPPROTO_UDPLITE>. In addition, all B<IPPROTO_UDP> socket options are "
17726 "valid on a UDP-Lite socket. See B<udp>(7) for more information."
17729 #. type: Plain text
17730 #: build/C/man7/udplite.7:82
17731 msgid "The following two options are specific to UDP-Lite."
17735 #: build/C/man7/udplite.7:82
17737 msgid "B<UDPLITE_SEND_CSCOV>"
17740 #. type: Plain text
17741 #: build/C/man7/udplite.7:87
17743 "This option sets the sender checksum coverage and takes an I<int> as "
17744 "argument, with a checksum coverage value in the range 0..2^16-1."
17747 #. type: Plain text
17748 #: build/C/man7/udplite.7:91
17750 "A value of 0 means that the entire datagram is always covered. Values from "
17751 "1-7 are illegal (RFC\\ 3828, 3.1) and are rounded up to the minimum coverage "
17755 #. type: Plain text
17756 #: build/C/man7/udplite.7:97
17758 "With regard to IPv6 jumbograms (RFC\\ 2675), the UDP-Litev6 checksum "
17759 "coverage is limited to the first 2^16-1 octets, as per RFC\\ 3828, 3.5. "
17760 "Higher values are therefore silently truncated to 2^16-1. If in doubt, the "
17761 "current coverage value can always be queried using B<getsockopt>(2)."
17765 #: build/C/man7/udplite.7:97
17767 msgid "B<UDPLITE_RECV_CSCOV>"
17770 #. type: Plain text
17771 #: build/C/man7/udplite.7:108
17773 "This is the receiver-side analogue and uses the same argument format and "
17774 "value range as B<UDPLITE_SEND_CSCOV>. This option is not required to enable "
17775 "traffic with partial checksum coverage. Its function is that of a traffic "
17776 "filter: when enabled, it instructs the kernel to drop all packets which have "
17777 "a coverage I<less> than the specified coverage value."
17780 #. SO_NO_CHECK exists and is supported by UDPv4, but is
17781 #. commented out in socket(7), hence also commented out here
17783 #. Since UDP-Lite mandates checksums, checksumming can not be disabled
17788 #. type: Plain text
17789 #: build/C/man7/udplite.7:121
17791 "When the value of B<UDPLITE_RECV_CSCOV> exceeds the actual packet coverage, "
17792 "incoming packets are silently dropped, but may generate a warning message in "
17796 #. type: Plain text
17797 #: build/C/man7/udplite.7:126
17799 "All errors documented for B<udp>(7) may be returned. UDP-Lite does not add "
17803 #. type: Plain text
17804 #: build/C/man7/udplite.7:129
17805 msgid "I</proc/net/snmp> - basic UDP-Litev4 statistics counters."
17808 #. type: Plain text
17809 #: build/C/man7/udplite.7:132
17810 msgid "I</proc/net/snmp6> - basic UDP-Litev6 statistics counters."
17813 #. type: Plain text
17814 #: build/C/man7/udplite.7:134
17815 msgid "UDP-Litev4/v6 first appeared in Linux 2.6.20."
17818 #. FIXME . remove this section once glibc supports UDP-Lite
17819 #. type: Plain text
17820 #: build/C/man7/udplite.7:137
17821 msgid "Where glibc support is missing, the following definitions are needed:"
17824 #. The following two are defined in the kernel in linux/net/udplite.h
17825 #. type: Plain text
17826 #: build/C/man7/udplite.7:144
17829 "#define IPPROTO_UDPLITE 136\n"
17830 "#define UDPLITE_SEND_CSCOV 10\n"
17831 "#define UDPLITE_RECV_CSCOV 11\n"
17834 #. type: Plain text
17835 #: build/C/man7/udplite.7:151
17836 msgid "B<ip>(7), B<ipv6>(7), B<socket>(7), B<udp>(7)"
17839 #. type: Plain text
17840 #: build/C/man7/udplite.7:153
17841 msgid "RFC\\ 3828 for the Lightweight User Datagram Protocol (UDP-Lite)."
17844 #. type: Plain text
17845 #: build/C/man7/udplite.7:156
17846 msgid "I<Documentation/networking/udplite.txt> in the Linux kernel source tree"
17850 #: build/C/man7/unix.7:20
17855 #. type: Plain text
17856 #: build/C/man7/unix.7:23
17857 msgid "unix - sockets for local interprocess communication"
17860 #. type: Plain text
17861 #: build/C/man7/unix.7:27
17862 msgid "B<#include E<lt>sys/un.hE<gt>>"
17865 #. type: Plain text
17866 #: build/C/man7/unix.7:29
17867 msgid "I<unix_socket>B< = socket(AF_UNIX, type, 0);>"
17870 #. type: Plain text
17871 #: build/C/man7/unix.7:31
17872 msgid "I<error>B< = socketpair(AF_UNIX, type, 0, int *>I<sv>B<);>"
17875 #. type: Plain text
17876 #: build/C/man7/unix.7:42
17878 "The B<AF_UNIX> (also known as B<AF_LOCAL>) socket family is used to "
17879 "communicate between processes on the same machine efficiently. "
17880 "Traditionally, UNIX domain sockets can be either unnamed, or bound to a "
17881 "filesystem pathname (marked as being of type socket). Linux also supports "
17882 "an abstract namespace which is independent of the filesystem."
17885 #. type: Plain text
17886 #: build/C/man7/unix.7:54
17888 "Valid socket types in the UNIX domain are: B<SOCK_STREAM>, for a "
17889 "stream-oriented socket; B<SOCK_DGRAM>, for a datagram-oriented socket that "
17890 "preserves message boundaries (as on most UNIX implementations, UNIX domain "
17891 "datagram sockets are always reliable and don't reorder datagrams); and "
17892 "(since Linux 2.6.4) B<SOCK_SEQPACKET>, for a connection-oriented socket "
17893 "that preserves message boundaries and delivers messages in the order that "
17897 #. type: Plain text
17898 #: build/C/man7/unix.7:57
17900 "UNIX domain sockets support passing file descriptors or process credentials "
17901 "to other processes using ancillary data."
17904 #. type: Plain text
17905 #: build/C/man7/unix.7:59
17906 msgid "A UNIX domain socket address is represented in the following structure:"
17909 #. type: Plain text
17910 #: build/C/man7/unix.7:63
17912 msgid "#define UNIX_PATH_MAX 108\n"
17915 #. type: Plain text
17916 #: build/C/man7/unix.7:68
17919 "struct sockaddr_un {\n"
17920 " sa_family_t sun_family; /* AF_UNIX */\n"
17921 " char sun_path[UNIX_PATH_MAX]; /* pathname */\n"
17925 #. type: Plain text
17926 #: build/C/man7/unix.7:75
17927 msgid "The I<sun_family> field always contains B<AF_UNIX>."
17930 #. type: Plain text
17931 #: build/C/man7/unix.7:91
17933 "Various systems calls (for example, B<bind>(2), B<connect>(2), and "
17934 "B<sendto>(2)) take a I<sockaddr_un> argument as input. Some other system "
17935 "calls (for example, B<getsockname>(2), B<getpeername>(2), B<recvfrom>(2), "
17936 "and B<accept>(2)) return an argument of this type."
17939 #. type: Plain text
17940 #: build/C/man7/unix.7:95
17941 msgid "Three types of address are distinguished in the I<sockaddr_un> structure:"
17944 #. type: Plain text
17945 #: build/C/man7/unix.7:103
17947 "I<pathname>: a UNIX domain socket can be bound to a null-terminated "
17948 "filesystem pathname using B<bind>(2). When the address of a pathname socket "
17949 "is returned (by one of the system calls noted above), its length is"
17952 #. type: Plain text
17953 #: build/C/man7/unix.7:105
17955 msgid " offsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1\n"
17958 #. type: Plain text
17959 #: build/C/man7/unix.7:118
17961 "and I<sun_path> contains the null-terminated pathname. (On Linux, the above "
17962 "B<offsetof>() expression equates to the same value as "
17963 "I<sizeof(sa_family_t)>, but some other implementations include other fields "
17964 "before I<sun_path>, so the B<offsetof>() expression more portably describes "
17965 "the size of the address structure.)"
17968 #. type: Plain text
17969 #: build/C/man7/unix.7:120
17970 msgid "For further details of pathname sockets, see below."
17973 #. There is quite some variation across implementations: FreeBSD
17974 #. says the length is 16 bytes, HP-UX 11 says it's zero bytes.
17975 #. type: Plain text
17976 #: build/C/man7/unix.7:136
17978 "I<unnamed>: A stream socket that has not been bound to a pathname using "
17979 "B<bind>(2) has no name. Likewise, the two sockets created by "
17980 "B<socketpair>(2) are unnamed. When the address of an unnamed socket is "
17981 "returned, its length is I<sizeof(sa_family_t)>, and I<sun_path> should not "
17985 #. type: Plain text
17986 #: build/C/man7/unix.7:159
17988 "I<abstract>: an abstract socket address is distinguished (from a pathname "
17989 "socket) by the fact that I<sun_path[0]> is a null byte (\\(aq\\e0\\(aq). "
17990 "The socket's address in this namespace is given by the additional bytes in "
17991 "I<sun_path> that are covered by the specified length of the address "
17992 "structure. (Null bytes in the name have no special significance.) The name "
17993 "has no connection with filesystem pathnames. When the address of an "
17994 "abstract socket is returned, the returned I<addrlen> is greater than "
17995 "I<sizeof(sa_family_t)> (i.e., greater than 2), and the name of the socket is "
17996 "contained in the first I<(addrlen - sizeof(sa_family_t))> bytes of "
17997 "I<sun_path>. The abstract socket namespace is a nonportable Linux "
18002 #: build/C/man7/unix.7:159
18004 msgid "Pathname sockets"
18007 #. type: Plain text
18008 #: build/C/man7/unix.7:162
18010 "When binding a socket to a pathname, a few rules should be observed for "
18011 "maximum portability and ease of coding:"
18014 #. type: Plain text
18015 #: build/C/man7/unix.7:166
18016 msgid "The pathname in I<sun_path> should be null-terminated."
18019 #. type: Plain text
18020 #: build/C/man7/unix.7:170
18022 "The length of the pathname, including the terminating null byte, should not "
18023 "exceed the size of I<sun_path>."
18026 #. type: Plain text
18027 #: build/C/man7/unix.7:176
18029 "The I<addrlen> argument that describes the enclosing I<sockaddr_un> "
18030 "structure should have a value of at least:"
18033 #. type: Plain text
18034 #: build/C/man7/unix.7:179
18036 msgid " offsetof(struct sockaddr_un, sun_path)+strlen(addr.sun_path)+1\n"
18039 #. type: Plain text
18040 #: build/C/man7/unix.7:185
18042 "or, more simply, I<addrlen> can be specified as I<sizeof(struct "
18046 #. Linux does this, including for the case where the supplied path
18048 #. type: Plain text
18049 #: build/C/man7/unix.7:193
18051 "There is some variation in how implementations handle UNIX domain socket "
18052 "addresses that do not follow the above rules. For example, some (but not "
18053 "all) implementations append a null terminator if none is present in the "
18054 "supplied I<sun_path>."
18058 #. Modern BSDs generally have 104, Tru64 and AIX have 104,
18059 #. Solaris and Irix have 108
18060 #. type: Plain text
18061 #: build/C/man7/unix.7:202
18063 "When coding portable applications, keep in mind that some implementations "
18064 "have I<sun_path> as short as 92 bytes."
18067 #. type: Plain text
18068 #: build/C/man7/unix.7:220
18070 "Various system calls (B<accept>(2), B<recvfrom>(2), B<getsockname>(2), "
18071 "B<getpeername>(2)) return socket address structures. When applied to UNIX "
18072 "domain sockets, the value-result I<addrlen> argument supplied to the call "
18073 "should be initialized as above. Upon return, the argument is set to "
18074 "indicate the I<actual> size of the address structure. The caller should "
18075 "check the value returned in this argument: if the output value exceeds the "
18076 "input value, then there is no guarantee that a null terminator is present in "
18077 "I<sun_path>. (See BUGS.)"
18080 #. type: Plain text
18081 #: build/C/man7/unix.7:233
18083 "For historical reasons, these socket options are specified with a "
18084 "B<SOL_SOCKET> type even though they are B<AF_UNIX> specific. They can be "
18085 "set with B<setsockopt>(2) and read with B<getsockopt>(2) by specifying "
18086 "B<SOL_SOCKET> as the socket family."
18090 #: build/C/man7/unix.7:233
18092 msgid "B<SO_PASSCRED>"
18095 #. type: Plain text
18096 #: build/C/man7/unix.7:240
18098 "Enables the receiving of the credentials of the sending process in an "
18099 "ancillary message. When this option is set and the socket is not yet "
18100 "connected a unique name in the abstract namespace will be generated "
18101 "automatically. Expects an integer boolean flag."
18105 #: build/C/man7/unix.7:240
18107 msgid "Autobind feature"
18110 #. i.e., sizeof(short)
18111 #. type: Plain text
18112 #: build/C/man7/unix.7:260
18114 "If a B<bind>(2) call specifies I<addrlen> as I<sizeof(sa_family_t)>, or the "
18115 "B<SO_PASSCRED> socket option was specified for a socket that was not "
18116 "explicitly bound to an address, then the socket is autobound to an abstract "
18117 "address. The address consists of a null byte followed by 5 bytes in the "
18118 "character set I<[0-9a-f]>. Thus, there is a limit of 2^20 autobind "
18119 "addresses. (From Linux 2.1.15, when the autobind feature was added, 8 bytes "
18120 "were used, and the limit was thus 2^32 autobind addresses. The change to 5 "
18121 "bytes came in Linux 2.3.15.)"
18124 #. type: Plain text
18125 #: build/C/man7/unix.7:263
18127 "The following paragraphs describe domain-specific details and unsupported "
18128 "features of the sockets API for UNIX domain sockets on Linux."
18131 #. type: Plain text
18132 #: build/C/man7/unix.7:271
18134 "UNIX domain sockets do not support the transmission of out-of-band data (the "
18135 "B<MSG_OOB> flag for B<send>(2) and B<recv>(2))."
18138 #. type: Plain text
18139 #: build/C/man7/unix.7:276
18140 msgid "The B<send>(2) B<MSG_MORE> flag is not supported by UNIX domain sockets."
18143 #. type: Plain text
18144 #: build/C/man7/unix.7:284
18146 "The use of B<MSG_TRUNC> in the I<flags> argument of B<recv>(2) is not "
18147 "supported by UNIX domain sockets."
18150 #. type: Plain text
18151 #: build/C/man7/unix.7:296
18153 "The B<SO_SNDBUF> socket option does have an effect for UNIX domain sockets, "
18154 "but the B<SO_RCVBUF> option does not. For datagram sockets, the "
18155 "B<SO_SNDBUF> value imposes an upper limit on the size of outgoing "
18156 "datagrams. This limit is calculated as the doubled (see B<socket>(7)) "
18157 "option value less 32 bytes used for overhead."
18161 #: build/C/man7/unix.7:296
18163 msgid "Ancillary messages"
18166 #. type: Plain text
18167 #: build/C/man7/unix.7:318
18169 "Ancillary data is sent and received using B<sendmsg>(2) and B<recvmsg>(2). "
18170 "For historical reasons the ancillary message types listed below are "
18171 "specified with a B<SOL_SOCKET> type even though they are B<AF_UNIX> "
18172 "specific. To send them set the I<cmsg_level> field of the struct I<cmsghdr> "
18173 "to B<SOL_SOCKET> and the I<cmsg_type> field to the type. For more "
18174 "information see B<cmsg>(3)."
18178 #: build/C/man7/unix.7:318
18180 msgid "B<SCM_RIGHTS>"
18183 #. type: Plain text
18184 #: build/C/man7/unix.7:324
18186 "Send or receive a set of open file descriptors from another process. The "
18187 "data portion contains an integer array of the file descriptors. The passed "
18188 "file descriptors behave as though they have been created with B<dup>(2)."
18192 #: build/C/man7/unix.7:324
18194 msgid "B<SCM_CREDENTIALS>"
18197 #. type: Plain text
18198 #: build/C/man7/unix.7:334
18200 "Send or receive UNIX credentials. This can be used for authentication. The "
18201 "credentials are passed as a I<struct ucred> ancillary message. Thus "
18202 "structure is defined in I<E<lt>sys/socket.hE<gt>> as follows:"
18205 #. type: Plain text
18206 #: build/C/man7/unix.7:342
18210 " pid_t pid; /* process ID of the sending process */\n"
18211 " uid_t uid; /* user ID of the sending process */\n"
18212 " gid_t gid; /* group ID of the sending process */\n"
18216 #. type: Plain text
18217 #: build/C/man7/unix.7:351
18219 "Since glibc 2.8, the B<_GNU_SOURCE> feature test macro must be defined "
18220 "(before including I<any> header files) in order to obtain the definition of "
18224 #. type: Plain text
18225 #: build/C/man7/unix.7:367
18227 "The credentials which the sender specifies are checked by the kernel. A "
18228 "process with effective user ID 0 is allowed to specify values that do not "
18229 "match its own. The sender must specify its own process ID (unless it has "
18230 "the capability B<CAP_SYS_ADMIN>), its user ID, effective user ID, or saved "
18231 "set-user-ID (unless it has B<CAP_SETUID>), and its group ID, effective group "
18232 "ID, or saved set-group-ID (unless it has B<CAP_SETGID>). To receive a "
18233 "I<struct ucred> message the B<SO_PASSCRED> option must be enabled on the "
18237 #. type: Plain text
18238 #: build/C/man7/unix.7:378
18241 "B<int>I< value>B<;>\n"
18242 "I<error>B< = ioctl(>I<unix_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
18245 #. type: Plain text
18246 #: build/C/man7/unix.7:383
18247 msgid "I<ioctl_type> can be:"
18250 #. type: Plain text
18251 #: build/C/man7/unix.7:410
18253 "The specified local address is already in use or the filesystem socket "
18254 "object already exists."
18257 #. type: Plain text
18258 #: build/C/man7/unix.7:416
18260 "The remote address specified by B<connect>(2) was not a listening socket. "
18261 "This error can also occur if the target pathname is not a socket."
18265 #: build/C/man7/unix.7:416
18267 msgid "B<ECONNRESET>"
18270 #. type: Plain text
18271 #: build/C/man7/unix.7:419
18272 msgid "Remote socket was unexpectedly closed."
18275 #. type: Plain text
18276 #: build/C/man7/unix.7:422
18277 msgid "User memory address was not valid."
18280 #. type: Plain text
18281 #: build/C/man7/unix.7:431
18283 "Invalid argument passed. A common cause is that the value B<AF_UNIX> was "
18284 "not specified in the I<sun_type> field of passed addresses, or the socket "
18285 "was in an invalid state for the applied operation."
18288 #. type: Plain text
18289 #: build/C/man7/unix.7:436
18291 "B<connect>(2) called on an already connected socket or a target address was "
18292 "specified on a connected socket."
18295 #. type: Plain text
18296 #: build/C/man7/unix.7:441
18298 "The pathname in the remote address specified to B<connect>(2) did not "
18303 #: build/C/man7/unix.7:441
18308 #. type: Plain text
18309 #: build/C/man7/unix.7:447
18310 msgid "Socket operation needs a target address, but the socket is not connected."
18313 #. type: Plain text
18314 #: build/C/man7/unix.7:451
18316 "Stream operation called on non-stream oriented socket or tried to use the "
18317 "out-of-band data option."
18320 #. type: Plain text
18321 #: build/C/man7/unix.7:455
18322 msgid "The sender passed invalid credentials in the I<struct ucred>."
18325 #. type: Plain text
18326 #: build/C/man7/unix.7:467
18328 "Remote socket was closed on a stream socket. If enabled, a B<SIGPIPE> is "
18329 "sent as well. This can be avoided by passing the B<MSG_NOSIGNAL> flag to "
18330 "B<sendmsg>(2) or B<recvmsg>(2)."
18334 #: build/C/man7/unix.7:467
18336 msgid "B<EPROTONOSUPPORT>"
18339 #. type: Plain text
18340 #: build/C/man7/unix.7:471
18341 msgid "Passed protocol is not B<AF_UNIX>."
18345 #: build/C/man7/unix.7:471
18347 msgid "B<EPROTOTYPE>"
18350 #. type: Plain text
18351 #: build/C/man7/unix.7:477
18353 "Remote socket does not match the local socket type (B<SOCK_DGRAM> versus "
18357 #. type: Plain text
18358 #: build/C/man7/unix.7:480
18359 msgid "Unknown socket type."
18362 #. type: Plain text
18363 #: build/C/man7/unix.7:484
18365 "Other errors can be generated by the generic socket layer or by the "
18366 "filesystem while generating a filesystem socket object. See the appropriate "
18367 "manual pages for more information."
18370 #. type: Plain text
18371 #: build/C/man7/unix.7:490
18373 "B<SCM_CREDENTIALS> and the abstract namespace were introduced with Linux 2.2 "
18374 "and should not be used in portable programs. (Some BSD-derived systems also "
18375 "support credential passing, but the implementation details differ.)"
18378 #. type: Plain text
18379 #: build/C/man7/unix.7:501
18381 "In the Linux implementation, sockets which are visible in the filesystem "
18382 "honor the permissions of the directory they are in. Their owner, group, and "
18383 "permissions can be changed. Creation of a new socket will fail if the "
18384 "process does not have write and search (execute) permission on the directory "
18385 "the socket is created in. Connecting to the socket object requires "
18386 "read/write permission. This behavior differs from many BSD-derived systems "
18387 "which ignore permissions for UNIX domain sockets. Portable programs should "
18388 "not rely on this feature for security."
18391 #. type: Plain text
18392 #: build/C/man7/unix.7:509
18394 "Binding to a socket with a filename creates a socket in the filesystem that "
18395 "must be deleted by the caller when it is no longer needed (using "
18396 "B<unlink>(2)). The usual UNIX close-behind semantics apply; the socket can "
18397 "be unlinked at any time and will be finally removed from the filesystem when "
18398 "the last reference to it is closed."
18401 #. type: Plain text
18402 #: build/C/man7/unix.7:518
18404 "To pass file descriptors or credentials over a B<SOCK_STREAM>, you need to "
18405 "send or receive at least one byte of nonancillary data in the same "
18406 "B<sendmsg>(2) or B<recvmsg>(2) call."
18409 #. type: Plain text
18410 #: build/C/man7/unix.7:521
18411 msgid "UNIX domain stream sockets do not support the notion of out-of-band data."
18414 #. The behavior on Solaris is quite similar.
18415 #. type: Plain text
18416 #: build/C/man7/unix.7:546
18418 "When binding a socket to an address, Linux is one of the implementations "
18419 "that appends a null terminator if none is supplied in I<sun_path>. In most "
18420 "cases this is unproblematic: when the socket address is retrieved, it will "
18421 "be one byte longer than that supplied when the socket was bound. However, "
18422 "there is one case where confusing behavior can result: if 108 non-null bytes "
18423 "are supplied when a socket is bound, then the addition of the null "
18424 "terminator takes the length of the pathname beyond I<sizeof(sun_path)>. "
18425 "Consequently, when retrieving the socket address (for example, via "
18426 "B<accept>(2)), if the input I<addrlen> argument for the retrieving call is "
18427 "specified as I<sizeof(struct sockaddr_un)>, then the returned address "
18428 "structure I<won't> have a null terminator in I<sun_path>."
18431 #. i.e., traditional BSD
18432 #. type: Plain text
18433 #: build/C/man7/unix.7:556
18435 "In addition, some implementations don't require a null terminator when "
18436 "binding a socket (the I<addrlen> argument is used to determine the length of "
18437 "I<sun_path>) and when the socket address is retrieved on these "
18438 "implementations, there is no null terminator in I<sun_path>."
18441 #. type: Plain text
18442 #: build/C/man7/unix.7:561
18444 "Applications that retrieve socket addresses can (portably) code to handle "
18445 "the possibility that there is no null terminator in I<sun_path> by "
18446 "respecting the fact that the number of valid bytes in the pathname is:"
18449 #. The following patch to amend kernel behavior was rejected:
18450 #. http://thread.gmane.org/gmane.linux.kernel.api/2437
18451 #. Subject: [patch] Fix handling of overlength pathname in AF_UNIX sun_path
18453 #. And there was a related discussion in the Austin list:
18454 #. http://thread.gmane.org/gmane.comp.standards.posix.austin.general/5735
18455 #. Subject: Having a sun_path with no null terminator
18458 #. FIXME . Track http://austingroupbugs.net/view.php?id=561
18459 #. type: Plain text
18460 #: build/C/man7/unix.7:573
18462 msgid " strnlen(addr.sun_path, addrlen - offsetof(sockaddr_un, sun_path))\n"
18465 #. type: Plain text
18466 #: build/C/man7/unix.7:585
18468 "Alternatively, an application can retrieve the socket address by allocating "
18469 "a buffer of size I<sizeof(struct sockaddr_un)+1> that is zeroed out before "
18470 "the retrieval. The retrieving call can specify I<addrlen> as "
18471 "I<sizeof(struct sockaddr_un)>, and the extra zero byte ensures that there "
18472 "will be a null terminator for the string returned in I<sun_path>:"
18475 #. type: Plain text
18476 #: build/C/man7/unix.7:589
18478 msgid "void *addrp;\n"
18481 #. type: Plain text
18482 #: build/C/man7/unix.7:595
18485 "addrlen = sizeof(struct sockaddr_un);\n"
18486 "addrp = malloc(addrlen + 1);\n"
18487 "if (addrp == NULL)\n"
18488 " /* Handle error */ ;\n"
18489 "memset(addrp, 0, addrlen + 1);\n"
18492 #. type: Plain text
18493 #: build/C/man7/unix.7:598
18496 "if (getsockname(sfd, (struct sockaddr *) addrp, &addrlen)) == -1)\n"
18497 " /* handle error */ ;\n"
18500 #. type: Plain text
18501 #: build/C/man7/unix.7:600
18504 "printf(\"sun_path = %s\\en\", ((struct sockaddr_un *) "
18505 "addrp)-E<gt>sun_path);\n"
18508 #. type: Plain text
18509 #: build/C/man7/unix.7:608
18511 "This sort of messiness can be avoided if it is guaranteed that the "
18512 "applications that I<create> pathname sockets follow the rules outlined above "
18513 "under I<Pathname sockets>."
18516 #. type: Plain text
18517 #: build/C/man7/unix.7:611
18518 msgid "See B<bind>(2)."
18521 #. type: Plain text
18522 #: build/C/man7/unix.7:616
18523 msgid "For an example of the use of B<SCM_RIGHTS> see B<cmsg>(3)."
18526 #. type: Plain text
18527 #: build/C/man7/unix.7:625
18529 "B<recvmsg>(2), B<sendmsg>(2), B<socket>(2), B<socketpair>(2), B<cmsg>(3), "
18530 "B<capabilities>(7), B<credentials>(7), B<socket>(7)"
18534 #: build/C/man7/x25.7:12
18539 #. type: Plain text
18540 #: build/C/man7/x25.7:15
18541 msgid "x25 - ITU-T X.25 / ISO-8208 protocol interface."
18544 #. type: Plain text
18545 #: build/C/man7/x25.7:19
18546 msgid "B<#include E<lt>linux/x25.hE<gt>>"
18549 #. type: Plain text
18550 #: build/C/man7/x25.7:21
18551 msgid "B<x25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);>"
18554 #. type: Plain text
18555 #: build/C/man7/x25.7:30
18557 "X25 sockets provide an interface to the X.25 packet layer protocol. This "
18558 "allows applications to communicate over a public X.25 data network as "
18559 "standardized by International Telecommunication Union's recommendation X.25 "
18560 "(X.25 DTE-DCE mode). X25 sockets can also be used for communication without "
18561 "an intermediate X.25 network (X.25 DTE-DTE mode) as described in ISO-8208."
18564 #. type: Plain text
18565 #: build/C/man7/x25.7:47
18567 "Message boundaries are preserved \\(em a B<read>(2) from a socket will "
18568 "retrieve the same chunk of data as output with the corresponding B<write>(2) "
18569 "to the peer socket. When necessary, the kernel takes care of segmenting and "
18570 "reassembling long messages by means of the X.25 M-bit. There is no "
18571 "hard-coded upper limit for the message size. However, reassembling of a "
18572 "long message might fail if there is a temporary lack of system resources or "
18573 "when other constraints (such as socket memory or buffer size limits) become "
18574 "effective. If that occurs, the X.25 connection will be reset."
18578 #: build/C/man7/x25.7:47
18580 msgid "Socket addresses"
18583 #. type: Plain text
18584 #: build/C/man7/x25.7:54
18586 "The B<AF_X25> socket address family uses the I<struct sockaddr_x25> for "
18587 "representing network addresses as defined in ITU-T recommendation X.121."
18590 #. type: Plain text
18591 #: build/C/man7/x25.7:61
18594 "struct sockaddr_x25 {\n"
18595 " sa_family_t sx25_family; /* must be AF_X25 */\n"
18596 " x25_address sx25_addr; /* X.121 Address */\n"
18600 #. type: Plain text
18601 #: build/C/man7/x25.7:72
18603 "I<sx25_addr> contains a char array I<x25_addr[]> to be interpreted as a "
18604 "null-terminated string. I<sx25_addr.x25_addr[]> consists of up to 15 (not "
18605 "counting the terminating null byte) ASCII characters forming the X.121 "
18606 "address. Only the decimal digit characters from \\(aq0\\(aq to \\(aq9\\(aq "
18610 #. type: Plain text
18611 #: build/C/man7/x25.7:81
18613 "The following X.25-specific socket options can be set by using "
18614 "B<setsockopt>(2) and read with B<getsockopt>(2) with the I<level> argument "
18615 "set to B<SOL_X25>."
18619 #: build/C/man7/x25.7:81
18621 msgid "B<X25_QBITINCL>"
18624 #. type: Plain text
18625 #: build/C/man7/x25.7:100
18627 "Controls whether the X.25 Q-bit (Qualified Data Bit) is accessible by the "
18628 "user. It expects an integer argument. If set to 0 (default), the Q-bit is "
18629 "never set for outgoing packets and the Q-bit of incoming packets is "
18630 "ignored. If set to 1, an additional first byte is prepended to each message "
18631 "read from or written to the socket. For data read from the socket, a 0 "
18632 "first byte indicates that the Q-bits of the corresponding incoming data "
18633 "packets were not set. A first byte with value 1 indicates that the Q-bit of "
18634 "the corresponding incoming data packets was set. If the first byte of the "
18635 "data written to the socket is 1, the Q-bit of the corresponding outgoing "
18636 "data packets will be set. If the first byte is 0, the Q-bit will not be "
18640 #. type: Plain text
18641 #: build/C/man7/x25.7:102
18642 msgid "The AF_X25 protocol family is a new feature of Linux 2.2."
18645 #. type: Plain text
18646 #: build/C/man7/x25.7:105
18647 msgid "Plenty, as the X.25 PLP implementation is B<CONFIG_EXPERIMENTAL>."
18650 #. type: Plain text
18651 #: build/C/man7/x25.7:107
18652 msgid "This man page is incomplete."
18655 #. type: Plain text
18656 #: build/C/man7/x25.7:114
18658 "There is no dedicated application programmer's header file yet; you need to "
18659 "include the kernel header file I<E<lt>linux/x25.hE<gt>>. "
18660 "B<CONFIG_EXPERIMENTAL> might also imply that future versions of the "
18661 "interface are not binary compatible."
18664 #. type: Plain text
18665 #: build/C/man7/x25.7:118
18667 "X.25 N-Reset events are not propagated to the user process yet. Thus, if a "
18668 "reset occurred, data might be lost without notice."
18671 #. type: Plain text
18672 #: build/C/man7/x25.7:121
18673 msgid "B<socket>(2), B<socket>(7)"
18676 #. type: Plain text
18677 #: build/C/man7/x25.7:127
18679 "Jonathan Simon Naylor: \\(lqThe Re-Analysis and Re-Implementation of "
18680 "X.25.\\(rq The URL is E<.UR "
18681 "ftp://ftp.pspt.fi\\:/pub\\:/ham\\:/linux\\:/ax25\\:/x25doc.tgz> E<.UE .>"