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: 2012-03-22 04:26+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=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man7/arp.7:9
26 #: build/C/man7/arp.7:9
32 #: build/C/man7/arp.7:9 build/C/man3/cmsg.3:7 build/C/man7/ddp.7:7 build/C/man1/getent.1:23 build/C/man3/getipnodebyname.3:24 build/C/man2/getpeername.2:40 build/C/man5/host.conf.5:26 build/C/man7/hostname.7:37 build/C/man5/hosts.5:27 build/C/man5/hosts.equiv.5:3 build/C/man7/icmp.7:7 build/C/man3/inet_ntop.3:24 build/C/man3/inet_pton.3:25 build/C/man7/ip.7:12 build/C/man7/ipv6.7:7 build/C/man7/netdevice.7:12 build/C/man5/nsswitch.conf.5:27 build/C/man7/packet.7:7 build/C/man5/protocols.5:28 build/C/man7/raw.7:9 build/C/man3/rcmd.3:41 build/C/man3/rexec.3:39 build/C/man5/services.5:34 build/C/man2/shutdown.2:38 build/C/man7/tcp.7:16 build/C/man7/udp.7:8 build/C/man7/udplite.7:25 build/C/man7/unix.7:15 build/C/man7/x25.7:7
38 #: build/C/man7/arp.7:9 build/C/man3/byteorder.3:30 build/C/man3/cmsg.3:7 build/C/man7/ddp.7:7 build/C/man3/endian.3:26 build/C/man3/ether_aton.3:31 build/C/man3/getaddrinfo.3:41 build/C/man3/getaddrinfo_a.3:27 build/C/man3/gethostbyname.3:36 build/C/man3/getipnodebyname.3:24 build/C/man3/getnameinfo.3:7 build/C/man3/getnetent.3:28 build/C/man3/getnetent_r.3:24 build/C/man2/getpeername.2:40 build/C/man3/getprotoent.3:28 build/C/man3/getprotoent_r.3:24 build/C/man3/getservent.3:32 build/C/man3/getservent_r.3:24 build/C/man7/hostname.7:37 build/C/man5/hosts.5:27 build/C/man5/hosts.equiv.5:3 build/C/man7/icmp.7:7 build/C/man3/inet.3:42 build/C/man3/inet_ntop.3:24 build/C/man3/inet_pton.3:25 build/C/man7/ip.7:12 build/C/man7/ipv6.7:7 build/C/man7/netdevice.7:12 build/C/man8/nscd.8:23 build/C/man5/nscd.conf.5:20 build/C/man5/nsswitch.conf.5:27 build/C/man7/packet.7:7 build/C/man5/protocols.5:28 build/C/man7/raw.7:9 build/C/man3/rcmd.3:41 build/C/man5/resolv.conf.5:21 build/C/man3/resolver.3:30 build/C/man3/rexec.3:39 build/C/man5/services.5:34 build/C/man3/setnetgrent.3:5 build/C/man2/shutdown.2:38 build/C/man7/tcp.7:16 build/C/man7/udp.7:8 build/C/man7/udplite.7:25 build/C/man7/unix.7:15 build/C/man7/x25.7:7
40 msgid "Linux Programmer's Manual"
44 #: build/C/man7/arp.7:10 build/C/man3/byteorder.3:31 build/C/man3/cmsg.3:8 build/C/man7/ddp.7:8 build/C/man3/endian.3:27 build/C/man3/ether_aton.3:32 build/C/man3/getaddrinfo.3:42 build/C/man3/getaddrinfo_a.3:28 build/C/man1/getent.1:24 build/C/man3/gethostbyname.3:37 build/C/man3/getipnodebyname.3:25 build/C/man3/getnameinfo.3:8 build/C/man3/getnetent.3:29 build/C/man3/getnetent_r.3:25 build/C/man2/getpeername.2:41 build/C/man3/getprotoent.3:29 build/C/man3/getprotoent_r.3:25 build/C/man3/getservent.3:33 build/C/man3/getservent_r.3:25 build/C/man5/host.conf.5:27 build/C/man7/hostname.7:38 build/C/man5/hosts.5:28 build/C/man5/hosts.equiv.5:4 build/C/man7/icmp.7:8 build/C/man3/inet.3:43 build/C/man3/inet_ntop.3:25 build/C/man3/inet_pton.3:26 build/C/man7/ip.7:13 build/C/man7/ipv6.7:8 build/C/man7/netdevice.7:13 build/C/man5/networks.5:25 build/C/man8/nscd.8:24 build/C/man5/nscd.conf.5:21 build/C/man5/nsswitch.conf.5:28 build/C/man7/packet.7:8 build/C/man5/protocols.5:29 build/C/man7/raw.7:10 build/C/man3/rcmd.3:42 build/C/man5/resolv.conf.5:23 build/C/man3/resolver.3:31 build/C/man3/rexec.3:40 build/C/man5/services.5:35 build/C/man3/setnetgrent.3:6 build/C/man2/shutdown.2:39 build/C/man7/tcp.7:17 build/C/man7/udp.7:9 build/C/man7/udplite.7:26 build/C/man7/unix.7:16 build/C/man7/x25.7:8
50 #: build/C/man7/arp.7:12
51 msgid "arp - Linux ARP kernel module."
55 #: build/C/man7/arp.7:12 build/C/man3/byteorder.3:46 build/C/man3/cmsg.3:33 build/C/man7/ddp.7:18 build/C/man3/endian.3:51 build/C/man3/ether_aton.3:57 build/C/man3/getaddrinfo.3:73 build/C/man3/getaddrinfo_a.3:48 build/C/man1/getent.1:28 build/C/man3/gethostbyname.3:116 build/C/man3/getipnodebyname.3:42 build/C/man3/getnameinfo.3:29 build/C/man3/getnetent.3:46 build/C/man3/getnetent_r.3:60 build/C/man2/getpeername.2:48 build/C/man3/getprotoent.3:46 build/C/man3/getprotoent_r.3:57 build/C/man3/getservent.3:50 build/C/man3/getservent_r.3:57 build/C/man5/host.conf.5:29 build/C/man7/hostname.7:40 build/C/man5/hosts.5:32 build/C/man5/hosts.equiv.5:7 build/C/man7/icmp.7:10 build/C/man3/inet.3:75 build/C/man3/inet_ntop.3:34 build/C/man3/inet_pton.3:34 build/C/man7/ip.7:29 build/C/man7/ipv6.7:20 build/C/man7/netdevice.7:19 build/C/man5/networks.5:27 build/C/man8/nscd.8:26 build/C/man5/nscd.conf.5:23 build/C/man5/nsswitch.conf.5:30 build/C/man7/packet.7:20 build/C/man5/protocols.5:31 build/C/man7/raw.7:18 build/C/man3/rcmd.3:70 build/C/man5/resolv.conf.5:27 build/C/man3/resolver.3:83 build/C/man3/rexec.3:50 build/C/man5/services.5:37 build/C/man3/setnetgrent.3:39 build/C/man2/shutdown.2:45 build/C/man7/tcp.7:27 build/C/man7/udp.7:17 build/C/man7/udplite.7:36 build/C/man7/unix.7:27 build/C/man7/x25.7:16
61 #: build/C/man7/arp.7:20
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:33
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:45
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:68
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 only sent when there is data queued for sending."
106 #: build/C/man7/arp.7:73
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:73 build/C/man7/ddp.7:139 build/C/man7/ip.7:898 build/C/man7/netdevice.7:66 build/C/man7/packet.7:225 build/C/man7/tcp.7:996 build/C/man7/udp.7:192 build/C/man7/unix.7:277
121 #: build/C/man7/arp.7:80
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:90
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:99
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 only be performed by a process with the B<CAP_NET_ADMIN> capability or "
146 "an effective UID of 0."
150 #: build/C/man7/arp.7:109
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:114
160 msgid "I<arp_flags>\n"
164 #: build/C/man7/arp.7:115
166 msgid "flag:meaning\n"
170 #: build/C/man7/arp.7:116
172 msgid "ATF_COM:Lookup complete\n"
176 #: build/C/man7/arp.7:117
178 msgid "ATF_PERM:Permanent entry\n"
182 #: build/C/man7/arp.7:118
184 msgid "ATF_PUBL:Publish entry\n"
188 #: build/C/man7/arp.7:119
190 msgid "ATF_USETRAILERS:Trailers requested\n"
194 #: build/C/man7/arp.7:120
196 msgid "ATF_NETMASK:Use a netmask\n"
200 #: build/C/man7/arp.7:121
202 msgid "ATF_DONTPUB:Don't answer\n"
206 #: build/C/man7/arp.7:135
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:135 build/C/man7/ddp.7:117 build/C/man7/icmp.7:36 build/C/man7/ip.7:774 build/C/man7/tcp.7:159 build/C/man7/udp.7:131
217 msgid "/proc interfaces"
221 #: build/C/man7/arp.7:148
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:148
234 msgid "I<anycast_delay> (since Linux 2.2)"
239 #: build/C/man7/arp.7:155
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:155
249 msgid "I<app_solicit> (since Linux 2.2)"
254 #: build/C/man7/arp.7:162
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:162
264 msgid "I<base_reachable_time> (since Linux 2.2)"
269 #: build/C/man7/arp.7:173
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:173
281 msgid "I<base_reachable_time_ms> (since Linux 2.6.12)"
285 #: build/C/man7/arp.7:179
287 "As for I<base_reachable_time>, but measures time in milliseconds. Defaults "
288 "to 30000 milliseconds."
292 #: build/C/man7/arp.7:179
294 msgid "I<delay_first_probe_time> (since Linux 2.2)"
299 #: build/C/man7/arp.7:185
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:185
308 msgid "I<gc_interval> (since Linux 2.2)"
313 #: build/C/man7/arp.7:191
315 "How frequently the garbage collector for neighbor entries should attempt to "
316 "run. Defaults to 30 seconds."
320 #: build/C/man7/arp.7:191
322 msgid "I<gc_stale_time> (since Linux 2.2)"
327 #: build/C/man7/arp.7:198
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:198
337 msgid "I<gc_thresh1> (since Linux 2.2)"
342 #: build/C/man7/arp.7:205
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:205
352 msgid "I<gc_thresh2> (since Linux 2.2)"
357 #: build/C/man7/arp.7:212
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:212
367 msgid "I<gc_thresh3> (since Linux 2.2)"
372 #: build/C/man7/arp.7:219
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:219
382 msgid "I<locktime> (since Linux 2.2)"
387 #: build/C/man7/arp.7:226
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:226
397 msgid "I<mcast_solicit> (since Linux 2.2)"
402 #: build/C/man7/arp.7:232
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:232
411 msgid "I<proxy_delay> (since Linux 2.2)"
416 #: build/C/man7/arp.7:240
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:240
426 msgid "I<proxy_qlen> (since Linux 2.2)"
431 #: build/C/man7/arp.7:245
433 "The maximum number of packets which may be queued to proxy-ARP addresses. "
438 #: build/C/man7/arp.7:245
440 msgid "I<retrans_time> (since Linux 2.2)"
445 #: build/C/man7/arp.7:252
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:252
454 msgid "I<retrans_time_ms> (since Linux 2.6.12)"
458 #: build/C/man7/arp.7:256
460 "The number of milliseconds to delay before retransmitting a request. "
461 "Defaults to 1000 milliseconds."
465 #: build/C/man7/arp.7:256
467 msgid "I<ucast_solicit> (since Linux 2.2)"
472 #: build/C/man7/arp.7:263
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:263
481 msgid "I<unres_qlen> (since Linux 2.2)"
486 #: build/C/man7/arp.7:269
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:269 build/C/man7/ddp.7:216 build/C/man3/endian.3:72 build/C/man3/getnameinfo.3:200 build/C/man7/icmp.7:155 build/C/man7/ipv6.7:270 build/C/man7/packet.7:277 build/C/man7/raw.7:171 build/C/man7/tcp.7:1113 build/C/man7/udp.7:241 build/C/man7/udplite.7:142 build/C/man7/unix.7:394 build/C/man7/x25.7:95
499 #: build/C/man7/arp.7:276
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:282
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:286
517 msgid "The I<neigh/*> interfaces did not exist before Linux 2.2."
521 #: build/C/man7/arp.7:286 build/C/man7/ddp.7:239 build/C/man3/ether_aton.3:125 build/C/man3/gethostbyname.3:422 build/C/man3/inet_ntop.3:110 build/C/man3/inet_pton.3:148 build/C/man7/ip.7:1067 build/C/man7/ipv6.7:309 build/C/man7/netdevice.7:262 build/C/man7/packet.7:358 build/C/man7/raw.7:248 build/C/man3/rcmd.3:211 build/C/man3/rexec.3:123 build/C/man7/tcp.7:1120 build/C/man7/udplite.7:124 build/C/man7/x25.7:97
527 #: build/C/man7/arp.7:290
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:296
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:299
546 "This man page mashes IPv4 specific and shared between IPv4 and IPv6 "
547 "functionality together."
551 #: build/C/man7/arp.7:299 build/C/man3/byteorder.3:77 build/C/man3/cmsg.3:213 build/C/man7/ddp.7:244 build/C/man3/endian.3:149 build/C/man3/ether_aton.3:129 build/C/man3/getaddrinfo.3:813 build/C/man3/getaddrinfo_a.3:600 build/C/man1/getent.1:366 build/C/man3/gethostbyname.3:427 build/C/man3/getipnodebyname.3:264 build/C/man3/getnameinfo.3:272 build/C/man3/getnetent.3:133 build/C/man3/getnetent_r.3:143 build/C/man2/getpeername.2:114 build/C/man3/getprotoent.3:122 build/C/man3/getprotoent_r.3:235 build/C/man3/getservent.3:131 build/C/man3/getservent_r.3:239 build/C/man5/host.conf.5:199 build/C/man7/hostname.7:83 build/C/man5/hosts.5:115 build/C/man5/hosts.equiv.5:62 build/C/man7/icmp.7:185 build/C/man3/inet.3:297 build/C/man3/inet_ntop.3:116 build/C/man3/inet_pton.3:213 build/C/man7/ip.7:1086 build/C/man7/ipv6.7:320 build/C/man7/netdevice.7:276 build/C/man5/networks.5:73 build/C/man8/nscd.8:85 build/C/man5/nscd.conf.5:186 build/C/man7/packet.7:389 build/C/man5/protocols.5:80 build/C/man7/raw.7:265 build/C/man3/rcmd.3:216 build/C/man5/resolv.conf.5:260 build/C/man3/resolver.3:263 build/C/man3/rexec.3:132 build/C/man5/services.5:209 build/C/man3/setnetgrent.3:102 build/C/man2/shutdown.2:97 build/C/man7/tcp.7:1132 build/C/man7/udp.7:246 build/C/man7/udplite.7:144 build/C/man7/unix.7:438 build/C/man7/x25.7:113
557 #: build/C/man7/arp.7:302
558 msgid "B<capabilities>(7), B<ip>(7)"
562 #: build/C/man7/arp.7:304
563 msgid "RFC\\ 826 for a description of ARP."
567 #: build/C/man7/arp.7:307
569 "RFC\\ 2461 for a description of IPv6 neighbor discovery and the base "
574 #: build/C/man7/arp.7:309
575 msgid "Linux 2.2+ IPv4 ARP uses the IPv6 algorithms when applicable."
579 #: build/C/man7/arp.7:309 build/C/man3/byteorder.3:81 build/C/man3/cmsg.3:218 build/C/man7/ddp.7:249 build/C/man3/endian.3:151 build/C/man3/ether_aton.3:131 build/C/man3/getaddrinfo.3:822 build/C/man3/getaddrinfo_a.3:607 build/C/man1/getent.1:368 build/C/man3/gethostbyname.3:441 build/C/man3/getipnodebyname.3:269 build/C/man3/getnameinfo.3:302 build/C/man3/getnetent.3:140 build/C/man3/getnetent_r.3:146 build/C/man2/getpeername.2:121 build/C/man3/getprotoent.3:127 build/C/man3/getprotoent_r.3:238 build/C/man3/getservent.3:136 build/C/man3/getservent_r.3:242 build/C/man5/host.conf.5:204 build/C/man7/hostname.7:91 build/C/man5/hosts.5:125 build/C/man5/hosts.equiv.5:66 build/C/man7/icmp.7:189 build/C/man3/inet.3:307 build/C/man3/inet_ntop.3:120 build/C/man3/inet_pton.3:217 build/C/man7/ip.7:1104 build/C/man7/ipv6.7:328 build/C/man7/netdevice.7:281 build/C/man5/networks.5:79 build/C/man8/nscd.8:91 build/C/man5/nscd.conf.5:191 build/C/man5/nsswitch.conf.5:286 build/C/man7/packet.7:404 build/C/man5/protocols.5:84 build/C/man7/raw.7:279 build/C/man3/rcmd.3:224 build/C/man5/resolv.conf.5:267 build/C/man3/resolver.3:269 build/C/man3/rexec.3:135 build/C/man5/services.5:221 build/C/man3/setnetgrent.3:106 build/C/man2/shutdown.2:101 build/C/man7/tcp.7:1158 build/C/man7/udp.7:257 build/C/man7/udplite.7:153 build/C/man7/unix.7:447 build/C/man7/x25.7:123
585 #: build/C/man7/arp.7:316 build/C/man3/byteorder.3:88 build/C/man3/cmsg.3:225 build/C/man7/ddp.7:256 build/C/man3/endian.3:158 build/C/man3/ether_aton.3:138 build/C/man3/getaddrinfo.3:829 build/C/man3/getaddrinfo_a.3:614 build/C/man1/getent.1:375 build/C/man3/gethostbyname.3:448 build/C/man3/getipnodebyname.3:276 build/C/man3/getnameinfo.3:309 build/C/man3/getnetent.3:147 build/C/man3/getnetent_r.3:153 build/C/man2/getpeername.2:128 build/C/man3/getprotoent.3:134 build/C/man3/getprotoent_r.3:245 build/C/man3/getservent.3:143 build/C/man3/getservent_r.3:249 build/C/man5/host.conf.5:211 build/C/man7/hostname.7:98 build/C/man5/hosts.5:132 build/C/man5/hosts.equiv.5:73 build/C/man7/icmp.7:196 build/C/man3/inet.3:314 build/C/man3/inet_ntop.3:127 build/C/man3/inet_pton.3:224 build/C/man7/ip.7:1111 build/C/man7/ipv6.7:335 build/C/man7/netdevice.7:288 build/C/man5/networks.5:86 build/C/man8/nscd.8:98 build/C/man5/nscd.conf.5:198 build/C/man5/nsswitch.conf.5:293 build/C/man7/packet.7:411 build/C/man5/protocols.5:91 build/C/man7/raw.7:286 build/C/man3/rcmd.3:231 build/C/man5/resolv.conf.5:274 build/C/man3/resolver.3:276 build/C/man3/rexec.3:142 build/C/man5/services.5:228 build/C/man3/setnetgrent.3:113 build/C/man2/shutdown.2:108 build/C/man7/tcp.7:1165 build/C/man7/udp.7:264 build/C/man7/udplite.7:160 build/C/man7/unix.7:454 build/C/man7/x25.7:130
587 "This page is part of release 3.37 of the Linux I<man-pages> project. A "
588 "description of the project, and information about reporting bugs, can be "
589 "found at http://www.kernel.org/doc/man-pages/."
593 #: build/C/man3/byteorder.3:30
599 #: build/C/man3/byteorder.3:30
605 #: build/C/man3/byteorder.3:30 build/C/man3/endian.3:26 build/C/man3/ether_aton.3:31 build/C/man3/getaddrinfo.3:41 build/C/man3/getaddrinfo_a.3:27 build/C/man3/getnameinfo.3:7 build/C/man3/getnetent.3:28 build/C/man3/getnetent_r.3:24 build/C/man3/getprotoent.3:28 build/C/man3/getprotoent_r.3:24 build/C/man3/getservent.3:32 build/C/man3/getservent_r.3:24 build/C/man3/inet.3:42 build/C/man8/nscd.8:23 build/C/man5/nscd.conf.5:20 build/C/man3/resolver.3:30 build/C/man3/setnetgrent.3:5
611 #: build/C/man3/byteorder.3:34
613 "htonl, htons, ntohl, ntohs - convert values between host and network byte "
618 #: build/C/man3/byteorder.3:34 build/C/man3/cmsg.3:10 build/C/man7/ddp.7:10 build/C/man3/endian.3:31 build/C/man3/ether_aton.3:35 build/C/man3/getaddrinfo.3:45 build/C/man3/getaddrinfo_a.3:31 build/C/man1/getent.1:26 build/C/man3/gethostbyname.3:44 build/C/man3/getipnodebyname.3:28 build/C/man3/getnameinfo.3:10 build/C/man3/getnetent.3:32 build/C/man3/getnetent_r.3:28 build/C/man2/getpeername.2:43 build/C/man3/getprotoent.3:32 build/C/man3/getprotoent_r.3:28 build/C/man3/getservent.3:36 build/C/man3/getservent_r.3:28 build/C/man5/hosts.5:30 build/C/man3/inet.3:46 build/C/man3/inet_ntop.3:27 build/C/man3/inet_pton.3:28 build/C/man7/ip.7:15 build/C/man7/ipv6.7:10 build/C/man7/netdevice.7:15 build/C/man7/packet.7:10 build/C/man7/raw.7:12 build/C/man3/rcmd.3:45 build/C/man5/resolv.conf.5:25 build/C/man3/resolver.3:34 build/C/man3/rexec.3:42 build/C/man3/setnetgrent.3:9 build/C/man2/shutdown.2:41 build/C/man7/tcp.7:19 build/C/man7/udp.7:11 build/C/man7/udplite.7:28 build/C/man7/unix.7:19 build/C/man7/x25.7:10
624 #: build/C/man3/byteorder.3:37 build/C/man3/inet_ntop.3:30 build/C/man3/inet_pton.3:31
626 msgid "B<#include E<lt>arpa/inet.hE<gt>>\n"
630 #: build/C/man3/byteorder.3:39
632 msgid "B<uint32_t htonl(uint32_t >I<hostlong>B<);>\n"
636 #: build/C/man3/byteorder.3:41
638 msgid "B<uint16_t htons(uint16_t >I<hostshort>B<);>\n"
642 #: build/C/man3/byteorder.3:43
644 msgid "B<uint32_t ntohl(uint32_t >I<netlong>B<);>\n"
648 #: build/C/man3/byteorder.3:45
650 msgid "B<uint16_t ntohs(uint16_t >I<netshort>B<);>\n"
654 #: build/C/man3/byteorder.3:51
656 "The B<htonl>() function converts the unsigned integer I<hostlong> from host "
657 "byte order to network byte order."
661 #: build/C/man3/byteorder.3:56
663 "The B<htons>() function converts the unsigned short integer I<hostshort> "
664 "from host byte order to network byte order."
668 #: build/C/man3/byteorder.3:61
670 "The B<ntohl>() function converts the unsigned integer I<netlong> from "
671 "network byte order to host byte order."
675 #: build/C/man3/byteorder.3:66
677 "The B<ntohs>() function converts the unsigned short integer I<netshort> "
678 "from network byte order to host byte order."
682 #: build/C/man3/byteorder.3:70
684 "On the i386 the host byte order is Least Significant Byte first, whereas the "
685 "network byte order, as used on the Internet, is Most Significant Byte first."
689 #: build/C/man3/byteorder.3:70 build/C/man3/cmsg.3:137 build/C/man3/endian.3:74 build/C/man3/ether_aton.3:123 build/C/man3/getaddrinfo.3:580 build/C/man3/getaddrinfo_a.3:303 build/C/man3/gethostbyname.3:301 build/C/man3/getipnodebyname.3:256 build/C/man3/getnameinfo.3:203 build/C/man3/getnetent.3:124 build/C/man3/getnetent_r.3:139 build/C/man2/getpeername.2:99 build/C/man3/getprotoent.3:120 build/C/man3/getprotoent_r.3:129 build/C/man3/getservent.3:129 build/C/man3/getservent_r.3:128 build/C/man3/inet.3:210 build/C/man3/inet_ntop.3:98 build/C/man3/inet_pton.3:127 build/C/man3/rcmd.3:205 build/C/man3/resolver.3:261 build/C/man3/rexec.3:116 build/C/man3/setnetgrent.3:87 build/C/man2/shutdown.2:84
691 msgid "CONFORMING TO"
695 #: build/C/man3/byteorder.3:72 build/C/man3/inet_pton.3:129
696 msgid "POSIX.1-2001."
700 #: build/C/man3/byteorder.3:77
702 "Some systems require the inclusion of I<E<lt>netinet/in.hE<gt>> instead of "
703 "I<E<lt>arpa/inet.hE<gt>>."
707 #: build/C/man3/byteorder.3:81
708 msgid "B<endian>(3), B<gethostbyname>(3), B<getservent>(3)"
712 #: build/C/man3/cmsg.3:7
718 #: build/C/man3/cmsg.3:7 build/C/man7/ddp.7:7 build/C/man7/raw.7:9
724 #: build/C/man3/cmsg.3:10
725 msgid "CMSG_ALIGN, CMSG_SPACE, CMSG_NXTHDR, CMSG_FIRSTHDR - Access ancillary data"
729 #: build/C/man3/cmsg.3:12 build/C/man7/ddp.7:12 build/C/man2/getpeername.2:45 build/C/man7/ip.7:17 build/C/man7/ipv6.7:12 build/C/man7/raw.7:14 build/C/man2/shutdown.2:43 build/C/man7/tcp.7:21 build/C/man7/udp.7:13 build/C/man7/udplite.7:30 build/C/man7/unix.7:21 build/C/man7/x25.7:12
730 msgid "B<#include E<lt>sys/socket.hE<gt>>"
734 #: build/C/man3/cmsg.3:14
735 msgid "B<struct cmsghdr *CMSG_FIRSTHDR(struct msghdr *>I<msgh>B<);>"
739 #: build/C/man3/cmsg.3:16
741 "B<struct cmsghdr *CMSG_NXTHDR(struct msghdr *>I<msgh>B<, struct cmsghdr "
746 #: build/C/man3/cmsg.3:18
747 msgid "B<size_t CMSG_ALIGN(size_t >I<length>B<);>"
751 #: build/C/man3/cmsg.3:20
752 msgid "B<size_t CMSG_SPACE(size_t >I<length>B<);>"
756 #: build/C/man3/cmsg.3:22
757 msgid "B<size_t CMSG_LEN(size_t >I<length>B<);>"
761 #: build/C/man3/cmsg.3:24
762 msgid "B<unsigned char *CMSG_DATA(struct cmsghdr *>I<cmsg>B<);>"
766 #: build/C/man3/cmsg.3:32
770 " socklen_t cmsg_len; /* data byte count, including header */\n"
771 " int cmsg_level; /* originating protocol */\n"
772 " int cmsg_type; /* protocol-specific type */\n"
773 " /* followed by unsigned char cmsg_data[]; */\n"
778 #: build/C/man3/cmsg.3:47
780 "These macros are used to create and access control messages (also called "
781 "ancillary data) that are not a part of the socket payload. This control "
782 "information may include the interface the packet was received on, various "
783 "rarely used header fields, an extended error description, a set of file "
784 "descriptors or UNIX credentials. For instance, control messages can be used "
785 "to send additional header fields such as IP options. Ancillary data is sent "
786 "by calling B<sendmsg>(2) and received by calling B<recvmsg>(2). See their "
787 "manual pages for more information."
791 #: build/C/man3/cmsg.3:58
793 "Ancillary data is a sequence of I<struct cmsghdr> structures with appended "
794 "data. This sequence should only be accessed using the macros described in "
795 "this manual page and never directly. See the specific protocol man pages "
796 "for the available control message types. The maximum ancillary buffer size "
797 "allowed per socket can be set using I</proc/sys/net/core/optmem_max>; see "
802 #: build/C/man3/cmsg.3:65
804 "B<CMSG_FIRSTHDR>() returns a pointer to the first I<cmsghdr> in the "
805 "ancillary data buffer associated with the passed I<msghdr>."
809 #: build/C/man3/cmsg.3:72
811 "B<CMSG_NXTHDR>() returns the next valid I<cmsghdr> after the passed "
812 "I<cmsghdr>. It returns NULL when there isn't enough space left in the "
817 #: build/C/man3/cmsg.3:77
819 "B<CMSG_ALIGN>(), given a length, returns it including the required "
820 "alignment. This is a constant expression."
824 #: build/C/man3/cmsg.3:82
826 "B<CMSG_SPACE>() returns the number of bytes an ancillary element with "
827 "payload of the passed data length occupies. This is a constant expression."
831 #: build/C/man3/cmsg.3:86
832 msgid "B<CMSG_DATA>() returns a pointer to the data portion of a I<cmsghdr>."
836 #: build/C/man3/cmsg.3:97
838 "B<CMSG_LEN>() returns the value to store in the I<cmsg_len> member of the "
839 "I<cmsghdr> structure, taking into account any necessary alignment. It takes "
840 "the data length as an argument. This is a constant expression."
844 #: build/C/man3/cmsg.3:130
846 "To create ancillary data, first initialize the I<msg_controllen> member of "
847 "the I<msghdr> with the length of the control message buffer. Use "
848 "B<CMSG_FIRSTHDR>() on the I<msghdr> to get the first control message and "
849 "B<CMSG_NXTHDR>() to get all subsequent ones. In each control message, "
850 "initialize I<cmsg_len> (with B<CMSG_LEN>()), the other I<cmsghdr> header "
851 "fields, and the data portion using B<CMSG_DATA>(). Finally, the "
852 "I<msg_controllen> field of the I<msghdr> should be set to the sum of the "
853 "B<CMSG_SPACE>() of the length of all control messages in the buffer. For "
854 "more information on the I<msghdr>, see B<recvmsg>(2)."
858 #: build/C/man3/cmsg.3:137
860 "When the control message buffer is too short to store all messages, the "
861 "B<MSG_CTRUNC> flag is set in the I<msg_flags> member of the I<msghdr>."
865 #: build/C/man3/cmsg.3:142
867 "This ancillary data model conforms to the POSIX.1g draft, 4.4BSD-Lite, the "
868 "IPv6 advanced API described in RFC\\ 2292 and the SUSv2. B<CMSG_ALIGN>() "
869 "is a Linux extension."
873 #: build/C/man3/cmsg.3:142 build/C/man7/ddp.7:221 build/C/man3/endian.3:89 build/C/man3/getaddrinfo.3:585 build/C/man3/getaddrinfo_a.3:306 build/C/man3/gethostbyname.3:325 build/C/man3/getipnodebyname.3:259 build/C/man3/getnameinfo.3:205 build/C/man3/getnetent.3:126 build/C/man2/getpeername.2:103 build/C/man5/host.conf.5:190 build/C/man5/hosts.5:88 build/C/man5/hosts.equiv.5:49 build/C/man7/icmp.7:163 build/C/man3/inet.3:218 build/C/man3/inet_pton.3:129 build/C/man7/ip.7:1006 build/C/man7/ipv6.7:299 build/C/man7/netdevice.7:247 build/C/man8/nscd.8:60 build/C/man5/nsswitch.conf.5:277 build/C/man7/packet.7:295 build/C/man7/raw.7:183 build/C/man3/setnetgrent.3:98 build/C/man2/shutdown.2:88 build/C/man7/unix.7:400
879 #: build/C/man3/cmsg.3:147
881 "For portability, ancillary data should be accessed only using the macros "
882 "described here. B<CMSG_ALIGN>() is a Linux extension and should be not "
883 "used in portable programs."
887 #: build/C/man3/cmsg.3:157
889 "In Linux, B<CMSG_LEN>(), B<CMSG_DATA>(), and B<CMSG_ALIGN>() are constant "
890 "expressions (assuming their argument is constant); this could be used to "
891 "declare the size of global variables. This may be not portable, however."
895 #: build/C/man3/cmsg.3:157 build/C/man3/endian.3:105 build/C/man3/getaddrinfo.3:608 build/C/man3/getaddrinfo_a.3:312 build/C/man3/getnameinfo.3:233 build/C/man3/getprotoent_r.3:133 build/C/man3/getservent_r.3:132 build/C/man5/hosts.5:107 build/C/man3/inet.3:254 build/C/man3/inet_ntop.3:113 build/C/man3/inet_pton.3:154 build/C/man7/unix.7:430
901 #: build/C/man3/cmsg.3:161
902 msgid "This code looks for the B<IP_TTL> option in a received ancillary buffer:"
906 #: build/C/man3/cmsg.3:168
909 "struct msghdr msgh;\n"
910 "struct cmsghdr *cmsg;\n"
912 "int received_ttl;\n"
916 #: build/C/man3/cmsg.3:185
919 "/* Receive auxiliary data in msgh */\n"
920 "for (cmsg = CMSG_FIRSTHDR(&msgh); cmsg != NULL;\n"
921 " cmsg = CMSG_NXTHDR(&msgh,cmsg)) {\n"
922 " if (cmsg-E<gt>cmsg_level == IPPROTO_IP\n"
923 " && cmsg-E<gt>cmsg_type == IP_TTL) {\n"
924 " ttlptr = (int *) CMSG_DATA(cmsg);\n"
925 " received_ttl = *ttlptr;\n"
929 "if (cmsg == NULL) {\n"
931 " * Error: IP_TTL not enabled or small buffer\n"
938 #: build/C/man3/cmsg.3:191
940 "The code below passes an array of file descriptors over a UNIX domain socket "
941 "using B<SCM_RIGHTS>:"
945 #: build/C/man3/cmsg.3:199
948 "struct msghdr msg = {0};\n"
949 "struct cmsghdr *cmsg;\n"
950 "int myfds[NUM_FD]; /* Contains the file descriptors to pass. */\n"
951 "char buf[CMSG_SPACE(sizeof myfds)]; /* ancillary data buffer */\n"
956 #: build/C/man3/cmsg.3:211
959 "msg.msg_control = buf;\n"
960 "msg.msg_controllen = sizeof buf;\n"
961 "cmsg = CMSG_FIRSTHDR(&msg);\n"
962 "cmsg-E<gt>cmsg_level = SOL_SOCKET;\n"
963 "cmsg-E<gt>cmsg_type = SCM_RIGHTS;\n"
964 "cmsg-E<gt>cmsg_len = CMSG_LEN(sizeof(int) * NUM_FD);\n"
965 "/* Initialize the payload: */\n"
966 "fdptr = (int *) CMSG_DATA(cmsg);\n"
967 "memcpy(fdptr, myfds, NUM_FD * sizeof(int));\n"
968 "/* Sum of the length of all control messages in the buffer: */\n"
969 "msg.msg_controllen = cmsg-E<gt>cmsg_len;\n"
973 #: build/C/man3/cmsg.3:216
974 msgid "B<recvmsg>(2), B<sendmsg>(2)"
978 #: build/C/man3/cmsg.3:218
983 #: build/C/man7/ddp.7:7
989 #: build/C/man7/ddp.7:10
990 msgid "ddp - Linux AppleTalk protocol implementation"
994 #: build/C/man7/ddp.7:14
995 msgid "B<#include E<lt>netatalk/at.hE<gt>>"
999 #: build/C/man7/ddp.7:16
1000 msgid "I<ddp_socket>B< = socket(AF_APPLETALK, SOCK_DGRAM, 0);>"
1004 #: build/C/man7/ddp.7:18
1005 msgid "I<raw_socket>B< = socket(AF_APPLETALK, SOCK_RAW, >I<protocol>B<);>"
1009 #: build/C/man7/ddp.7:29
1011 "Linux implements the Appletalk protocols described in I<Inside Appletalk>. "
1012 "Only the DDP layer and AARP are present in the kernel. They are designed to "
1013 "be used via the B<netatalk> protocol libraries. This page documents the "
1014 "interface for those who wish or need to use the DDP layer directly."
1018 #: build/C/man7/ddp.7:34
1020 "The communication between Appletalk and the user program works using a "
1021 "BSD-compatible socket interface. For more information on sockets, see "
1026 #: build/C/man7/ddp.7:55
1028 "An AppleTalk socket is created by calling the B<socket>(2) function with a "
1029 "B<AF_APPLETALK> socket family argument. Valid socket types are "
1030 "B<SOCK_DGRAM> to open a B<ddp> socket or B<SOCK_RAW> to open a B<raw> "
1031 "socket. I<protocol> is the Appletalk protocol to be received or sent. For "
1032 "B<SOCK_RAW> you must specify B<ATPROTO_DDP>."
1036 #: build/C/man7/ddp.7:60
1038 "Raw sockets may be only opened by a process with effective user ID 0 or when "
1039 "the process has the B<CAP_NET_RAW> capability."
1043 #: build/C/man7/ddp.7:60 build/C/man7/ip.7:96 build/C/man7/ipv6.7:63 build/C/man7/raw.7:89 build/C/man7/udp.7:92 build/C/man7/udplite.7:56 build/C/man7/unix.7:53
1045 msgid "Address Format"
1049 #: build/C/man7/ddp.7:63
1051 "An Appletalk socket address is defined as a combination of a network number, "
1052 "a node number, and a port number."
1056 #: build/C/man7/ddp.7:70
1059 "struct at_addr {\n"
1060 " unsigned short s_net;\n"
1061 " unsigned char s_node;\n"
1066 #: build/C/man7/ddp.7:76
1069 "struct sockaddr_atalk {\n"
1070 " sa_family_t sat_family; /* address family */\n"
1071 " unsigned char sat_port; /* port */\n"
1072 " struct at_addr sat_addr; /* net/node */\n"
1076 #. FIXME this doesn't make sense [johnl]
1078 #: build/C/man7/ddp.7:115
1080 "I<sat_family> is always set to B<AF_APPLETALK>. I<sat_port> contains the "
1081 "port. The port numbers below 129 are known as I<reserved ports>. Only "
1082 "processes with the effective user ID 0 or the B<CAP_NET_BIND_SERVICE> "
1083 "capability may B<bind>(2) to these sockets. I<sat_addr> is the host "
1084 "address. The I<net> member of I<struct at_addr> contains the host network "
1085 "in network byte order. The value of B<AT_ANYNET> is a wildcard and also "
1086 "implies \\(lqthis network.\\(rq The I<node> member of I<struct at_addr> "
1087 "contains the host node number. The value of B<AT_ANYNODE> is a wildcard and "
1088 "also implies \\(lqthis node.\\(rq The value of B<ATADDR_BCAST> is a link "
1089 "local broadcast address."
1093 #: build/C/man7/ddp.7:115 build/C/man7/ip.7:197 build/C/man7/ipv6.7:113 build/C/man7/packet.7:174 build/C/man7/raw.7:105 build/C/man7/tcp.7:809 build/C/man7/udp.7:172 build/C/man7/udplite.7:65 build/C/man7/unix.7:133 build/C/man7/x25.7:67
1095 msgid "Socket Options"
1099 #: build/C/man7/ddp.7:117
1100 msgid "No protocol-specific socket options are supported."
1104 #: build/C/man7/ddp.7:123
1106 "IP supports a set of I</proc> interfaces to configure some global AppleTalk "
1107 "parameters. The parameters can be accessed by reading or writing files in "
1108 "the directory I</proc/sys/net/atalk/>."
1112 #: build/C/man7/ddp.7:123
1114 msgid "I<aarp-expiry-time>"
1118 #: build/C/man7/ddp.7:126
1119 msgid "The time interval (in seconds) before an AARP cache entry expires."
1123 #: build/C/man7/ddp.7:126
1125 msgid "I<aarp-resolve-time>"
1129 #: build/C/man7/ddp.7:129
1130 msgid "The time interval (in seconds) before an AARP cache entry is resolved."
1134 #: build/C/man7/ddp.7:129
1136 msgid "I<aarp-retransmit-limit>"
1140 #: build/C/man7/ddp.7:133
1142 "The number of retransmissions of an AARP query before the node is declared "
1147 #: build/C/man7/ddp.7:133
1149 msgid "I<aarp-tick-time>"
1153 #: build/C/man7/ddp.7:136
1154 msgid "The timer rate (in seconds) for the timer driving AARP."
1158 #: build/C/man7/ddp.7:139
1160 "The default values match the specification and should never need to be "
1164 #. FIXME Add a section about multicasting
1166 #: build/C/man7/ddp.7:144
1167 msgid "All ioctls described in B<socket>(7) apply to DDP."
1171 #: build/C/man7/ddp.7:144 build/C/man3/gethostbyname.3:276 build/C/man3/getnetent_r.3:127 build/C/man2/getpeername.2:71 build/C/man3/getprotoent_r.3:117 build/C/man3/getservent_r.3:116 build/C/man3/inet_ntop.3:89 build/C/man7/ip.7:915 build/C/man7/packet.7:241 build/C/man7/raw.7:140 build/C/man2/shutdown.2:72 build/C/man7/tcp.7:1095 build/C/man7/udp.7:231 build/C/man7/udplite.7:119 build/C/man7/unix.7:315
1177 #: build/C/man7/ddp.7:148 build/C/man7/ip.7:919 build/C/man7/raw.7:141
1183 #: build/C/man7/ddp.7:155
1185 "The user tried to execute an operation without the necessary permissions. "
1186 "These include sending to a broadcast address without having the broadcast "
1187 "flag set, and trying to bind to a reserved port without effective user ID 0 "
1188 "or B<CAP_NET_BIND_SERVICE>."
1192 #: build/C/man7/ddp.7:155 build/C/man7/ip.7:935 build/C/man7/unix.7:316
1194 msgid "B<EADDRINUSE>"
1198 #: build/C/man7/ddp.7:158 build/C/man7/ip.7:938
1199 msgid "Tried to bind to an address already in use."
1203 #: build/C/man7/ddp.7:158 build/C/man7/ip.7:938 build/C/man7/packet.7:242
1205 msgid "B<EADDRNOTAVAIL>"
1209 #: build/C/man7/ddp.7:162 build/C/man7/ip.7:942
1211 "A nonexistent interface was requested or the requested source address was "
1216 #: build/C/man7/ddp.7:162 build/C/man7/ip.7:942
1222 #: build/C/man7/ddp.7:165 build/C/man7/ip.7:945
1223 msgid "Operation on a nonblocking socket would block."
1227 #: build/C/man7/ddp.7:165 build/C/man7/ip.7:945
1233 #: build/C/man7/ddp.7:168
1234 msgid "A connection operation on a nonblocking socket is already in progress."
1238 #: build/C/man7/ddp.7:168 build/C/man7/ip.7:948
1240 msgid "B<ECONNABORTED>"
1244 #: build/C/man7/ddp.7:172 build/C/man7/ip.7:952
1245 msgid "A connection was closed during an B<accept>(2)."
1249 #: build/C/man7/ddp.7:172 build/C/man7/ip.7:952
1251 msgid "B<EHOSTUNREACH>"
1255 #: build/C/man7/ddp.7:175
1256 msgid "No routing table entry matches the destination address."
1260 #: build/C/man7/ddp.7:175 build/C/man2/getpeername.2:83 build/C/man7/ip.7:957 build/C/man7/packet.7:248 build/C/man7/raw.7:148 build/C/man7/unix.7:332
1266 #: build/C/man7/ddp.7:178
1267 msgid "Invalid argument passed."
1271 #: build/C/man7/ddp.7:178 build/C/man7/ip.7:963 build/C/man7/unix.7:341
1277 #: build/C/man7/ddp.7:182 build/C/man7/ip.7:967
1278 msgid "B<connect>(2) was called on an already connected socket."
1282 #: build/C/man7/ddp.7:182 build/C/man7/ip.7:967 build/C/man7/packet.7:251 build/C/man7/raw.7:151
1288 #: build/C/man7/ddp.7:185
1289 msgid "Datagram is bigger than the DDP MTU."
1293 #: build/C/man7/ddp.7:185 build/C/man7/packet.7:260
1299 #: build/C/man7/ddp.7:188
1300 msgid "Network device not available or not capable of sending IP."
1304 #: build/C/man7/ddp.7:188 build/C/man3/getnetent_r.3:128 build/C/man3/getprotoent_r.3:118 build/C/man3/getservent_r.3:117 build/C/man7/ip.7:975 build/C/man7/packet.7:263 build/C/man7/unix.7:346
1310 #: build/C/man7/ddp.7:192 build/C/man7/ip.7:979
1311 msgid "B<SIOCGSTAMP> was called on a socket where no packet arrived."
1315 #: build/C/man7/ddp.7:192
1317 msgid "B<ENOMEM> and B<ENOBUFS>"
1321 #: build/C/man7/ddp.7:195
1322 msgid "Not enough memory available."
1326 #: build/C/man7/ddp.7:195 build/C/man7/ip.7:979
1332 #: build/C/man7/ddp.7:198 build/C/man7/ip.7:982
1333 msgid "A kernel subsystem was not configured."
1337 #: build/C/man7/ddp.7:198 build/C/man7/ip.7:982
1339 msgid "B<ENOPROTOOPT> and B<EOPNOTSUPP>"
1343 #: build/C/man7/ddp.7:201 build/C/man7/ip.7:985
1344 msgid "Invalid socket option passed."
1348 #: build/C/man7/ddp.7:201 build/C/man2/getpeername.2:91 build/C/man7/ip.7:985 build/C/man7/packet.7:266 build/C/man2/shutdown.2:77 build/C/man7/unix.7:354
1354 #: build/C/man7/ddp.7:205 build/C/man7/ip.7:989
1356 "The operation is only defined on a connected socket, but the socket wasn't "
1361 #: build/C/man7/ddp.7:205 build/C/man7/ip.7:989 build/C/man7/packet.7:272 build/C/man7/raw.7:162 build/C/man7/unix.7:361
1367 #: build/C/man7/ddp.7:210
1369 "User doesn't have permission to set high priority, make a configuration "
1370 "change, or send signals to the requested process or group,"
1374 #: build/C/man7/ddp.7:210 build/C/man7/ip.7:993 build/C/man7/tcp.7:1102 build/C/man7/unix.7:365
1380 #: build/C/man7/ddp.7:213 build/C/man7/ip.7:996
1381 msgid "The connection was unexpectedly closed or shut down by the other end."
1385 #: build/C/man7/ddp.7:213 build/C/man7/ip.7:996 build/C/man7/unix.7:387
1387 msgid "B<ESOCKTNOSUPPORT>"
1391 #: build/C/man7/ddp.7:216
1392 msgid "The socket was unconfigured, or an unknown socket type was requested."
1396 #: build/C/man7/ddp.7:221
1398 "Appletalk is supported by Linux 2.0 or higher. The I</proc> interfaces "
1399 "exist since Linux 2.2."
1403 #: build/C/man7/ddp.7:227
1405 "Be very careful with the B<SO_BROADCAST> option - it is not privileged in "
1406 "Linux. It is easy to overload the network with careless sending to "
1407 "broadcast addresses."
1411 #: build/C/man7/ddp.7:227 build/C/man7/ip.7:1054 build/C/man7/packet.7:326
1413 msgid "Compatibility"
1417 #: build/C/man7/ddp.7:234
1419 "The basic AppleTalk socket interface is compatible with B<netatalk> on "
1420 "BSD-derived systems. Many BSD systems fail to check B<SO_BROADCAST> when "
1421 "sending broadcast frames; this can lead to compatibility problems."
1425 #: build/C/man7/ddp.7:239
1427 "The raw socket mode is unique to Linux and exists to support the alternative "
1428 "CAP package and AppleTalk monitoring tools more easily."
1432 #: build/C/man7/ddp.7:241 build/C/man7/ip.7:1069
1433 msgid "There are too many inconsistent error values."
1437 #: build/C/man7/ddp.7:244
1439 "The ioctls used to configure routing tables, devices, AARP tables and other "
1440 "devices are not yet described."
1444 #: build/C/man7/ddp.7:249
1445 msgid "B<recvmsg>(2), B<sendmsg>(2), B<capabilities>(7), B<socket>(7)"
1449 #: build/C/man3/endian.3:26
1455 #: build/C/man3/endian.3:26 build/C/man3/getnetent_r.3:24 build/C/man3/getprotoent_r.3:24 build/C/man3/getservent_r.3:24 build/C/man3/rexec.3:39 build/C/man7/tcp.7:16
1461 #: build/C/man3/endian.3:31
1463 "htobe16, htole16, be16toh, le16toh, htobe32, htole32, be32toh, le32toh, "
1464 "htobe64, htole64, be64toh, le64toh - convert values between host and "
1465 "big-/little-endian byte order"
1469 #: build/C/man3/endian.3:35
1472 "B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
1473 "B<#include E<lt>endian.hE<gt>>\n"
1477 #: build/C/man3/endian.3:40
1480 "B<uint16_t htobe16(uint16_t >I<host_16bits>B<);>\n"
1481 "B<uint16_t htole16(uint16_t >I<host_16bits>B<);>\n"
1482 "B<uint16_t be16toh(uint16_t >I<big_endian_16bits>B<);>\n"
1483 "B<uint16_t le16toh(uint16_t >I<little_endian_16bits>B<);>\n"
1487 #: build/C/man3/endian.3:45
1490 "B<uint32_t htobe32(uint32_t >I<host_32bits>B<);>\n"
1491 "B<uint32_t htole32(uint32_t >I<host_32bits>B<);>\n"
1492 "B<uint32_t be32toh(uint32_t >I<big_endian_32bits>B<);>\n"
1493 "B<uint32_t le32toh(uint32_t >I<little_endian_32bits>B<);>\n"
1497 #: build/C/man3/endian.3:50
1500 "B<uint64_t htobe64(uint64_t >I<host_64bits>B<);>\n"
1501 "B<uint64_t htole64(uint64_t >I<host_64bits>B<);>\n"
1502 "B<uint64_t be64toh(uint64_t >I<big_endian_64bits>B<);>\n"
1503 "B<uint64_t le64toh(uint64_t >I<little_endian_64bits>B<);>\n"
1507 #: build/C/man3/endian.3:55
1509 "These functions convert the byte encoding of integer values from the byte "
1510 "order that the current CPU (the \"host\") uses, to and from little-endian "
1511 "and big-endian byte order."
1515 #: build/C/man3/endian.3:60
1517 "The number, I<nn>, in the name of each function indicates the size of "
1518 "integer handled by the function, either 16, 32, or 64 bits."
1522 #: build/C/man3/endian.3:63
1524 "The functions with names of the form \"htobeI<nn>\" convert from host byte "
1525 "order to big-endian order."
1529 #: build/C/man3/endian.3:66
1531 "The functions with names of the form \"htoleI<nn>\" convert from host byte "
1532 "order to little-endian order."
1536 #: build/C/man3/endian.3:69
1538 "The functions with names of the form \"beI<nn>toh\" convert from big-endian "
1539 "order to host byte order."
1543 #: build/C/man3/endian.3:72
1545 "The functions with names of the form \"leI<nn>toh\" convert from "
1546 "little-endian order to host byte order."
1550 #: build/C/man3/endian.3:74
1551 msgid "These function were added to glibc in version 2.9."
1555 #: build/C/man3/endian.3:89
1557 "These functions are nonstandard. Similar functions are present on the BSDs, "
1558 "where the required header file is I<E<lt>sys/endian.hE<gt>> instead of "
1559 "I<E<lt>endian.hE<gt>>. Unfortunately, NetBSD, FreeBSD, and glibc haven't "
1560 "followed the original OpenBSD naming convention for these functions, whereby "
1561 "the I<nn> component always appears at the end of the function name (thus, "
1562 "for example, in NetBSD, FreeBSD, and glibc, the equivalent of OpenBSDs "
1563 "\"betoh32\" is \"be32toh\")."
1567 #: build/C/man3/endian.3:97
1569 "These functions are similar to the older B<byteorder>(3) family of "
1570 "functions. For example, B<be32toh>() is identical to B<ntohl>()B<.>"
1574 #: build/C/man3/endian.3:105
1576 "The advantage of the B<byteorder>(3) functions is that they are standard "
1577 "functions available on all UNIX systems. On the other hand, the fact that "
1578 "they were designed for use in the context of TCP/IP means that they lack the "
1579 "64-bit and little-endian variants described in this page."
1583 #: build/C/man3/endian.3:112
1585 "The program below display the results of converting an integer from host "
1586 "byte order to both little-endian and big-endian byte order. Since host byte "
1587 "order is either little-endian or big-endian, only one of these conversions "
1588 "will have an effect. When we run this program on a little-endian system "
1589 "such as x86-32, we see the following:"
1593 #: build/C/man3/endian.3:119
1597 "x.u32 = 0x44332211\n"
1598 "htole32(x.u32) = 0x44332211\n"
1599 "htobe32(x.u32) = 0x11223344\n"
1603 #: build/C/man3/endian.3:121 build/C/man3/getprotoent_r.3:160 build/C/man3/getservent_r.3:158 build/C/man3/inet.3:270 build/C/man3/inet_pton.3:171
1605 msgid "Program source"
1609 #: build/C/man3/endian.3:128
1612 "#include E<lt>endian.hE<gt>\n"
1613 "#include E<lt>stdint.hE<gt>\n"
1614 "#include E<lt>stdio.hE<gt>\n"
1615 "#include E<lt>stdlib.hE<gt>\n"
1619 #: build/C/man3/endian.3:136
1623 "main(int argc, char *argv[])\n"
1627 "\tuint8_t arr[4];\n"
1632 #: build/C/man3/endian.3:141
1635 " x.arr[0] = 0x11;\t/* Lowest-address byte */\n"
1636 " x.arr[1] = 0x22;\n"
1637 " x.arr[2] = 0x33;\n"
1638 " x.arr[3] = 0x44;\t/* Highest-address byte */\n"
1642 #: build/C/man3/endian.3:145
1645 " printf(\"x.u32 = 0x%x\\en\", x.u32);\n"
1646 " printf(\"htole32(x.u32) = 0x%x\\en\", htole32(x.u32));\n"
1647 " printf(\"htobe32(x.u32) = 0x%x\\en\", htobe32(x.u32));\n"
1651 #: build/C/man3/endian.3:148 build/C/man3/getaddrinfo.3:812 build/C/man3/getprotoent_r.3:234 build/C/man3/getservent_r.3:238 build/C/man3/inet_pton.3:212
1654 " exit(EXIT_SUCCESS);\n"
1659 #: build/C/man3/endian.3:151
1660 msgid "B<byteorder>(3)"
1664 #: build/C/man3/ether_aton.3:31
1670 #: build/C/man3/ether_aton.3:31
1676 #: build/C/man3/ether_aton.3:35
1678 "ether_aton, ether_ntoa, ether_ntohost, ether_hostton, ether_line, "
1679 "ether_ntoa_r, ether_aton_r - Ethernet address manipulation routines"
1683 #: build/C/man3/ether_aton.3:38
1685 msgid "B<#include E<lt>netinet/ether.hE<gt>>\n"
1689 #: build/C/man3/ether_aton.3:40
1691 msgid "B<char *ether_ntoa(const struct ether_addr *>I<addr>B<);>\n"
1695 #: build/C/man3/ether_aton.3:42
1697 msgid "B<struct ether_addr *ether_aton(const char *>I<asc>B<);>\n"
1701 #: build/C/man3/ether_aton.3:44
1704 "B<int ether_ntohost(char *>I<hostname>B<, const struct ether_addr "
1709 #: build/C/man3/ether_aton.3:46
1712 "B<int ether_hostton(const char *>I<hostname>B<, struct ether_addr "
1717 #: build/C/man3/ether_aton.3:49
1720 "B<int ether_line(const char *>I<line>B<, struct ether_addr *>I<addr>B<,>\n"
1721 "B< char *>I<hostname>B<);>\n"
1725 #: build/C/man3/ether_aton.3:51 build/C/man3/gethostbyname.3:68
1727 msgid "/* GNU extensions */\n"
1731 #: build/C/man3/ether_aton.3:53
1734 "B<char *ether_ntoa_r(const struct ether_addr *>I<addr>B<, char "
1739 #: build/C/man3/ether_aton.3:56
1742 "B<struct ether_addr *ether_aton_r(const char *>I<asc>B<,>\n"
1743 "B< struct ether_addr *>I<addr>B<);>\n"
1747 #: build/C/man3/ether_aton.3:66
1749 "B<ether_aton>() converts the 48-bit Ethernet host address I<asc> from the "
1750 "standard hex-digits-and-colons notation into binary data in network byte "
1751 "order and returns a pointer to it in a statically allocated buffer, which "
1752 "subsequent calls will overwrite. B<ether_aton>() returns NULL if the "
1753 "address is invalid."
1757 #: build/C/man3/ether_aton.3:74
1759 "The B<ether_ntoa>() function converts the Ethernet host address I<addr> "
1760 "given in network byte order to a string in standard hex-digits-and-colons "
1761 "notation, omitting leading zeros. The string is returned in a statically "
1762 "allocated buffer, which subsequent calls will overwrite."
1766 #: build/C/man3/ether_aton.3:81
1768 "The B<ether_ntohost>() function maps an Ethernet address to the "
1769 "corresponding hostname in I</etc/ethers> and returns nonzero if it cannot be "
1774 #: build/C/man3/ether_aton.3:88
1776 "The B<ether_hostton>() function maps a hostname to the corresponding "
1777 "Ethernet address in I</etc/ethers> and returns nonzero if it cannot be "
1782 #: build/C/man3/ether_aton.3:100
1784 "The B<ether_line>() function parses a line in I</etc/ethers> format "
1785 "(ethernet address followed by whitespace followed by hostname; \\(aq#\\(aq "
1786 "introduces a comment) and returns an address and hostname pair, or nonzero "
1787 "if it cannot be parsed. The buffer pointed to by I<hostname> must be "
1788 "sufficiently long, for example, have the same length as I<line>."
1792 #: build/C/man3/ether_aton.3:111
1794 "The functions B<ether_ntoa_r>() and B<ether_aton_r>() are reentrant "
1795 "thread-safe versions of B<ether_ntoa>() and B<ether_aton>() respectively, "
1796 "and do not use static buffers."
1800 #: build/C/man3/ether_aton.3:115
1801 msgid "The structure I<ether_addr> is defined in I<E<lt>net/ethernet.hE<gt>> as:"
1805 #: build/C/man3/ether_aton.3:121
1808 "struct ether_addr {\n"
1809 " uint8_t ether_addr_octet[6];\n"
1814 #: build/C/man3/ether_aton.3:125
1815 msgid "4.3BSD, SunOS."
1819 #: build/C/man3/ether_aton.3:129
1820 msgid "The glibc 2.2.5 implementation of B<ether_line>() is broken."
1824 #: build/C/man3/ether_aton.3:131
1825 msgid "B<ethers>(5)"
1829 #: build/C/man3/getaddrinfo.3:41
1835 #: build/C/man3/getaddrinfo.3:41 build/C/man3/getaddrinfo_a.3:27
1841 #: build/C/man3/getaddrinfo.3:45
1843 "getaddrinfo, freeaddrinfo, gai_strerror - network address and service "
1848 #: build/C/man3/getaddrinfo.3:50 build/C/man3/getipnodebyname.3:33
1851 "B<#include E<lt>sys/types.hE<gt>>\n"
1852 "B<#include E<lt>sys/socket.hE<gt>>\n"
1853 "B<#include E<lt>netdb.hE<gt>>\n"
1857 #: build/C/man3/getaddrinfo.3:54
1860 "B<int getaddrinfo(const char *>I<node>B<, const char *>I<service>B<,>\n"
1861 "B< const struct addrinfo *>I<hints>B<,>\n"
1862 "B< struct addrinfo **>I<res>B<);>\n"
1866 #: build/C/man3/getaddrinfo.3:56
1868 msgid "B<void freeaddrinfo(struct addrinfo *>I<res>B<);>\n"
1872 #: build/C/man3/getaddrinfo.3:58
1874 msgid "B<const char *gai_strerror(int >I<errcode>B<);>\n"
1878 #: build/C/man3/getaddrinfo.3:63 build/C/man3/gethostbyname.3:91 build/C/man3/getnameinfo.3:23 build/C/man3/getnetent_r.3:50 build/C/man3/getprotoent_r.3:47 build/C/man3/getservent_r.3:47 build/C/man3/inet.3:70 build/C/man3/rcmd.3:64 build/C/man3/setnetgrent.3:29
1879 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
1883 #: build/C/man3/getaddrinfo.3:69
1884 msgid "B<getaddrinfo>(), B<freeaddrinfo>(), B<gai_strerror>():"
1888 #: build/C/man3/getaddrinfo.3:71
1889 msgid "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _POSIX_SOURCE"
1892 #. .BR getipnodebyname (3),
1893 #. .BR getipnodebyaddr (3),
1895 #: build/C/man3/getaddrinfo.3:98
1897 "Given I<node> and I<service>, which identify an Internet host and a service, "
1898 "B<getaddrinfo>() returns one or more I<addrinfo> structures, each of which "
1899 "contains an Internet address that can be specified in a call to B<bind>(2) "
1900 "or B<connect>(2). The B<getaddrinfo>() function combines the functionality "
1901 "provided by the B<getservbyname>(3) and B<getservbyport>(3) functions into "
1902 "a single interface, but unlike the latter functions, B<getaddrinfo>() is "
1903 "reentrant and allows programs to eliminate IPv4-versus-IPv6 dependencies."
1907 #: build/C/man3/getaddrinfo.3:104
1909 "The I<addrinfo> structure used by B<getaddrinfo>() contains the following "
1914 #: build/C/man3/getaddrinfo.3:117
1917 "struct addrinfo {\n"
1920 " int ai_socktype;\n"
1921 " int ai_protocol;\n"
1922 " size_t ai_addrlen;\n"
1923 " struct sockaddr *ai_addr;\n"
1924 " char *ai_canonname;\n"
1925 " struct addrinfo *ai_next;\n"
1930 #: build/C/man3/getaddrinfo.3:139
1932 "The I<hints> argument points to an I<addrinfo> structure that specifies "
1933 "criteria for selecting the socket address structures returned in the list "
1934 "pointed to by I<res>. If I<hints> is not NULL it points to an I<addrinfo> "
1935 "structure whose I<ai_family>, I<ai_socktype>, and I<ai_protocol> specify "
1936 "criteria that limit the set of socket addresses returned by "
1937 "B<getaddrinfo>(), as follows:"
1941 #: build/C/man3/getaddrinfo.3:139
1943 msgid "I<ai_family>"
1947 #: build/C/man3/getaddrinfo.3:155
1949 "This field specifies the desired address family for the returned addresses. "
1950 "Valid values for this field include B<AF_INET> and B<AF_INET6>. The value "
1951 "B<AF_UNSPEC> indicates that B<getaddrinfo>() should return socket addresses "
1952 "for any address family (either IPv4 or IPv6, for example) that can be used "
1953 "with I<node> and I<service>."
1957 #: build/C/man3/getaddrinfo.3:155
1959 msgid "I<ai_socktype>"
1963 #: build/C/man3/getaddrinfo.3:164
1965 "This field specifies the preferred socket type, for example B<SOCK_STREAM> "
1966 "or B<SOCK_DGRAM>. Specifying 0 in this field indicates that socket "
1967 "addresses of any type can be returned by B<getaddrinfo>()."
1971 #: build/C/man3/getaddrinfo.3:164
1973 msgid "I<ai_protocol>"
1977 #: build/C/man3/getaddrinfo.3:170
1979 "This field specifies the protocol for the returned socket addresses. "
1980 "Specifying 0 in this field indicates that socket addresses with any protocol "
1981 "can be returned by B<getaddrinfo>()."
1985 #: build/C/man3/getaddrinfo.3:170
1991 #: build/C/man3/getaddrinfo.3:174
1993 "This field specifies additional options, described below. Multiple flags "
1994 "are specified by bitwise OR-ing them together."
1998 #: build/C/man3/getaddrinfo.3:192
2000 "All the other fields in the structure pointed to by I<hints> must contain "
2001 "either 0 or a NULL pointer, as appropriate. Specifying I<hints> as NULL is "
2002 "equivalent to setting I<ai_socktype> and I<ai_protocol> to 0; I<ai_family> "
2003 "to B<AF_UNSPEC>; and I<ai_flags> to B<(AI_V4MAPPED\\ |\\ AI_ADDRCONFIG)>."
2007 #: build/C/man3/getaddrinfo.3:210
2009 "I<node> specifies either a numerical network address (for IPv4, "
2010 "numbers-and-dots notation as supported by B<inet_aton>(3); for IPv6, "
2011 "hexadecimal string format as supported by B<inet_pton>(3)), or a network "
2012 "hostname, whose network addresses are looked up and resolved. If "
2013 "I<hints.ai_flags> contains the B<AI_NUMERICHOST> flag then I<node> must be a "
2014 "numerical network address. The B<AI_NUMERICHOST> flag suppresses any "
2015 "potentially lengthy network host address lookups."
2019 #: build/C/man3/getaddrinfo.3:235
2021 "If the B<AI_PASSIVE> flag is specified in I<hints.ai_flags>, and I<node> is "
2022 "NULL, then the returned socket addresses will be suitable for B<bind>(2)ing "
2023 "a socket that will B<accept>(2) connections. The returned socket address "
2024 "will contain the \"wildcard address\" (B<INADDR_ANY> for IPv4 addresses, "
2025 "B<IN6ADDR_ANY_INIT> for IPv6 address). The wildcard address is used by "
2026 "applications (typically servers) that intend to accept connections on any "
2027 "of the hosts's network addresses. If I<node> is not NULL, then the "
2028 "B<AI_PASSIVE> flag is ignored."
2032 #: build/C/man3/getaddrinfo.3:255
2034 "If the B<AI_PASSIVE> flag is not set in I<hints.ai_flags>, then the returned "
2035 "socket addresses will be suitable for use with B<connect>(2), B<sendto>(2), "
2036 "or B<sendmsg>(2). If I<node> is NULL, then the network address will be set "
2037 "to the loopback interface address (B<INADDR_LOOPBACK> for IPv4 addresses, "
2038 "B<IN6ADDR_LOOPBACK_INIT> for IPv6 address); this is used by applications "
2039 "that intend to communicate with peers running on the same host."
2043 #: build/C/man3/getaddrinfo.3:278
2045 "I<service> sets the port in each returned address structure. If this "
2046 "argument is a service name (see B<services>(5)), it is translated to the "
2047 "corresponding port number. This argument can also be specified as a decimal "
2048 "number, which is simply converted to binary. If I<service> is NULL, then "
2049 "the port number of the returned socket addresses will be left "
2050 "uninitialized. If B<AI_NUMERICSERV> is specified in I<hints.ai_flags> and "
2051 "I<service> is not NULL, then I<service> must point to a string containing a "
2052 "numeric port number. This flag is used to inhibit the invocation of a name "
2053 "resolution service in cases where it is known not to be required."
2057 #: build/C/man3/getaddrinfo.3:284
2058 msgid "Either I<node> or I<service>, but not both, may be NULL."
2062 #: build/C/man3/getaddrinfo.3:300
2064 "The B<getaddrinfo>() function allocates and initializes a linked list of "
2065 "I<addrinfo> structures, one for each network address that matches I<node> "
2066 "and I<service>, subject to any restrictions imposed by I<hints>, and returns "
2067 "a pointer to the start of the list in I<res>. The items in the linked list "
2068 "are linked by the I<ai_next> field."
2072 #: build/C/man3/getaddrinfo.3:322
2074 "There are several reasons why the linked list may have more than one "
2075 "I<addrinfo> structure, including: the network host is multihomed, accessible "
2076 "over multiple protocols (e.g. both B<AF_INET> and B<AF_INET6>); or the same "
2077 "service is available from multiple socket types (one B<SOCK_STREAM> address "
2078 "and another B<SOCK_DGRAM> address, for example). Normally, the application "
2079 "should try using the addresses in the order in which they are returned. The "
2080 "sorting function used within B<getaddrinfo>() is defined in RFC\\ 3484; the "
2081 "order can be tweaked for a particular system by editing I</etc/gai.conf> "
2082 "(available since glibc 2.5)."
2085 #. In glibc prior to 2.3.4, the ai_canonname of each addrinfo
2086 #. structure was set pointing to the canonical name; that was
2087 #. more than POSIX.1-2001 specified, or other implementations provided.
2090 #: build/C/man3/getaddrinfo.3:337
2092 "If I<hints.ai_flags> includes the B<AI_CANONNAME> flag, then the "
2093 "I<ai_canonname> field of the first of the I<addrinfo> structures in the "
2094 "returned list is set to point to the official name of the host."
2098 #: build/C/man3/getaddrinfo.3:341
2100 "The remaining fields of each returned I<addrinfo> structure are initialized "
2105 #: build/C/man3/getaddrinfo.3:341 build/C/man3/getaddrinfo.3:364 build/C/man3/getaddrinfo_a.3:189 build/C/man3/getaddrinfo_a.3:193 build/C/man3/getaddrinfo_a.3:195 build/C/man7/unix.7:72 build/C/man7/unix.7:87 build/C/man7/unix.7:107
2111 #: build/C/man3/getaddrinfo.3:364
2113 "The I<ai_family>, I<ai_socktype>, and I<ai_protocol> fields return the "
2114 "socket creation parameters (i.e., these fields have the same meaning as the "
2115 "corresponding arguments of B<socket>(2)). For example, I<ai_family> might "
2116 "return B<AF_INET> or B<AF_INET6>; I<ai_socktype> might return B<SOCK_DGRAM> "
2117 "or B<SOCK_STREAM>; and I<ai_protocol> returns the protocol for the socket."
2121 #: build/C/man3/getaddrinfo.3:371
2123 "A pointer to the socket address is placed in the I<ai_addr> field, and the "
2124 "length of the socket address, in bytes, is placed in the I<ai_addrlen> "
2129 #: build/C/man3/getaddrinfo.3:381
2131 "If I<hints.ai_flags> includes the B<AI_ADDRCONFIG> flag, then IPv4 addresses "
2132 "are returned in the list pointed to by I<res> only if the local system has "
2133 "at least one IPv4 address configured, and IPv6 addresses are only returned "
2134 "if the local system has at least one IPv6 address configured."
2138 #: build/C/man3/getaddrinfo.3:406
2140 "If I<hint.ai_flags> specifies the B<AI_V4MAPPED> flag, and "
2141 "I<hints.ai_family> was specified as B<AF_INET6>, and no matching IPv6 "
2142 "addresses could be found, then return IPv4-mapped IPv6 addresses in the list "
2143 "pointed to by I<res>. If both B<AI_V4MAPPED> and B<AI_ALL> are specified in "
2144 "I<hints.ai_flags>, then return both IPv6 and IPv4-mapped IPv6 addresses in "
2145 "the list pointed to by I<res>. B<AI_ALL> is ignored if B<AI_V4MAPPED> is "
2146 "not also specified."
2150 #: build/C/man3/getaddrinfo.3:412
2152 "The B<freeaddrinfo>() function frees the memory that was allocated for the "
2153 "dynamically allocated linked list I<res>."
2157 #: build/C/man3/getaddrinfo.3:412 build/C/man3/getnameinfo.3:114
2159 msgid "Extensions to getaddrinfo() for Internationalized Domain Names"
2163 #: build/C/man3/getaddrinfo.3:421
2165 "Starting with glibc 2.3.4, B<getaddrinfo>() has been extended to "
2166 "selectively allow the incoming and outgoing hostnames to be transparently "
2167 "converted to and from the Internationalized Domain Name (IDN) format (see "
2168 "RFC 3490, I<Internationalizing Domain Names in Applications (IDNA)>). Four "
2169 "new flags are defined:"
2173 #: build/C/man3/getaddrinfo.3:421
2179 #: build/C/man3/getaddrinfo.3:427
2181 "If this flag is specified, then the node name given in I<node> is converted "
2182 "to IDN format if necessary. The source encoding is that of the current "
2186 #. Implementation Detail:
2187 #. To minimize effects on system performance the implementation might
2188 #. want to check whether the input string contains any non-ASCII
2189 #. characters. If there are none the IDN step can be skipped completely.
2190 #. On systems which allow not-ASCII safe encodings for a locale this
2191 #. might be a problem.
2193 #: build/C/man3/getaddrinfo.3:439
2195 "If the input name contains non-ASCII characters, then the IDN encoding is "
2196 "used. Those parts of the node name (delimited by dots) that contain "
2197 "non-ASCII characters are encoded using ASCII Compatible Encoding (ACE) "
2198 "before being passed to the name resolution functions."
2202 #: build/C/man3/getaddrinfo.3:439
2204 msgid "B<AI_CANONIDN>"
2208 #: build/C/man3/getaddrinfo.3:451
2210 "After a successful name lookup, and if the B<AI_CANONNAME> flag was "
2211 "specified, B<getaddrinfo>() will return the canonical name of the node "
2212 "corresponding to the I<addrinfo> structure value passed back. The return "
2213 "value is an exact copy of the value returned by the name resolution "
2218 #. Implementation Detail:
2219 #. If no component of the returned name starts with xn\-\- the IDN
2220 #. step can be skipped, therefore avoiding unnecessary slowdowns.
2222 #: build/C/man3/getaddrinfo.3:464
2224 "If the name is encoded using ACE, then it will contain the I<xn--> prefix "
2225 "for one or more components of the name. To convert these components into a "
2226 "readable form the B<AI_CANONIDN> flag can be passed in addition to "
2227 "B<AI_CANONNAME>. The resulting string is encoded using the current locale's "
2232 #: build/C/man3/getaddrinfo.3:464
2234 msgid "B<AI_IDN_ALLOW_UNASSIGNED>, B<AI_IDN_USE_STD3_ASCII_RULES>"
2238 #: build/C/man3/getaddrinfo.3:471 build/C/man3/getnameinfo.3:136
2240 "Setting these flags will enable the IDNA_ALLOW_UNASSIGNED (allow unassigned "
2241 "Unicode code points) and IDNA_USE_STD3_ASCII_RULES (check output to make "
2242 "sure it is a STD3 conforming hostname) flags respectively to be used in the "
2247 #: build/C/man3/getaddrinfo.3:471 build/C/man3/getaddrinfo_a.3:240 build/C/man3/gethostbyname.3:264 build/C/man3/getipnodebyname.3:184 build/C/man3/getnameinfo.3:136 build/C/man3/getnetent.3:111 build/C/man3/getnetent_r.3:116 build/C/man2/getpeername.2:66 build/C/man3/getprotoent.3:105 build/C/man3/getprotoent_r.3:106 build/C/man3/getservent.3:116 build/C/man3/getservent_r.3:105 build/C/man3/inet_ntop.3:81 build/C/man3/inet_pton.3:114 build/C/man3/rcmd.3:188 build/C/man3/resolver.3:234 build/C/man3/setnetgrent.3:81 build/C/man2/shutdown.2:67
2249 msgid "RETURN VALUE"
2252 #. FIXME glibc defines the following additional errors, some which
2253 #. can probably be returned by getaddrinfo(); they need to
2256 #. #define EAI_INPROGRESS -100 /* Processing request in progress. */
2257 #. #define EAI_CANCELED -101 /* Request canceled. */
2258 #. #define EAI_NOTCANCELED -102 /* Request not canceled. */
2259 #. #define EAI_ALLDONE -103 /* All requests done. */
2260 #. #define EAI_INTR -104 /* Interrupted by a signal. */
2261 #. #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
2264 #: build/C/man3/getaddrinfo.3:485
2266 "B<getaddrinfo>() returns 0 if it succeeds, or one of the following nonzero "
2271 #: build/C/man3/getaddrinfo.3:485
2273 msgid "B<EAI_ADDRFAMILY>"
2278 #: build/C/man3/getaddrinfo.3:490
2280 "The specified network host does not have any network addresses in the "
2281 "requested address family."
2285 #: build/C/man3/getaddrinfo.3:490 build/C/man3/getaddrinfo_a.3:245 build/C/man3/getaddrinfo_a.3:262 build/C/man3/getnameinfo.3:152
2287 msgid "B<EAI_AGAIN>"
2291 #: build/C/man3/getaddrinfo.3:494
2292 msgid "The name server returned a temporary failure indication. Try again later."
2296 #: build/C/man3/getaddrinfo.3:494 build/C/man3/getnameinfo.3:156
2298 msgid "B<EAI_BADFLAGS>"
2302 #: build/C/man3/getaddrinfo.3:504
2304 "I<hints.ai_flags> contains invalid flags; or, I<hints.ai_flags> included "
2305 "B<AI_CANONNAME> and I<name> was NULL."
2309 #: build/C/man3/getaddrinfo.3:504 build/C/man3/getnameinfo.3:161
2315 #: build/C/man3/getaddrinfo.3:507
2316 msgid "The name server returned a permanent failure indication."
2320 #: build/C/man3/getaddrinfo.3:507 build/C/man3/getnameinfo.3:164
2322 msgid "B<EAI_FAMILY>"
2326 #: build/C/man3/getaddrinfo.3:510
2327 msgid "The requested address family is not supported."
2331 #: build/C/man3/getaddrinfo.3:510 build/C/man3/getaddrinfo_a.3:250 build/C/man3/getnameinfo.3:168
2333 msgid "B<EAI_MEMORY>"
2337 #: build/C/man3/getaddrinfo.3:513 build/C/man3/getaddrinfo_a.3:253 build/C/man3/getnameinfo.3:171 build/C/man7/unix.7:354
2338 msgid "Out of memory."
2342 #: build/C/man3/getaddrinfo.3:513
2344 msgid "B<EAI_NODATA>"
2349 #: build/C/man3/getaddrinfo.3:518
2351 "The specified network host exists, but does not have any network addresses "
2356 #: build/C/man3/getaddrinfo.3:518 build/C/man3/getnameinfo.3:171
2358 msgid "B<EAI_NONAME>"
2362 #: build/C/man3/getaddrinfo.3:535
2364 "The I<node> or I<service> is not known; or both I<node> and I<service> are "
2365 "NULL; or B<AI_NUMERICSERV> was specified in I<hints.ai_flags> and I<service> "
2366 "was not a numeric port-number string."
2370 #: build/C/man3/getaddrinfo.3:535
2372 msgid "B<EAI_SERVICE>"
2376 #: build/C/man3/getaddrinfo.3:556
2378 "The requested service is not available for the requested socket type. It "
2379 "may be available through another socket type. For example, this error could "
2380 "occur if I<service> was \"shell\" (a service only available on stream "
2381 "sockets), and either I<hints.ai_protocol> was B<IPPROTO_UDP>, or "
2382 "I<hints.ai_socktype> was B<SOCK_DGRAM>; or the error could occur if "
2383 "I<service> was not NULL, and I<hints.ai_socktype> was B<SOCK_RAW> (a socket "
2384 "type that does not support the concept of services)."
2388 #: build/C/man3/getaddrinfo.3:556
2390 msgid "B<EAI_SOCKTYPE>"
2394 #: build/C/man3/getaddrinfo.3:568
2396 "The requested socket type is not supported. This could occur, for example, "
2397 "if I<hints.ai_socktype> and I<hints.ai_protocol> are inconsistent (e.g., "
2398 "B<SOCK_DGRAM> and B<IPPROTO_TCP>, respectively)."
2402 #: build/C/man3/getaddrinfo.3:568 build/C/man3/getaddrinfo_a.3:253 build/C/man3/getnameinfo.3:184
2404 msgid "B<EAI_SYSTEM>"
2408 #: build/C/man3/getaddrinfo.3:573
2409 msgid "Other system error, check I<errno> for details."
2413 #: build/C/man3/getaddrinfo.3:578
2415 "The B<gai_strerror>() function translates these error codes to a human "
2416 "readable string, suitable for error reporting."
2420 #: build/C/man3/getaddrinfo.3:578 build/C/man3/gethostbyname.3:291 build/C/man3/getnameinfo.3:194 build/C/man3/getnetent.3:120 build/C/man3/getprotoent.3:114 build/C/man3/getservent.3:125 build/C/man5/host.conf.5:180 build/C/man5/hosts.5:86 build/C/man5/hosts.equiv.5:47 build/C/man5/networks.5:69 build/C/man5/nsswitch.conf.5:246 build/C/man5/protocols.5:76 build/C/man5/resolv.conf.5:257 build/C/man3/resolver.3:256 build/C/man5/services.5:184 build/C/man3/setnetgrent.3:83 build/C/man7/udplite.7:136
2426 #: build/C/man3/getaddrinfo.3:580
2427 msgid "I</etc/gai.conf>"
2431 #: build/C/man3/getaddrinfo.3:585
2432 msgid "POSIX.1-2001. The B<getaddrinfo>() function is documented in RFC\\ 2553."
2436 #: build/C/man3/getaddrinfo.3:590
2438 "B<getaddrinfo>() supports the I<address>B<%>I<scope-id> notation for "
2439 "specifying the IPv6 scope-ID."
2443 #: build/C/man3/getaddrinfo.3:598
2445 "B<AI_ADDRCONFIG>, B<AI_ALL>, and B<AI_V4MAPPED> are available since glibc "
2446 "2.3.3. B<AI_NUMERICSERV> is available since glibc 2.3.4."
2450 #: build/C/man3/getaddrinfo.3:608
2452 "According to POSIX.1-2001, specifying I<hints> as NULL should cause "
2453 "I<ai_flags> to be assumed as 0. The GNU C library instead assumes a value "
2454 "of B<(AI_V4MAPPED\\ |\\ AI_ADDRCONFIG)> for this case, since this value is "
2455 "considered an improvement on the specification."
2458 #. getnameinfo.3 refers to this example
2459 #. socket.2 refers to this example
2460 #. bind.2 refers to this example
2461 #. connect.2 refers to this example
2462 #. recvfrom.2 refers to this example
2463 #. sendto.2 refers to this example
2465 #: build/C/man3/getaddrinfo.3:622
2467 "The following programs demonstrate the use of B<getaddrinfo>(), "
2468 "B<gai_strerror>(), B<freeaddrinfo>(), and B<getnameinfo>(3). The programs "
2469 "are an echo server and client for UDP datagrams."
2473 #: build/C/man3/getaddrinfo.3:622
2475 msgid "Server program"
2479 #: build/C/man3/getaddrinfo.3:632
2482 "#include E<lt>sys/types.hE<gt>\n"
2483 "#include E<lt>stdio.hE<gt>\n"
2484 "#include E<lt>stdlib.hE<gt>\n"
2485 "#include E<lt>unistd.hE<gt>\n"
2486 "#include E<lt>string.hE<gt>\n"
2487 "#include E<lt>sys/socket.hE<gt>\n"
2488 "#include E<lt>netdb.hE<gt>\n"
2492 #: build/C/man3/getaddrinfo.3:634 build/C/man3/getaddrinfo.3:729
2494 msgid "#define BUF_SIZE 500\n"
2498 #: build/C/man3/getaddrinfo.3:645
2502 "main(int argc, char *argv[])\n"
2504 " struct addrinfo hints;\n"
2505 " struct addrinfo *result, *rp;\n"
2507 " struct sockaddr_storage peer_addr;\n"
2508 " socklen_t peer_addr_len;\n"
2510 " char buf[BUF_SIZE];\n"
2514 #: build/C/man3/getaddrinfo.3:650
2517 " if (argc != 2) {\n"
2518 " fprintf(stderr, \"Usage: %s port\\en\", argv[0]);\n"
2519 " exit(EXIT_FAILURE);\n"
2524 #: build/C/man3/getaddrinfo.3:659
2527 " memset(&hints, 0, sizeof(struct addrinfo));\n"
2528 " hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */\n"
2529 " hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */\n"
2530 " hints.ai_flags = AI_PASSIVE; /* For wildcard IP address */\n"
2531 " hints.ai_protocol = 0; /* Any protocol */\n"
2532 " hints.ai_canonname = NULL;\n"
2533 " hints.ai_addr = NULL;\n"
2534 " hints.ai_next = NULL;\n"
2538 #: build/C/man3/getaddrinfo.3:665
2541 " s = getaddrinfo(NULL, argv[1], &hints, &result);\n"
2543 " fprintf(stderr, \"getaddrinfo: %s\\en\", gai_strerror(s));\n"
2544 " exit(EXIT_FAILURE);\n"
2549 #: build/C/man3/getaddrinfo.3:670
2552 " /* getaddrinfo() returns a list of address structures.\n"
2553 " Try each address until we successfully bind(2).\n"
2554 " If socket(2) (or bind(2)) fails, we (close the socket\n"
2555 " and) try the next address. */\n"
2559 #: build/C/man3/getaddrinfo.3:676
2562 " for (rp = result; rp != NULL; rp = rp-E<gt>ai_next) {\n"
2563 " sfd = socket(rp-E<gt>ai_family, rp-E<gt>ai_socktype,\n"
2564 " rp-E<gt>ai_protocol);\n"
2570 #: build/C/man3/getaddrinfo.3:679
2573 " if (bind(sfd, rp-E<gt>ai_addr, rp-E<gt>ai_addrlen) == 0)\n"
2574 " break; /* Success */\n"
2578 #: build/C/man3/getaddrinfo.3:682 build/C/man3/getaddrinfo.3:775
2586 #: build/C/man3/getaddrinfo.3:687
2589 " if (rp == NULL) { /* No address succeeded */\n"
2590 " fprintf(stderr, \"Could not bind\\en\");\n"
2591 " exit(EXIT_FAILURE);\n"
2596 #: build/C/man3/getaddrinfo.3:689 build/C/man3/getaddrinfo.3:782
2598 msgid " freeaddrinfo(result); /* No longer needed */\n"
2602 #: build/C/man3/getaddrinfo.3:691
2604 msgid " /* Read datagrams and echo them back to sender */\n"
2608 #: build/C/man3/getaddrinfo.3:698
2612 " peer_addr_len = sizeof(struct sockaddr_storage);\n"
2613 " nread = recvfrom(sfd, buf, BUF_SIZE, 0,\n"
2614 " (struct sockaddr *) &peer_addr, &peer_addr_len);\n"
2615 " if (nread == -1)\n"
2616 " continue; /* Ignore failed request */\n"
2620 #: build/C/man3/getaddrinfo.3:700
2622 msgid " char host[NI_MAXHOST], service[NI_MAXSERV];\n"
2626 #: build/C/man3/getaddrinfo.3:709
2629 " s = getnameinfo((struct sockaddr *) &peer_addr,\n"
2630 " peer_addr_len, host, NI_MAXHOST,\n"
2631 " service, NI_MAXSERV, NI_NUMERICSERV);\n"
2633 " printf(\"Received %ld bytes from %s:%s\\en\",\n"
2634 " (long) nread, host, service);\n"
2636 " fprintf(stderr, \"getnameinfo: %s\\en\", gai_strerror(s));\n"
2640 #: build/C/man3/getaddrinfo.3:716
2643 " if (sendto(sfd, buf, nread, 0,\n"
2644 " (struct sockaddr *) &peer_addr,\n"
2645 " peer_addr_len) != nread)\n"
2646 " fprintf(stderr, \"Error sending response\\en\");\n"
2652 #: build/C/man3/getaddrinfo.3:717
2654 msgid "Client program"
2658 #: build/C/man3/getaddrinfo.3:727
2661 "#include E<lt>sys/types.hE<gt>\n"
2662 "#include E<lt>sys/socket.hE<gt>\n"
2663 "#include E<lt>netdb.hE<gt>\n"
2664 "#include E<lt>stdio.hE<gt>\n"
2665 "#include E<lt>stdlib.hE<gt>\n"
2666 "#include E<lt>unistd.hE<gt>\n"
2667 "#include E<lt>string.hE<gt>\n"
2671 #: build/C/man3/getaddrinfo.3:739
2675 "main(int argc, char *argv[])\n"
2677 " struct addrinfo hints;\n"
2678 " struct addrinfo *result, *rp;\n"
2682 " char buf[BUF_SIZE];\n"
2686 #: build/C/man3/getaddrinfo.3:744
2689 " if (argc E<lt> 3) {\n"
2690 " fprintf(stderr, \"Usage: %s host port msg...\\en\", argv[0]);\n"
2691 " exit(EXIT_FAILURE);\n"
2696 #: build/C/man3/getaddrinfo.3:746
2698 msgid " /* Obtain address(es) matching host/port */\n"
2702 #: build/C/man3/getaddrinfo.3:752
2705 " memset(&hints, 0, sizeof(struct addrinfo));\n"
2706 " hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */\n"
2707 " hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */\n"
2708 " hints.ai_flags = 0;\n"
2709 " hints.ai_protocol = 0; /* Any protocol */\n"
2713 #: build/C/man3/getaddrinfo.3:758
2716 " s = getaddrinfo(argv[1], argv[2], &hints, &result);\n"
2718 " fprintf(stderr, \"getaddrinfo: %s\\en\", gai_strerror(s));\n"
2719 " exit(EXIT_FAILURE);\n"
2724 #: build/C/man3/getaddrinfo.3:763
2727 " /* getaddrinfo() returns a list of address structures.\n"
2728 " Try each address until we successfully connect(2).\n"
2729 " If socket(2) (or connect(2)) fails, we (close the socket\n"
2730 " and) try the next address. */\n"
2734 #: build/C/man3/getaddrinfo.3:769
2737 " for (rp = result; rp != NULL; rp = rp-E<gt>ai_next) {\n"
2738 " sfd = socket(rp-E<gt>ai_family, rp-E<gt>ai_socktype,\n"
2739 " rp-E<gt>ai_protocol);\n"
2745 #: build/C/man3/getaddrinfo.3:772
2748 " if (connect(sfd, rp-E<gt>ai_addr, rp-E<gt>ai_addrlen) != -1)\n"
2749 " break; /* Success */\n"
2753 #: build/C/man3/getaddrinfo.3:780
2756 " if (rp == NULL) { /* No address succeeded */\n"
2757 " fprintf(stderr, \"Could not connect\\en\");\n"
2758 " exit(EXIT_FAILURE);\n"
2763 #: build/C/man3/getaddrinfo.3:785
2766 " /* Send remaining command-line arguments as separate\n"
2767 " datagrams, and read responses from server */\n"
2771 #: build/C/man3/getaddrinfo.3:789
2774 " for (j = 3; j E<lt> argc; j++) {\n"
2775 " len = strlen(argv[j]) + 1;\n"
2776 " /* +1 for terminating null byte */\n"
2780 #: build/C/man3/getaddrinfo.3:795
2783 " if (len + 1 E<gt> BUF_SIZE) {\n"
2784 " fprintf(stderr,\n"
2785 " \"Ignoring long message in argument %d\\en\", j);\n"
2791 #: build/C/man3/getaddrinfo.3:800
2794 " if (write(sfd, argv[j], len) != len) {\n"
2795 " fprintf(stderr, \"partial/failed write\\en\");\n"
2796 " exit(EXIT_FAILURE);\n"
2801 #: build/C/man3/getaddrinfo.3:806
2804 " nread = read(sfd, buf, BUF_SIZE);\n"
2805 " if (nread == -1) {\n"
2806 " perror(\"read\");\n"
2807 " exit(EXIT_FAILURE);\n"
2812 #: build/C/man3/getaddrinfo.3:809
2815 " printf(\"Received %ld bytes: %s\\en\", (long) nread, buf);\n"
2819 #. .BR getipnodebyaddr (3),
2820 #. .BR getipnodebyname (3),
2822 #: build/C/man3/getaddrinfo.3:822
2824 "B<getaddrinfo_a>(3), B<gethostbyname>(3), B<getnameinfo>(3), B<inet>(3), "
2825 "B<hostname>(7), B<ip>(7)"
2829 #: build/C/man3/getaddrinfo_a.3:27
2831 msgid "GETADDRINFO_A"
2835 #: build/C/man3/getaddrinfo_a.3:31
2837 "getaddrinfo_a, gai_suspend, gai_error, gai_cancel - asynchronous network "
2838 "address and service translation"
2842 #: build/C/man3/getaddrinfo_a.3:35
2845 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
2846 "B<#include E<lt>netdb.hE<gt>>\n"
2850 #: build/C/man3/getaddrinfo_a.3:38
2853 "B<int getaddrinfo_a(int >I<mode>B<, struct gaicb *>I<list[]>B<,>\n"
2854 "B< int >I<nitems>B<, struct sigevent *>I<sevp>B<);>\n"
2858 #: build/C/man3/getaddrinfo_a.3:41
2861 "B<int gai_suspend(struct gaicb *>I<list[]>B<, int >I<nitems>B<,>\n"
2862 "B< struct timespec *>I<timeout>B<);>\n"
2866 #: build/C/man3/getaddrinfo_a.3:43
2868 msgid "B<int gai_error(struct gaicb *>I<req>B<);>\n"
2872 #: build/C/man3/getaddrinfo_a.3:45
2874 msgid "B<int gai_cancel(struct gaicb *>I<req>B<);>\n"
2878 #: build/C/man3/getaddrinfo_a.3:47
2880 msgid "Link with I<-lanl>.\n"
2884 #: build/C/man3/getaddrinfo_a.3:55
2886 "The B<getaddrinfo_a>() function performs the same task as "
2887 "B<getaddrinfo>(3), but allows multiple name look-ups to be performed "
2888 "asynchronously, with optional notification on completion of look-up "
2893 #: build/C/man3/getaddrinfo_a.3:59
2894 msgid "The I<mode> argument has one of the following values:"
2898 #: build/C/man3/getaddrinfo_a.3:59
2904 #: build/C/man3/getaddrinfo_a.3:63
2906 "Perform the look-ups synchronously. The call blocks until the look-ups have "
2911 #: build/C/man3/getaddrinfo_a.3:63
2913 msgid "B<GAI_NOWAIT>"
2917 #: build/C/man3/getaddrinfo_a.3:71
2919 "Perform the look-ups asynchronously. The call returns immediately, and the "
2920 "requests are resolved in the background. See the discussion of the I<sevp> "
2925 #: build/C/man3/getaddrinfo_a.3:86
2927 "The array I<list> specifies the look-up requests to process. The I<nitems> "
2928 "argument specifies the number of elements in I<list>. The requested look-up "
2929 "operations are started in parallel. NULL elements in I<list> are ignored. "
2930 "Each request is described by a I<gaicb> structure, defined as follows:"
2934 #: build/C/man3/getaddrinfo_a.3:95
2938 " const char *ar_name;\n"
2939 " const char *ar_service;\n"
2940 " const struct addrinfo *ar_request;\n"
2941 " struct addrinfo *ar_result;\n"
2946 #: build/C/man3/getaddrinfo_a.3:126
2948 "The elements of this structure correspond to the arguments of "
2949 "B<getaddrinfo>(3). Thus, I<ar_name> corresponds to the I<node> argument and "
2950 "I<ar_service> to the I<service> argument, identifying an Internet host and a "
2951 "service. The I<ar_request> element corresponds to the I<hints> argument, "
2952 "specifying the criteria for selecting the returned socket address "
2953 "structures. Finally, I<ar_result> corresponds to the I<res> argument; you "
2954 "do not need to initialize this element, it will be automatically set when "
2955 "the request is resolved. The I<addrinfo> structure referenced by the last "
2956 "two elements is described in B<getaddrinfo>(3)."
2960 #: build/C/man3/getaddrinfo_a.3:142
2962 "When I<mode> is specified as B<GAI_NOWAIT>, notifications about resolved "
2963 "requests can be obtained by employing the I<sigevent> structure pointed to "
2964 "by the I<sevp> argument. For the definition and general details of this "
2965 "structure, see B<sigevent>(7). The I<sevp-E<gt>sigev_notify> field can have "
2966 "the following values:"
2970 #: build/C/man3/getaddrinfo_a.3:142
2972 msgid "B<SIGEV_NONE>"
2976 #: build/C/man3/getaddrinfo_a.3:145
2977 msgid "Don't provide any notification."
2981 #: build/C/man3/getaddrinfo_a.3:145
2983 msgid "B<SIGEV_SIGNAL>"
2986 #. si_pid and si_uid are also set, to the values of the calling process,
2987 #. which doesn't provide useful information, so we'll skip mentioning it.
2989 #: build/C/man3/getaddrinfo_a.3:161
2991 "When a look-up completes, generate the signal I<sigev_signo> for the "
2992 "process. See B<sigevent>(7) for general details. The I<si_code> field of "
2993 "the I<siginfo_t> structure will be set to B<SI_ASYNCNL>."
2997 #: build/C/man3/getaddrinfo_a.3:161
2999 msgid "B<SIGEV_THREAD>"
3003 #: build/C/man3/getaddrinfo_a.3:169
3005 "When a look-up completes, invoke I<sigev_notify_function> as if it were the "
3006 "start function of a new thread. See B<sigevent>(7) for details."
3010 #: build/C/man3/getaddrinfo_a.3:178
3012 "For B<SIGEV_SIGNAL> and B<SIGEV_THREAD>, it may be useful to point "
3013 "I<sevp-E<gt>sigev_value.sival_ptr> to I<list>."
3017 #: build/C/man3/getaddrinfo_a.3:189
3019 "The B<gai_suspend>() function suspends execution of the calling thread, "
3020 "waiting for the completion of one or more requests in the array I<list>. "
3021 "The I<nitems> argument specifies the size of the array I<list>. The call "
3022 "blocks until one of the following occurs:"
3026 #: build/C/man3/getaddrinfo_a.3:193
3027 msgid "One or more of the operations in I<list> completes."
3031 #: build/C/man3/getaddrinfo_a.3:195
3032 msgid "The call is interrupted by a signal that is caught."
3036 #: build/C/man3/getaddrinfo_a.3:208
3038 "The time interval specified in I<timeout> elapses. This argument specifies "
3039 "a timeout in seconds plus nanoseconds (see B<nanosleep>(2) for details of "
3040 "the I<timespec> structure). If I<timeout> is NULL, then the call blocks "
3041 "indefinitely (until one of the events above occurs)."
3045 #: build/C/man3/getaddrinfo_a.3:213
3047 "No explicit indication of which request was completed is given; you must "
3048 "determine which request(s) have completed by iterating with B<gai_error>() "
3049 "over the list of requests."
3053 #: build/C/man3/getaddrinfo_a.3:223
3055 "The B<gai_error>() function returns the status of the request I<req>: "
3056 "either B<EAI_INPROGRESS> if the request was not completed yet, 0 if it was "
3057 "handled successfully, or an error code if the request could not be resolved."
3061 #: build/C/man3/getaddrinfo_a.3:240
3063 "The B<gai_cancel>() function cancels the request I<req>. If the request "
3064 "has been canceled successfully, the error status of the request will be set "
3065 "to B<EAI_CANCELLED> and normal asynchronous notification will be performed. "
3066 "The request cannot be canceled if it is currently being processed; in that "
3067 "case, it will be handled as if B<gai_cancel>() has never been called. If "
3068 "I<req> is NULL, an attempt is made to cancel all outstanding requests that "
3069 "the process has made."
3073 #: build/C/man3/getaddrinfo_a.3:245
3075 "The B<getaddrinfo_a>() function returns 0 if all of the requests have been "
3076 "enqueued successfully, or one of the following nonzero error codes:"
3080 #: build/C/man3/getaddrinfo_a.3:250
3082 "The resources necessary to enqueue the look-up requests were not available. "
3083 "The application may check the error status of each request to determine "
3084 "which ones failed."
3088 #: build/C/man3/getaddrinfo_a.3:257
3089 msgid "I<mode> is invalid."
3093 #: build/C/man3/getaddrinfo_a.3:262
3095 "The B<gai_suspend>() function returns 0 if at least one of the listed "
3096 "requests has been completed. Otherwise, it returns one of the following "
3097 "nonzero error codes:"
3101 #: build/C/man3/getaddrinfo_a.3:265
3102 msgid "The given timeout expired before any of the requests could be completed."
3106 #: build/C/man3/getaddrinfo_a.3:265 build/C/man3/getaddrinfo_a.3:295
3108 msgid "B<EAI_ALLDONE>"
3112 #: build/C/man3/getaddrinfo_a.3:268
3113 msgid "There were no actual requests given to the function."
3117 #: build/C/man3/getaddrinfo_a.3:268
3123 #: build/C/man3/getaddrinfo_a.3:273
3125 "A signal has interrupted the function. Note that this interruption might "
3126 "have been caused by signal notification of some completed look-up request."
3130 #: build/C/man3/getaddrinfo_a.3:285
3132 "The B<gai_error>() function can return B<EAI_INPROGRESS> for an unfinished "
3133 "look-up request, 0 for a successfully completed look-up (as described "
3134 "above), one of the error codes that could be returned by B<getaddrinfo>(3), "
3135 "or the error code B<EAI_CANCELLED> if the request has been canceled "
3136 "explicitly before it could be finished."
3140 #: build/C/man3/getaddrinfo_a.3:289
3141 msgid "The B<gai_cancel>() function can return one of these values:"
3145 #: build/C/man3/getaddrinfo_a.3:289
3147 msgid "B<EAI_CANCELLED>"
3151 #: build/C/man3/getaddrinfo_a.3:292
3152 msgid "The request has been canceled successfully."
3156 #: build/C/man3/getaddrinfo_a.3:292
3158 msgid "B<EAI_NOTCANCELLED>"
3162 #: build/C/man3/getaddrinfo_a.3:295
3163 msgid "The request has not been canceled."
3167 #: build/C/man3/getaddrinfo_a.3:298
3168 msgid "The request has already completed."
3172 #: build/C/man3/getaddrinfo_a.3:303 build/C/man3/getnameinfo.3:194
3174 "The B<gai_strerror>(3) function translates these error codes to a human "
3175 "readable string, suitable for error reporting."
3179 #: build/C/man3/getaddrinfo_a.3:306
3181 "These functions are GNU extensions; they first appeared in glibc in version "
3186 #: build/C/man3/getaddrinfo_a.3:312
3188 "The interface of B<getaddrinfo_a>() was modeled after the B<lio_listio>(3) "
3193 #: build/C/man3/getaddrinfo_a.3:316
3195 "Two examples are provided: a simple example that resolves several requests "
3196 "in parallel synchronously, and a complex example showing some of the "
3197 "asynchronous capabilities."
3201 #: build/C/man3/getaddrinfo_a.3:316
3203 msgid "Synchronous Example"
3207 #: build/C/man3/getaddrinfo_a.3:321
3209 "The program below simply resolves several hostnames in parallel, giving a "
3210 "speed-up compared to resolving the hostnames sequentially using "
3211 "B<getaddrinfo>(3). The program might be used like this:"
3215 #: build/C/man3/getaddrinfo_a.3:328
3218 "$ B<./a.out ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz>\n"
3219 "ftp.us.kernel.org: 128.30.2.36\n"
3220 "enoent.linuxfoundation.org: Name or service not known\n"
3221 "gnu.cz: 87.236.197.13\n"
3225 #: build/C/man3/getaddrinfo_a.3:332
3226 msgid "Here is the program source code"
3230 #: build/C/man3/getaddrinfo_a.3:339 build/C/man3/getaddrinfo_a.3:430
3233 "#define _GNU_SOURCE\n"
3234 "#include E<lt>netdb.hE<gt>\n"
3235 "#include E<lt>stdio.hE<gt>\n"
3236 "#include E<lt>stdlib.hE<gt>\n"
3237 "#include E<lt>string.hE<gt>\n"
3241 #: build/C/man3/getaddrinfo_a.3:347
3245 "main(int argc, char *argv[])\n"
3248 " struct gaicb *reqs[argc - 1];\n"
3249 " char host[NI_MAXHOST];\n"
3250 " struct addrinfo *res;\n"
3254 #: build/C/man3/getaddrinfo_a.3:352
3257 " if (argc E<lt> 2) {\n"
3258 " fprintf(stderr, \"Usage: %s HOST...\\en\", argv[0]);\n"
3259 " exit(EXIT_FAILURE);\n"
3264 #: build/C/man3/getaddrinfo_a.3:362
3267 " for (i = 0; i E<lt> argc - 1; i++) {\n"
3268 " reqs[i] = malloc(sizeof(*reqs[0]));\n"
3269 " if (reqs[i] == NULL) {\n"
3270 " perror(\"malloc\");\n"
3271 " exit(EXIT_FAILURE);\n"
3273 " memset(reqs[i], 0, sizeof(*reqs[0]));\n"
3274 " reqs[i]-E<gt>ar_name = argv[i + 1];\n"
3279 #: build/C/man3/getaddrinfo_a.3:369
3282 " ret = getaddrinfo_a(GAI_WAIT, reqs, argc - 1, NULL);\n"
3283 " if (ret != 0) {\n"
3284 " fprintf(stderr, \"getaddrinfo_a() failed: %s\\en\",\n"
3285 " gai_strerror(ret));\n"
3286 " exit(EXIT_FAILURE);\n"
3291 #: build/C/man3/getaddrinfo_a.3:375
3294 " for (i = 0; i E<lt> argc - 1; i++) {\n"
3295 " printf(\"%s: \", reqs[i]-E<gt>ar_name);\n"
3296 " ret = gai_error(reqs[i]);\n"
3297 " if (ret == 0) {\n"
3298 " res = reqs[i]-E<gt>ar_result;\n"
3302 #: build/C/man3/getaddrinfo_a.3:385
3305 " ret = getnameinfo(res-E<gt>ai_addr, res-E<gt>ai_addrlen,\n"
3306 " host, sizeof(host),\n"
3307 " NULL, 0, NI_NUMERICHOST);\n"
3308 " if (ret != 0) {\n"
3309 " fprintf(stderr, \"getnameinfo() failed: %s\\en\",\n"
3310 " gai_strerror(ret));\n"
3311 " exit(EXIT_FAILURE);\n"
3317 #: build/C/man3/getaddrinfo_a.3:392
3321 " puts(gai_strerror(ret));\n"
3324 " exit(EXIT_SUCCESS);\n"
3329 #: build/C/man3/getaddrinfo_a.3:394
3331 msgid "Asynchronous Example"
3335 #: build/C/man3/getaddrinfo_a.3:399
3337 "This example shows a simple interactive B<getaddrinfo_a>() front-end. The "
3338 "notification facility is not demonstrated."
3342 #: build/C/man3/getaddrinfo_a.3:401
3343 msgid "An example session might look like like this:"
3347 #: build/C/man3/getaddrinfo_a.3:418
3351 "E<gt> a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz\n"
3353 "[2] gnu.cz: Request not canceled\n"
3355 "[00] ftp.us.kernel.org: Finished\n"
3357 "[00] ftp.us.kernel.org: 216.165.129.139\n"
3358 "[01] enoent.linuxfoundation.org: Processing request in progress\n"
3359 "[02] gnu.cz: 87.236.197.13\n"
3361 "[00] ftp.us.kernel.org: 216.165.129.139\n"
3362 "[01] enoent.linuxfoundation.org: Name or service not known\n"
3363 "[02] gnu.cz: 87.236.197.13\n"
3367 #: build/C/man3/getaddrinfo_a.3:422
3368 msgid "The program source goes as follows:"
3372 #: build/C/man3/getaddrinfo_a.3:433
3375 "static struct gaicb **reqs = NULL;\n"
3376 "static int nreqs = 0;\n"
3380 #: build/C/man3/getaddrinfo_a.3:438
3386 " static char buf[256];\n"
3390 #: build/C/man3/getaddrinfo_a.3:442
3393 " fputs(\"E<gt> \", stdout); fflush(stdout);\n"
3394 " if (fgets(buf, sizeof(buf), stdin) == NULL)\n"
3399 #: build/C/man3/getaddrinfo_a.3:445
3402 " if (buf[strlen(buf) - 1] == \\(aq\\en\\(aq)\n"
3403 " buf[strlen(buf) - 1] = 0;\n"
3407 #: build/C/man3/getaddrinfo_a.3:448
3415 #: build/C/man3/getaddrinfo_a.3:456
3418 "/* Add requests for specified hostnames */\n"
3420 "add_requests(void)\n"
3422 " int nreqs_base = nreqs;\n"
3428 #: build/C/man3/getaddrinfo_a.3:460
3431 " while ((host = strtok(NULL, \" \"))) {\n"
3433 " reqs = realloc(reqs, nreqs * sizeof(reqs[0]));\n"
3437 #: build/C/man3/getaddrinfo_a.3:464
3440 " reqs[nreqs - 1] = calloc(1, sizeof(*reqs[0]));\n"
3441 " reqs[nreqs - 1]-E<gt>ar_name = strdup(host);\n"
3446 #: build/C/man3/getaddrinfo_a.3:466
3448 msgid " /* Queue nreqs_base..nreqs requests. */\n"
3452 #: build/C/man3/getaddrinfo_a.3:475
3455 " ret = getaddrinfo_a(GAI_NOWAIT, &reqs[nreqs_base],\n"
3456 " nreqs - nreqs_base, NULL);\n"
3458 " fprintf(stderr, \"getaddrinfo_a() failed: %s\\en\",\n"
3459 " gai_strerror(ret));\n"
3460 " exit(EXIT_FAILURE);\n"
3466 #: build/C/man3/getaddrinfo_a.3:484
3469 "/* Wait until at least one of specified requests completes */\n"
3471 "wait_requests(void)\n"
3475 " struct gaicb const **wait_reqs = calloc(nreqs, sizeof(*wait_reqs));\n"
3476 " /* NULL elements are ignored by gai_suspend(). */\n"
3480 #: build/C/man3/getaddrinfo_a.3:487 build/C/man3/getaddrinfo_a.3:524
3483 " while ((id = strtok(NULL, \" \")) != NULL) {\n"
3488 #: build/C/man3/getaddrinfo_a.3:492 build/C/man3/getaddrinfo_a.3:529
3491 " if (n E<gt>= nreqs) {\n"
3492 " printf(\"Bad request number: %s\\en\", id);\n"
3498 #: build/C/man3/getaddrinfo_a.3:495
3501 " wait_reqs[n] = reqs[n];\n"
3506 #: build/C/man3/getaddrinfo_a.3:501
3509 " ret = gai_suspend(wait_reqs, nreqs, NULL);\n"
3511 " printf(\"gai_suspend(): %s\\en\", gai_strerror(ret));\n"
3517 #: build/C/man3/getaddrinfo_a.3:505
3520 " for (i = 0; i E<lt> nreqs; i++) {\n"
3521 " if (wait_reqs[i] == NULL)\n"
3526 #: build/C/man3/getaddrinfo_a.3:509
3529 " ret = gai_error(reqs[i]);\n"
3530 " if (ret == EAI_INPROGRESS)\n"
3535 #: build/C/man3/getaddrinfo_a.3:514
3538 " printf(\"[%02d] %s: %s\\en\", i, reqs[i]-E<gt>ar_name,\n"
3539 " ret == 0 ? \"Finished\" : gai_strerror(ret));\n"
3545 #: build/C/man3/getaddrinfo_a.3:521
3548 "/* Cancel specified requests */\n"
3550 "cancel_requests(void)\n"
3557 #: build/C/man3/getaddrinfo_a.3:535
3560 " ret = gai_cancel(reqs[n]);\n"
3561 " printf(\"[%s] %s: %s\\en\", id, reqs[atoi(id)]-E<gt>ar_name,\n"
3562 " gai_strerror(ret));\n"
3568 #: build/C/man3/getaddrinfo_a.3:543
3571 "/* List all requests */\n"
3573 "list_requests(void)\n"
3576 " char host[NI_MAXHOST];\n"
3577 " struct addrinfo *res;\n"
3581 #: build/C/man3/getaddrinfo_a.3:547
3584 " for (i = 0; i E<lt> nreqs; i++) {\n"
3585 " printf(\"[%02d] %s: \", i, reqs[i]-E<gt>ar_name);\n"
3586 " ret = gai_error(reqs[i]);\n"
3590 #: build/C/man3/getaddrinfo_a.3:550
3594 " res = reqs[i]-E<gt>ar_result;\n"
3598 #: build/C/man3/getaddrinfo_a.3:565
3601 " ret = getnameinfo(res-E<gt>ai_addr, res-E<gt>ai_addrlen,\n"
3602 " host, sizeof(host),\n"
3603 " NULL, 0, NI_NUMERICHOST);\n"
3605 " fprintf(stderr, \"getnameinfo() failed: %s\\en\",\n"
3606 " gai_strerror(ret));\n"
3607 " exit(EXIT_FAILURE);\n"
3611 " puts(gai_strerror(ret));\n"
3618 #: build/C/man3/getaddrinfo_a.3:571
3622 "main(int argc, char *argv[])\n"
3629 #: build/C/man3/getaddrinfo_a.3:574
3632 " while ((cmdline = getcmd()) != NULL) {\n"
3633 " cmd = strtok(cmdline, \" \");\n"
3637 #: build/C/man3/getaddrinfo_a.3:599
3640 " if (cmd == NULL) {\n"
3641 " list_requests();\n"
3643 " switch (cmd[0]) {\n"
3644 " case \\(aqa\\(aq:\n"
3645 " add_requests();\n"
3647 " case \\(aqw\\(aq:\n"
3648 " wait_requests();\n"
3650 " case \\(aqc\\(aq:\n"
3651 " cancel_requests();\n"
3653 " case \\(aql\\(aq:\n"
3654 " list_requests();\n"
3657 " fprintf(stderr, \"Bad command: %c\\en\", cmd[0]);\n"
3662 " exit(EXIT_SUCCESS);\n"
3667 #: build/C/man3/getaddrinfo_a.3:607
3669 "B<getaddrinfo>(3), B<inet>(3), B<lio_listio>(3), B<hostname>(7), B<ip>(7), "
3674 #: build/C/man1/getent.1:23
3680 #: build/C/man1/getent.1:23
3686 #: build/C/man1/getent.1:23
3688 msgid "User Commands"
3692 #: build/C/man1/getent.1:26
3693 msgid "getent - get entries from Name Service Switch libraries"
3697 #: build/C/man1/getent.1:28
3698 msgid "B<getent >I<database>B< [ >I<key>B< ... ]>"
3702 #: build/C/man1/getent.1:43
3704 "The I<getent> command displays entries from databases supported by the Name "
3705 "Service Switch libraries, which are configured in I</etc/nsswitch.conf>. If "
3706 "one or more I<key> arguments are provided, then only the entries that match "
3707 "the supplied keys will be displayed. Otherwise, if no I<key> is provided, "
3708 "all entries will be displayed (unless the database does not support "
3713 #: build/C/man1/getent.1:47
3715 "The I<database> may be any of those supported by the GNU C Library, listed "
3720 #: build/C/man1/getent.1:48
3726 #: build/C/man1/getent.1:69
3728 "When no I<key> is provided, use B<sethostent>(3), B<gethostent>(3), and "
3729 "B<endhostent>(3) to enumerate the hosts database. This is identical to "
3730 "using B<hosts>. When one or more I<key> arguments are provided, pass each "
3731 "I<key> in succession to B<getaddrinfo>(3) with the address family "
3732 "B<AF_UNSPEC>, enumerating each socket address structure returned."
3736 #: build/C/man1/getent.1:69
3742 #: build/C/man1/getent.1:75
3743 msgid "Same as B<ahosts>, but use the address family B<AF_INET>."
3747 #: build/C/man1/getent.1:75
3753 #: build/C/man1/getent.1:86
3755 "Same as B<ahosts>, but use the address family B<AF_INET6>. The call to "
3756 "B<getaddrinfo>(3) in this case includes the B<AI_V4MAPPED> flag."
3760 #: build/C/man1/getent.1:86 build/C/man5/nsswitch.conf.5:51
3766 #: build/C/man1/getent.1:103
3768 "When no I<key> is provided, use B<setaliasent>(3), B<getaliasent>(3), and "
3769 "B<endaliasent>(3) to enumerate the aliases database. When one or more "
3770 "I<key> arguments are provided, pass each I<key> in succession to "
3771 "B<getaliasbyname>(3) and display the result."
3775 #: build/C/man1/getent.1:103 build/C/man5/nsswitch.conf.5:56
3781 #: build/C/man1/getent.1:119
3783 "When one or more I<key> arguments are provided, pass each I<key> in "
3784 "succession to B<ether_aton>(3) and B<ether_hostton>(3) until a result is "
3785 "obtained, and display the result. Enumeration is not supported on "
3786 "B<ethers>, so a I<key> must be provided."
3790 #: build/C/man1/getent.1:119 build/C/man5/nsswitch.conf.5:59
3796 #: build/C/man1/getent.1:140
3798 "When no I<key> is provided, use B<setgrent>(3), B<getgrent>(3), and "
3799 "B<endgrent>(3) to enumerate the group database. When one or more I<key> "
3800 "arguments are provided, pass each numeric I<key> to B<getgrgid>(3) and each "
3801 "nonnumeric I<key> to B<getgrnam>(3) and display the result."
3805 #: build/C/man1/getent.1:140
3811 #: build/C/man1/getent.1:157
3813 "When no I<key> is provided, use B<setsgent>(3), B<getsgent>(3), and "
3814 "B<endsgent>(3) to enumerate the gshadow database. When one or more I<key> "
3815 "arguments are provided, pass each I<key> in succession to B<getsgnam>(3) "
3816 "and display the result."
3820 #: build/C/man1/getent.1:157 build/C/man5/nsswitch.conf.5:64
3826 #: build/C/man1/getent.1:180
3828 "When no I<key> is provided, use B<sethostent>(3), B<gethostent>(3), and "
3829 "B<endhostent>(3) to enumerate the hosts database. When one or more I<key> "
3830 "arguments are provided, pass each I<key> to B<gethostbyaddr>(3) or "
3831 "B<gethostbyname2>(3), depending on whether a call to B<inet_pton>(3) "
3832 "indicates that the I<key> is an IPv6 or IPv4 address or not, and display the "
3837 #: build/C/man1/getent.1:180
3839 msgid "B<initgroups>"
3843 #: build/C/man1/getent.1:194
3845 "When one or more I<key> arguments are provided, pass each I<key> in "
3846 "succession to B<getgrouplist>(3) and display the result. Enumeration is "
3847 "not supported on B<initgroups>, so a I<key> must be provided."
3851 #: build/C/man1/getent.1:194 build/C/man5/nsswitch.conf.5:69
3857 #: build/C/man1/getent.1:220
3859 "When one I<key> is provided, pass the I<key> to B<setnetgrent>(3) and, "
3860 "using B<getnetgrent>(3) display the resulting string triple (I<hostname>, "
3861 "I<username>, I<domainname>). Alternatively, three I<keys> may be provided, "
3862 "which are interpreted as the I<hostname>, I<username> and I<domainname> to "
3863 "match to a netgroup name via B<innetgr>(3). Enumeration is not supported on "
3864 "B<initgroups>, so either one or three I<keys> must be provided."
3868 #: build/C/man1/getent.1:220 build/C/man5/nsswitch.conf.5:73
3874 #: build/C/man1/getent.1:241
3876 "When no I<key> is provided, use B<setnetent>(3), B<getnetent>(3), and "
3877 "B<endnetent>(3) to enumerate the networks database. When one or more "
3878 "I<key> arguments are provided, pass each numeric I<key> to "
3879 "B<getnetbyaddr>(3) and each nonnumeric I<key> to B<getnetbyname>(3) and "
3880 "display the result."
3884 #: build/C/man1/getent.1:241 build/C/man5/nsswitch.conf.5:78
3890 #: build/C/man1/getent.1:262
3892 "When no I<key> is provided, use B<setpwent>(3), B<getpwent>(3), and "
3893 "B<endpwent>(3) to enumerate the passwd database. When one or more I<key> "
3894 "arguments are provided, pass each numeric I<key> to B<getpwuid>(3) and each "
3895 "nonnumeric I<key> to B<getpwnam>(3) and display the result."
3899 #: build/C/man1/getent.1:262 build/C/man5/nsswitch.conf.5:83
3901 msgid "B<protocols>"
3905 #: build/C/man1/getent.1:283
3907 "When no I<key> is provided, use B<setprotoent>(3), B<getprotoent>(3), and "
3908 "B<endprotoent>(3) to enumerate the protocols database. When one or more "
3909 "I<key> arguments are provided, pass each numeric I<key> to "
3910 "B<getprotobynumber>(3) and each nonnumeric I<key> to B<getprotobyname>(3) "
3911 "and display the result."
3915 #: build/C/man1/getent.1:283 build/C/man5/nsswitch.conf.5:91
3921 #: build/C/man1/getent.1:304
3923 "When no I<key> is provided, use B<setrpcent>(3), B<getrpcent>(3), and "
3924 "B<endrpcent>(3) to enumerate the rpc database. When one or more I<key> "
3925 "arguments are provided, pass each numeric I<key> to B<getrpcbynumber>(3) "
3926 "and each nonnumeric I<key> to B<getrpcbyname>(3) and display the result."
3930 #: build/C/man1/getent.1:304 build/C/man5/nsswitch.conf.5:96
3936 #: build/C/man1/getent.1:325
3938 "When no I<key> is provided, use B<setservent>(3), B<getservent>(3), and "
3939 "B<endservent>(3) to enumerate the services database. When one or more "
3940 "I<key> arguments are provided, pass each numeric I<key> to "
3941 "B<getservbynumber>(3) and each nonnumeric I<key> to B<getservbyname>(3) "
3942 "and display the result."
3946 #: build/C/man1/getent.1:325 build/C/man5/nsswitch.conf.5:101
3952 #: build/C/man1/getent.1:342
3954 "When no I<key> is provided, use B<setspent>(3), B<getspent>(3), and "
3955 "B<endspent>(3) to enumerate the shadow database. When one or more I<key> "
3956 "arguments are provided, pass each I<key> in succession to B<getspnam>(3) "
3957 "and display the result."
3961 #: build/C/man1/getent.1:343
3967 #: build/C/man1/getent.1:346
3968 msgid "One of the following exit values can be returned by B<getent>:"
3972 #: build/C/man1/getent.1:347
3978 #: build/C/man1/getent.1:350
3979 msgid "Command completed successfully."
3983 #: build/C/man1/getent.1:350
3989 #: build/C/man1/getent.1:355
3990 msgid "Missing arguments, or I<database> unknown."
3994 #: build/C/man1/getent.1:355
4000 #: build/C/man1/getent.1:361
4001 msgid "One or more supplied I<key> could not be found in the I<database>."
4005 #: build/C/man1/getent.1:361
4011 #: build/C/man1/getent.1:365
4012 msgid "Enumeration not supported on this I<database>."
4016 #: build/C/man1/getent.1:368
4017 msgid "B<nsswitch.conf>(5)"
4021 #: build/C/man3/gethostbyname.3:36
4023 msgid "GETHOSTBYNAME"
4027 #: build/C/man3/gethostbyname.3:36
4033 #: build/C/man3/gethostbyname.3:44
4035 "gethostbyname, gethostbyaddr, sethostent, gethostent, endhostent, h_errno, "
4036 "herror, hstrerror, gethostbyaddr_r, gethostbyname2, gethostbyname2_r, "
4037 "gethostbyname_r, gethostent_r - get network host entry"
4041 #: build/C/man3/gethostbyname.3:48
4044 "B<#include E<lt>netdb.hE<gt>>\n"
4045 "B<extern int h_errno;>\n"
4049 #: build/C/man3/gethostbyname.3:50
4051 msgid "B<struct hostent *gethostbyname(const char *>I<name>B<);>\n"
4055 #: build/C/man3/gethostbyname.3:54
4058 "B<#include E<lt>sys/socket.hE<gt>> /* for AF_INET */\n"
4059 "B<struct hostent *gethostbyaddr(const void *>I<addr>B<,>\n"
4060 "B< socklen_t >I<len>B<, int >I<type>B<);>\n"
4064 #: build/C/man3/gethostbyname.3:56
4066 msgid "B<void sethostent(int >I<stayopen>B<);>\n"
4070 #: build/C/man3/gethostbyname.3:58
4072 msgid "B<void endhostent(void);>\n"
4076 #: build/C/man3/gethostbyname.3:60
4078 msgid "B<void herror(const char *>I<s>B<);>\n"
4082 #: build/C/man3/gethostbyname.3:62
4084 msgid "B<const char *hstrerror(int >I<err>B<);>\n"
4088 #: build/C/man3/gethostbyname.3:64
4090 msgid "/* System V/POSIX extension */\n"
4094 #: build/C/man3/gethostbyname.3:66
4096 msgid "B<struct hostent *gethostent(void);>\n"
4100 #: build/C/man3/gethostbyname.3:70
4102 msgid "B<struct hostent *gethostbyname2(const char *>I<name>B<, int >I<af>B<);>\n"
4106 #: build/C/man3/gethostbyname.3:74
4109 "B<int gethostent_r(>\n"
4110 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4112 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4116 #: build/C/man3/gethostbyname.3:78
4119 "B<int gethostbyaddr_r(const void *>I<addr>B<, socklen_t >I<len>B<, int "
4121 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4123 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4127 #: build/C/man3/gethostbyname.3:82
4130 "B<int gethostbyname_r(const char *>I<name>B<,>\n"
4131 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4133 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4137 #: build/C/man3/gethostbyname.3:86
4140 "B<int gethostbyname2_r(const char *>I<name>B<, int >I<af,>\n"
4141 "B< struct hostent *>I<ret>B<, char *>I<buf>B<, size_t "
4143 "B< struct hostent **>I<result>B<, int *>I<h_errnop>B<);>\n"
4147 #: build/C/man3/gethostbyname.3:100
4149 "B<gethostbyname2>(), B<gethostent_r>(), B<gethostbyaddr_r>(), "
4150 "B<gethostbyname_r>(), B<gethostbyname2_r>():"
4154 #: build/C/man3/gethostbyname.3:102 build/C/man3/getnetent_r.3:58 build/C/man3/getprotoent_r.3:55 build/C/man3/getservent_r.3:55
4155 msgid "_BSD_SOURCE || _SVID_SOURCE"
4159 #: build/C/man3/gethostbyname.3:106
4160 msgid "B<herror>(), B<hstrerror>():"
4164 #: build/C/man3/gethostbyname.3:107
4166 msgid "Since glibc 2.8:"
4170 #: build/C/man3/gethostbyname.3:110
4171 msgid "_BSD_SOURCE || _SVID_SOURCE || _GNU_SOURCE"
4175 #: build/C/man3/gethostbyname.3:110
4177 msgid "Before glibc 2.8:"
4181 #: build/C/man3/gethostbyname.3:113
4186 #: build/C/man3/gethostbyname.3:127
4188 "The B<gethostbyname*>() and B<gethostbyaddr*>() functions are obsolete. "
4189 "Applications should use B<getaddrinfo>(3) and B<getnameinfo>(3) instead."
4193 #: build/C/man3/gethostbyname.3:168
4195 "The B<gethostbyname>() function returns a structure of type I<hostent> for "
4196 "the given host I<name>. Here I<name> is either a hostname, or an IPv4 "
4197 "address in standard dot notation (as for B<inet_addr>(3)), or an IPv6 "
4198 "address in colon (and possibly dot) notation. (See RFC\\ 1884 for the "
4199 "description of IPv6 addresses.) If I<name> is an IPv4 or IPv6 address, no "
4200 "lookup is performed and B<gethostbyname>() simply copies I<name> into the "
4201 "I<h_name> field and its I<struct in_addr> equivalent into the "
4202 "I<h_addr_list[0]> field of the returned I<hostent> structure. If I<name> "
4203 "doesn't end in a dot and the environment variable B<HOSTALIASES> is set, the "
4204 "alias file pointed to by B<HOSTALIASES> will first be searched for I<name> "
4205 "(see B<hostname>(7) for the file format). The current domain and its "
4206 "parents are searched unless I<name> ends in a dot."
4210 #: build/C/man3/gethostbyname.3:184
4212 "The B<gethostbyaddr>() function returns a structure of type I<hostent> for "
4213 "the given host address I<addr> of length I<len> and address type I<type>. "
4214 "Valid address types are B<AF_INET> and B<AF_INET6>. The host address "
4215 "argument is a pointer to a struct of a type depending on the address type, "
4216 "for example a I<struct in_addr *> (probably obtained via a call to "
4217 "B<inet_addr>(3)) for address type B<AF_INET>."
4221 #: build/C/man3/gethostbyname.3:191
4223 "The B<sethostent>() function specifies, if I<stayopen> is true (1), that a "
4224 "connected TCP socket should be used for the name server queries and that the "
4225 "connection should remain open during successive queries. Otherwise, name "
4226 "server queries will use UDP datagrams."
4230 #: build/C/man3/gethostbyname.3:196
4232 "The B<endhostent>() function ends the use of a TCP connection for name "
4237 #: build/C/man3/gethostbyname.3:201
4239 "The (obsolete) B<herror>() function prints the error message associated "
4240 "with the current value of I<h_errno> on I<stderr>."
4244 #: build/C/man3/gethostbyname.3:206
4246 "The (obsolete) B<hstrerror>() function takes an error number (typically "
4247 "I<h_errno>) and returns the corresponding message string."
4251 #. .BR resolv+ (8)).
4253 #: build/C/man3/gethostbyname.3:223
4255 "The domain name queries carried out by B<gethostbyname>() and "
4256 "B<gethostbyaddr>() use a combination of any or all of the name server "
4257 "B<named>(8), a broken out line from I</etc/hosts>, and the Network "
4258 "Information Service (NIS or YP), depending upon the contents of the I<order> "
4259 "line in I</etc/host.conf>. The default action is to query B<named>(8), "
4260 "followed by I</etc/hosts>."
4264 #: build/C/man3/gethostbyname.3:225
4265 msgid "The I<hostent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
4269 #: build/C/man3/gethostbyname.3:237
4272 "struct hostent {\n"
4273 " char *h_name; /* official name of host */\n"
4274 " char **h_aliases; /* alias list */\n"
4275 " int h_addrtype; /* host address type */\n"
4276 " int h_length; /* length of address */\n"
4277 " char **h_addr_list; /* list of addresses */\n"
4279 "#define h_addr h_addr_list[0] /* for backward compatibility */\n"
4283 #: build/C/man3/gethostbyname.3:241
4284 msgid "The members of the I<hostent> structure are:"
4288 #: build/C/man3/gethostbyname.3:241 build/C/man3/getipnodebyname.3:208
4294 #: build/C/man3/gethostbyname.3:244
4295 msgid "The official name of the host."
4299 #: build/C/man3/gethostbyname.3:244 build/C/man3/getipnodebyname.3:211
4301 msgid "I<h_aliases>"
4305 #: build/C/man3/gethostbyname.3:247
4306 msgid "An array of alternative names for the host, terminated by a NULL pointer."
4310 #: build/C/man3/gethostbyname.3:247 build/C/man3/getipnodebyname.3:215
4312 msgid "I<h_addrtype>"
4316 #: build/C/man3/gethostbyname.3:254
4317 msgid "The type of address; always B<AF_INET> or B<AF_INET6> at present."
4321 #: build/C/man3/gethostbyname.3:254 build/C/man3/getipnodebyname.3:237
4327 #: build/C/man3/gethostbyname.3:257
4328 msgid "The length of the address in bytes."
4332 #: build/C/man3/gethostbyname.3:257 build/C/man3/getipnodebyname.3:251
4334 msgid "I<h_addr_list>"
4338 #: build/C/man3/gethostbyname.3:261
4340 "An array of pointers to network addresses for the host (in network byte "
4341 "order), terminated by a NULL pointer."
4345 #: build/C/man3/gethostbyname.3:261
4351 #: build/C/man3/gethostbyname.3:264
4352 msgid "The first address in I<h_addr_list> for backward compatibility."
4356 #: build/C/man3/gethostbyname.3:276
4358 "The B<gethostbyname>() and B<gethostbyaddr>() functions return the "
4359 "I<hostent> structure or a NULL pointer if an error occurs. On error, the "
4360 "I<h_errno> variable holds an error number. When non-NULL, the return value "
4361 "may point at static data, see the notes below."
4365 #: build/C/man3/gethostbyname.3:278
4366 msgid "The variable I<h_errno> can have the following values:"
4370 #: build/C/man3/gethostbyname.3:278 build/C/man3/getipnodebyname.3:188
4372 msgid "B<HOST_NOT_FOUND>"
4376 #: build/C/man3/gethostbyname.3:281
4377 msgid "The specified host is unknown."
4381 #: build/C/man3/gethostbyname.3:281
4383 msgid "B<NO_ADDRESS> or B<NO_DATA>"
4387 #: build/C/man3/gethostbyname.3:284
4388 msgid "The requested name is valid but does not have an IP address."
4392 #: build/C/man3/gethostbyname.3:284 build/C/man3/getipnodebyname.3:197
4394 msgid "B<NO_RECOVERY>"
4398 #: build/C/man3/gethostbyname.3:287
4399 msgid "A nonrecoverable name server error occurred."
4403 #: build/C/man3/gethostbyname.3:287 build/C/man3/getipnodebyname.3:200
4405 msgid "B<TRY_AGAIN>"
4409 #: build/C/man3/gethostbyname.3:291
4411 "A temporary error occurred on an authoritative name server. Try again "
4416 #: build/C/man3/gethostbyname.3:292 build/C/man5/host.conf.5:181
4418 msgid "I</etc/host.conf>"
4422 #: build/C/man3/gethostbyname.3:295
4423 msgid "resolver configuration file"
4427 #: build/C/man3/gethostbyname.3:295 build/C/man5/host.conf.5:187 build/C/man5/hosts.5:88
4429 msgid "I</etc/hosts>"
4433 #: build/C/man3/gethostbyname.3:298
4434 msgid "host database file"
4438 #: build/C/man3/gethostbyname.3:298 build/C/man5/nsswitch.conf.5:251 build/C/man3/setnetgrent.3:87
4440 msgid "I</etc/nsswitch.conf>"
4444 #: build/C/man3/gethostbyname.3:301
4445 msgid "name service switch configuration"
4449 #: build/C/man3/gethostbyname.3:325
4451 "POSIX.1-2001 specifies B<gethostbyname>(), B<gethostbyaddr>(), "
4452 "B<sethostent>(), B<endhostent>(), B<gethostent>(), and I<h_errno>; "
4453 "B<gethostbyname>(), B<gethostbyaddr>(), and I<h_errno> are marked "
4454 "obsolescent in that standard. POSIX.1-2008 removes the specifications of "
4455 "B<gethostbyname>(), B<gethostbyaddr>(), and I<h_errno>, recommending the use "
4456 "of B<getaddrinfo>(3) and B<getnameinfo>(3) instead."
4460 #: build/C/man3/gethostbyname.3:335
4462 "The functions B<gethostbyname>() and B<gethostbyaddr>() may return "
4463 "pointers to static data, which may be overwritten by later calls. Copying "
4464 "the I<struct hostent> does not suffice, since it contains pointers; a deep "
4469 #: build/C/man3/gethostbyname.3:359
4471 "In the original BSD implementation the I<len> argument of B<gethostbyname>() "
4472 "was an I<int>. The SUSv2 standard is buggy and declares the I<len> argument "
4473 "of B<gethostbyaddr>() to be of type I<size_t>. (That is wrong, because it "
4474 "has to be I<int>, and I<size_t> is not. POSIX.1-2001 makes it I<socklen_t>, "
4475 "which is OK.) See also B<accept>(2)."
4479 #: build/C/man3/gethostbyname.3:365
4481 "The BSD prototype for B<gethostbyaddr>() uses I<const char *> for the first "
4486 #: build/C/man3/gethostbyname.3:365
4488 msgid "System V/POSIX Extension"
4491 #. e.g., Linux, FreeBSD, UnixWare, HP-UX
4492 #. e.g., FreeBSD, AIX
4494 #: build/C/man3/gethostbyname.3:382
4496 "POSIX requires the B<gethostent>() call, that should return the next entry "
4497 "in the host data base. When using DNS/BIND this does not make much sense, "
4498 "but it may be reasonable if the host data base is a file that can be read "
4499 "line by line. On many systems a routine of this name reads from the file "
4500 "I</etc/hosts>. It may be available only when the library was built without "
4501 "DNS support. The glibc version will ignore ipv6 entries. This function is "
4502 "not reentrant, and glibc adds a reentrant version B<gethostent_r>()."
4506 #: build/C/man3/gethostbyname.3:382
4508 msgid "GNU Extensions"
4512 #: build/C/man3/gethostbyname.3:388
4514 "Glibc2 also has a B<gethostbyname2>() that works like B<gethostbyname>(), "
4515 "but permits to specify the address family to which the address must belong."
4519 #: build/C/man3/gethostbyname.3:422
4521 "Glibc2 also has reentrant versions B<gethostent_r>(), B<gethostbyaddr_r>(), "
4522 "B<gethostbyname_r>() and B<gethostbyname2_r>(). The caller supplies a "
4523 "I<hostent> structure I<ret> which will be filled in on success, and a "
4524 "temporary work buffer I<buf> of size I<buflen>. After the call, I<result> "
4525 "will point to the result on success. In case of an error or if no entry is "
4526 "found I<result> will be NULL. The functions return 0 on success and a "
4527 "nonzero error number on failure. In addition to the errors returned by the "
4528 "nonreentrant versions of these functions, if I<buf> is too small, the "
4529 "functions will return B<ERANGE>, and the call should be retried with a "
4530 "larger buffer. The global variable I<h_errno> is not modified, but the "
4531 "address of a variable in which to store error numbers is passed in "
4535 #. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482973
4537 #: build/C/man3/gethostbyname.3:427
4539 "B<gethostbyname>() does not recognize components of a dotted IPv4 address "
4540 "string that are expressed in hexadecimal."
4543 #. .BR getipnodebyaddr (3),
4544 #. .BR getipnodebyname (3),
4547 #: build/C/man3/gethostbyname.3:441
4549 "B<getaddrinfo>(3), B<getnameinfo>(3), B<inet>(3), B<inet_ntop>(3), "
4550 "B<inet_pton>(3), B<resolver>(3), B<hosts>(5), B<nsswitch.conf>(5), "
4551 "B<hostname>(7), B<named>(8)"
4555 #: build/C/man3/getipnodebyname.3:24
4557 msgid "GETIPNODEBYNAME"
4561 #: build/C/man3/getipnodebyname.3:24
4567 #: build/C/man3/getipnodebyname.3:28
4569 "getipnodebyname, getipnodebyaddr, freehostent - get network hostnames and "
4574 #: build/C/man3/getipnodebyname.3:36
4577 "B<struct hostent *getipnodebyname(const char *>I<name>B<, int >I<af>B<,>\n"
4578 "B< int >I<flags>B<, int *>I<error_num>B<);>\n"
4582 #: build/C/man3/getipnodebyname.3:39
4585 "B<struct hostent *getipnodebyaddr(const void *>I<addr>B<, size_t "
4587 "B< int >I<af>B<, int *>I<error_num>B<);>\n"
4591 #: build/C/man3/getipnodebyname.3:41
4593 msgid "B<void freehostent(struct hostent *>I<ip>B<);>\n"
4597 #: build/C/man3/getipnodebyname.3:49
4599 "These functions are deprecated (and unavailable in glibc). Use "
4600 "B<getaddrinfo>(3) and B<getnameinfo>(3) instead."
4604 #: build/C/man3/getipnodebyname.3:57
4606 "The B<getipnodebyname>() and B<getipnodebyaddr>() functions return the "
4607 "names and addresses of a network host. These functions return a pointer to "
4608 "the following structure:"
4612 #: build/C/man3/getipnodebyname.3:67
4615 "struct hostent {\n"
4617 " char **h_aliases;\n"
4618 " int h_addrtype;\n"
4620 " char **h_addr_list;\n"
4625 #: build/C/man3/getipnodebyname.3:80
4627 "These functions replace the B<gethostbyname>(3) and B<gethostbyaddr>(3) "
4628 "functions, which could only access the IPv4 network address family. The "
4629 "B<getipnodebyname>() and B<getipnodebyaddr>() functions can access "
4630 "multiple network address families."
4634 #: build/C/man3/getipnodebyname.3:91
4636 "Unlike the B<gethostby> functions, these functions return pointers to "
4637 "dynamically allocated memory. The B<freehostent>() function is used to "
4638 "release the dynamically allocated memory after the caller no longer needs "
4639 "the I<hostent> structure."
4643 #: build/C/man3/getipnodebyname.3:91
4645 msgid "getipnodebyname() arguments"
4649 #: build/C/man3/getipnodebyname.3:102
4651 "The B<getipnodebyname>() function looks up network addresses for the host "
4652 "specified by the I<name> argument. The I<af> argument specifies one of the "
4657 #: build/C/man3/getipnodebyname.3:102 build/C/man3/getipnodebyname.3:164 build/C/man3/inet_ntop.3:55 build/C/man3/inet_pton.3:51
4663 #: build/C/man3/getipnodebyname.3:108
4665 "The I<name> argument points to a dotted-quad IPv4 address or a name of an "
4666 "IPv4 network host."
4670 #: build/C/man3/getipnodebyname.3:108 build/C/man3/getipnodebyname.3:174 build/C/man3/inet_ntop.3:68 build/C/man3/inet_pton.3:65
4676 #: build/C/man3/getipnodebyname.3:114
4678 "The I<name> argument points to a hexadecimal IPv6 address or a name of an "
4679 "IPv6 network host."
4683 #: build/C/man3/getipnodebyname.3:123
4685 "The I<flags> argument specifies additional options. More than one option "
4686 "can be specified by bitwise OR-ing them together. I<flags> should be set to "
4687 "0 if no options are desired."
4691 #: build/C/man3/getipnodebyname.3:123
4693 msgid "B<AI_V4MAPPED>"
4697 #: build/C/man3/getipnodebyname.3:130
4699 "This flag is used with B<AF_INET6> to request a query for IPv4 addresses "
4700 "instead of IPv6 addresses; the IPv4 addresses will be mapped to IPv6 "
4705 #: build/C/man3/getipnodebyname.3:130
4711 #: build/C/man3/getipnodebyname.3:136
4713 "This flag is used with B<AI_V4MAPPED> to request a query for both IPv4 and "
4714 "IPv6 addresses. Any IPv4 address found will be mapped to an IPv6 address."
4718 #: build/C/man3/getipnodebyname.3:136
4720 msgid "B<AI_ADDRCONFIG>"
4724 #: build/C/man3/getipnodebyname.3:148
4726 "This flag is used with B<AF_INET6> to further request that queries for IPv6 "
4727 "addresses should not be made unless the system has at least one IPv6 address "
4728 "assigned to a network interface, and that queries for IPv4 addresses should "
4729 "not be made unless the system has at least one IPv4 address assigned to a "
4730 "network interface. This flag may be used by itself or with the "
4731 "B<AI_V4MAPPED> flag."
4735 #: build/C/man3/getipnodebyname.3:148
4737 msgid "B<AI_DEFAULT>"
4741 #: build/C/man3/getipnodebyname.3:152
4742 msgid "This flag is equivalent to B<(AI_ADDRCONFIG | AI_V4MAPPED)>."
4746 #: build/C/man3/getipnodebyname.3:152
4748 msgid "getipnodebyaddr() arguments"
4752 #: build/C/man3/getipnodebyname.3:164
4754 "The B<getipnodebyaddr>() function looks up the name of the host whose "
4755 "network address is specified by the I<addr> argument. The I<af> argument "
4756 "specifies one of the following values:"
4760 #: build/C/man3/getipnodebyname.3:174
4762 "The I<addr> argument points to a I<struct in_addr> and I<len> must be set to "
4763 "I<sizeof(struct in_addr)>."
4767 #: build/C/man3/getipnodebyname.3:184
4769 "The I<addr> argument points to a I<struct in6_addr> and I<len> must be set "
4770 "to I<sizeof(struct in6_addr)>."
4774 #: build/C/man3/getipnodebyname.3:188
4776 "A NULL pointer is returned if an error occurred, and I<error_num> will "
4777 "contain an error code from the following list:"
4781 #: build/C/man3/getipnodebyname.3:191
4782 msgid "The hostname or network address was not found."
4786 #: build/C/man3/getipnodebyname.3:191
4788 msgid "B<NO_ADDRESS>"
4792 #: build/C/man3/getipnodebyname.3:197
4794 "The domain name server recognized the network address or name, but no answer "
4795 "was returned. This can happen if the network host has only IPv4 addresses "
4796 "and a request has been made for IPv6 information only, or vice versa."
4800 #: build/C/man3/getipnodebyname.3:200
4801 msgid "The domain name server returned a permanent failure response."
4805 #: build/C/man3/getipnodebyname.3:204
4807 "The domain name server returned a temporary failure response. You might "
4808 "have better luck next time."
4812 #: build/C/man3/getipnodebyname.3:208
4814 "A successful query returns a pointer to a I<hostent> structure that contains "
4815 "the following fields:"
4819 #: build/C/man3/getipnodebyname.3:211
4820 msgid "This is the official name of this network host."
4824 #: build/C/man3/getipnodebyname.3:215
4826 "This is an array of pointers to unofficial aliases for the same host. The "
4827 "array is terminated by a NULL pointer."
4831 #: build/C/man3/getipnodebyname.3:237
4833 "This is a copy of the I<af> argument to B<getipnodebyname>() or "
4834 "B<getipnodebyaddr>(). I<h_addrtype> will always be B<AF_INET> if the I<af> "
4835 "argument was B<AF_INET>. I<h_addrtype> will always be B<AF_INET6> if the "
4836 "I<af> argument was B<AF_INET6>."
4840 #: build/C/man3/getipnodebyname.3:251
4842 "This field will be set to I<sizeof(struct in_addr)> if I<h_addrtype> is "
4843 "B<AF_INET>, and to I<sizeof(struct in6_addr)> if I<h_addrtype> is "
4848 #: build/C/man3/getipnodebyname.3:256
4850 "This is an array of one or more pointers to network address structures for "
4851 "the network host. The array is terminated by a NULL pointer."
4854 #. Not in POSIX.1-2001.
4856 #: build/C/man3/getipnodebyname.3:259
4861 #: build/C/man3/getipnodebyname.3:264
4863 "These functions were present in glibc 2.1.91-95, but were removed again. "
4864 "Several UNIX-like systems support them, but all call them deprecated."
4868 #: build/C/man3/getipnodebyname.3:269
4869 msgid "B<getaddrinfo>(3), B<getnameinfo>(3), B<inet_ntop>(3), B<inet_pton>(3)"
4873 #: build/C/man3/getnameinfo.3:7
4879 #: build/C/man3/getnameinfo.3:7
4885 #: build/C/man3/getnameinfo.3:10
4886 msgid "getnameinfo - address-to-name translation in protocol-independent manner"
4890 #: build/C/man3/getnameinfo.3:14
4893 "B<#include E<lt>sys/socket.hE<gt>>\n"
4894 "B<#include E<lt>netdb.hE<gt>>\n"
4898 #: build/C/man3/getnameinfo.3:18
4901 "B<int getnameinfo(const struct sockaddr *>I<sa>B<, socklen_t >I<salen>B<,>\n"
4902 "B< char *>I<host>B<, size_t >I<hostlen>B<,>\n"
4903 "B< char *>I<serv>B<, size_t >I<servlen>B<, int "
4908 #: build/C/man3/getnameinfo.3:28
4910 "B<getnameinfo>(): _POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || "
4915 #: build/C/man3/getnameinfo.3:44
4917 "The B<getnameinfo>() function is the inverse of B<getaddrinfo>(3): it "
4918 "converts a socket address to a corresponding host and service, in a "
4919 "protocol-independent manner. It combines the functionality of "
4920 "B<gethostbyaddr>(3) and B<getservbyport>(3), but unlike those functions, "
4921 "B<getaddrinfo>(3) is reentrant and allows programs to eliminate "
4922 "IPv4-versus-IPv6 dependencies."
4926 #: build/C/man3/getnameinfo.3:67
4928 "The I<sa> argument is a pointer to a generic socket address structure (of "
4929 "type I<sockaddr_in> or I<sockaddr_in6>) of size I<salen> that holds the "
4930 "input IP address and port number. The arguments I<host> and I<serv> are "
4931 "pointers to caller-allocated buffers (of size I<hostlen> and I<servlen> "
4932 "respectively) into which B<getnameinfo>() places null-terminated strings "
4933 "containing the host and service names respectively."
4937 #: build/C/man3/getnameinfo.3:80
4939 "The caller can specify that no hostname (or no service name) is required by "
4940 "providing a NULL I<host> (or I<serv>) argument or a zero I<hostlen> (or "
4941 "I<servlen>) argument. However, at least one of hostname or service name "
4942 "must be requested."
4946 #: build/C/man3/getnameinfo.3:86
4947 msgid "The I<flags> argument modifies the behavior of B<getnameinfo>() as follows:"
4951 #: build/C/man3/getnameinfo.3:86
4953 msgid "B<NI_NAMEREQD>"
4957 #: build/C/man3/getnameinfo.3:89
4958 msgid "If set, then an error is returned if the hostname cannot be determined."
4962 #: build/C/man3/getnameinfo.3:89
4968 #: build/C/man3/getnameinfo.3:95
4970 "If set, then the service is datagram (UDP) based rather than stream (TCP) "
4971 "based. This is required for the few ports (512-514) that have different "
4972 "services for UDP and TCP."
4976 #: build/C/man3/getnameinfo.3:95
4978 msgid "B<NI_NOFQDN>"
4982 #: build/C/man3/getnameinfo.3:99
4984 "If set, return only the hostname part of the fully qualified domain name for "
4989 #: build/C/man3/getnameinfo.3:99
4991 msgid "B<NI_NUMERICHOST>"
4994 #. For example, by calling
4997 #. .BR gethostbyaddr ().
4998 #. POSIX.1-2003 has NI_NUMERICSCOPE, but glibc doesn't have it.
5000 #: build/C/man3/getnameinfo.3:109
5002 "If set, then the numeric form of the hostname is returned. (When not set, "
5003 "this will still happen in case the node's name cannot be determined.)"
5007 #: build/C/man3/getnameinfo.3:109
5009 msgid "B<NI_NUMERICSERV>"
5013 #: build/C/man3/getnameinfo.3:114
5015 "If set, then the numeric form of the service address is returned. (When not "
5016 "set, this will still happen in case the service's name cannot be "
5021 #: build/C/man3/getnameinfo.3:123
5023 "Starting with glibc 2.3.4, B<getnameinfo>() has been extended to "
5024 "selectively allow hostnames to be transparently converted to and from the "
5025 "Internationalized Domain Name (IDN) format (see RFC 3490, "
5026 "I<Internationalizing Domain Names in Applications (IDNA)>). Three new flags "
5031 #: build/C/man3/getnameinfo.3:123
5037 #: build/C/man3/getnameinfo.3:129
5039 "If this flag is used, then the name found in the lookup process is converted "
5040 "from IDN format to the locale's encoding if necessary. ASCII-only names are "
5041 "not affected by the conversion, which makes this flag usable in existing "
5042 "programs and environments."
5046 #: build/C/man3/getnameinfo.3:129
5048 msgid "B<NI_IDN_ALLOW_UNASSIGNED>, B<NI_IDN_USE_STD3_ASCII_RULES>"
5051 #. FIXME glibc defines the following additional errors, some which
5052 #. can probably be returned by getnameinfo(); they need to
5055 #. #define EAI_INPROGRESS -100 /* Processing request in progress. */
5056 #. #define EAI_CANCELED -101 /* Request canceled. */
5057 #. #define EAI_NOTCANCELED -102 /* Request not canceled. */
5058 #. #define EAI_ALLDONE -103 /* All requests done. */
5059 #. #define EAI_INTR -104 /* Interrupted by a signal. */
5060 #. #define EAI_IDN_ENCODE -105 /* IDN encoding failed. */
5063 #: build/C/man3/getnameinfo.3:152
5065 "On success 0 is returned, and node and service names, if requested, are "
5066 "filled with null-terminated strings, possibly truncated to fit the specified "
5067 "buffer lengths. On error one of the following nonzero error codes is "
5072 #: build/C/man3/getnameinfo.3:156
5073 msgid "The name could not be resolved at this time. Try again later."
5077 #: build/C/man3/getnameinfo.3:161
5078 msgid "The I<flags> argument has an invalid value."
5082 #: build/C/man3/getnameinfo.3:164
5083 msgid "A nonrecoverable error occurred."
5087 #: build/C/man3/getnameinfo.3:168
5089 "The address family was not recognized, or the address length was invalid for "
5090 "the specified family."
5094 #: build/C/man3/getnameinfo.3:177
5096 "The name does not resolve for the supplied arguments. B<NI_NAMEREQD> is set "
5097 "and the host's name cannot be located, or neither hostname nor service name "
5102 #: build/C/man3/getnameinfo.3:177
5104 msgid "B<EAI_OVERFLOW>"
5108 #: build/C/man3/getnameinfo.3:184
5109 msgid "The buffer pointed to by I<host> or I<serv> was too small."
5113 #: build/C/man3/getnameinfo.3:189
5114 msgid "A system error occurred. The error code can be found in I<errno>."
5118 #: build/C/man3/getnameinfo.3:196
5123 #: build/C/man3/getnameinfo.3:198
5124 msgid "/etc/nsswitch.conf"
5128 #: build/C/man3/getnameinfo.3:200
5129 msgid "/etc/resolv.conf"
5133 #: build/C/man3/getnameinfo.3:203
5134 msgid "B<getnameinfo>() is provided in glibc since version 2.1."
5138 #: build/C/man3/getnameinfo.3:205
5139 msgid "RFC\\ 2553, POSIX.1-2001."
5143 #: build/C/man3/getnameinfo.3:210
5145 "In order to assist the programmer in choosing reasonable sizes for the "
5146 "supplied buffers, I<E<lt>netdb.hE<gt>> defines the constants"
5150 #: build/C/man3/getnameinfo.3:215
5153 "#define NI_MAXHOST 1025\n"
5154 "#define NI_MAXSERV 32\n"
5158 #: build/C/man3/getnameinfo.3:225
5160 "Since glibc 2.8, these definitions are exposed only if one of the feature "
5161 "test macros B<_BSD_SOURCE>, B<_SVID_SOURCE>, or B<_GNU_SOURCE> is defined."
5165 #: build/C/man3/getnameinfo.3:233
5167 "The former is the constant B<MAXDNAME> in recent versions of BIND's "
5168 "I<E<lt>arpa/nameser.hE<gt>> header file. The latter is a guess based on the "
5169 "services listed in the current Assigned Numbers RFC."
5173 #: build/C/man3/getnameinfo.3:238
5175 "The following code tries to get the numeric hostname and service name, for a "
5176 "given socket address. Note that there is no hardcoded reference to a "
5177 "particular address family."
5181 #: build/C/man3/getnameinfo.3:244
5184 "struct sockaddr *sa; /* input */\n"
5185 "socklen_t len; /* input */\n"
5186 "char hbuf[NI_MAXHOST], sbuf[NI_MAXSERV];\n"
5190 #: build/C/man3/getnameinfo.3:248
5193 "if (getnameinfo(sa, len, hbuf, sizeof(hbuf), sbuf,\n"
5194 " sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV) == 0)\n"
5195 " printf(\"host=%s, serv=%s\\en\", hbuf, sbuf);\n"
5199 #: build/C/man3/getnameinfo.3:253
5201 "The following version checks if the socket address has a reverse address "
5206 #: build/C/man3/getnameinfo.3:259
5209 "struct sockaddr *sa; /* input */\n"
5210 "socklen_t len; /* input */\n"
5211 "char hbuf[NI_MAXHOST];\n"
5215 #: build/C/man3/getnameinfo.3:265
5218 "if (getnameinfo(sa, len, hbuf, sizeof(hbuf),\n"
5219 " NULL, 0, NI_NAMEREQD))\n"
5220 " printf(\"could not resolve hostname\");\n"
5222 " printf(\"host=%s\\en\", hbuf);\n"
5226 #: build/C/man3/getnameinfo.3:272
5228 "An example program using B<getnameinfo>() can be found in "
5229 "B<getaddrinfo>(3)."
5233 #: build/C/man3/getnameinfo.3:287
5235 "B<accept>(2), B<getpeername>(2), B<getsockname>(2), B<recvfrom>(2), "
5236 "B<socket>(2), B<getaddrinfo>(3), B<gethostbyaddr>(3), B<getservbyname>(3), "
5237 "B<getservbyport>(3), B<inet_ntop>(3), B<hosts>(5), B<services>(5), "
5238 "B<hostname>(7), B<named>(8)"
5242 #: build/C/man3/getnameinfo.3:291
5244 "R. Gilligan, S. Thomson, J. Bound and W. Stevens, I<Basic Socket Interface "
5245 "Extensions for IPv6>, RFC\\ 2553, March 1999."
5249 #: build/C/man3/getnameinfo.3:296
5251 "Tatsuya Jinmei and Atsushi Onoe, I<An Extension of Format for IPv6 Scoped "
5252 "Addresses>, internet draft, work in progress. "
5253 "ftp://ftp.ietf.org/internet-drafts/draft-ietf-ipngwg-scopedaddr-format-02.txt"
5257 #: build/C/man3/getnameinfo.3:302
5259 "Craig Metz, I<Protocol Independence Using the Sockets API>, Proceedings of "
5260 "the freenix track: 2000 USENIX annual technical conference, June 2000. "
5261 "http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/metzprotocol.html"
5265 #: build/C/man3/getnetent.3:28
5271 #: build/C/man3/getnetent.3:28 build/C/man3/getprotoent.3:28 build/C/man3/getservent.3:32
5277 #: build/C/man3/getnetent.3:32
5279 "getnetent, getnetbyname, getnetbyaddr, setnetent, endnetent - get network "
5284 #: build/C/man3/getnetent.3:35 build/C/man3/getnetent_r.3:31 build/C/man3/getprotoent.3:35 build/C/man3/getprotoent_r.3:31 build/C/man3/getservent.3:39 build/C/man3/getservent_r.3:31 build/C/man3/setnetgrent.3:12
5286 msgid "B<#include E<lt>netdb.hE<gt>>\n"
5290 #: build/C/man3/getnetent.3:37
5292 msgid "B<struct netent *getnetent(void);>\n"
5296 #: build/C/man3/getnetent.3:39
5298 msgid "B<struct netent *getnetbyname(const char *>I<name>B<);>\n"
5302 #: build/C/man3/getnetent.3:41
5304 msgid "B<struct netent *getnetbyaddr(uint32_t >I<net>B<, int >I<type>B<);>\n"
5308 #: build/C/man3/getnetent.3:43
5310 msgid "B<void setnetent(int >I<stayopen>B<);>\n"
5314 #: build/C/man3/getnetent.3:45
5316 msgid "B<void endnetent(void);>\n"
5320 #: build/C/man3/getnetent.3:53
5322 "The B<getnetent>() function reads the next entry from the networks database "
5323 "and returns a I<netent> structure containing the broken-out fields from the "
5324 "entry. A connection is opened to the database if necessary."
5328 #: build/C/man3/getnetent.3:59
5330 "The B<getnetbyname>() function returns a I<netent> structure for the entry "
5331 "from the database that matches the network I<name>."
5335 #: build/C/man3/getnetent.3:69
5337 "The B<getnetbyaddr>() function returns a I<netent> structure for the entry "
5338 "from the database that matches the network number I<net> of type I<type>. "
5339 "The I<net> argument must be in host byte order."
5343 #: build/C/man3/getnetent.3:79
5345 "The B<setnetent>() function opens a connection to the database, and sets "
5346 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
5347 "connection to the database will not be closed between calls to one of the "
5348 "B<getnet*>() functions."
5352 #: build/C/man3/getnetent.3:83
5353 msgid "The B<endnetent>() function closes the connection to the database."
5357 #: build/C/man3/getnetent.3:85
5358 msgid "The I<netent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
5362 #: build/C/man3/getnetent.3:94
5366 " char *n_name; /* official network name */\n"
5367 " char **n_aliases; /* alias list */\n"
5368 " int n_addrtype; /* net address type */\n"
5369 " uint32_t n_net; /* network number */\n"
5374 #: build/C/man3/getnetent.3:98
5375 msgid "The members of the I<netent> structure are:"
5379 #: build/C/man3/getnetent.3:98
5385 #: build/C/man3/getnetent.3:101
5386 msgid "The official name of the network."
5390 #: build/C/man3/getnetent.3:101
5392 msgid "I<n_aliases>"
5396 #: build/C/man3/getnetent.3:104
5397 msgid "A NULL-terminated list of alternative names for the network."
5401 #: build/C/man3/getnetent.3:104
5403 msgid "I<n_addrtype>"
5407 #: build/C/man3/getnetent.3:108
5408 msgid "The type of the network number; always B<AF_INET>."
5412 #: build/C/man3/getnetent.3:108
5418 #: build/C/man3/getnetent.3:111
5419 msgid "The network number in host byte order."
5423 #: build/C/man3/getnetent.3:120
5425 "The B<getnetent>(), B<getnetbyname>() and B<getnetbyaddr>() functions "
5426 "return a pointer to a statically allocated I<netent> structure, or a NULL "
5427 "pointer if an error occurs or the end of the file is reached."
5431 #: build/C/man3/getnetent.3:121 build/C/man5/networks.5:70
5433 msgid "I</etc/networks>"
5437 #: build/C/man3/getnetent.3:124
5438 msgid "networks database file"
5442 #: build/C/man3/getnetent.3:126 build/C/man3/getprotoent.3:122 build/C/man3/getservent.3:131
5443 msgid "4.3BSD, POSIX.1-2001."
5447 #: build/C/man3/getnetent.3:133
5449 "In glibc versions before 2.2, the I<net> argument of B<getnetbyaddr>() was "
5455 #: build/C/man3/getnetent.3:138
5456 msgid "B<getnetent_r>(3), B<getprotoent>(3), B<getservent>(3)"
5460 #: build/C/man3/getnetent.3:140
5465 #: build/C/man3/getnetent_r.3:24
5471 #: build/C/man3/getnetent_r.3:28
5472 msgid "getnetent_r, getnetbyname_r, getnetbyaddr_r - get network entry (reentrant)"
5476 #: build/C/man3/getnetent_r.3:35
5479 "B<int getnetent_r(struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5480 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5481 "B< int *>I<h_errnop>B<);>\n"
5485 #: build/C/man3/getnetent_r.3:40
5488 "B<int getnetbyname_r(const char *>I<name>B<,>\n"
5489 "B< struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5490 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5491 "B< int *>I<h_errnop>B<);>\n"
5495 #: build/C/man3/getnetent_r.3:45
5498 "B<int getnetbyaddr_r(uint32_t >I<net>B<, int >I<type>B<,>\n"
5499 "B< struct netent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5500 "B< size_t >I<buflen>B<, struct netent **>I<result>B<,>\n"
5501 "B< int *>I<h_errnop>B<);>\n"
5505 #: build/C/man3/getnetent_r.3:56
5506 msgid "B<getnetent_r>(), B<getnetbyname_r>(), B<getnetbyaddr_r>():"
5510 #: build/C/man3/getnetent_r.3:77
5512 "The B<getnetent_r>(), B<getnetbyname_r>(), and B<getnetbyaddr_r>() "
5513 "functions are the reentrant equivalents of, respectively, B<getnetent>(3), "
5514 "B<getnetbyname>(3), and B<getnetbynumber>(3). They differ in the way that "
5515 "the I<netent> structure is returned, and in the function calling signature "
5516 "and return value. This manual page describes just the differences from the "
5517 "nonreentrant functions."
5521 #: build/C/man3/getnetent_r.3:83
5523 "Instead of returning a pointer to a statically allocated I<netent> structure "
5524 "as the function result, these functions copy the structure into the location "
5525 "pointed to by I<result_buf>."
5528 #. I can find no information on the required/recommended buffer size;
5529 #. the nonreentrant functions use a 1024 byte buffer -- mtk.
5531 #: build/C/man3/getnetent_r.3:100
5533 "The I<buf> array is used to store the string fields pointed to by the "
5534 "returned I<netent> structure. (The nonreentrant functions allocate these "
5535 "strings in static storage.) The size of this array is specified in "
5536 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
5537 "and the caller must try again with a larger buffer. (A buffer of length "
5538 "1024 bytes should be sufficient for most applications.)"
5542 #: build/C/man3/getnetent_r.3:108
5544 "If the function call successfully obtains a network record, then I<*result> "
5545 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
5548 #. getnetent.3 doesn't document any use of h_errno, but nevertheless
5549 #. the nonreentrant functions no seem to set h_errno.
5551 #: build/C/man3/getnetent_r.3:116
5553 "The buffer pointed to by I<h_errnop> is used to return the value that would "
5554 "be stored in the global variable I<h_errno> by the nonreentrant versions of "
5559 #: build/C/man3/getnetent_r.3:119 build/C/man3/getprotoent_r.3:109
5561 "On success, these functions return 0. On error, they return one of the "
5562 "positive error numbers listed in ERRORS."
5566 #: build/C/man3/getnetent_r.3:127
5568 "On error, record not found (B<getnetbyname_r>(), B<getnetbyaddr_r>()), or "
5569 "end of input (B<getnetent_r>()) I<result> is set to NULL."
5573 #: build/C/man3/getnetent_r.3:132
5574 msgid "(B<getnetent_r>()) No more records in database."
5578 #: build/C/man3/getnetent_r.3:132 build/C/man3/getprotoent_r.3:122 build/C/man3/getservent_r.3:121
5584 #: build/C/man3/getnetent_r.3:139 build/C/man3/getprotoent_r.3:129 build/C/man3/getservent_r.3:128
5586 "I<buf> is too small. Try again with a larger buffer (and increased "
5591 #: build/C/man3/getnetent_r.3:143 build/C/man3/getprotoent_r.3:133 build/C/man3/getservent_r.3:132
5593 "These functions are GNU extensions. Functions with similar names exist on "
5594 "some other systems, though typically with different calling signatures."
5598 #: build/C/man3/getnetent_r.3:146
5599 msgid "B<getnetent>(3), B<networks>(5)"
5603 #: build/C/man2/getpeername.2:40
5609 #: build/C/man2/getpeername.2:40 build/C/man2/shutdown.2:38 build/C/man7/udplite.7:25
5615 #: build/C/man2/getpeername.2:43
5616 msgid "getpeername - get name of connected peer socket"
5620 #: build/C/man2/getpeername.2:48
5622 "B<int getpeername(int >I<sockfd>B<, struct sockaddr *>I<addr>B<, socklen_t "
5627 #: build/C/man2/getpeername.2:61
5629 "B<getpeername>() returns the address of the peer connected to the socket "
5630 "I<sockfd>, in the buffer pointed to by I<addr>. The I<addrlen> argument "
5631 "should be initialized to indicate the amount of space pointed to by "
5632 "I<addr>. On return it contains the actual size of the name returned (in "
5633 "bytes). The name is truncated if the buffer provided is too small."
5637 #: build/C/man2/getpeername.2:66
5639 "The returned address is truncated if the buffer provided is too small; in "
5640 "this case, I<addrlen> will return a value greater than was supplied to the "
5645 #: build/C/man2/getpeername.2:71 build/C/man2/shutdown.2:72
5647 "On success, zero is returned. On error, -1 is returned, and I<errno> is set "
5652 #: build/C/man2/getpeername.2:72 build/C/man2/shutdown.2:73
5658 #: build/C/man2/getpeername.2:77
5659 msgid "The argument I<sockfd> is not a valid descriptor."
5663 #: build/C/man2/getpeername.2:77 build/C/man7/packet.7:245 build/C/man7/raw.7:145 build/C/man7/unix.7:329
5669 #: build/C/man2/getpeername.2:83
5671 "The I<addr> argument points to memory not in a valid part of the process "
5676 #: build/C/man2/getpeername.2:87
5677 msgid "I<addrlen> is invalid (e.g., is negative)."
5681 #: build/C/man2/getpeername.2:87 build/C/man7/packet.7:257
5687 #: build/C/man2/getpeername.2:91
5689 "Insufficient resources were available in the system to perform the "
5694 #: build/C/man2/getpeername.2:94
5695 msgid "The socket is not connected."
5699 #: build/C/man2/getpeername.2:94 build/C/man2/shutdown.2:80
5705 #: build/C/man2/getpeername.2:99
5706 msgid "The argument I<sockfd> is a file, not a socket."
5710 #: build/C/man2/getpeername.2:103
5712 "SVr4, 4.4BSD (the B<getpeername>() function call first appeared in 4.2BSD), "
5717 #: build/C/man2/getpeername.2:114
5719 "The third argument of B<getpeername>() is in reality an I<int *> (and this "
5720 "is what 4.x BSD and libc4 and libc5 have). Some POSIX confusion resulted in "
5721 "the present I<socklen_t>, also used by glibc. See also B<accept>(2)."
5725 #: build/C/man2/getpeername.2:121
5727 "B<accept>(2), B<bind>(2), B<getsockname>(2), B<ip>(7), B<socket>(7), "
5732 #: build/C/man3/getprotoent.3:28
5738 #: build/C/man3/getprotoent.3:32
5740 "getprotoent, getprotobyname, getprotobynumber, setprotoent, endprotoent - "
5741 "get protocol entry"
5745 #: build/C/man3/getprotoent.3:37
5747 msgid "B<struct protoent *getprotoent(void);>\n"
5751 #: build/C/man3/getprotoent.3:39
5753 msgid "B<struct protoent *getprotobyname(const char *>I<name>B<);>\n"
5757 #: build/C/man3/getprotoent.3:41
5759 msgid "B<struct protoent *getprotobynumber(int >I<proto>B<);>\n"
5763 #: build/C/man3/getprotoent.3:43
5765 msgid "B<void setprotoent(int >I<stayopen>B<);>\n"
5769 #: build/C/man3/getprotoent.3:45
5771 msgid "B<void endprotoent(void);>\n"
5775 #: build/C/man3/getprotoent.3:54
5777 "The B<getprotoent>() function reads the next entry from the protocols "
5778 "database (see B<protocols>(5)) and returns a I<protoent> structure "
5779 "containing the broken-out fields from the entry. A connection is opened to "
5780 "the database if necessary."
5784 #: build/C/man3/getprotoent.3:61
5786 "The B<getprotobyname>() function returns a I<protoent> structure for the "
5787 "entry from the database that matches the protocol name I<name>. A "
5788 "connection is opened to the database if necessary."
5792 #: build/C/man3/getprotoent.3:68
5794 "The B<getprotobynumber>() function returns a I<protoent> structure for the "
5795 "entry from the database that matches the protocol number I<number>. A "
5796 "connection is opened to the database if necessary."
5800 #: build/C/man3/getprotoent.3:78
5802 "The B<setprotoent>() function opens a connection to the database, and sets "
5803 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
5804 "connection to the database will not be closed between calls to one of the "
5805 "B<getproto*>() functions."
5809 #: build/C/man3/getprotoent.3:82
5810 msgid "The B<endprotoent>() function closes the connection to the database."
5814 #: build/C/man3/getprotoent.3:84
5815 msgid "The I<protoent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
5819 #: build/C/man3/getprotoent.3:92
5822 "struct protoent {\n"
5823 " char *p_name; /* official protocol name */\n"
5824 " char **p_aliases; /* alias list */\n"
5825 " int p_proto; /* protocol number */\n"
5830 #: build/C/man3/getprotoent.3:96
5831 msgid "The members of the I<protoent> structure are:"
5835 #: build/C/man3/getprotoent.3:96
5841 #: build/C/man3/getprotoent.3:99
5842 msgid "The official name of the protocol."
5846 #: build/C/man3/getprotoent.3:99
5848 msgid "I<p_aliases>"
5852 #: build/C/man3/getprotoent.3:102
5853 msgid "A NULL-terminated list of alternative names for the protocol."
5857 #: build/C/man3/getprotoent.3:102
5863 #: build/C/man3/getprotoent.3:105
5864 msgid "The protocol number."
5868 #: build/C/man3/getprotoent.3:114
5870 "The B<getprotoent>(), B<getprotobyname>() and B<getprotobynumber>() "
5871 "functions return a pointer to a statically allocated I<protoent> structure, "
5872 "or a NULL pointer if an error occurs or the end of the file is reached."
5876 #: build/C/man3/getprotoent.3:116 build/C/man5/protocols.5:77
5878 msgid "I</etc/protocols>"
5882 #: build/C/man3/getprotoent.3:119
5883 msgid "protocol database file"
5887 #: build/C/man3/getprotoent.3:127
5888 msgid "B<getnetent>(3), B<getprotoent_r>(3), B<getservent>(3), B<protocols>(5)"
5892 #: build/C/man3/getprotoent_r.3:24
5894 msgid "GETPROTOENT_R"
5898 #: build/C/man3/getprotoent_r.3:28
5900 "getprotoent_r, getprotobyname_r, getprotobynumber_r - get protocol entry "
5905 #: build/C/man3/getprotoent_r.3:34
5908 "B<int getprotoent_r(struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5909 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
5913 #: build/C/man3/getprotoent_r.3:38
5916 "B<int getprotobyname_r(const char *>I<name>B<,>\n"
5917 "B< struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5918 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
5922 #: build/C/man3/getprotoent_r.3:42
5925 "B<int getprotobynumber_r(int >I<proto>B<,>\n"
5926 "B< struct protoent *>I<result_buf>B<, char *>I<buf>B<,>\n"
5927 "B< size_t >I<buflen>B<, struct protoent **>I<result>B<);>\n"
5931 #: build/C/man3/getprotoent_r.3:53
5932 msgid "B<getprotoent_r>(), B<getprotobyname_r>(), B<getprotobynumber_r>():"
5936 #: build/C/man3/getprotoent_r.3:74
5938 "The B<getprotoent_r>(), B<getprotobyname_r>(), and B<getprotobynumber_r>() "
5939 "functions are the reentrant equivalents of, respectively, B<getprotoent>(3), "
5940 "B<getprotobyname>(3), and B<getprotobynumber>(3). They differ in the way "
5941 "that the I<protoent> structure is returned, and in the function calling "
5942 "signature and return value. This manual page describes just the differences "
5943 "from the nonreentrant functions."
5947 #: build/C/man3/getprotoent_r.3:80
5949 "Instead of returning a pointer to a statically allocated I<protoent> "
5950 "structure as the function result, these functions copy the structure into "
5951 "the location pointed to by I<result_buf>."
5954 #. I can find no information on the required/recommended buffer size;
5955 #. the nonreentrant functions use a 1024 byte buffer.
5956 #. The 1024 byte value is also what the Solaris man page suggests. -- mtk
5958 #: build/C/man3/getprotoent_r.3:98
5960 "The I<buf> array is used to store the string fields pointed to by the "
5961 "returned I<protoent> structure. (The nonreentrant functions allocate these "
5962 "strings in static storage.) The size of this array is specified in "
5963 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
5964 "and the caller must try again with a larger buffer. (A buffer of length "
5965 "1024 bytes should be sufficient for most applications.)"
5969 #: build/C/man3/getprotoent_r.3:106
5971 "If the function call successfully obtains a protocol record, then I<*result> "
5972 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
5976 #: build/C/man3/getprotoent_r.3:117
5978 "On error, record not found (B<getprotobyname_r>(), B<getprotobynumber_r>()), "
5979 "or end of input (B<getprotoent_r>()) I<result> is set to NULL."
5983 #: build/C/man3/getprotoent_r.3:122
5984 msgid "(B<getprotoent_r>()) No more records in database."
5988 #: build/C/man3/getprotoent_r.3:147
5990 "The program below uses B<getprotobyname_r>() to retrieve the protocol "
5991 "record for the protocol named in its first command-line argument. If a "
5992 "second (integer) command-line argument is supplied, it is used as the "
5993 "initial value for I<buflen>; if B<getprotobyname_r>() fails with the error "
5994 "B<ERANGE>, the program retries with larger buffer sizes. The following "
5995 "shell session shows a couple of sample runs:"
5999 #: build/C/man3/getprotoent_r.3:158
6002 "$B< ./a.out tcp 1>\n"
6003 "ERANGE! Retrying with larger buffer\n"
6004 "getprotobyname_r() returned: 0 (success) (buflen=78)\n"
6005 "p_name=tcp; p_proto=6; aliases=TCP\n"
6006 "$B< ./a.out xxx 1>\n"
6007 "ERANGE! Retrying with larger buffer\n"
6008 "getprotobyname_r() returned: 0 (success) (buflen=100)\n"
6009 "Call failed/record not found\n"
6013 #: build/C/man3/getprotoent_r.3:170 build/C/man3/getservent_r.3:168
6016 "#define _GNU_SOURCE\n"
6017 "#include E<lt>ctype.hE<gt>\n"
6018 "#include E<lt>netdb.hE<gt>\n"
6019 "#include E<lt>stdlib.hE<gt>\n"
6020 "#include E<lt>stdio.hE<gt>\n"
6021 "#include E<lt>errno.hE<gt>\n"
6022 "#include E<lt>string.hE<gt>\n"
6026 #: build/C/man3/getprotoent_r.3:172 build/C/man3/getservent_r.3:170
6028 msgid "#define MAX_BUF 10000\n"
6032 #: build/C/man3/getprotoent_r.3:181
6036 "main(int argc, char *argv[])\n"
6038 " int buflen, erange_cnt, s;\n"
6039 " struct protoent result_buf;\n"
6040 " struct protoent *result;\n"
6041 " char buf[MAX_BUF];\n"
6046 #: build/C/man3/getprotoent_r.3:186
6049 " if (argc E<lt> 2) {\n"
6050 " printf(\"Usage: %s proto-name [buflen]\\en\", argv[0]);\n"
6051 " exit(EXIT_FAILURE);\n"
6056 #: build/C/man3/getprotoent_r.3:190
6060 " if (argc E<gt> 2)\n"
6061 " buflen = atoi(argv[2]);\n"
6065 #: build/C/man3/getprotoent_r.3:195 build/C/man3/getservent_r.3:198
6068 " if (buflen E<gt> MAX_BUF) {\n"
6069 " printf(\"Exceeded buffer limit (%d)\\en\", MAX_BUF);\n"
6070 " exit(EXIT_FAILURE);\n"
6075 #: build/C/man3/getprotoent_r.3:204
6078 " erange_cnt = 0;\n"
6080 " s = getprotobyname_r(argv[1], &result_buf,\n"
6081 " buf, buflen, &result);\n"
6082 " if (s == ERANGE) {\n"
6083 " if (erange_cnt == 0)\n"
6084 " printf(\"ERANGE! Retrying with larger buffer\\en\");\n"
6089 #: build/C/man3/getprotoent_r.3:207 build/C/man3/getservent_r.3:210
6092 " /* Increment a byte at a time so we can see exactly\n"
6093 " what size buffer was required */\n"
6097 #: build/C/man3/getprotoent_r.3:209 build/C/man3/getservent_r.3:212
6099 msgid " buflen++;\n"
6103 #: build/C/man3/getprotoent_r.3:216 build/C/man3/getservent_r.3:219
6106 " if (buflen E<gt> MAX_BUF) {\n"
6107 " printf(\"Exceeded buffer limit (%d)\\en\", MAX_BUF);\n"
6108 " exit(EXIT_FAILURE);\n"
6111 " } while (s == ERANGE);\n"
6115 #: build/C/man3/getprotoent_r.3:220
6118 " printf(\"getprotobyname_r() returned: %s (buflen=%d)\\en\",\n"
6119 " (s == 0) ? \"0 (success)\" : (s == ENOENT) ? \"ENOENT\" :\n"
6120 " strerror(s), buflen);\n"
6124 #: build/C/man3/getprotoent_r.3:225 build/C/man3/getservent_r.3:228
6127 " if (s != 0 || result == NULL) {\n"
6128 " printf(\"Call failed/record not found\\en\");\n"
6129 " exit(EXIT_FAILURE);\n"
6134 #: build/C/man3/getprotoent_r.3:231
6137 " printf(\"p_name=%s; p_proto=%d; aliases=\",\n"
6138 " result_buf.p_name, result_buf.p_proto);\n"
6139 " for (p = result_buf.p_aliases; *p != NULL; p++)\n"
6140 " printf(\"%s \", *p);\n"
6141 " printf(\"\\en\");\n"
6145 #: build/C/man3/getprotoent_r.3:238
6146 msgid "B<getprotoent>(3), B<protocols>(5)"
6150 #: build/C/man3/getservent.3:32
6156 #: build/C/man3/getservent.3:36
6158 "getservent, getservbyname, getservbyport, setservent, endservent - get "
6163 #: build/C/man3/getservent.3:41
6165 msgid "B<struct servent *getservent(void);>\n"
6169 #: build/C/man3/getservent.3:43
6172 "B<struct servent *getservbyname(const char *>I<name>B<, const char "
6177 #: build/C/man3/getservent.3:45
6179 msgid "B<struct servent *getservbyport(int >I<port>B<, const char *>I<proto>B<);>\n"
6183 #: build/C/man3/getservent.3:47
6185 msgid "B<void setservent(int >I<stayopen>B<);>\n"
6189 #: build/C/man3/getservent.3:49
6191 msgid "B<void endservent(void);>\n"
6195 #: build/C/man3/getservent.3:58
6197 "The B<getservent>() function reads the next entry from the services "
6198 "database (see B<services>(5)) and returns a I<servent> structure containing "
6199 "the broken-out fields from the entry. A connection is opened to the "
6200 "database if necessary."
6204 #: build/C/man3/getservent.3:66
6206 "The B<getservbyname>() function returns a I<servent> structure for the "
6207 "entry from the database that matches the service I<name> using protocol "
6208 "I<proto>. If I<proto> is NULL, any protocol will be matched. A connection "
6209 "is opened to the database if necessary."
6213 #: build/C/man3/getservent.3:75
6215 "The B<getservbyport>() function returns a I<servent> structure for the "
6216 "entry from the database that matches the port I<port> (given in network byte "
6217 "order) using protocol I<proto>. If I<proto> is NULL, any protocol will be "
6218 "matched. A connection is opened to the database if necessary."
6222 #: build/C/man3/getservent.3:85
6224 "The B<setservent>() function opens a connection to the database, and sets "
6225 "the next entry to the first entry. If I<stayopen> is nonzero, then the "
6226 "connection to the database will not be closed between calls to one of the "
6227 "B<getserv*>() functions."
6231 #: build/C/man3/getservent.3:89
6232 msgid "The B<endservent>() function closes the connection to the database."
6236 #: build/C/man3/getservent.3:91
6237 msgid "The I<servent> structure is defined in I<E<lt>netdb.hE<gt>> as follows:"
6241 #: build/C/man3/getservent.3:100
6244 "struct servent {\n"
6245 " char *s_name; /* official service name */\n"
6246 " char **s_aliases; /* alias list */\n"
6247 " int s_port; /* port number */\n"
6248 " char *s_proto; /* protocol to use */\n"
6253 #: build/C/man3/getservent.3:104
6254 msgid "The members of the I<servent> structure are:"
6258 #: build/C/man3/getservent.3:104
6264 #: build/C/man3/getservent.3:107
6265 msgid "The official name of the service."
6269 #: build/C/man3/getservent.3:107
6271 msgid "I<s_aliases>"
6275 #: build/C/man3/getservent.3:110
6276 msgid "A NULL-terminated list of alternative names for the service."
6280 #: build/C/man3/getservent.3:110
6286 #: build/C/man3/getservent.3:113
6287 msgid "The port number for the service given in network byte order."
6291 #: build/C/man3/getservent.3:113
6297 #: build/C/man3/getservent.3:116
6298 msgid "The name of the protocol to use with this service."
6302 #: build/C/man3/getservent.3:125
6304 "The B<getservent>(), B<getservbyname>() and B<getservbyport>() functions "
6305 "return a pointer to a statically allocated I<servent> structure, or a NULL "
6306 "pointer if an error occurs or the end of the file is reached."
6310 #: build/C/man3/getservent.3:126 build/C/man5/services.5:185
6312 msgid "I</etc/services>"
6316 #: build/C/man3/getservent.3:129
6317 msgid "services database file"
6321 #: build/C/man3/getservent.3:136
6322 msgid "B<getnetent>(3), B<getprotoent>(3), B<getservent_r>(3), B<services>(5)"
6326 #: build/C/man3/getservent_r.3:24
6328 msgid "GETSERVENT_R"
6332 #: build/C/man3/getservent_r.3:28
6334 "getservent_r, getservbyname_r, getservbyport_r - get service entry "
6339 #: build/C/man3/getservent_r.3:34
6342 "B<int getservent_r(struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6343 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6347 #: build/C/man3/getservent_r.3:38
6350 "B<int getservbyname_r(const char *>I<name>B<, const char *>I<proto>B<,>\n"
6351 "B< struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6352 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6356 #: build/C/man3/getservent_r.3:42
6359 "B<int getservbyport_r(int >I<port>B<, const char *>I<proto>B<,>\n"
6360 "B< struct servent *>I<result_buf>B<, char *>I<buf>B<,>\n"
6361 "B< size_t >I<buflen>B<, struct servent **>I<result>B<);>\n"
6365 #: build/C/man3/getservent_r.3:53
6366 msgid "B<getservent_r>(), B<getservbyname_r>(), B<getservbyport_r>():"
6370 #: build/C/man3/getservent_r.3:74
6372 "The B<getservent_r>(), B<getservbyname_r>(), and B<getservbyport_r>() "
6373 "functions are the reentrant equivalents of, respectively, B<getservent>(3), "
6374 "B<getservbyname>(3), and B<getservbyport>(3). They differ in the way that "
6375 "the I<servent> structure is returned, and in the function calling signature "
6376 "and return value. This manual page describes just the differences from the "
6377 "nonreentrant functions."
6381 #: build/C/man3/getservent_r.3:80
6383 "Instead of returning a pointer to a statically allocated I<servent> "
6384 "structure as the function result, these functions copy the structure into "
6385 "the location pointed to by I<result_buf>."
6388 #. I can find no information on the required/recommended buffer size;
6389 #. the nonreentrant functions use a 1024 byte buffer -- mtk.
6391 #: build/C/man3/getservent_r.3:97
6393 "The I<buf> array is used to store the string fields pointed to by the "
6394 "returned I<servent> structure. (The nonreentrant functions allocate these "
6395 "strings in static storage.) The size of this array is specified in "
6396 "I<buflen>. If I<buf> is too small, the call fails with the error B<ERANGE>, "
6397 "and the caller must try again with a larger buffer. (A buffer of length "
6398 "1024 bytes should be sufficient for most applications.)"
6402 #: build/C/man3/getservent_r.3:105
6404 "If the function call successfully obtains a service record, then I<*result> "
6405 "is set pointing to I<result_buf>; otherwise, I<*result> is set to NULL."
6409 #: build/C/man3/getservent_r.3:108
6411 "On success, these functions return 0. On error, they return one of the "
6412 "positive error numbers listed in errors."
6416 #: build/C/man3/getservent_r.3:116
6418 "On error, record not found (B<getservbyname_r>(), B<getservbyport_r>()), or "
6419 "end of input (B<getservent_r>()) I<result> is set to NULL."
6423 #: build/C/man3/getservent_r.3:121
6424 msgid "(B<getservent_r>()) No more records in database."
6428 #: build/C/man3/getservent_r.3:146
6430 "The program below uses B<getservbyport_r>() to retrieve the service record "
6431 "for the port and protocol named in its first command-line argument. If a "
6432 "third (integer) command-line argument is supplied, it is used as the initial "
6433 "value for I<buflen>; if B<getservbyport_r>() fails with the error "
6434 "B<ERANGE>, the program retries with larger buffer sizes. The following "
6435 "shell session shows a couple of sample runs:"
6439 #: build/C/man3/getservent_r.3:156
6442 "$B< ./a.out 7 tcp 1>\n"
6443 "ERANGE! Retrying with larger buffer\n"
6444 "getservbyport_r() returned: 0 (success) (buflen=87)\n"
6445 "s_name=echo; s_proto=tcp; s_port=7; aliases=\n"
6446 "$B< ./a.out 77777 tcp>\n"
6447 "getservbyport_r() returned: 0 (success) (buflen=1024)\n"
6448 "Call failed/record not found\n"
6452 #: build/C/man3/getservent_r.3:180
6456 "main(int argc, char *argv[])\n"
6458 " int buflen, erange_cnt, port, s;\n"
6459 " struct servent result_buf;\n"
6460 " struct servent *result;\n"
6461 " char buf[MAX_BUF];\n"
6467 #: build/C/man3/getservent_r.3:185
6470 " if (argc E<lt> 3) {\n"
6471 " printf(\"Usage: %s port-num proto-name [buflen]\\en\", argv[0]);\n"
6472 " exit(EXIT_FAILURE);\n"
6477 #: build/C/man3/getservent_r.3:189
6480 " port = htons(atoi(argv[1]));\n"
6481 " protop = (strcmp(argv[2], \"null\") == 0 ||\n"
6482 "\t strcmp(argv[2], \"NULL\") == 0) ? NULL : argv[2];\n"
6486 #: build/C/man3/getservent_r.3:193
6490 " if (argc E<gt> 3)\n"
6491 " buflen = atoi(argv[3]);\n"
6495 #: build/C/man3/getservent_r.3:207
6498 " erange_cnt = 0;\n"
6500 " s = getservbyport_r(port, protop, &result_buf,\n"
6501 " buf, buflen, &result);\n"
6502 " if (s == ERANGE) {\n"
6503 " if (erange_cnt == 0)\n"
6504 " printf(\"ERANGE! Retrying with larger buffer\\en\");\n"
6509 #: build/C/man3/getservent_r.3:223
6512 " printf(\"getservbyport_r() returned: %s (buflen=%d)\\en\",\n"
6513 " (s == 0) ? \"0 (success)\" : (s == ENOENT) ? \"ENOENT\" :\n"
6514 " strerror(s), buflen);\n"
6518 #: build/C/man3/getservent_r.3:235
6521 " printf(\"s_name=%s; s_proto=%s; s_port=%d; aliases=\",\n"
6522 " result_buf.s_name, result_buf.s_proto,\n"
6523 " ntohs(result_buf.s_port));\n"
6524 " for (p = result_buf.s_aliases; *p != NULL; p++)\n"
6525 " printf(\"%s \", *p);\n"
6526 " printf(\"\\en\");\n"
6530 #: build/C/man3/getservent_r.3:242
6531 msgid "B<getservent>(3), B<services>(5)"
6535 #: build/C/man5/host.conf.5:26
6541 #: build/C/man5/host.conf.5:26
6547 #: build/C/man5/host.conf.5:26 build/C/man5/networks.5:24
6549 msgid "Linux System Administration"
6553 #: build/C/man5/host.conf.5:29
6554 msgid "host.conf - resolver configuration file"
6558 #: build/C/man5/host.conf.5:38
6560 "The file I</etc/host.conf> contains configuration information specific to "
6561 "the resolver library. It should contain one configuration keyword per line, "
6562 "followed by appropriate configuration information. The keywords recognized "
6563 "are I<order>, I<trim>, I<multi>, I<nospoof>, I<spoof>, and I<reorder>. "
6564 "These keywords are described below."
6568 #: build/C/man5/host.conf.5:38
6574 #: build/C/man5/host.conf.5:44
6576 "This keyword specifies how host lookups are to be performed. It should be "
6577 "followed by one or more lookup methods, separated by commas. Valid methods "
6578 "are I<bind>, I<hosts>, and I<nis>."
6582 #: build/C/man5/host.conf.5:44
6588 #: build/C/man5/host.conf.5:61
6590 "This keyword may be listed more than once. Each time it should be followed "
6591 "by a list of domains, separated by colons (\\(aq:\\(aq), semicolons "
6592 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot. When set, the "
6593 "resolv+ library will automatically trim the given domain name from the end "
6594 "of any hostname resolved via DNS. This is intended for use with local hosts "
6595 "and domains. (Related note: trim will not affect hostnames gathered via NIS "
6596 "or the hosts file. Care should be taken to ensure that the first hostname "
6597 "for each entry in the hosts file is fully qualified or unqualified, as "
6598 "appropriate for the local installation.)"
6602 #: build/C/man5/host.conf.5:61
6608 #: build/C/man5/host.conf.5:76
6610 "Valid values are I<on> and I<off>. If set to I<on>, the resolv+ library "
6611 "will return all valid addresses for a host that appears in the I</etc/hosts> "
6612 "file, instead of only the first. This is I<off> by default, as it may cause "
6613 "a substantial performance loss at sites with large hosts files."
6617 #: build/C/man5/host.conf.5:76
6623 #: build/C/man5/host.conf.5:91
6625 "Valid values are I<on> and I<off>. If set to I<on>, the resolv+ library "
6626 "will attempt to prevent hostname spoofing to enhance the security of "
6627 "B<rlogin> and B<rsh>. It works as follows: after performing a host address "
6628 "lookup, resolv+ will perform a hostname lookup for that address. If the two "
6629 "hostnames do not match, the query will fail. The default value is I<off>."
6633 #: build/C/man5/host.conf.5:91
6635 msgid "I<spoofalert>"
6639 #: build/C/man5/host.conf.5:103
6641 "Valid values are I<on> and I<off>. If this option is set to I<on> and the "
6642 "I<nospoof> option is also set, resolv+ will log a warning of the error via "
6643 "the syslog facility. The default value is I<off>."
6647 #: build/C/man5/host.conf.5:103
6653 #: build/C/man5/host.conf.5:122
6655 "Valid values are I<off>, I<nowarn> and I<warn>. If this option is set to "
6656 "I<off>, spoofed addresses are permitted and no warnings will be emitted via "
6657 "the syslog facility. If this option is set to I<warn>, resolv+ will attempt "
6658 "to prevent hostname spoofing to enhance the security and log a warning of "
6659 "the error via the syslog facility. If this option is set to I<nowarn>, the "
6660 "resolv+ library will attempt to prevent hostname spoofing to enhance the "
6661 "security but not emit warnings via the syslog facility. Setting this option "
6662 "to anything else is equal to setting it to I<nowarn>."
6666 #: build/C/man5/host.conf.5:122
6672 #: build/C/man5/host.conf.5:135
6674 "Valid values are I<on> and I<off>. If set to I<on>, resolv+ will attempt to "
6675 "reorder host addresses so that local addresses (i.e., on the same subnet) "
6676 "are listed first when a B<gethostbyname>(3) is performed. Reordering is "
6677 "done for all lookup methods. The default value is I<off>."
6681 #: build/C/man5/host.conf.5:135
6687 #: build/C/man5/host.conf.5:139
6689 "There are six environment variables that can be used to allow users to "
6690 "override the behavior which is configured in I</etc/host.conf>."
6694 #: build/C/man5/host.conf.5:139
6696 msgid "B<RESOLV_HOST_CONF>"
6700 #: build/C/man5/host.conf.5:143
6702 "If set this variable points to a file that should be read instead of "
6703 "I</etc/host.conf>."
6707 #: build/C/man5/host.conf.5:143
6709 msgid "B<RESOLV_SERV_ORDER>"
6713 #: build/C/man5/host.conf.5:148
6714 msgid "Overrides the I<order> command."
6718 #: build/C/man5/host.conf.5:148
6720 msgid "B<RESOLV_SPOOF_CHECK>"
6724 #: build/C/man5/host.conf.5:157
6726 "Overrides the I<nospoof>, I<spoofalert> and I<spoof> commands in the same "
6727 "way as the I<spoof> command is parsed. Valid values are I<off>, I<nowarn> "
6732 #: build/C/man5/host.conf.5:157
6734 msgid "B<RESOLV_MULTI>"
6738 #: build/C/man5/host.conf.5:162
6739 msgid "Overrides the I<multi> command."
6743 #: build/C/man5/host.conf.5:162
6745 msgid "B<RESOLV_REORDER>"
6749 #: build/C/man5/host.conf.5:167
6750 msgid "Overrides the I<reorder> command."
6754 #: build/C/man5/host.conf.5:167
6756 msgid "B<RESOLV_ADD_TRIM_DOMAINS>"
6760 #: build/C/man5/host.conf.5:172
6762 "A list of domains, separated by colons (\\(aq:\\(aq), semicolons "
6763 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot, which will be "
6764 "added to the list of domains that should be trimmed."
6768 #: build/C/man5/host.conf.5:172
6770 msgid "B<RESOLV_OVERRIDE_TRIM_DOMAINS>"
6774 #: build/C/man5/host.conf.5:180
6776 "A list of domains, separated by colons (\\(aq:\\(aq), semicolons "
6777 "(\\(aq;\\(aq) or commas (\\(aq,\\(aq), with the leading dot, which will "
6778 "replace the list of domains that should be trimmed. Overrides the I<trim> "
6783 #: build/C/man5/host.conf.5:184 build/C/man5/host.conf.5:187
6784 msgid "Resolver configuration file"
6788 #: build/C/man5/host.conf.5:184
6790 msgid "I</etc/resolv.conf>"
6794 #: build/C/man5/host.conf.5:190
6795 msgid "Local hosts database"
6799 #: build/C/man5/host.conf.5:199
6801 "The following differences exist compared to the original implementation. A "
6802 "new command I<spoof> and a new environment variable B<RESOLV_SPOOF_CHECK> "
6803 "can take arguments like I<off>, I<nowarn> and I<warn>. Line comments can "
6804 "appear anywhere and not only at the beginning of a line."
6808 #: build/C/man5/host.conf.5:204
6809 msgid "B<gethostbyname>(3), B<hostname>(7), B<named>(8), B<resolv+>(8)"
6813 #: build/C/man7/hostname.7:37
6819 #: build/C/man7/hostname.7:37
6825 #: build/C/man7/hostname.7:40
6826 msgid "hostname - hostname resolution description"
6830 #: build/C/man7/hostname.7:44
6832 "Hostnames are domains, where a domain is a hierarchical, dot-separated list "
6833 "of subdomains; for example, the machine monet, in the Berkeley subdomain of "
6834 "the EDU domain would be represented as \"monet.Berkeley.EDU\"."
6838 #: build/C/man7/hostname.7:53
6840 "Hostnames are often used with network client and server programs, which must "
6841 "generally translate the name to an address for use. (This task is generally "
6842 "performed by either B<getaddrinfo>(3) or the obsolete B<gethostbyname>(3).) "
6843 "Hostnames are resolved by the Internet name resolver in the following "
6848 #: build/C/man7/hostname.7:66
6850 "If the name consists of a single component, that is, contains no dot, and if "
6851 "the environment variable B<HOSTALIASES> is set to the name of a file, that "
6852 "file is searched for any string matching the input hostname. The file "
6853 "should consist of lines made up of two white-space separated strings, the "
6854 "first of which is the hostname alias, and the second of which is the "
6855 "complete hostname to be substituted for that alias. If a case-insensitive "
6856 "match is found between the hostname to be resolved and the first field of a "
6857 "line in the file, the substituted name is looked up with no further "
6862 #: build/C/man7/hostname.7:70
6864 "If the input name ends with a trailing dot, the trailing dot is removed, and "
6865 "the remaining name is looked up with no further processing."
6869 #: build/C/man7/hostname.7:83
6871 "If the input name does not end with a trailing dot, it is looked up by "
6872 "searching through a list of domains until a match is found. The default "
6873 "search list includes first the local domain, then its parent domains with at "
6874 "least 2 name components (longest first). For example, in the domain "
6875 "CS.Berkeley.EDU, the name lithium.CChem will be checked first as "
6876 "lithium.CChem.CS.Berkeley.EDU and then as lithium.CChem.Berkeley.EDU. "
6877 "Lithium.CChem.EDU will not be tried, as there is only one component "
6878 "remaining from the local domain. The search path can be changed from the "
6879 "default by a system-wide configuration file (see B<resolver>(5))."
6883 #. Hostname appeared in
6886 #: build/C/man7/hostname.7:91
6887 msgid "B<gethostbyname>(3), B<resolver>(5), B<mailaddr>(7), B<named>(8)"
6891 #: build/C/man5/hosts.5:27
6897 #: build/C/man5/hosts.5:27
6903 #: build/C/man5/hosts.5:30
6904 msgid "hosts - static table lookup for hostnames"
6908 #: build/C/man5/hosts.5:32
6909 msgid "B</etc/hosts>"
6913 #: build/C/man5/hosts.5:40
6915 "This manual page describes the format of the I</etc/hosts> file. This file "
6916 "is a simple text file that associates IP addresses with hostnames, one line "
6917 "per IP address. For each host a single line should be present with the "
6918 "following information:"
6922 #: build/C/man5/hosts.5:43
6923 msgid "IP_address canonical_hostname [aliases...]"
6927 #: build/C/man5/hosts.5:56
6929 "Fields of the entry are separated by any number of blanks and/or tab "
6930 "characters. Text from a \"#\" character until the end of the line is a "
6931 "comment, and is ignored. Host names may contain only alphanumeric "
6932 "characters, minus signs (\"-\"), and periods (\".\"). They must begin with "
6933 "an alphabetic character and end with an alphanumeric character. Optional "
6934 "aliases provide for name changes, alternate spellings, shorter hostnames, or "
6935 "generic hostnames (for example, I<localhost>)."
6939 #: build/C/man5/hosts.5:64
6941 "The Berkeley Internet Name Domain (BIND) Server implements the Internet name "
6942 "server for UNIX systems. It augments or replaces the I</etc/hosts> file or "
6943 "hostname lookup, and frees a host from relying on I</etc/hosts> being up to "
6944 "date and complete."
6948 #: build/C/man5/hosts.5:67
6950 "In modern systems, even though the host table has been superseded by DNS, it "
6951 "is still widely used for:"
6955 #: build/C/man5/hosts.5:67
6957 msgid "B<bootstrapping>"
6961 #: build/C/man5/hosts.5:73
6963 "Most systems have a small host table containing the name and address "
6964 "information for important hosts on the local network. This is useful when "
6965 "DNS is not running, for example during system bootup."
6969 #: build/C/man5/hosts.5:73
6975 #: build/C/man5/hosts.5:79
6977 "Sites that use NIS use the host table as input to the NIS host database. "
6978 "Even though NIS can be used with DNS, most NIS sites still use the host "
6979 "table with an entry for all local hosts as a backup."
6983 #: build/C/man5/hosts.5:79
6985 msgid "B<isolated nodes>"
6989 #: build/C/man5/hosts.5:86
6991 "Very small sites that are isolated from the network use the host table "
6992 "instead of DNS. If the local information rarely changes, and the network is "
6993 "not connected to the Internet, DNS offers little advantage."
6997 #: build/C/man5/hosts.5:91
6999 "Modifications to this file normally take effect immediately, except in cases "
7000 "where the file is cached by applications."
7004 #: build/C/man5/hosts.5:91
7006 msgid "Historical Notes"
7010 #: build/C/man5/hosts.5:94
7012 "RFC\\ 952 gave the original format for the host table, though it has since "
7017 #: build/C/man5/hosts.5:107
7019 "Before the advent of DNS, the host table was the only way of resolving "
7020 "hostnames on the fledgling Internet. Indeed, this file could be created "
7021 "from the official host data base maintained at the Network Information "
7022 "Control Center (NIC), though local changes were often required to bring it "
7023 "up to date regarding unofficial aliases and/or unknown hosts. The NIC no "
7024 "longer maintains the hosts.txt files, though looking around at the time of "
7025 "writing (circa 2000), there are historical hosts.txt files on the WWW. I "
7026 "just found three, from 92, 94, and 95."
7030 #: build/C/man5/hosts.5:114
7033 "127.0.0.1 localhost\n"
7034 "192.168.1.10 foo.mydomain.org foo\n"
7035 "192.168.1.13 bar.mydomain.org bar\n"
7036 "146.82.138.7 master.debian.org master\n"
7037 "209.237.226.90 www.opensource.org\n"
7041 #. This manual page was written by Manoj Srivastava <srivasta@debian.org>,
7042 #. for the Debian GNU/Linux system.
7044 #: build/C/man5/hosts.5:125
7046 "B<hostname>(1), B<resolver>(3), B<resolver>(5), B<hostname>(7), B<named>(8), "
7047 "Internet RFC\\ 952"
7051 #: build/C/man5/hosts.equiv.5:3
7057 #: build/C/man5/hosts.equiv.5:3
7063 #: build/C/man5/hosts.equiv.5:7
7065 "/etc/hosts.equiv - list of hosts and users that are granted \"trusted\" B<r> "
7066 "command access to your system"
7070 #: build/C/man5/hosts.equiv.5:11
7072 "The B<hosts.equiv> file allows or denies hosts and users to use the "
7073 "B<r>-commands (e.g., B<rlogin>, B<rsh> or B<rcp>) without supplying a "
7078 #: build/C/man5/hosts.equiv.5:13
7079 msgid "The file uses the following format:"
7083 #: build/C/man5/hosts.equiv.5:13
7085 msgid "I<[ + | - ]> I<[hostname]> I<[username]>"
7089 #: build/C/man5/hosts.equiv.5:27
7091 "The I<hostname> is the name of a host which is logically equivalent to the "
7092 "local host. Users logged into that host are allowed to access like-named "
7093 "user accounts on the local host without supplying a password. The "
7094 "I<hostname> may be (optionally) preceded by a plus (+) sign. If the plus "
7095 "sign is used alone it allows any host to access your system. You can "
7096 "explicitly deny access to a host by preceding the I<hostname> by a minus (-) "
7097 "sign. Users from that host must always supply a password. For security "
7098 "reasons you should always use the FQDN of the hostname and not the short "
7103 #: build/C/man5/hosts.equiv.5:39
7105 "The I<username> entry grants a specific user access to all user accounts "
7106 "(except root) without supplying a password. That means the user is NOT "
7107 "restricted to like-named accounts. The I<username> may be (optionally) "
7108 "preceded by a plus (+) sign. You can also explicitly deny access to a "
7109 "specific user by preceding the I<username> with a minus (-) sign. This says "
7110 "that the user is not trusted no matter what other entries for that host "
7115 #: build/C/man5/hosts.equiv.5:41
7116 msgid "Netgroups can be specified by preceding the netgroup by an @ sign."
7120 #: build/C/man5/hosts.equiv.5:47
7122 "Be extremely careful when using the plus (+) sign. A simple typographical "
7123 "error could result in a standalone plus sign. A standalone plus sign is a "
7124 "wildcard character that means \"any host\"!"
7128 #: build/C/man5/hosts.equiv.5:49
7129 msgid "I</etc/hosts.equiv>"
7133 #: build/C/man5/hosts.equiv.5:54
7135 "Some systems will only honor the contents of this file when it has owner "
7136 "root and no write permission for anybody else. Some exceptionally paranoid "
7137 "systems even require that there be no other hard links to the file."
7141 #: build/C/man5/hosts.equiv.5:62
7143 "Modern systems use the Pluggable Authentication Modules library (PAM). With "
7144 "PAM a standalone plus sign is only considered a wildcard character which "
7145 "means \"any host\" when the word I<promiscuous> is added to the auth "
7146 "component line in your PAM file for the particular service (e.g., "
7151 #: build/C/man5/hosts.equiv.5:66
7152 msgid "B<rhosts>(5), B<rlogind>(8), B<rshd>(8)"
7156 #: build/C/man7/icmp.7:7
7162 #: build/C/man7/icmp.7:7
7168 #: build/C/man7/icmp.7:10
7169 msgid "icmp, IPPROTO_ICMP - Linux IPv4 ICMP kernel module."
7173 #: build/C/man7/icmp.7:18
7175 "This kernel protocol module implements the Internet Control Message Protocol "
7176 "defined in RFC\\ 792. It is used to signal error conditions and for "
7177 "diagnosis. The user doesn't interact directly with this module; instead it "
7178 "communicates with the other protocols in the kernel and these pass the ICMP "
7179 "errors to the application layers. The kernel ICMP module also answers ICMP "
7184 #: build/C/man7/icmp.7:30
7186 "A user protocol may receive ICMP packets for all local sockets by opening a "
7187 "raw socket with the protocol B<IPPROTO_ICMP>. See B<raw>(7) for more "
7188 "information. The types of ICMP packets passed to the socket can be filtered "
7189 "using the B<ICMP_FILTER> socket option. ICMP packets are always processed "
7190 "by the kernel too, even when passed to a user socket."
7194 #: build/C/man7/icmp.7:36
7196 "Linux limits the rate of ICMP error packets to each destination. "
7197 "B<ICMP_REDIRECT> and B<ICMP_DEST_UNREACH> are also limited by the "
7198 "destination route of the incoming packets."
7201 #. FIXME better description needed
7203 #: build/C/man7/icmp.7:49
7205 "ICMP supports a set of I</proc> interfaces to configure some global IP "
7206 "parameters. The parameters can be accessed by reading or writing files in "
7207 "the directory I</proc/sys/net/ipv4/>. Most of these parameters are rate "
7208 "limitations for specific ICMP types. Linux 2.2 uses a token bucket filter "
7209 "to limit ICMPs. The value is the timeout in jiffies until the token bucket "
7210 "filter is cleared after a burst. A jiffy is a system dependent unit, "
7211 "usually 10ms on i386 and about 1ms on alpha and ia64."
7215 #: build/C/man7/icmp.7:49
7217 msgid "I<icmp_destunreach_rate> (Linux 2.2 to 2.4.9)"
7220 #. Precisely: from 2.1.102
7222 #: build/C/man7/icmp.7:58
7224 "Maximum rate to send ICMP Destination Unreachable packets. This limits the "
7225 "rate at which packets are sent to any individual route or destination. The "
7226 "limit does not affect sending of B<ICMP_FRAG_NEEDED> packets needed for path "
7231 #: build/C/man7/icmp.7:58
7233 msgid "I<icmp_echo_ignore_all> (since Linux 2.2)"
7236 #. Precisely: 2.1.68
7238 #: build/C/man7/icmp.7:64
7239 msgid "If this value is nonzero, Linux will ignore all B<ICMP_ECHO> requests."
7243 #: build/C/man7/icmp.7:64
7245 msgid "I<icmp_echo_ignore_broadcasts> (since Linux 2.2)"
7248 #. Precisely: from 2.1.68
7250 #: build/C/man7/icmp.7:70
7252 "If this value is nonzero, Linux will ignore all B<ICMP_ECHO> packets sent to "
7253 "broadcast addresses."
7257 #: build/C/man7/icmp.7:70
7259 msgid "I<icmp_echoreply_rate> (Linux 2.2 to 2.4.9)"
7262 #. Precisely: from 2.1.102
7264 #: build/C/man7/icmp.7:78
7266 "Maximum rate for sending B<ICMP_ECHOREPLY> packets in response to "
7267 "B<ICMP_ECHOREQUEST> packets."
7271 #: build/C/man7/icmp.7:78
7274 "I<icmp_errors_use_inbound_ifaddr> (Boolean; default: disabled; since Linux "
7278 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7280 #: build/C/man7/icmp.7:83
7282 "If disabled, ICMP error messages are sent with the primary address of the "
7283 "exiting interface."
7287 #: build/C/man7/icmp.7:89
7289 "If enabled, the message will be sent with the primary address of the "
7290 "interface that received the packet that caused the ICMP error. This is the "
7291 "behavior that many network administrators will expect from a router. And it "
7292 "can make debugging complicated network layouts much easier."
7296 #: build/C/man7/icmp.7:93
7298 "Note that if no primary address exists for the interface selected, then the "
7299 "primary address of the first non-loopback interface that has one will be "
7300 "used regardless of this setting."
7304 #: build/C/man7/icmp.7:93
7307 "I<icmp_ignore_bogus_error_responses> (Boolean; default: disabled; since "
7311 #. precisely: since 2.1.32
7312 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7314 #: build/C/man7/icmp.7:101
7316 "Some routers violate RFC1122 by sending bogus responses to broadcast "
7317 "frames. Such violations are normally logged via a kernel warning. If this "
7318 "parameter is enabled, the kernel will not give such warnings, which will "
7319 "avoid log file clutter."
7323 #: build/C/man7/icmp.7:101
7325 msgid "I<icmp_paramprob_rate> (Linux 2.2 to 2.4.9)"
7328 #. Precisely: from 2.1.102
7330 #: build/C/man7/icmp.7:108
7332 "Maximum rate for sending B<ICMP_PARAMETERPROB> packets. These packets are "
7333 "sent when a packet arrives with an invalid IP header."
7337 #: build/C/man7/icmp.7:108
7339 msgid "I<icmp_ratelimit> (integer; default: 1000; since Linux 2.4.10)"
7342 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7344 #: build/C/man7/icmp.7:116
7346 "Limit the maximum rates for sending ICMP packets whose type matches "
7347 "I<icmp_ratemask> (see below) to specific targets. 0 to disable any "
7348 "limiting, otherwise the minimum space between responses in milliseconds."
7352 #: build/C/man7/icmp.7:116
7354 msgid "I<icmp_ratemask> (integer; default: see below; since Linux 2.4.10)"
7357 #. The following taken from 2.6.28-rc4 Documentation/networking/ip-sysctl.txt
7359 #: build/C/man7/icmp.7:120
7360 msgid "Mask made of ICMP types for which rates are being limited."
7364 #: build/C/man7/icmp.7:122
7365 msgid "Significant bits: IHGFEDCBA9876543210"
7369 #: build/C/man7/icmp.7:124
7370 msgid "Default mask: 0000001100000011000 (0x1818)"
7374 #: build/C/man7/icmp.7:127
7375 msgid "Bit definitions (see the kernel source file I<include/linux/icmp.h>):"
7379 #: build/C/man7/icmp.7:143
7383 "3 Destination Unreachable *\n"
7384 "4 Source Quench *\n"
7387 "B Time Exceeded *\n"
7388 "C Parameter Problem *\n"
7389 "D Timestamp Request\n"
7390 "E Timestamp Reply\n"
7393 "H Address Mask Request\n"
7394 "I Address Mask Reply\n"
7398 #: build/C/man7/icmp.7:148
7400 "The bits marked with an asterisk are rate limited by default (see the "
7401 "default mask above)."
7405 #: build/C/man7/icmp.7:148
7407 msgid "I<icmp_timeexceed_rate> (Linux 2.2 to 2.4.9)"
7411 #: build/C/man7/icmp.7:155
7413 "Maximum rate for sending B<ICMP_TIME_EXCEEDED> packets. These packets are "
7414 "sent to prevent loops when a packet has crossed too many hops."
7418 #: build/C/man7/icmp.7:159
7419 msgid "Support for the B<ICMP_ADDRESS> request was removed in 2.2."
7423 #: build/C/man7/icmp.7:163
7424 msgid "Support for B<ICMP_SOURCE_QUENCH> was removed in Linux 2.2."
7427 #. not really true ATM
7429 #. Linux ICMP should be compliant to RFC 1122.
7431 #: build/C/man7/icmp.7:171
7433 "As many other implementations don't support B<IPPROTO_ICMP> raw sockets, "
7434 "this feature should not be relied on in portable programs."
7438 #: build/C/man7/icmp.7:176
7440 "B<ICMP_REDIRECT> packets are not sent when Linux is not acting as a router. "
7441 "They are also only accepted from the old gateway defined in the routing "
7442 "table and the redirect routes are expired after some time."
7446 #: build/C/man7/icmp.7:180
7448 "The 64-bit timestamp returned by B<ICMP_TIMESTAMP> is in milliseconds since "
7449 "the Epoch, 1970-01-01 00:00:00 +0000 (UTC)."
7453 #: build/C/man7/icmp.7:185
7455 "Linux ICMP internally uses a raw socket to send ICMPs. This raw socket may "
7456 "appear in B<netstat>(8) output with a zero inode."
7460 #: build/C/man7/icmp.7:187
7465 #: build/C/man7/icmp.7:189
7466 msgid "RFC\\ 792 for a description of the ICMP protocol."
7470 #: build/C/man3/inet.3:42
7476 #: build/C/man3/inet.3:42
7482 #: build/C/man3/inet.3:46
7484 "inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, "
7485 "inet_netof - Internet address manipulation routines"
7489 #: build/C/man3/inet.3:51
7492 "B<#include E<lt>sys/socket.hE<gt>>\n"
7493 "B<#include E<lt>netinet/in.hE<gt>>\n"
7494 "B<#include E<lt>arpa/inet.hE<gt>>\n"
7498 #: build/C/man3/inet.3:53
7500 msgid "B<int inet_aton(const char *>I<cp>B<, struct in_addr *>I<inp>B<);>\n"
7504 #: build/C/man3/inet.3:55
7506 msgid "B<in_addr_t inet_addr(const char *>I<cp>B<);>\n"
7510 #: build/C/man3/inet.3:57
7512 msgid "B<in_addr_t inet_network(const char *>I<cp>B<);>\n"
7516 #: build/C/man3/inet.3:59
7518 msgid "B<char *inet_ntoa(struct in_addr >I<in>B<);>\n"
7522 #: build/C/man3/inet.3:61
7524 msgid "B<struct in_addr inet_makeaddr(int >I<net>B<, int >I<host>B<);>\n"
7528 #: build/C/man3/inet.3:63
7530 msgid "B<in_addr_t inet_lnaof(struct in_addr >I<in>B<);>\n"
7534 #: build/C/man3/inet.3:65
7536 msgid "B<in_addr_t inet_netof(struct in_addr >I<in>B<);>\n"
7540 #: build/C/man3/inet.3:75
7541 msgid "B<inet_aton>(), B<inet_ntoa>(): _BSD_SOURCE || _SVID_SOURCE"
7545 #: build/C/man3/inet.3:85
7547 "B<inet_aton>() converts the Internet host address I<cp> from the IPv4 "
7548 "numbers-and-dots notation into binary form (in network byte order) and "
7549 "stores it in the structure that I<inp> points to. B<inet_aton>() returns "
7550 "nonzero if the address is valid, zero if not. The address supplied in I<cp> "
7551 "can have one of the following forms:"
7555 #: build/C/man3/inet.3:85
7561 #: build/C/man3/inet.3:89
7563 "Each of the four numeric parts specifies a byte of the address; the bytes "
7564 "are assigned in left-to-right order to produce the binary address."
7568 #: build/C/man3/inet.3:89
7574 #: build/C/man3/inet.3:102
7576 "Parts I<a> and I<b> specify the first two bytes of the binary address. Part "
7577 "I<c> is interpreted as a 16-bit value that defines the rightmost two bytes "
7578 "of the binary address. This notation is suitable for specifying (outmoded) "
7579 "Class B network addresses."
7583 #: build/C/man3/inet.3:102
7589 #: build/C/man3/inet.3:113
7591 "Part I<a> specifies the first byte of the binary address. Part I<b> is "
7592 "interpreted as a 24-bit value that defines the rightmost three bytes of the "
7593 "binary address. This notation is suitable for specifying (outmoded) Class C "
7594 "network addresses."
7598 #: build/C/man3/inet.3:113
7604 #: build/C/man3/inet.3:119
7606 "The value I<a> is interpreted as a 32-bit value that is stored directly into "
7607 "the binary address without any byte rearrangement."
7611 #: build/C/man3/inet.3:132
7613 "In all of the above forms, components of the dotted address can be specified "
7614 "in decimal, octal (with a leading I<0>), or hexadecimal, with a leading "
7615 "I<0X>). Addresses in any of these forms are collectively termed I<IPV4 "
7616 "numbers-and-dots notation>. The form that uses exactly four decimal numbers "
7617 "is referred to as I<IPv4 dotted-decimal notation> (or sometimes: I<IPv4 "
7618 "dotted-quad notation>)."
7622 #: build/C/man3/inet.3:149
7624 "The B<inet_addr>() function converts the Internet host address I<cp> from "
7625 "IPv4 numbers-and-dots notation into binary data in network byte order. If "
7626 "the input is invalid, B<INADDR_NONE> (usually -1) is returned. Use of this "
7627 "function is problematic because -1 is a valid address (255.255.255.255). "
7628 "Avoid its use in favor of B<inet_aton>(), B<inet_pton>(3), or "
7629 "B<getaddrinfo>(3) which provide a cleaner way to indicate error return."
7633 #: build/C/man3/inet.3:159
7635 "The B<inet_network>() function converts I<cp>, a string in IPv4 "
7636 "numbers-and-dots notation, into a number in host byte order suitable for use "
7637 "as an Internet network address. On success, the converted address is "
7638 "returned. If the input is invalid, -1 is returned."
7642 #: build/C/man3/inet.3:167
7644 "The B<inet_ntoa>() function converts the Internet host address I<in>, given "
7645 "in network byte order, to a string in IPv4 dotted-decimal notation. The "
7646 "string is returned in a statically allocated buffer, which subsequent calls "
7651 #: build/C/man3/inet.3:173
7653 "The B<inet_lnaof>() function returns the local network address part of the "
7654 "Internet address I<in>. The returned value is in host byte order."
7658 #: build/C/man3/inet.3:179
7660 "The B<inet_netof>() function returns the network number part of the "
7661 "Internet address I<in>. The returned value is in host byte order."
7665 #: build/C/man3/inet.3:190
7667 "The B<inet_makeaddr>() function is the converse of B<inet_netof>() and "
7668 "B<inet_lnaof>(). It returns an Internet host address in network byte order, "
7669 "created by combining the network number I<net> with the local address "
7670 "I<host>, both in host byte order."
7674 #: build/C/man3/inet.3:200
7676 "The structure I<in_addr> as used in B<inet_ntoa>(), B<inet_makeaddr>(), "
7677 "B<inet_lnaof>() and B<inet_netof>() is defined in "
7678 "I<E<lt>netinet/in.hE<gt>> as:"
7682 #: build/C/man3/inet.3:204
7684 msgid "typedef uint32_t in_addr_t;\n"
7688 #: build/C/man3/inet.3:208
7691 "struct in_addr {\n"
7692 " in_addr_t s_addr;\n"
7697 #: build/C/man3/inet.3:218
7699 "4.3BSD. B<inet_addr>() and B<inet_ntoa>() are specified in POSIX.1-2001. "
7700 "B<inet_aton>() is not specified in POSIX.1-2001, but is available on most "
7705 #: build/C/man3/inet.3:222
7707 "On the i386 the host byte order is Least Significant Byte first (little "
7708 "endian), whereas the network byte order, as used on the Internet, is Most "
7709 "Significant Byte first (big endian)."
7713 #: build/C/man3/inet.3:231
7715 "B<inet_lnaof>(), B<inet_netof>(), and B<inet_makeaddr>() are legacy "
7716 "functions that assume they are dealing with I<classful network addresses>. "
7717 "Classful networking divides IPv4 network addresses into host and network "
7718 "components at byte boundaries, as follows:"
7722 #: build/C/man3/inet.3:231
7728 #: build/C/man3/inet.3:237
7730 "This address type is indicated by the value 0 in the most significant bit of "
7731 "the (network byte ordered) address. The network address is contained in the "
7732 "most significant byte, and the host address occupies the remaining three "
7737 #: build/C/man3/inet.3:237
7743 #: build/C/man3/inet.3:243
7745 "This address type is indicated by the binary value 10 in the most "
7746 "significant two bits of the address. The network address is contained in "
7747 "the two most significant bytes, and the host address occupies the remaining "
7752 #: build/C/man3/inet.3:243
7758 #: build/C/man3/inet.3:249
7760 "This address type is indicated by the binary value 110 in the most "
7761 "significant three bits of the address. The network address is contained in "
7762 "the three most significant bytes, and the host address occupies the "
7767 #: build/C/man3/inet.3:254
7769 "Classful network addresses are now obsolete, having been superseded by "
7770 "Classless Inter-Domain Routing (CIDR), which divides addresses into network "
7771 "and host components at arbitrary bit (rather than byte) boundaries."
7775 #: build/C/man3/inet.3:261
7777 "An example of the use of B<inet_aton>() and B<inet_ntoa>() is shown "
7778 "below. Here are some example runs:"
7782 #: build/C/man3/inet.3:268
7785 "$B< ./a.out 226.000.000.037> # Last byte is in octal\n"
7787 "$B< ./a.out 0x7f.1 > # First byte is in hex\n"
7792 #: build/C/man3/inet.3:277
7795 "#define _BSD_SOURCE\n"
7796 "#include E<lt>arpa/inet.hE<gt>\n"
7797 "#include E<lt>stdio.hE<gt>\n"
7798 "#include E<lt>stdlib.hE<gt>\n"
7802 #: build/C/man3/inet.3:282
7806 "main(int argc, char *argv[])\n"
7808 " struct in_addr addr;\n"
7812 #: build/C/man3/inet.3:287
7815 " if (argc != 2) {\n"
7816 " fprintf(stderr, \"%s E<lt>dotted-addressE<gt>\\en\", argv[0]);\n"
7817 " exit(EXIT_FAILURE);\n"
7822 #: build/C/man3/inet.3:292
7825 " if (inet_aton(argv[1], &addr) == 0) {\n"
7826 " perror(\"inet_aton\");\n"
7827 " exit(EXIT_FAILURE);\n"
7832 #: build/C/man3/inet.3:296
7835 " printf(\"%s\\en\", inet_ntoa(addr));\n"
7836 " exit(EXIT_SUCCESS);\n"
7841 #: build/C/man3/inet.3:307
7843 "B<byteorder>(3), B<getaddrinfo>(3), B<gethostbyname>(3), B<getnameinfo>(3), "
7844 "B<getnetent>(3), B<inet_ntop>(3), B<inet_pton>(3), B<hosts>(5), "
7849 #: build/C/man3/inet_ntop.3:24
7855 #: build/C/man3/inet_ntop.3:24
7861 #: build/C/man3/inet_ntop.3:27
7862 msgid "inet_ntop - convert IPv4 and IPv6 addresses from binary to text form"
7866 #: build/C/man3/inet_ntop.3:33
7869 "B<const char *inet_ntop(int >I<af>B<, const void *>I<src>B<,>\n"
7870 "B< char *>I<dst>B<, socklen_t >I<size>B<);>\n"
7874 #: build/C/man3/inet_ntop.3:46
7876 "This function converts the network address structure I<src> in the I<af> "
7877 "address family into a character string. The resulting string is copied to "
7878 "the buffer pointed to by I<dst>, which must be a non-NULL pointer. The "
7879 "caller specifies the number of bytes available in this buffer in the "
7884 #: build/C/man3/inet_ntop.3:55
7886 "B<inet_ntop>() extends the B<inet_ntoa>(3) function to support multiple "
7887 "address families, B<inet_ntoa>(3) is now considered to be deprecated in "
7888 "favor of B<inet_ntop>(). The following address families are currently "
7893 #: build/C/man3/inet_ntop.3:68
7895 "I<src> points to a I<struct in_addr> (in network byte order) which is "
7896 "converted to an IPv4 network address in the dotted-decimal format, "
7897 "\"I<ddd.ddd.ddd.ddd>\". The buffer I<dst> must be at least "
7898 "B<INET_ADDRSTRLEN> bytes long."
7902 #: build/C/man3/inet_ntop.3:81
7904 "I<src> points to a I<struct in6_addr> (in network byte order) which is "
7905 "converted to a representation of this address in the most appropriate IPv6 "
7906 "network address format for this address. The buffer I<dst> must be at least "
7907 "B<INET6_ADDRSTRLEN> bytes long."
7911 #: build/C/man3/inet_ntop.3:89
7913 "On success, B<inet_ntop>() returns a non-NULL pointer to I<dst>. NULL is "
7914 "returned if there was an error, with I<errno> set to indicate the error."
7918 #: build/C/man3/inet_ntop.3:90
7920 msgid "B<EAFNOSUPPORT>"
7924 #: build/C/man3/inet_ntop.3:94
7925 msgid "I<af> was not a valid address family."
7929 #: build/C/man3/inet_ntop.3:94
7935 #: build/C/man3/inet_ntop.3:98
7936 msgid "The converted address string would exceed the size given by I<size>."
7939 #. 2.1.3: size_t, 2.1.91: socklen_t
7941 #: build/C/man3/inet_ntop.3:110
7943 "POSIX.1-2001. Note that RFC\\ 2553 defines a prototype where the last "
7944 "argument I<size> is of type I<size_t>. Many systems follow RFC\\ 2553. "
7945 "Glibc 2.0 and 2.1 have I<size_t>, but 2.2 and later have I<socklen_t>."
7949 #: build/C/man3/inet_ntop.3:113
7950 msgid "B<AF_INET6> converts IPv4-mapped IPv6 addresses into an IPv6 format."
7954 #: build/C/man3/inet_ntop.3:116
7955 msgid "See B<inet_pton>(3)."
7959 #: build/C/man3/inet_ntop.3:120
7960 msgid "B<getnameinfo>(3), B<inet>(3), B<inet_pton>(3)"
7964 #: build/C/man3/inet_pton.3:25
7970 #: build/C/man3/inet_pton.3:25
7976 #: build/C/man3/inet_pton.3:28
7977 msgid "inet_pton - convert IPv4 and IPv6 addresses from text to binary form"
7981 #: build/C/man3/inet_pton.3:33
7983 msgid "B<int inet_pton(int >I<af>B<, const char *>I<src>B<, void *>I<dst>B<);>\n"
7987 #: build/C/man3/inet_pton.3:49
7989 "This function converts the character string I<src> into a network address "
7990 "structure in the I<af> address family, then copies the network address "
7991 "structure to I<dst>. The I<af> argument must be either B<AF_INET> or "
7996 #: build/C/man3/inet_pton.3:51
7997 msgid "The following address families are currently supported:"
8001 #: build/C/man3/inet_pton.3:65
8003 "I<src> points to a character string containing an IPv4 network address in "
8004 "dotted-decimal format, \"I<ddd.ddd.ddd.ddd>\", where I<ddd> is a decimal "
8005 "number of up to three digits in the range 0 to 255. The address is "
8006 "converted to a I<struct in_addr> and copied to I<dst>, which must be "
8007 "I<sizeof(struct in_addr)> (4) bytes (32 bits) long."
8011 #: build/C/man3/inet_pton.3:77
8013 "I<src> points to a character string containing an IPv6 network address. The "
8014 "address is converted to a I<struct in6_addr> and copied to I<dst>, which "
8015 "must be I<sizeof(struct in6_addr)> (16) bytes (128 bits) long. The allowed "
8016 "formats for IPv6 addresses follow these rules:"
8020 #: build/C/man3/inet_pton.3:78
8026 #: build/C/man3/inet_pton.3:85
8028 "The preferred format is I<x:x:x:x:x:x:x:x>. This form consists of eight "
8029 "hexadecimal numbers, each of which expresses a 16-bit value (i.e., each I<x> "
8030 "can be up to 4 hex digits)."
8034 #: build/C/man3/inet_pton.3:85
8040 #: build/C/man3/inet_pton.3:98
8042 "A series of contiguous zero values in the preferred format can be "
8043 "abbreviated to I<::>. Only one instance of I<::> can occur in an address. "
8044 "For example, the loopback address I<0:0:0:0:0:0:0:1> can be abbreviated as "
8045 "I<::1>. The wildcard address, consisting of all zeros, can be written as "
8050 #: build/C/man3/inet_pton.3:98
8056 #: build/C/man3/inet_pton.3:111
8058 "An alternate format is useful for expressing IPv4-mapped IPv6 addresses. "
8059 "This form is written as I<x:x:x:x:x:x:d.d.d.d>, where the six leading I<x>s "
8060 "are hexadecimal values that define the six most-significant 16-bit pieces of "
8061 "the address (i.e., 96 bits), and the I<d>s express a value in dotted-decimal "
8062 "notation that defines the least significant 32 bits of the address. An "
8063 "example of such an address is I<::FFFF:204.152.189.116>."
8067 #: build/C/man3/inet_pton.3:114
8068 msgid "See RFC 2373 for further details on the representation of IPv6 addresses."
8072 #: build/C/man3/inet_pton.3:127
8074 "B<inet_pton>() returns 1 on success (network address was successfully "
8075 "converted). 0 is returned if I<src> does not contain a character string "
8076 "representing a valid network address in the specified address family. If "
8077 "I<af> does not contain a valid address family, -1 is returned and I<errno> "
8078 "is set to B<EAFNOSUPPORT>."
8082 #: build/C/man3/inet_pton.3:148
8084 "Unlike B<inet_aton>(3) and B<inet_addr>(3), B<inet_pton>() supports IPv6 "
8085 "addresses. On the other hand, B<inet_pton>() only accepts IPv4 addresses "
8086 "in dotted-decimal notation, whereas B<inet_aton>(3) and B<inet_addr>(3) "
8087 "allow the more general numbers-and-dots notation (hexadecimal and octal "
8088 "number formats, and formats that don't require all four bytes to be "
8089 "explicitly written). For an interface that handles both IPv6 addresses, and "
8090 "IPv4 addresses in numbers-and-dots notation, see B<getaddrinfo>(3)."
8094 #: build/C/man3/inet_pton.3:154
8096 "B<AF_INET6> does not recognize IPv4 addresses. An explicit IPv4-mapped IPv6 "
8097 "address must be supplied in I<src> instead."
8101 #: build/C/man3/inet_pton.3:160
8103 "The program below demonstrates the use of B<inet_pton>() and "
8104 "B<inet_ntop>(3). Here are some example runs:"
8108 #: build/C/man3/inet_pton.3:169
8111 "$B< ./a.out i6 0:0:0:0:0:0:0:0>\n"
8113 "$B< ./a.out i6 1:0:0:0:0:0:0:8>\n"
8115 "$B< ./a.out i6 0:0:0:0:0:FFFF:204.152.189.116>\n"
8116 "::ffff:204.152.189.116\n"
8120 #: build/C/man3/inet_pton.3:178
8123 "#include E<lt>arpa/inet.hE<gt>\n"
8124 "#include E<lt>stdio.hE<gt>\n"
8125 "#include E<lt>stdlib.hE<gt>\n"
8126 "#include E<lt>string.hE<gt>\n"
8130 #: build/C/man3/inet_pton.3:185
8134 "main(int argc, char *argv[])\n"
8136 " unsigned char buf[sizeof(struct in6_addr)];\n"
8138 " char str[INET6_ADDRSTRLEN];\n"
8142 #: build/C/man3/inet_pton.3:190
8145 " if (argc != 3) {\n"
8146 " fprintf(stderr, \"Usage: %s {i4|i6|E<lt>numE<gt>} string\\en\", "
8148 " exit(EXIT_FAILURE);\n"
8153 #: build/C/man3/inet_pton.3:193
8156 " domain = (strcmp(argv[1], \"i4\") == 0) ? AF_INET :\n"
8157 " (strcmp(argv[1], \"i6\") == 0) ? AF_INET6 : atoi(argv[1]);\n"
8161 #: build/C/man3/inet_pton.3:202
8164 " s = inet_pton(domain, argv[2], buf);\n"
8165 " if (s E<lt>= 0) {\n"
8167 " fprintf(stderr, \"Not in presentation format\");\n"
8169 " perror(\"inet_pton\");\n"
8170 " exit(EXIT_FAILURE);\n"
8175 #: build/C/man3/inet_pton.3:207
8178 " if (inet_ntop(domain, buf, str, INET6_ADDRSTRLEN) == NULL) {\n"
8179 " perror(\"inet_ntop\");\n"
8180 " exit(EXIT_FAILURE);\n"
8185 #: build/C/man3/inet_pton.3:209
8187 msgid " printf(\"%s\\en\", str);\n"
8191 #: build/C/man3/inet_pton.3:217
8192 msgid "B<getaddrinfo>(3), B<inet>(3), B<inet_ntop>(3)"
8196 #: build/C/man7/ip.7:12
8202 #: build/C/man7/ip.7:12
8208 #: build/C/man7/ip.7:15
8209 msgid "ip - Linux IPv4 protocol implementation"
8213 #: build/C/man7/ip.7:21 build/C/man7/ipv6.7:14 build/C/man7/raw.7:16 build/C/man7/tcp.7:23 build/C/man7/udp.7:15
8214 msgid "B<#include E<lt>netinet/in.hE<gt>>"
8218 #: build/C/man7/ip.7:23
8219 msgid "B<#include E<lt>netinet/ip.hE<gt> >/* superset of previous */"
8223 #: build/C/man7/ip.7:25
8224 msgid "I<tcp_socket>B< = socket(AF_INET, SOCK_STREAM, 0);>"
8228 #: build/C/man7/ip.7:27
8229 msgid "I<udp_socket>B< = socket(AF_INET, SOCK_DGRAM, 0);>"
8233 #: build/C/man7/ip.7:29
8234 msgid "I<raw_socket>B< = socket(AF_INET, SOCK_RAW, >I<protocol>B<);>"
8237 #. FIXME has someone verified that 2.1 is really 1812 compliant?
8239 #: build/C/man7/ip.7:36
8241 "Linux implements the Internet Protocol, version 4, described in RFC\\ 791 "
8242 "and RFC\\ 1122. B<ip> contains a level 2 multicasting implementation "
8243 "conforming to RFC\\ 1112. It also contains an IP router including a packet "
8248 #: build/C/man7/ip.7:40
8250 "The programming interface is BSD-sockets compatible. For more information "
8251 "on sockets, see B<socket>(7)."
8255 #: build/C/man7/ip.7:71
8257 "An IP socket is created by calling the B<socket>(2) function as "
8258 "B<socket(AF_INET, >I<socket_type>B<, >I<protocol>B<)>. Valid socket types "
8259 "are B<SOCK_STREAM> to open a B<tcp>(7) socket, B<SOCK_DGRAM> to open a "
8260 "B<udp>(7) socket, or B<SOCK_RAW> to open a B<raw>(7) socket to access the "
8261 "IP protocol directly. I<protocol> is the IP protocol in the IP header to be "
8262 "received or sent. The only valid values for I<protocol> are 0 and "
8263 "B<IPPROTO_TCP> for TCP sockets, and 0 and B<IPPROTO_UDP> for UDP sockets. "
8264 "For B<SOCK_RAW> you may specify a valid IANA IP protocol defined in RFC\\ "
8265 "1700 assigned numbers."
8268 #. FIXME ip current does an autobind in listen, but I'm not sure
8269 #. if that should be documented.
8271 #: build/C/man7/ip.7:90
8273 "When a process wants to receive new incoming packets or connections, it "
8274 "should bind a socket to a local interface address using B<bind>(2). Only "
8275 "one IP socket may be bound to any given local (address, port) pair. When "
8276 "B<INADDR_ANY> is specified in the bind call, the socket will be bound to "
8277 "I<all> local interfaces. When B<listen>(2) or B<connect>(2) are called on "
8278 "an unbound socket, it is automatically bound to a random free port with the "
8279 "local address set to B<INADDR_ANY>."
8283 #: build/C/man7/ip.7:96
8285 "A TCP local socket address that has been bound is unavailable for some time "
8286 "after closing, unless the B<SO_REUSEADDR> flag has been set. Care should be "
8287 "taken when using this flag as it makes TCP less reliable."
8291 #: build/C/man7/ip.7:107
8293 "An IP socket address is defined as a combination of an IP interface address "
8294 "and a 16-bit port number. The basic IP protocol does not supply port "
8295 "numbers, they are implemented by higher level protocols like B<udp>(7) and "
8296 "B<tcp>(7). On raw sockets I<sin_port> is set to the IP protocol."
8300 #: build/C/man7/ip.7:115
8303 "struct sockaddr_in {\n"
8304 " sa_family_t sin_family; /* address family: AF_INET */\n"
8305 " in_port_t sin_port; /* port in network byte order */\n"
8306 " struct in_addr sin_addr; /* internet address */\n"
8311 #: build/C/man7/ip.7:120
8314 "/* Internet address. */\n"
8315 "struct in_addr {\n"
8316 " uint32_t s_addr; /* address in network byte order */\n"
8321 #: build/C/man7/ip.7:145
8323 "I<sin_family> is always set to B<AF_INET>. This is required; in Linux 2.2 "
8324 "most networking functions return B<EINVAL> when this setting is missing. "
8325 "I<sin_port> contains the port in network byte order. The port numbers below "
8326 "1024 are called I<privileged ports> (or sometimes: I<reserved ports>). Only "
8327 "privileged processes (i.e., those having the B<CAP_NET_BIND_SERVICE> "
8328 "capability) may B<bind>(2) to these sockets. Note that the raw IPv4 "
8329 "protocol as such has no concept of a port, they are only implemented by "
8330 "higher protocols like B<tcp>(7) and B<udp>(7)."
8334 #: build/C/man7/ip.7:164
8336 "I<sin_addr> is the IP host address. The I<s_addr> member of I<struct "
8337 "in_addr> contains the host interface address in network byte order. "
8338 "I<in_addr> should be assigned one of the B<INADDR_*> values (e.g., "
8339 "B<INADDR_ANY>) or set using the B<inet_aton>(3), B<inet_addr>(3), "
8340 "B<inet_makeaddr>(3) library functions or directly with the name resolver "
8341 "(see B<gethostbyname>(3))."
8344 #. Leave a loophole for XTP @)
8346 #: build/C/man7/ip.7:176
8348 "IPv4 addresses are divided into unicast, broadcast and multicast addresses. "
8349 "Unicast addresses specify a single interface of a host, broadcast addresses "
8350 "specify all hosts on a network and multicast addresses address all hosts in "
8351 "a multicast group. Datagrams to broadcast addresses can be only sent or "
8352 "received when the B<SO_BROADCAST> socket flag is set. In the current "
8353 "implementation, connection-oriented sockets are only allowed to use unicast "
8358 #: build/C/man7/ip.7:184
8360 "Note that the address and the port are always stored in network byte order. "
8361 "In particular, this means that you need to call B<htons>(3) on the number "
8362 "that is assigned to a port. All address/port manipulation functions in the "
8363 "standard library work in network byte order."
8367 #: build/C/man7/ip.7:197
8369 "There are several special addresses: B<INADDR_LOOPBACK> (127.0.0.1) always "
8370 "refers to the local host via the loopback device; B<INADDR_ANY> (0.0.0.0) "
8371 "means any address for binding; B<INADDR_BROADCAST> (255.255.255.255) means "
8372 "any host and has the same effect on bind as B<INADDR_ANY> for historical "
8376 #. or SOL_IP on Linux
8378 #: build/C/man7/ip.7:206
8380 "IP supports some protocol-specific socket options that can be set with "
8381 "B<setsockopt>(2) and read with B<getsockopt>(2). The socket option level "
8382 "for IP is B<IPPROTO_IP>. A boolean integer flag is zero when it is false, "
8387 #: build/C/man7/ip.7:206
8389 msgid "B<IP_ADD_MEMBERSHIP> (since Linux 1.2)"
8393 #: build/C/man7/ip.7:212
8394 msgid "Join a multicast group. Argument is an I<ip_mreqn> structure."
8398 #: build/C/man7/ip.7:222
8401 "struct ip_mreqn {\n"
8402 " struct in_addr imr_multiaddr; /* IP multicast group\n"
8404 " struct in_addr imr_address; /* IP address of local\n"
8406 " int imr_ifindex; /* interface index */\n"
8410 #. (i.e., within the 224.0.0.0-239.255.255.255 range)
8412 #: build/C/man7/ip.7:243
8414 "I<imr_multiaddr> contains the address of the multicast group the application "
8415 "wants to join or leave. It must be a valid multicast address (or "
8416 "B<setsockopt>(2) fails with the error B<EINVAL>). I<imr_address> is the "
8417 "address of the local interface with which the system should join the "
8418 "multicast group; if it is equal to B<INADDR_ANY> an appropriate interface is "
8419 "chosen by the system. I<imr_ifindex> is the interface index of the "
8420 "interface that should join/leave the I<imr_multiaddr> group, or 0 to "
8421 "indicate any interface."
8425 #: build/C/man7/ip.7:258
8427 "The I<ip_mreqn> structure is available only since Linux 2.2. For "
8428 "compatibility, the old I<ip_mreq> structure (present since Linux 1.2) is "
8429 "still supported; it differs from I<ip_mreqn> only by not including the "
8430 "I<imr_ifindex> field. Only valid as a B<setsockopt>(2)."
8434 #: build/C/man7/ip.7:258
8436 msgid "B<IP_DROP_MEMBERSHIP> (since Linux 1.2)"
8440 #: build/C/man7/ip.7:267
8442 "Leave a multicast group. Argument is an I<ip_mreqn> or I<ip_mreq> structure "
8443 "similar to B<IP_ADD_MEMBERSHIP>."
8447 #: build/C/man7/ip.7:267
8449 msgid "B<IP_FREEBIND> (since Linux 2.4)"
8452 #. Precisely: 2.4.0-test10
8454 #: build/C/man7/ip.7:280
8456 "If enabled, this boolean option allows binding to an IP address that is "
8457 "nonlocal or does not (yet) exist. This permits listening on a socket, "
8458 "without requiring the underlying network interface or the specified dynamic "
8459 "IP address to be up at the time that the application is trying to bind to "
8460 "it. This option is the per-socket equivalent of the I<ip_nonlocal_bind> "
8461 "I</proc> interface described below."
8465 #: build/C/man7/ip.7:280
8467 msgid "B<IP_HDRINCL> (since Linux 2.0)"
8471 #. FIXME Document IP_IPSEC_POLICY
8472 #. Since Linux 2.5.47
8473 #. Needs CAP_NET_ADMIN
8475 #: build/C/man7/ip.7:300
8477 "If enabled, the user supplies an IP header in front of the user data. Only "
8478 "valid for B<SOCK_RAW> sockets. See B<raw>(7) for more information. When "
8479 "this flag is enabled the values set by B<IP_OPTIONS>, B<IP_TTL> and "
8480 "B<IP_TOS> are ignored."
8484 #: build/C/man7/ip.7:300
8486 msgid "B<IP_MTU> (since Linux 2.2)"
8489 #. Precisely: 2.1.124
8491 #: build/C/man7/ip.7:308
8493 "Retrieve the current known path MTU of the current socket. Only valid when "
8494 "the socket has been connected. Returns an integer. Only valid as a "
8499 #: build/C/man7/ip.7:308
8501 msgid "B<IP_MTU_DISCOVER> (since Linux 2.2)"
8504 #. Precisely: 2.1.124
8506 #: build/C/man7/ip.7:329
8508 "Set or receive the Path MTU Discovery setting for a socket. When enabled, "
8509 "Linux will perform Path MTU Discovery as defined in RFC\\ 1191 on "
8510 "B<SOCK_STREAM> sockets. For non-B<SOCK_STREAM> sockets, B<IP_PMTUDISC_DO> "
8511 "forces the don't-fragment flag to be set on all outgoing packets. It is the "
8512 "user's responsibility to packetize the data in MTU-sized chunks and to do "
8513 "the retransmits if necessary. The kernel will reject (with B<EMSGSIZE>) "
8514 "datagrams that are bigger than the known path MTU. B<IP_PMTUDISC_WANT> will "
8515 "fragment a datagram if needed according to the path MTU, or will set the "
8516 "don't-fragment flag otherwise."
8520 #: build/C/man7/ip.7:337
8522 "The system-wide default can be toggled between B<IP_PMTUDISC_WANT> and "
8523 "B<IP_PMTUDISC_DONT> by writing (respectively, zero and nonzero values) to "
8524 "the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file."
8528 #: build/C/man7/ip.7:342
8530 msgid "Path MTU discovery value:Meaning\n"
8534 #: build/C/man7/ip.7:343
8536 msgid "IP_PMTUDISC_WANT:Use per-route settings.\n"
8540 #: build/C/man7/ip.7:344
8542 msgid "IP_PMTUDISC_DONT:Never do Path MTU Discovery.\n"
8546 #: build/C/man7/ip.7:345
8548 msgid "IP_PMTUDISC_DO:Always do Path MTU Discovery.\n"
8552 #: build/C/man7/ip.7:346
8554 msgid "IP_PMTUDISC_PROBE:Set DF but ignore Path MTU.\n"
8558 #: build/C/man7/ip.7:364
8560 "When PMTU discovery is enabled, the kernel automatically keeps track of the "
8561 "path MTU per destination host. When it is connected to a specific peer with "
8562 "B<connect>(2), the currently known path MTU can be retrieved conveniently "
8563 "using the B<IP_MTU> socket option (e.g., after an B<EMSGSIZE> error "
8564 "occurred). The path MTU may change over time. For connectionless sockets "
8565 "with many destinations, the new MTU for a given destination can also be "
8566 "accessed using the error queue (see B<IP_RECVERR>). A new error will be "
8567 "queued for every incoming MTU update."
8571 #: build/C/man7/ip.7:369
8573 "While MTU discovery is in progress, initial packets from datagram sockets "
8574 "may be dropped. Applications using UDP should be aware of this and not take "
8575 "it into account for their packet retransmit strategy."
8578 #. FIXME this is an ugly hack
8580 #: build/C/man7/ip.7:374
8582 "To bootstrap the path MTU discovery process on unconnected sockets, it is "
8583 "possible to start with a big datagram size (up to 64K-headers bytes long) "
8584 "and let it shrink by updates of the path MTU."
8588 #: build/C/man7/ip.7:383
8590 "To get an initial estimate of the path MTU, connect a datagram socket to the "
8591 "destination address using B<connect>(2) and retrieve the MTU by calling "
8592 "B<getsockopt>(2) with the B<IP_MTU> option."
8596 #: build/C/man7/ip.7:395
8598 "It is possible to implement RFC 4821 MTU probing with B<SOCK_DGRAM> or "
8599 "B<SOCK_RAW> sockets by setting a value of B<IP_PMTUDISC_PROBE> (available "
8600 "since Linux 2.6.22). This is also particularly useful for diagnostic tools "
8601 "such as B<tracepath>(8) that wish to deliberately send probe packets larger "
8602 "than the observed Path MTU."
8606 #: build/C/man7/ip.7:395
8608 msgid "B<IP_MULTICAST_IF> (since Linux 1.2)"
8612 #: build/C/man7/ip.7:404
8614 "Set the local device for a multicast socket. Argument is an I<ip_mreqn> or "
8615 "I<ip_mreq> structure similar to B<IP_ADD_MEMBERSHIP>."
8619 #: build/C/man7/ip.7:408
8620 msgid "When an invalid socket option is passed, B<ENOPROTOOPT> is returned."
8624 #: build/C/man7/ip.7:408
8626 msgid "B<IP_MULTICAST_LOOP> (since Linux 1.2)"
8630 #: build/C/man7/ip.7:412
8632 "Set or read a boolean integer argument that determines whether sent "
8633 "multicast packets should be looped back to the local sockets."
8637 #: build/C/man7/ip.7:412
8639 msgid "B<IP_MULTICAST_TTL> (since Linux 1.2)"
8643 #: build/C/man7/ip.7:420
8645 "Set or read the time-to-live value of outgoing multicast packets for this "
8646 "socket. It is very important for multicast packets to set the smallest TTL "
8647 "possible. The default is 1 which means that multicast packets don't leave "
8648 "the local network unless the user program explicitly requests it. Argument "
8653 #: build/C/man7/ip.7:420
8655 msgid "B<IP_NODEFRAG> (since Linux 2.6.36)"
8659 #: build/C/man7/ip.7:428
8661 "If enabled (argument is nonzero), the reassembly of outgoing packets is "
8662 "disabled in the netfilter layer. This option is only valid for B<SOCK_RAW> "
8663 "sockets. The argument is an integer."
8667 #: build/C/man7/ip.7:428
8669 msgid "B<IP_OPTIONS> (since Linux 2.0)"
8672 #. Precisely: 1.3.30
8673 #. FIXME Document IP_PASSSEC
8675 #. Since Linux 2.6.17
8676 #. commit 2c7946a7bf45ae86736ab3b43d0085e43947945c
8677 #. Author: Catherine Zhang <cxzhang@watson.ibm.com>
8679 #: build/C/man7/ip.7:462
8681 "Set or get the IP options to be sent with every packet from this socket. "
8682 "The arguments are a pointer to a memory buffer containing the options and "
8683 "the option length. The B<setsockopt>(2) call sets the IP options "
8684 "associated with a socket. The maximum option size for IPv4 is 40 bytes. "
8685 "See RFC\\ 791 for the allowed options. When the initial connection request "
8686 "packet for a B<SOCK_STREAM> socket contains IP options, the IP options will "
8687 "be set automatically to the options from the initial packet with routing "
8688 "headers reversed. Incoming packets are not allowed to change options after "
8689 "the connection is established. The processing of all incoming source "
8690 "routing options is disabled by default and can be enabled by using the "
8691 "I<accept_source_route> I</proc> interface. Other options like timestamps "
8692 "are still handled. For datagram sockets, IP options can be only set by the "
8693 "local user. Calling B<getsockopt>(2) with B<IP_OPTIONS> puts the current "
8694 "IP options used for sending into the supplied buffer."
8698 #: build/C/man7/ip.7:462
8700 msgid "B<IP_PKTINFO> (since Linux 2.2)"
8703 #. Precisely: 2.1.68
8705 #: build/C/man7/ip.7:479
8707 "Pass an B<IP_PKTINFO> ancillary message that contains a I<pktinfo> structure "
8708 "that supplies some information about the incoming packet. This only works "
8709 "for datagram oriented sockets. The argument is a flag that tells the socket "
8710 "whether the B<IP_PKTINFO> message should be passed or not. The message "
8711 "itself can only be sent/retrieved as control message with a packet using "
8712 "B<recvmsg>(2) or B<sendmsg>(2)."
8716 #: build/C/man7/ip.7:488
8719 "struct in_pktinfo {\n"
8720 " unsigned int ipi_ifindex; /* Interface index */\n"
8721 " struct in_addr ipi_spec_dst; /* Local address */\n"
8722 " struct in_addr ipi_addr; /* Header Destination\n"
8727 #. FIXME elaborate on that.
8728 #. This field is grossly misnamed
8730 #: build/C/man7/ip.7:513
8732 "I<ipi_ifindex> is the unique index of the interface the packet was received "
8733 "on. I<ipi_spec_dst> is the local address of the packet and I<ipi_addr> is "
8734 "the destination address in the packet header. If B<IP_PKTINFO> is passed to "
8735 "B<sendmsg>(2) and I<ipi_spec_dst> is not zero, then it is used as the local "
8736 "source address for the routing table lookup and for setting up IP source "
8737 "route options. When I<ipi_ifindex> is not zero, the primary local address "
8738 "of the interface specified by the index overwrites I<ipi_spec_dst> for the "
8739 "routing table lookup."
8743 #: build/C/man7/ip.7:513
8745 msgid "B<IP_RECVERR> (since Linux 2.2)"
8748 #. Precisely: 2.1.15
8749 #. or SOL_IP on Linux
8751 #: build/C/man7/ip.7:535
8753 "Enable extended reliable error message passing. When enabled on a datagram "
8754 "socket, all generated errors will be queued in a per-socket error queue. "
8755 "When the user receives an error from a socket operation, the errors can be "
8756 "received by calling B<recvmsg>(2) with the B<MSG_ERRQUEUE> flag set. The "
8757 "I<sock_extended_err> structure describing the error will be passed in an "
8758 "ancillary message with the type B<IP_RECVERR> and the level B<IPPROTO_IP>. "
8759 "This is useful for reliable error handling on unconnected sockets. The "
8760 "received data portion of the error queue contains the error packet."
8764 #: build/C/man7/ip.7:541
8765 msgid "The B<IP_RECVERR> control message contains a I<sock_extended_err> structure:"
8769 #: build/C/man7/ip.7:549
8772 "#define SO_EE_ORIGIN_NONE 0\n"
8773 "#define SO_EE_ORIGIN_LOCAL 1\n"
8774 "#define SO_EE_ORIGIN_ICMP 2\n"
8775 "#define SO_EE_ORIGIN_ICMP6 3\n"
8779 #: build/C/man7/ip.7:560
8782 "struct sock_extended_err {\n"
8783 " uint32_t ee_errno; /* error number */\n"
8784 " uint8_t ee_origin; /* where the error originated */\n"
8785 " uint8_t ee_type; /* type */\n"
8786 " uint8_t ee_code; /* code */\n"
8787 " uint8_t ee_pad;\n"
8788 " uint32_t ee_info; /* additional information */\n"
8789 " uint32_t ee_data; /* other data */\n"
8790 " /* More data may follow */\n"
8795 #: build/C/man7/ip.7:562
8797 msgid "struct sockaddr *SO_EE_OFFENDER(struct sock_extended_err *);\n"
8801 #: build/C/man7/ip.7:585
8803 "I<ee_errno> contains the I<errno> number of the queued error. I<ee_origin> "
8804 "is the origin code of where the error originated. The other fields are "
8805 "protocol-specific. The macro B<SO_EE_OFFENDER> returns a pointer to the "
8806 "address of the network object where the error originated from given a "
8807 "pointer to the ancillary message. If this address is not known, the "
8808 "I<sa_family> member of the I<sockaddr> contains B<AF_UNSPEC> and the other "
8809 "fields of the I<sockaddr> are undefined."
8812 #. FIXME . Is it a good idea to document that? It is a dubious feature.
8817 #. has slightly different semantics. Instead of
8818 #. saving the errors for the next timeout, it passes all incoming
8819 #. errors immediately to the user.
8820 #. This might be useful for very short-lived TCP connections which
8821 #. need fast error handling. Use this option with care:
8822 #. it makes TCP unreliable
8823 #. by not allowing it to recover properly from routing
8824 #. shifts and other normal
8825 #. conditions and breaks the protocol specification.
8827 #: build/C/man7/ip.7:644
8829 "IP uses the I<sock_extended_err> structure as follows: I<ee_origin> is set "
8830 "to B<SO_EE_ORIGIN_ICMP> for errors received as an ICMP packet, or "
8831 "B<SO_EE_ORIGIN_LOCAL> for locally generated errors. Unknown values should "
8832 "be ignored. I<ee_type> and I<ee_code> are set from the type and code fields "
8833 "of the ICMP header. I<ee_info> contains the discovered MTU for B<EMSGSIZE> "
8834 "errors. The message also contains the I<sockaddr_in of the node> caused the "
8835 "error, which can be accessed with the B<SO_EE_OFFENDER> macro. The "
8836 "I<sin_family> field of the B<SO_EE_OFFENDER> address is B<AF_UNSPEC> when "
8837 "the source was unknown. When the error originated from the network, all IP "
8838 "options (B<IP_OPTIONS>, B<IP_TTL>, etc.) enabled on the socket and contained "
8839 "in the error packet are passed as control messages. The payload of the "
8840 "packet causing the error is returned as normal payload. Note that TCP has "
8841 "no error queue; B<MSG_ERRQUEUE> is not permitted on B<SOCK_STREAM> sockets. "
8842 "B<IP_RECVERR> is valid for TCP, but all errors are returned by socket "
8843 "function return or B<SO_ERROR> only."
8847 #: build/C/man7/ip.7:649
8849 "For raw sockets, B<IP_RECVERR> enables passing of all received ICMP errors "
8850 "to the application, otherwise errors are only reported on connected sockets"
8854 #: build/C/man7/ip.7:653
8856 "It sets or retrieves an integer boolean flag. B<IP_RECVERR> defaults to "
8861 #: build/C/man7/ip.7:653
8863 msgid "B<IP_RECVOPTS> (since Linux 2.2)"
8866 #. Precisely: 2.1.15
8868 #: build/C/man7/ip.7:664
8870 "Pass all incoming IP options to the user in a B<IP_OPTIONS> control "
8871 "message. The routing header and other options are already filled in for the "
8872 "local host. Not supported for B<SOCK_STREAM> sockets."
8876 #: build/C/man7/ip.7:664
8878 msgid "B<IP_RECVORIGDSTADDR> (since Linux 2.6.29)"
8881 #. commit e8b2dfe9b4501ed0047459b2756ba26e5a940a69
8883 #: build/C/man7/ip.7:675
8885 "This boolean option enables the B<IP_ORIGDSTADDR> ancillary message in "
8886 "B<recvmsg>(2), in which the kernel returns the original destination address "
8887 "of the datagram being received. The ancillary message contains a I<struct "
8892 #: build/C/man7/ip.7:675
8894 msgid "B<IP_RECVTOS> (since Linux 2.2)"
8897 #. Precisely: 2.1.68
8899 #: build/C/man7/ip.7:684
8901 "If enabled the B<IP_TOS> ancillary message is passed with incoming packets. "
8902 "It contains a byte which specifies the Type of Service/Precedence field of "
8903 "the packet header. Expects a boolean integer flag."
8907 #: build/C/man7/ip.7:684
8909 msgid "B<IP_RECVTTL> (since Linux 2.2)"
8912 #. Precisely: 2.1.68
8914 #: build/C/man7/ip.7:694
8916 "When this flag is set, pass a B<IP_TTL> control message with the time to "
8917 "live field of the received packet as a byte. Not supported for "
8918 "B<SOCK_STREAM> sockets."
8922 #: build/C/man7/ip.7:694
8924 msgid "B<IP_RETOPTS> (since Linux 2.2)"
8927 #. Precisely: 2.1.15
8929 #: build/C/man7/ip.7:701
8931 "Identical to B<IP_RECVOPTS>, but returns raw unprocessed options with "
8932 "timestamp and route record options not filled in for this hop."
8936 #: build/C/man7/ip.7:701
8938 msgid "B<IP_ROUTER_ALERT> (since Linux 2.2)"
8941 #. Precisely: 2.1.68
8943 #: build/C/man7/ip.7:713
8945 "Pass all to-be forwarded packets with the IP Router Alert option set to this "
8946 "socket. Only valid for raw sockets. This is useful, for instance, for "
8947 "user-space RSVP daemons. The tapped packets are not forwarded by the "
8948 "kernel; it is the user's responsibility to send them out again. Socket "
8949 "binding is ignored, such packets are only filtered by protocol. Expects an "
8954 #: build/C/man7/ip.7:713
8956 msgid "B<IP_TOS> (since Linux 1.0)"
8959 #. FIXME elaborate on this
8960 #. Needs CAP_NET_ADMIN
8962 #. Since Linux 2.6.27
8963 #. Author: KOVACS Krisztian <hidden@sch.bme.hu>
8964 #. http://lwn.net/Articles/252545/
8966 #: build/C/man7/ip.7:747
8968 "Set or receive the Type-Of-Service (TOS) field that is sent with every IP "
8969 "packet originating from this socket. It is used to prioritize packets on "
8970 "the network. TOS is a byte. There are some standard TOS flags defined: "
8971 "B<IPTOS_LOWDELAY> to minimize delays for interactive traffic, "
8972 "B<IPTOS_THROUGHPUT> to optimize throughput, B<IPTOS_RELIABILITY> to optimize "
8973 "for reliability, B<IPTOS_MINCOST> should be used for \"filler data\" where "
8974 "slow transmission doesn't matter. At most one of these TOS values can be "
8975 "specified. Other bits are invalid and shall be cleared. Linux sends "
8976 "B<IPTOS_LOWDELAY> datagrams first by default, but the exact behavior depends "
8977 "on the configured queueing discipline. Some high priority levels may "
8978 "require superuser privileges (the B<CAP_NET_ADMIN> capability). The "
8979 "priority can also be set in a protocol independent way by the "
8980 "(B<SOL_SOCKET>, B<SO_PRIORITY>) socket option (see B<socket>(7))."
8984 #: build/C/man7/ip.7:747
8986 msgid "B<IP_TRANSPARENT> (since Linux 2.6.24)"
8989 #. commit f5715aea4564f233767ea1d944b2637a5fd7cd2e
8990 #. This patch introduces the IP_TRANSPARENT socket option: enabling that
8991 #. will make the IPv4 routing omit the non-local source address check on
8992 #. output. Setting IP_TRANSPARENT requires NET_ADMIN capability.
8993 #. http://lwn.net/Articles/252545/
8995 #: build/C/man7/ip.7:764
8997 "Setting this boolean option enables transparent proxying on this socket. "
8998 "This socket option allows the calling application to bind to a nonlocal IP "
8999 "address and operate both as a client and a server with the foreign address "
9000 "as the local endpoint. NOTE: this requires that routing be set up in a way "
9001 "that packets going to the foreign address are routed through the TProxy "
9002 "box. Enabling this socket option requires superuser privileges (the "
9003 "B<CAP_NET_ADMIN> capability)."
9007 #: build/C/man7/ip.7:767
9009 "TProxy redirection with the iptables TPROXY target also requires that this "
9010 "option be set on the redirected socket."
9014 #: build/C/man7/ip.7:767
9016 msgid "B<IP_TTL> (since Linux 1.0)"
9019 #. FIXME Document IP_XFRM_POLICY
9020 #. Since Linux 2.5.48
9021 #. Needs CAP_NET_ADMIN
9023 #: build/C/man7/ip.7:774
9025 "Set or retrieve the current time-to-live field that is used in every packet "
9026 "sent from this socket."
9029 #. FIXME As at 2.6.12, 14 Jun 2005, the following are undocumented:
9033 #: build/C/man7/ip.7:790
9035 "The IP protocol supports a set of I</proc> interfaces to configure some "
9036 "global parameters. The parameters can be accessed by reading or writing "
9037 "files in the directory I</proc/sys/net/ipv4/>. Interfaces described as "
9038 "I<Boolean> take an integer value, with a nonzero value (\"true\") meaning "
9039 "that the corresponding option is enabled, and a zero value (\"false\") "
9040 "meaning that the option is disabled."
9044 #: build/C/man7/ip.7:790
9046 msgid "I<ip_always_defrag> (Boolean; since Linux 2.2.13)"
9050 #: build/C/man7/ip.7:796
9052 "[New with kernel 2.2.13; in earlier kernel versions this feature was "
9053 "controlled at compile time by the B<CONFIG_IP_ALWAYS_DEFRAG> option; this "
9054 "option is not present in 2.4.x and later]"
9058 #: build/C/man7/ip.7:803
9060 "When this boolean flag is enabled (not equal 0), incoming fragments (parts "
9061 "of IP packets that arose when some host between origin and destination "
9062 "decided that the packets were too large and cut them into pieces) will be "
9063 "reassembled (defragmented) before being processed, even if they are about to "
9068 #: build/C/man7/ip.7:810
9070 "Only enable if running either a firewall that is the sole link to your "
9071 "network or a transparent proxy; never ever use it for a normal router or "
9072 "host. Otherwise fragmented communication can be disturbed if the fragments "
9073 "travel over different links. Defragmentation also has a large memory and "
9078 #: build/C/man7/ip.7:814
9080 "This is automagically turned on when masquerading or transparent proxying "
9085 #: build/C/man7/ip.7:814
9087 msgid "I<ip_autoconfig> (since Linux 2.2 to 2.6.17)"
9090 #. Precisely: since 2.1.68
9091 #. FIXME document ip_autoconfig
9093 #: build/C/man7/ip.7:820
9094 msgid "Not documented."
9098 #: build/C/man7/ip.7:820
9100 msgid "I<ip_default_ttl> (integer; default: 64; since Linux 2.2)"
9103 #. Precisely: 2.1.15
9105 #: build/C/man7/ip.7:828
9107 "Set the default time-to-live value of outgoing packets. This can be changed "
9108 "per socket with the B<IP_TTL> option."
9112 #: build/C/man7/ip.7:828
9114 msgid "I<ip_dynaddr> (Boolean; default: disabled; since Linux 2.0.31)"
9118 #: build/C/man7/ip.7:835
9120 "Enable dynamic socket address and masquerading entry rewriting on interface "
9121 "address change. This is useful for dialup interface with changing IP "
9122 "addresses. 0 means no rewriting, 1 turns it on and 2 enables verbose mode."
9126 #: build/C/man7/ip.7:835
9128 msgid "I<ip_forward> (Boolean; default: disabled; since Linux 1.2)"
9132 #: build/C/man7/ip.7:840
9134 "Enable IP forwarding with a boolean flag. IP forwarding can be also set on "
9135 "a per-interface basis."
9139 #: build/C/man7/ip.7:840
9141 msgid "I<ip_local_port_range> (since Linux 2.2)"
9144 #. Precisely: since 2.1.68
9146 #: build/C/man7/ip.7:854
9148 "Contains two integers that define the default local port range allocated to "
9149 "sockets. Allocation starts with the first number and ends with the second "
9150 "number. Note that these should not conflict with the ports used by "
9151 "masquerading (although the case is handled). Also arbitrary choices may "
9152 "cause problems with some firewall packet filters that make assumptions about "
9153 "the local ports in use. First number should be at least greater than 1024, "
9154 "or better, greater than 4096, to avoid clashes with well known ports and to "
9155 "minimize firewall problems."
9159 #: build/C/man7/ip.7:854
9161 msgid "I<ip_no_pmtu_disc> (Boolean; default: disabled; since Linux 2.2)"
9164 #. Precisely: 2.1.15
9166 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
9168 #: build/C/man7/ip.7:866
9170 "If enabled, don't do Path MTU Discovery for TCP sockets by default. Path "
9171 "MTU discovery may fail if misconfigured firewalls (that drop all ICMP "
9172 "packets) or misconfigured interfaces (e.g., a point-to-point link where the "
9173 "both ends don't agree on the MTU) are on the path. It is better to fix the "
9174 "broken routers on the path than to turn off Path MTU Discovery globally, "
9175 "because not doing it incurs a high cost to the network."
9179 #: build/C/man7/ip.7:866
9181 msgid "I<ip_nonlocal_bind> (Boolean; default: disabled; since Linux 2.4)"
9184 #. Precisely: patch-2.4.0-test10
9186 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
9188 #: build/C/man7/ip.7:875
9190 "If set, allows processes to B<bind>(2) to nonlocal IP addresses, which can "
9191 "be quite useful, but may break some applications."
9195 #: build/C/man7/ip.7:875
9197 msgid "I<ip6frag_time> (integer; default: 30)"
9201 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
9203 #: build/C/man7/ip.7:880
9204 msgid "Time in seconds to keep an IPv6 fragment in memory."
9208 #: build/C/man7/ip.7:880
9210 msgid "I<ip6frag_secret_interval> (integer; default: 600)"
9214 #: build/C/man7/ip.7:884
9216 "Regeneration interval (in seconds) of the hash secret (or lifetime for the "
9217 "hash secret) for IPv6 fragments."
9221 #: build/C/man7/ip.7:884
9223 msgid "I<ipfrag_high_thresh> (integer), I<ipfrag_low_thresh> (integer)"
9227 #: build/C/man7/ip.7:891
9229 "If the amount of queued IP fragments reaches I<ipfrag_high_thresh>, the "
9230 "queue is pruned down to I<ipfrag_low_thresh>. Contains an integer with the "
9235 #: build/C/man7/ip.7:891
9240 #. FIXME Document the conf/*/* interfaces
9241 #. FIXME Document the route/* interfaces
9242 #. FIXME document them all
9244 #: build/C/man7/ip.7:898
9245 msgid "See B<arp>(7)."
9249 #. commented out the following because ipchains is obsolete
9251 #. The ioctls to configure firewalling are documented in
9257 #: build/C/man7/ip.7:911
9258 msgid "All ioctls described in B<socket>(7) apply to B<ip>."
9261 #. FIXME Add a discussion of multicasting
9263 #: build/C/man7/ip.7:915
9265 "Ioctls to configure generic device parameters are described in "
9270 #: build/C/man7/ip.7:935
9272 "The user tried to execute an operation without the necessary permissions. "
9273 "These include: sending a packet to a broadcast address without having the "
9274 "B<SO_BROADCAST> flag set; sending a packet via a I<prohibit> route; "
9275 "modifying firewall settings without superuser privileges (the "
9276 "B<CAP_NET_ADMIN> capability); binding to a privileged port without superuser "
9277 "privileges (the B<CAP_NET_BIND_SERVICE> capability)."
9281 #: build/C/man7/ip.7:948
9282 msgid "An connection operation on a nonblocking socket is already in progress."
9286 #: build/C/man7/ip.7:957
9288 "No valid routing table entry matches the destination address. This error "
9289 "can be caused by a ICMP message from a remote router or for the local "
9294 #: build/C/man7/ip.7:963
9296 "Invalid argument passed. For send operations this can be caused by sending "
9297 "to a I<blackhole> route."
9301 #: build/C/man7/ip.7:970
9302 msgid "Datagram is bigger than an MTU on the path and it cannot be fragmented."
9306 #: build/C/man7/ip.7:970
9308 msgid "B<ENOBUFS>, B<ENOMEM>"
9312 #: build/C/man7/ip.7:975
9314 "Not enough free memory. This often means that the memory allocation is "
9315 "limited by the socket buffer limits, not by the system memory, but this is "
9316 "not 100% consistent."
9320 #: build/C/man7/ip.7:993
9322 "User doesn't have permission to set high priority, change configuration, or "
9323 "send signals to the requested process or group."
9327 #: build/C/man7/ip.7:999
9328 msgid "The socket is not configured or an unknown socket type was requested."
9332 #: build/C/man7/ip.7:1006
9334 "Other errors may be generated by the overlaying protocols; see B<tcp>(7), "
9335 "B<raw>(7), B<udp>(7) and B<socket>(7)."
9338 #. IP_PASSSEC is Linux-specific
9339 #. IP_XFRM_POLICY is Linux-specific
9340 #. IP_IPSEC_POLICY is a nonstandard extension, also present on some BSDs
9342 #: build/C/man7/ip.7:1020
9344 "B<IP_FREEBIND>, B<IP_MTU>, B<IP_MTU_DISCOVER>, B<IP_RECVORIGDSTADDR>, "
9345 "B<IP_PKTINFO>, B<IP_RECVERR>, B<IP_ROUTER_ALERT>, and B<IP_TRANSPARENT> are "
9350 #: build/C/man7/ip.7:1029
9352 "Be very careful with the B<SO_BROADCAST> option - it is not privileged in "
9353 "Linux. It is easy to overload the network with careless broadcasts. For "
9354 "new application protocols it is better to use a multicast group instead of "
9355 "broadcasting. Broadcasting is discouraged."
9359 #: build/C/man7/ip.7:1039
9361 "Some other BSD sockets implementations provide B<IP_RCVDSTADDR> and "
9362 "B<IP_RECVIF> socket options to get the destination address and the interface "
9363 "of received datagrams. Linux has the more general B<IP_PKTINFO> for the "
9368 #: build/C/man7/ip.7:1048
9370 "Some BSD sockets implementations also provide an B<IP_RECVTTL> option, but "
9371 "an ancillary message with type B<IP_RECVTTL> is passed with the incoming "
9372 "packet. This is different from the B<IP_TTL> option used in Linux."
9376 #: build/C/man7/ip.7:1054
9378 "Using B<SOL_IP> socket options level isn't portable, BSD-based stacks use "
9379 "B<IPPROTO_IP> level."
9383 #: build/C/man7/ip.7:1067
9385 "For compatibility with Linux 2.0, the obsolete B<socket(AF_INET, "
9386 "SOCK_PACKET, >I<protocol>B<)> syntax is still supported to open a "
9387 "B<packet>(7) socket. This is deprecated and should be replaced by "
9388 "B<socket(AF_PACKET, SOCK_RAW, >I<protocol>B<)> instead. The main difference "
9389 "is the new I<sockaddr_ll> address structure for generic link layer "
9390 "information instead of the old B<sockaddr_pkt>."
9394 #: build/C/man7/ip.7:1072
9396 "The ioctls to configure IP-specific interface options and ARP tables are not "
9401 #: build/C/man7/ip.7:1076
9403 "Some versions of glibc forget to declare I<in_pktinfo>. Workaround "
9404 "currently is to copy it into your program from this man page."
9408 #. This man page was written by Andi Kleen.
9410 #: build/C/man7/ip.7:1086
9412 "Receiving the original destination address with B<MSG_ERRQUEUE> in "
9413 "I<msg_name> by B<recvmsg>(2) does not work in some 2.2 kernels."
9417 #: build/C/man7/ip.7:1097
9419 "B<recvmsg>(2), B<sendmsg>(2), B<byteorder>(3), B<ipfw>(4), "
9420 "B<capabilities>(7), B<netlink>(7), B<raw>(7), B<socket>(7), B<tcp>(7), "
9425 #: build/C/man7/ip.7:1099
9426 msgid "RFC\\ 791 for the original IP specification."
9430 #: build/C/man7/ip.7:1101
9431 msgid "RFC\\ 1122 for the IPv4 host requirements."
9434 #. FIXME autobind INADDR REUSEADDR
9436 #: build/C/man7/ip.7:1104
9437 msgid "RFC\\ 1812 for the IPv4 router requirements."
9441 #: build/C/man7/ipv6.7:7
9447 #: build/C/man7/ipv6.7:7
9453 #: build/C/man7/ipv6.7:10
9454 msgid "ipv6, AF_INET6 - Linux IPv6 protocol implementation"
9458 #: build/C/man7/ipv6.7:16
9459 msgid "I<tcp6_socket>B< = socket(AF_INET6, SOCK_STREAM, 0);>"
9463 #: build/C/man7/ipv6.7:18
9464 msgid "I<raw6_socket>B< = socket(AF_INET6, SOCK_RAW, >I<protocol>B<);>"
9468 #: build/C/man7/ipv6.7:20
9469 msgid "I<udp6_socket>B< = socket(AF_INET6, SOCK_DGRAM, >I<protocol>B<);>"
9473 #: build/C/man7/ipv6.7:27
9475 "Linux 2.2 optionally implements the Internet Protocol, version 6. This man "
9476 "page contains a description of the IPv6 basic API as implemented by the "
9477 "Linux kernel and glibc 2.1. The interface is based on the BSD sockets "
9478 "interface; see B<socket>(7)."
9482 #: build/C/man7/ipv6.7:32
9484 "The IPv6 API aims to be mostly compatible with the IPv4 API (see B<ip>(7)). "
9485 "Only differences are described in this man page."
9489 #: build/C/man7/ipv6.7:44
9491 "To bind an B<AF_INET6> socket to any process, the local address should be "
9492 "copied from the I<in6addr_any> variable which has I<in6_addr> type. In "
9493 "static initializations, B<IN6ADDR_ANY_INIT> may also be used, which expands "
9494 "to a constant expression. Both of them are in network byte order."
9498 #: build/C/man7/ipv6.7:51
9500 "The IPv6 loopback address (::1) is available in the global "
9501 "I<in6addr_loopback> variable. For initializations, B<IN6ADDR_LOOPBACK_INIT> "
9506 #: build/C/man7/ipv6.7:58
9508 "IPv4 connections can be handled with the v6 API by using the v4-mapped-on-v6 "
9509 "address type; thus a program only needs to support this API type to support "
9510 "both protocols. This is handled transparently by the address handling "
9511 "functions in the C library."
9515 #: build/C/man7/ipv6.7:63
9517 "IPv4 and IPv6 share the local port space. When you get an IPv4 connection "
9518 "or packet to a IPv6 socket, its source address will be mapped to v6 and it "
9519 "will be mapped to v6."
9523 #: build/C/man7/ipv6.7:73
9526 "struct sockaddr_in6 {\n"
9527 " sa_family_t sin6_family; /* AF_INET6 */\n"
9528 " in_port_t sin6_port; /* port number */\n"
9529 " uint32_t sin6_flowinfo; /* IPv6 flow information */\n"
9530 " struct in6_addr sin6_addr; /* IPv6 address */\n"
9531 " uint32_t sin6_scope_id; /* Scope ID (new in 2.4) */\n"
9536 #: build/C/man7/ipv6.7:77
9539 "struct in6_addr {\n"
9540 " unsigned char s6_addr[16]; /* IPv6 address */\n"
9545 #: build/C/man7/ipv6.7:99
9547 "I<sin6_family> is always set to B<AF_INET6>; I<sin6_port> is the protocol "
9548 "port (see I<sin_port> in B<ip>(7)); I<sin6_flowinfo> is the IPv6 flow "
9549 "identifier; I<sin6_addr> is the 128-bit IPv6 address. I<sin6_scope_id> is "
9550 "an ID depending on the scope of the address. It is new in Linux 2.4. Linux "
9551 "only supports it for link scope addresses, in that case I<sin6_scope_id> "
9552 "contains the interface index (see B<netdevice>(7))"
9556 #: build/C/man7/ipv6.7:105
9558 "IPv6 supports several address types: unicast to address a single host, "
9559 "multicast to address a group of hosts, anycast to address the nearest member "
9560 "of a group of hosts (not implemented in Linux), IPv4-on-IPv6 to address a "
9561 "IPv4 host, and other reserved address types."
9565 #: build/C/man7/ipv6.7:111
9567 "The address notation for IPv6 is a group of 8 4-digit hexadecimal numbers, "
9568 "separated with a \\(aq:\\(aq. \\&\"::\" stands for a string of 0 bits. "
9569 "Special addresses are ::1 for loopback and ::FFFF:E<lt>IPv4 addressE<gt> for "
9570 "IPv4-mapped-on-IPv6."
9574 #: build/C/man7/ipv6.7:113
9575 msgid "The port space of IPv6 is shared with IPv4."
9579 #: build/C/man7/ipv6.7:121
9581 "IPv6 supports some protocol-specific socket options that can be set with "
9582 "B<setsockopt>(2) and read with B<getsockopt>(2). The socket option level "
9583 "for IPv6 is B<IPPROTO_IPV6>. A boolean integer flag is zero when it is "
9584 "false, otherwise true."
9588 #: build/C/man7/ipv6.7:121
9590 msgid "B<IPV6_ADDRFORM>"
9594 #: build/C/man7/ipv6.7:135
9596 "Turn an B<AF_INET6> socket into a socket of a different address family. "
9597 "Only B<AF_INET> is currently supported for that. It is only allowed for "
9598 "IPv6 sockets that are connected and bound to a v4-mapped-on-v6 address. The "
9599 "argument is a pointer to an integer containing B<AF_INET>. This is useful "
9600 "to pass v4-mapped sockets as file descriptors to programs that don't know "
9601 "how to deal with the IPv6 API."
9605 #: build/C/man7/ipv6.7:135
9607 msgid "B<IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP>"
9610 #. FIXME IPV6_CHECKSUM is not documented, and probably should be
9611 #. FIXME IPV6_JOIN_ANYCAST is not documented, and probably should be
9612 #. FIXME IPV6_LEAVE_ANYCAST is not documented, and probably should be
9613 #. FIXME IPV6_RECVPKTINFO is not documented, and probably should be
9614 #. FIXME IPV6_2292PKTINFO is not documented, and probably should be
9615 #. FIXME there are probably many other IPV6_* socket options that
9616 #. should be documented
9618 #: build/C/man7/ipv6.7:148
9620 "Control membership in multicast groups. Argument is a pointer to a I<struct "
9621 "ipv6_mreq> structure."
9625 #: build/C/man7/ipv6.7:148
9631 #: build/C/man7/ipv6.7:154
9633 "Set the MTU to be used for the socket. The MTU is limited by the device MTU "
9634 "or the path MTU when path MTU discovery is enabled. Argument is a pointer "
9639 #: build/C/man7/ipv6.7:154
9641 msgid "B<IPV6_MTU_DISCOVER>"
9645 #: build/C/man7/ipv6.7:162
9647 "Control path-MTU discovery on the socket. See B<IP_MTU_DISCOVER> in "
9648 "B<ip>(7) for details."
9652 #: build/C/man7/ipv6.7:162
9654 msgid "B<IPV6_MULTICAST_HOPS>"
9658 #: build/C/man7/ipv6.7:169
9660 "Set the multicast hop limit for the socket. Argument is a pointer to an "
9661 "integer. -1 in the value means use the route default, otherwise it should "
9662 "be between 0 and 255."
9666 #: build/C/man7/ipv6.7:169
9668 msgid "B<IPV6_MULTICAST_IF>"
9672 #: build/C/man7/ipv6.7:181
9674 "Set the device for outgoing multicast packets on the socket. This is only "
9675 "allowed for B<SOCK_DGRAM> and B<SOCK_RAW> socket. The argument is a pointer "
9676 "to an interface index (see B<netdevice>(7)) in an integer."
9680 #: build/C/man7/ipv6.7:181
9682 msgid "B<IPV6_MULTICAST_LOOP>"
9686 #: build/C/man7/ipv6.7:185
9688 "Control whether the socket sees multicast packets that it has send itself. "
9689 "Argument is a pointer to boolean."
9693 #: build/C/man7/ipv6.7:185
9695 msgid "B<IPV6_PKTINFO>"
9699 #: build/C/man7/ipv6.7:196
9701 "Set delivery of the B<IPV6_PKTINFO> control message on incoming datagrams. "
9702 "Only allowed for B<SOCK_DGRAM> or B<SOCK_RAW> sockets. Argument is a "
9703 "pointer to a boolean value in an integer."
9707 #: build/C/man7/ipv6.7:199
9709 "B<IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, "
9714 #: build/C/man7/ipv6.7:224
9716 "Set delivery of control messages for incoming datagrams containing extension "
9717 "headers from the received packet. B<IPV6_RTHDR> delivers the routing "
9718 "header, B<IPV6_AUTHHDR> delivers the authentication header, B<IPV6_DSTOPTS> "
9719 "delivers the destination options, B<IPV6_HOPOPTS> delivers the hop options, "
9720 "B<IPV6_FLOWINFO> delivers an integer containing the flow ID, "
9721 "B<IPV6_HOPLIMIT> delivers an integer containing the hop count of the "
9722 "packet. The control messages have the same type as the socket option. All "
9723 "these header options can also be set for outgoing packets by putting the "
9724 "appropriate control message into the control buffer of B<sendmsg>(2). Only "
9725 "allowed for B<SOCK_DGRAM> or B<SOCK_RAW> sockets. Argument is a pointer to "
9730 #: build/C/man7/ipv6.7:224
9732 msgid "B<IPV6_RECVERR>"
9736 #: build/C/man7/ipv6.7:233
9738 "Control receiving of asynchronous error options. See B<IP_RECVERR> in "
9739 "B<ip>(7) for details. Argument is a pointer to boolean."
9743 #: build/C/man7/ipv6.7:233
9745 msgid "B<IPV6_ROUTER_ALERT>"
9749 #: build/C/man7/ipv6.7:246
9751 "Pass forwarded packets containing a router alert hop-by-hop option to this "
9752 "socket. Only allowed for SOCK_RAW sockets. The tapped packets are not "
9753 "forwarded by the kernel, it is the user's responsibility to send them out "
9754 "again. Argument is a pointer to an integer. A positive integer indicates a "
9755 "router alert option value to intercept. Packets carrying a router alert "
9756 "option with a value field containing this integer will be delivered to the "
9757 "socket. A negative integer disables delivery of packets with router alert "
9758 "options to this socket."
9762 #: build/C/man7/ipv6.7:246
9764 msgid "B<IPV6_UNICAST_HOPS>"
9768 #: build/C/man7/ipv6.7:252
9770 "Set the unicast hop limit for the socket. Argument is a pointer to an "
9771 "integer. -1 in the value means use the route default, otherwise it should "
9772 "be between 0 and 255."
9776 #: build/C/man7/ipv6.7:252
9778 msgid "B<IPV6_V6ONLY> (since Linux 2.4.21 and 2.6)"
9783 #: build/C/man7/ipv6.7:259
9785 "If this flag is set to true (nonzero), then the socket is restricted to "
9786 "sending and receiving IPv6 packets only. In this case, an IPv4 and an IPv6 "
9787 "application can bind to a single port at the same time."
9791 #: build/C/man7/ipv6.7:263
9793 "If this flag is set to false (zero), then the socket can be used to send and "
9794 "receive packets to and from an IPv6 address or an IPv4-mapped IPv6 address."
9798 #: build/C/man7/ipv6.7:265
9799 msgid "The argument is a pointer to a boolean value in an integer."
9802 #. FLOWLABEL_MGR, FLOWINFO_SEND
9804 #: build/C/man7/ipv6.7:270
9806 "The default value for this flag is defined by the contents of the file "
9807 "I</proc/sys/net/ipv6/bindv6only>. The default value for that file is 0 "
9812 #: build/C/man7/ipv6.7:275
9814 "The older I<libinet6> libc5 based IPv6 API implementation for Linux is not "
9815 "described here and may vary in details."
9819 #: build/C/man7/ipv6.7:291
9821 "Linux 2.4 will break binary compatibility for the I<sockaddr_in6> for 64-bit "
9822 "hosts by changing the alignment of I<in6_addr> and adding an additional "
9823 "I<sin6_scope_id> field. The kernel interfaces stay compatible, but a "
9824 "program including I<sockaddr_in6> or I<in6_addr> into other structures may "
9825 "not be. This is not a problem for 32-bit hosts like i386."
9829 #: build/C/man7/ipv6.7:299
9831 "The I<sin6_flowinfo> field is new in Linux 2.4. It is transparently "
9832 "passed/read by the kernel when the passed address length contains it. Some "
9833 "programs that pass a longer address buffer and then check the outgoing "
9834 "address length may break."
9838 #: build/C/man7/ipv6.7:309
9840 "The I<sockaddr_in6> structure is bigger than the generic I<sockaddr>. "
9841 "Programs that assume that all address types can be stored safely in a "
9842 "I<struct sockaddr> need to be changed to use I<struct sockaddr_storage> for "
9847 #: build/C/man7/ipv6.7:314
9849 "The IPv6 extended API as in RFC\\ 2292 is currently only partly implemented; "
9850 "although the 2.2 kernel has near complete support for receiving options, the "
9851 "macros for generating IPv6 options are missing in glibc 2.1."
9855 #: build/C/man7/ipv6.7:316
9856 msgid "IPSec support for EH and AH headers is missing."
9860 #: build/C/man7/ipv6.7:318
9861 msgid "Flow label management is not complete and not documented here."
9865 #: build/C/man7/ipv6.7:320
9866 msgid "This man page is not complete."
9870 #: build/C/man7/ipv6.7:323
9871 msgid "B<cmsg>(3), B<ip>(7)"
9875 #: build/C/man7/ipv6.7:326
9876 msgid "RFC\\ 2553: IPv6 BASIC API. Linux tries to be compliant to this."
9880 #: build/C/man7/ipv6.7:328
9881 msgid "RFC\\ 2460: IPv6 specification."
9885 #: build/C/man7/netdevice.7:12
9891 #: build/C/man7/netdevice.7:12
9897 #: build/C/man7/netdevice.7:15
9898 msgid "netdevice - Low level access to Linux network devices"
9902 #: build/C/man7/netdevice.7:17
9903 msgid "B<#include E<lt>sys/ioctl.hE<gt>>"
9907 #: build/C/man7/netdevice.7:19
9908 msgid "B<#include E<lt>net/if.hE<gt>>"
9912 #: build/C/man7/netdevice.7:22
9914 "This man page describes the sockets interface which is used to configure "
9919 #: build/C/man7/netdevice.7:29
9921 "Linux supports some standard ioctls to configure network devices. They can "
9922 "be used on any socket's file descriptor regardless of the family or type. "
9923 "They pass an I<ifreq> structure:"
9927 #: build/C/man7/netdevice.7:50
9931 " char ifr_name[IFNAMSIZ]; /* Interface name */\n"
9933 " struct sockaddr ifr_addr;\n"
9934 " struct sockaddr ifr_dstaddr;\n"
9935 " struct sockaddr ifr_broadaddr;\n"
9936 " struct sockaddr ifr_netmask;\n"
9937 " struct sockaddr ifr_hwaddr;\n"
9938 " short ifr_flags;\n"
9939 " int ifr_ifindex;\n"
9940 " int ifr_metric;\n"
9942 " struct ifmap ifr_map;\n"
9943 " char ifr_slave[IFNAMSIZ];\n"
9944 " char ifr_newname[IFNAMSIZ];\n"
9945 " char *ifr_data;\n"
9951 #: build/C/man7/netdevice.7:58
9955 " int ifc_len; /* size of buffer */\n"
9957 " char *ifc_buf; /* buffer address */\n"
9958 " struct ifreq *ifc_req; /* array of structures */\n"
9964 #: build/C/man7/netdevice.7:66
9966 "Normally, the user specifies which device to affect by setting I<ifr_name> "
9967 "to the name of the interface. All other members of the structure may share "
9972 #: build/C/man7/netdevice.7:74
9974 "If an ioctl is marked as privileged then using it requires an effective user "
9975 "ID of 0 or the B<CAP_NET_ADMIN> capability. If this is not the case "
9976 "B<EPERM> will be returned."
9980 #: build/C/man7/netdevice.7:74
9982 msgid "B<SIOCGIFNAME>"
9986 #: build/C/man7/netdevice.7:82
9988 "Given the I<ifr_ifindex>, return the name of the interface in I<ifr_name>. "
9989 "This is the only ioctl which returns its result in I<ifr_name>."
9993 #: build/C/man7/netdevice.7:82
9995 msgid "B<SIOCGIFINDEX>"
9999 #: build/C/man7/netdevice.7:86
10000 msgid "Retrieve the interface index of the interface into I<ifr_ifindex>."
10004 #: build/C/man7/netdevice.7:86
10006 msgid "B<SIOCGIFFLAGS>, B<SIOCSIFFLAGS>"
10009 #. type: Plain text
10010 #: build/C/man7/netdevice.7:91
10012 "Get or set the active flag word of the device. I<ifr_flags> contains a bit "
10013 "mask of the following values:"
10017 #: build/C/man7/netdevice.7:95
10019 msgid "Device flags\n"
10023 #: build/C/man7/netdevice.7:96
10025 msgid "IFF_UP:Interface is running.\n"
10029 #: build/C/man7/netdevice.7:97
10031 msgid "IFF_BROADCAST:Valid broadcast address set.\n"
10035 #: build/C/man7/netdevice.7:98
10037 msgid "IFF_DEBUG:Internal debugging flag.\n"
10041 #: build/C/man7/netdevice.7:99
10043 msgid "IFF_LOOPBACK:Interface is a loopback interface.\n"
10047 #: build/C/man7/netdevice.7:100
10049 msgid "IFF_POINTOPOINT:Interface is a point-to-point link.\n"
10053 #: build/C/man7/netdevice.7:101
10055 msgid "IFF_RUNNING:Resources allocated.\n"
10059 #: build/C/man7/netdevice.7:102
10061 msgid "IFF_NOARP:No arp protocol, L2 destination address not set.\n"
10065 #: build/C/man7/netdevice.7:103
10067 msgid "IFF_PROMISC:Interface is in promiscuous mode.\n"
10071 #: build/C/man7/netdevice.7:104
10073 msgid "IFF_NOTRAILERS:Avoid use of trailers.\n"
10077 #: build/C/man7/netdevice.7:105
10079 msgid "IFF_ALLMULTI:Receive all multicast packets.\n"
10083 #: build/C/man7/netdevice.7:106
10085 msgid "IFF_MASTER:Master of a load balancing bundle.\n"
10089 #: build/C/man7/netdevice.7:107
10091 msgid "IFF_SLAVE:Slave of a load balancing bundle.\n"
10095 #: build/C/man7/netdevice.7:108
10097 msgid "IFF_MULTICAST:Supports multicast\n"
10101 #: build/C/man7/netdevice.7:109
10103 msgid "IFF_PORTSEL:Is able to select media type via ifmap.\n"
10107 #: build/C/man7/netdevice.7:110
10109 msgid "IFF_AUTOMEDIA:Auto media selection active.\n"
10113 #: build/C/man7/netdevice.7:111
10115 msgid "IFF_DYNAMIC:T{\n"
10119 #: build/C/man7/netdevice.7:112
10121 msgid "The addresses are lost when the interface goes down.\n"
10125 #: build/C/man7/netdevice.7:113
10131 #: build/C/man7/netdevice.7:114
10133 msgid "IFF_LOWER_UP:Driver signals L1 up (since Linux 2.6.17)\n"
10137 #: build/C/man7/netdevice.7:115
10139 msgid "IFF_DORMANT:Driver signals dormant (since Linux 2.6.17)\n"
10143 #: build/C/man7/netdevice.7:116
10145 msgid "IFF_ECHO:Echo sent packets (since Linux 2.6.25)\n"
10148 #. type: Plain text
10149 #: build/C/man7/netdevice.7:122
10151 "Setting the active flag word is a privileged operation, but any process may "
10156 #: build/C/man7/netdevice.7:122
10158 msgid "B<SIOCGIFMETRIC>, B<SIOCSIFMETRIC>"
10161 #. type: Plain text
10162 #: build/C/man7/netdevice.7:131
10164 "Get or set the metric of the device using I<ifr_metric>. This is currently "
10165 "not implemented; it sets I<ifr_metric> to 0 if you attempt to read it and "
10166 "returns B<EOPNOTSUPP> if you attempt to set it."
10170 #: build/C/man7/netdevice.7:131
10172 msgid "B<SIOCGIFMTU>, B<SIOCSIFMTU>"
10175 #. type: Plain text
10176 #: build/C/man7/netdevice.7:138
10178 "Get or set the MTU (Maximum Transfer Unit) of a device using I<ifr_mtu>. "
10179 "Setting the MTU is a privileged operation. Setting the MTU to too small "
10180 "values may cause kernel crashes."
10184 #: build/C/man7/netdevice.7:138
10186 msgid "B<SIOCGIFHWADDR>, B<SIOCSIFHWADDR>"
10189 #. type: Plain text
10190 #: build/C/man7/netdevice.7:149
10192 "Get or set the hardware address of a device using I<ifr_hwaddr>. The "
10193 "hardware address is specified in a struct I<sockaddr>. I<sa_family> "
10194 "contains the ARPHRD_* device type, I<sa_data> the L2 hardware address "
10195 "starting from byte 0. Setting the hardware address is a privileged "
10200 #: build/C/man7/netdevice.7:149
10202 msgid "B<SIOCSIFHWBROADCAST>"
10205 #. type: Plain text
10206 #: build/C/man7/netdevice.7:154
10208 "Set the hardware broadcast address of a device from I<ifr_hwaddr>. This is "
10209 "a privileged operation."
10213 #: build/C/man7/netdevice.7:154
10215 msgid "B<SIOCGIFMAP>, B<SIOCSIFMAP>"
10218 #. type: Plain text
10219 #: build/C/man7/netdevice.7:159
10221 "Get or set the interface's hardware parameters using I<ifr_map>. Setting "
10222 "the parameters is a privileged operation."
10225 #. type: Plain text
10226 #: build/C/man7/netdevice.7:170
10230 " unsigned long mem_start;\n"
10231 " unsigned long mem_end;\n"
10232 " unsigned short base_addr;\n"
10233 " unsigned char irq;\n"
10234 " unsigned char dma;\n"
10235 " unsigned char port;\n"
10239 #. type: Plain text
10240 #: build/C/man7/netdevice.7:175
10242 "The interpretation of the ifmap structure depends on the device driver and "
10243 "the architecture."
10247 #: build/C/man7/netdevice.7:175
10249 msgid "B<SIOCADDMULTI>, B<SIOCDELMULTI>"
10252 #. type: Plain text
10253 #: build/C/man7/netdevice.7:184
10255 "Add an address to or delete an address from the device's link layer "
10256 "multicast filters using I<ifr_hwaddr>. These are privileged operations. "
10257 "See also B<packet>(7) for an alternative."
10261 #: build/C/man7/netdevice.7:184
10263 msgid "B<SIOCGIFTXQLEN>, B<SIOCSIFTXQLEN>"
10266 #. type: Plain text
10267 #: build/C/man7/netdevice.7:189
10269 "Get or set the transmit queue length of a device using I<ifr_qlen>. Setting "
10270 "the transmit queue length is a privileged operation."
10274 #: build/C/man7/netdevice.7:189
10276 msgid "B<SIOCSIFNAME>"
10279 #. type: Plain text
10280 #: build/C/man7/netdevice.7:198
10282 "Changes the name of the interface specified in I<ifr_name> to "
10283 "I<ifr_newname>. This is a privileged operation. It is only allowed when "
10284 "the interface is not up."
10288 #: build/C/man7/netdevice.7:198
10290 msgid "B<SIOCGIFCONF>"
10293 #. Slaving isn't supported in 2.2
10296 #. .BR SIOCGIFSLAVE ", " SIOCSIFSLAVE
10297 #. Get or set the slave device using
10299 #. Setting the slave device is a privileged operation.
10301 #. FIXME add amateur radio stuff.
10302 #. type: Plain text
10303 #: build/C/man7/netdevice.7:238
10305 "Return a list of interface (transport layer) addresses. This currently "
10306 "means only addresses of the B<AF_INET> (IPv4) family for compatibility. The "
10307 "user passes a I<ifconf> structure as argument to the ioctl. It contains a "
10308 "pointer to an array of I<ifreq> structures in I<ifc_req> and its length in "
10309 "bytes in I<ifc_len>. The kernel fills the ifreqs with all current L3 "
10310 "interface addresses that are running: I<ifr_name> contains the interface "
10311 "name (eth0:1 etc.), I<ifr_addr> the address. The kernel returns with the "
10312 "actual length in I<ifc_len>. If I<ifc_len> is equal to the original length "
10313 "the buffer probably has overflowed and you should retry with a bigger buffer "
10314 "to get all addresses. When no error occurs the ioctl returns 0; otherwise "
10315 "-1. Overflow is not an error."
10318 #. type: Plain text
10319 #: build/C/man7/netdevice.7:244
10321 "Most protocols support their own ioctls to configure protocol-specific "
10322 "interface options. See the protocol man pages for a description. For "
10323 "configuring IP addresses see B<ip>(7)."
10326 #. type: Plain text
10327 #: build/C/man7/netdevice.7:247
10329 "In addition some devices support private ioctls. These are not described "
10333 #. type: Plain text
10334 #: build/C/man7/netdevice.7:252
10335 msgid "Strictly speaking, B<SIOCGIFCONF> is IP specific and belongs in B<ip>(7)."
10338 #. type: Plain text
10339 #: build/C/man7/netdevice.7:257
10341 "The names of interfaces with no addresses or that don't have the "
10342 "B<IFF_RUNNING> flag set can be found via I</proc/net/dev>."
10345 #. type: Plain text
10346 #: build/C/man7/netdevice.7:262
10348 "Local IPv6 IP addresses can be found via I</proc/net> or via "
10352 #. type: Plain text
10353 #: build/C/man7/netdevice.7:268
10355 "glibc 2.1 is missing the I<ifr_newname> macro in I<E<lt>net/if.hE<gt>>. Add "
10356 "the following to your program as a workaround:"
10359 #. type: Plain text
10360 #: build/C/man7/netdevice.7:274
10363 "#ifndef ifr_newname\n"
10364 "#define ifr_newname ifr_ifru.ifru_slave\n"
10368 #. type: Plain text
10369 #: build/C/man7/netdevice.7:281
10370 msgid "B<proc>(5), B<capabilities>(7), B<ip>(7), B<rtnetlink>(7)"
10374 #: build/C/man5/networks.5:24
10380 #: build/C/man5/networks.5:24
10386 #: build/C/man5/networks.5:24
10391 #. type: Plain text
10392 #: build/C/man5/networks.5:27
10393 msgid "networks - network name information"
10396 #. type: Plain text
10397 #: build/C/man5/networks.5:33
10399 "The file I</etc/networks> is a plain ASCII file that describes known DARPA "
10400 "networks and symbolic names for these networks. Each line represents a "
10401 "network and has the following structure:"
10404 #. type: Plain text
10405 #: build/C/man5/networks.5:36
10406 msgid "I<name number aliases ...>"
10409 #. type: Plain text
10410 #: build/C/man5/networks.5:44
10412 "where the fields are delimited by spaces or tabs. Empty lines are ignored. "
10413 "The hash character (B<#>) indicates the start of a comment: this character, "
10414 "and the remaining characters up to the end of the current line, are ignored "
10415 "by library functions that process the file."
10418 #. type: Plain text
10419 #: build/C/man5/networks.5:46 build/C/man5/protocols.5:58
10420 msgid "The field descriptions are:"
10424 #: build/C/man5/networks.5:47
10429 #. type: Plain text
10430 #: build/C/man5/networks.5:52
10432 "The symbolic name for the network. Network names can contain any printable "
10433 "characters execept white-space characters or the comment character."
10437 #: build/C/man5/networks.5:52 build/C/man5/protocols.5:66
10442 #. type: Plain text
10443 #: build/C/man5/networks.5:57
10445 "The official number for this network in numbers-and-dots notation (see "
10446 "B<inet>(3)). The trailing \".0\" (for the host component of the network "
10447 "address) may be omitted."
10451 #: build/C/man5/networks.5:57 build/C/man5/protocols.5:70 build/C/man5/services.5:120
10456 #. type: Plain text
10457 #: build/C/man5/networks.5:60
10458 msgid "Optional aliases for the network."
10461 #. type: Plain text
10462 #: build/C/man5/networks.5:69
10464 "This file is read by the B<route>(8) and B<netstat>(8) utilities. Only "
10465 "Class A, B or C networks are supported, partitioned networks (i.e., "
10466 "network/26 or network/28) are not supported by this facility."
10469 #. type: Plain text
10470 #: build/C/man5/networks.5:73
10471 msgid "The networks definition file."
10474 #. type: Plain text
10475 #: build/C/man5/networks.5:79
10477 "B<getnetbyaddr>(3), B<getnetbyname>(3), B<getnetent>(3), B<netstat>(8), "
10482 #: build/C/man8/nscd.8:23
10488 #: build/C/man8/nscd.8:23
10493 #. type: Plain text
10494 #: build/C/man8/nscd.8:26
10495 msgid "/usr/sbin/nscd - name service cache daemon"
10498 #. type: Plain text
10499 #: build/C/man8/nscd.8:34
10501 "Nscd is a daemon that provides a cache for the most common name service "
10502 "requests. The default configuration file, I</etc/nscd.conf>, determines the "
10503 "behavior of the cache daemon. See B<nscd.conf>(5)."
10506 #. type: Plain text
10507 #: build/C/man8/nscd.8:47
10509 "Nscd provides caching for accesses of the B<passwd>(5), B<group>(5), and "
10510 "B<hosts>(5) databases through standard libc interfaces, such as "
10511 "B<getpwnam>(3), B<getpwuid>(3), B<getgrnam>(3), B<getgrgid>(3), "
10512 "B<gethostbyname>(3), and others."
10515 #. type: Plain text
10516 #: build/C/man8/nscd.8:56
10518 "There are two caches for each database: a positive one for items found, and "
10519 "a negative one for items not found. Each cache has a separate TTL "
10520 "(time-to-live) period for its data. Note that the shadow file is "
10521 "specifically not cached. B<getspnam>(3) calls remain uncached as a result."
10525 #: build/C/man8/nscd.8:56
10531 #: build/C/man8/nscd.8:57
10536 #. type: Plain text
10537 #: build/C/man8/nscd.8:60
10538 msgid "will give you a list with all options and what they do."
10541 #. type: Plain text
10542 #: build/C/man8/nscd.8:83
10544 "The daemon will try to watch for changes in configuration files appropriate "
10545 "for each database (e.g. I</etc/passwd> for the I<passwd> database or "
10546 "I</etc/hosts> and I</etc/resolv.conf> for the I<hosts> database), and flush "
10547 "the cache when these are changed. However, this will happen only after a "
10548 "short delay (unless the B<inotify>(7) mechanism is available and glibc 2.9 "
10549 "or later is available), and this auto-detection does not cover configuration "
10550 "files required by nonstandard NSS modules, if any are specified in "
10551 "I</etc/nsswitch.conf>. In that case, you need to run the following command "
10552 "after changing the configuration file of the database so that B<nscd> "
10553 "invalidates its cache:"
10556 #. type: Plain text
10557 #: build/C/man8/nscd.8:85
10559 msgid " $ B<nscd -i> I<E<lt>databaseE<gt>>\n"
10564 #. was written by Thorsten Kukuk and Ulrich Drepper.
10565 #. type: Plain text
10566 #: build/C/man8/nscd.8:91
10567 msgid "B<nscd.conf>(5), B<nsswitch.conf>(5)"
10571 #: build/C/man5/nscd.conf.5:20
10577 #: build/C/man5/nscd.conf.5:20
10582 #. type: Plain text
10583 #: build/C/man5/nscd.conf.5:23
10584 msgid "/etc/nscd.conf - name service cache daemon configuration file"
10587 #. type: Plain text
10588 #: build/C/man5/nscd.conf.5:36
10590 "The file I</etc/nscd.conf> is read from B<nscd>(8) at startup. Each line "
10591 "specifies either an attribute and a value, or an attribute, service, and a "
10592 "value. Fields are separated either by SPACE or TAB characters. A "
10593 "\\(aq#\\(aq (number sign) indicates the beginning of a comment; following "
10594 "characters, up to the end of the line, are not interpreted by nscd."
10597 #. type: Plain text
10598 #: build/C/man5/nscd.conf.5:38
10599 msgid "Valid services are I<passwd>, I<group>, or I<hosts>."
10602 #. type: Plain text
10603 #: build/C/man5/nscd.conf.5:41
10604 msgid "B<logfile> I<debug-file-name>"
10607 #. type: Plain text
10608 #: build/C/man5/nscd.conf.5:43
10609 msgid "Specifies name of the file to which debug info should be written."
10612 #. type: Plain text
10613 #: build/C/man5/nscd.conf.5:47
10614 msgid "B<debug-level> I<value>"
10617 #. type: Plain text
10618 #: build/C/man5/nscd.conf.5:49
10619 msgid "Sets the desired debug level."
10622 #. type: Plain text
10623 #: build/C/man5/nscd.conf.5:53
10624 msgid "B<threads> I<number>"
10627 #. type: Plain text
10628 #: build/C/man5/nscd.conf.5:57
10630 "This is the number of threads that are started to wait for requests. At "
10631 "least five threads will always be created."
10634 #. type: Plain text
10635 #: build/C/man5/nscd.conf.5:61
10636 msgid "B<server-user> I<user>"
10639 #. type: Plain text
10640 #: build/C/man5/nscd.conf.5:65
10642 "If this option is set, nscd will run as this user and not as root. If a "
10643 "separate cache for every user is used (-S parameter), this option is "
10647 #. type: Plain text
10648 #: build/C/man5/nscd.conf.5:70
10649 msgid "B<enable-cache> I<service> I<E<lt>yes|noE<gt>>"
10652 #. type: Plain text
10653 #: build/C/man5/nscd.conf.5:74
10654 msgid "Enables or disables the specified I<service> cache."
10657 #. type: Plain text
10658 #: build/C/man5/nscd.conf.5:79
10659 msgid "B<positive-time-to-live> I<service> I<value>"
10662 #. type: Plain text
10663 #: build/C/man5/nscd.conf.5:87
10665 "Sets the TTL (time-to-live) for positive entries (successful queries) in "
10666 "the specified cache for I<service>. I<Value> is in seconds. Larger values "
10667 "increase cache hit rates and reduce mean response times, but increase "
10668 "problems with cache coherence."
10671 #. type: Plain text
10672 #: build/C/man5/nscd.conf.5:92
10673 msgid "B<negative-time-to-live> I<service> I<value>"
10676 #. type: Plain text
10677 #: build/C/man5/nscd.conf.5:102
10679 "Sets the TTL (time-to-live) for negative entries (unsuccessful queries) in "
10680 "the specified cache for I<service>. I<Value> is in seconds. Can result in "
10681 "significant performance improvements if there are several files owned by "
10682 "UIDs (user IDs) not in system databases (for example untarring the linux "
10683 "kernel sources as root); should be kept small to reduce cache coherency "
10687 #. type: Plain text
10688 #: build/C/man5/nscd.conf.5:107
10689 msgid "B<suggested-size> I<service> I<value>"
10692 #. type: Plain text
10693 #: build/C/man5/nscd.conf.5:111
10695 "This is the internal hash table size, I<value> should remain a prime number "
10696 "for optimum efficiency."
10699 #. type: Plain text
10700 #: build/C/man5/nscd.conf.5:116
10701 msgid "B<check-files> I<service> I<E<lt>yes|noE<gt>>"
10704 #. type: Plain text
10705 #: build/C/man5/nscd.conf.5:125
10707 "Enables or disables checking the file belonging to the specified I<service> "
10708 "for changes. The files are I</etc/passwd>, I</etc/group>, and "
10712 #. type: Plain text
10713 #: build/C/man5/nscd.conf.5:129
10714 msgid "B<max-threads> I<threads>"
10717 #. type: Plain text
10718 #: build/C/man5/nscd.conf.5:131
10719 msgid "Specifies the maximum number of threads to be started."
10722 #. type: Plain text
10723 #: build/C/man5/nscd.conf.5:135
10724 msgid "B<stat-user> I<username>"
10727 #. type: Plain text
10728 #: build/C/man5/nscd.conf.5:137
10729 msgid "Specifies the user who is allowed to request statistics."
10732 #. type: Plain text
10733 #: build/C/man5/nscd.conf.5:142
10734 msgid "B<reload-count> unlimited | I<number>"
10737 #. type: Plain text
10738 #: build/C/man5/nscd.conf.5:146
10740 "Limit on the number of times a cached entry gets reloaded without being used "
10741 "before it gets removed. The default is 5."
10744 #. type: Plain text
10745 #: build/C/man5/nscd.conf.5:150
10746 msgid "B<paranoia> I<E<lt>yes|noE<gt>>"
10749 #. type: Plain text
10750 #: build/C/man5/nscd.conf.5:152
10751 msgid "Enabling paranoia mode causes nscd to restart itself periodically."
10754 #. type: Plain text
10755 #: build/C/man5/nscd.conf.5:156
10756 msgid "B<restart-interval> I<time>"
10759 #. type: Plain text
10760 #: build/C/man5/nscd.conf.5:163
10762 "Sets the restart interval to I<time> seconds if periodic restart is enabled "
10763 "by enabling B<paranoia> mode."
10766 #. type: Plain text
10767 #: build/C/man5/nscd.conf.5:168
10768 msgid "B<persistent> I<service> I<E<lt>yes|noE<gt>>"
10771 #. type: Plain text
10772 #: build/C/man5/nscd.conf.5:174
10774 "Keep the content of the cache for I<service> over server restarts; useful "
10775 "when B<paranoia> mode is set."
10778 #. type: Plain text
10779 #: build/C/man5/nscd.conf.5:179
10780 msgid "B<shared> I<service> I<E<lt>yes|noE<gt>>"
10783 #. type: Plain text
10784 #: build/C/man5/nscd.conf.5:185
10786 "The memory mapping of the nscd databases for I<service> is shared with the "
10787 "clients so that they can directly search in them instead of having to ask "
10788 "the daemon over the socket each time a lookup is performed."
10793 #. was written by Thorsten Kukuk and Ulrich Drepper.
10794 #. type: Plain text
10795 #: build/C/man5/nscd.conf.5:191
10800 #: build/C/man5/nsswitch.conf.5:27
10802 msgid "NSSWITCH.CONF"
10806 #: build/C/man5/nsswitch.conf.5:27
10811 #. type: Plain text
10812 #: build/C/man5/nsswitch.conf.5:30
10813 msgid "nsswitch.conf - System Databases and Name Service Switch configuration file"
10816 #. type: Plain text
10817 #: build/C/man5/nsswitch.conf.5:38
10819 "Various functions in the C Library need to be configured to work correctly "
10820 "in the local environment. Traditionally, this was done by using files "
10821 "(e.g., I</etc/passwd>), but other nameservices (like the Network Information "
10822 "Service (NIS) and the Domain Name Service (DNS)) became popular, and were "
10823 "hacked into the C library, usually with a fixed search order."
10826 #. type: Plain text
10827 #: build/C/man5/nsswitch.conf.5:49
10829 "The Linux libc5 with NYS support and the GNU C Library 2.x (libc.so.6) "
10830 "contain a cleaner solution of this problem. It is designed after a method "
10831 "used by Sun Microsystems in the C library of Solaris 2. We follow their "
10832 "name and call this scheme \"Name Service Switch\" (NSS). The sources for "
10833 "the \"databases\" and their lookup order are specified in the "
10834 "I</etc/nsswitch.conf> file."
10837 #. type: Plain text
10838 #: build/C/man5/nsswitch.conf.5:51
10839 msgid "The following databases are available in the NSS:"
10842 #. type: Plain text
10843 #: build/C/man5/nsswitch.conf.5:56
10844 msgid "Mail aliases, used by B<sendmail>(8). Presently ignored."
10847 #. type: Plain text
10848 #: build/C/man5/nsswitch.conf.5:59
10849 msgid "Ethernet numbers."
10852 #. type: Plain text
10853 #: build/C/man5/nsswitch.conf.5:64
10854 msgid "Groups of users, used by B<getgrent>(3) functions."
10857 #. type: Plain text
10858 #: build/C/man5/nsswitch.conf.5:69
10859 msgid "Host names and numbers, used by B<gethostbyname>(3) and similar functions."
10862 #. type: Plain text
10863 #: build/C/man5/nsswitch.conf.5:73
10865 "Network wide list of hosts and users, used for access rules. C libraries "
10866 "before glibc 2.1 only support netgroups over NIS."
10869 #. type: Plain text
10870 #: build/C/man5/nsswitch.conf.5:78
10871 msgid "Network names and numbers, used by B<getnetent>(3) functions."
10874 #. type: Plain text
10875 #: build/C/man5/nsswitch.conf.5:83
10876 msgid "User passwords, used by B<getpwent>(3) functions."
10879 #. type: Plain text
10880 #: build/C/man5/nsswitch.conf.5:88
10881 msgid "Network protocols, used by B<getprotoent>(3) functions."
10885 #: build/C/man5/nsswitch.conf.5:88
10887 msgid "B<publickey>"
10890 #. type: Plain text
10891 #: build/C/man5/nsswitch.conf.5:91
10892 msgid "Public and secret keys for Secure_RPC used by NFS and NIS+."
10895 #. type: Plain text
10896 #: build/C/man5/nsswitch.conf.5:96
10898 "Remote procedure call names and numbers, used by B<getrpcbyname>(3) and "
10899 "similar functions."
10902 #. type: Plain text
10903 #: build/C/man5/nsswitch.conf.5:101
10904 msgid "Network services, used by B<getservent>(3) functions."
10907 #. type: Plain text
10908 #: build/C/man5/nsswitch.conf.5:105
10909 msgid "Shadow user passwords, used by B<getspnam>(3)."
10912 #. type: Plain text
10913 #: build/C/man5/nsswitch.conf.5:111
10915 "An example I</etc/nsswitch.conf> (namely, the default used when "
10916 "I</etc/nsswitch.conf> is missing):"
10920 #: build/C/man5/nsswitch.conf.5:113
10925 #. type: Plain text
10926 #: build/C/man5/nsswitch.conf.5:116 build/C/man5/nsswitch.conf.5:119 build/C/man5/nsswitch.conf.5:122
10931 #: build/C/man5/nsswitch.conf.5:116
10937 #: build/C/man5/nsswitch.conf.5:119
10943 #: build/C/man5/nsswitch.conf.5:123
10948 #. type: Plain text
10949 #: build/C/man5/nsswitch.conf.5:126
10950 msgid "dns [!UNAVAIL=return] files"
10954 #: build/C/man5/nsswitch.conf.5:126
10959 #. type: Plain text
10960 #: build/C/man5/nsswitch.conf.5:129 build/C/man5/nsswitch.conf.5:132 build/C/man5/nsswitch.conf.5:135 build/C/man5/nsswitch.conf.5:138 build/C/man5/nsswitch.conf.5:141
10961 msgid "nis [NOTFOUND=return] files"
10965 #: build/C/man5/nsswitch.conf.5:129
10971 #: build/C/man5/nsswitch.conf.5:132
10977 #: build/C/man5/nsswitch.conf.5:135
10983 #: build/C/man5/nsswitch.conf.5:138
10988 #. type: Plain text
10989 #: build/C/man5/nsswitch.conf.5:146
10991 "The first column is the database. The rest of the line specifies how the "
10992 "lookup process works. You can specify the way it works for each database "
10996 #. type: Plain text
10997 #: build/C/man5/nsswitch.conf.5:149
10999 "The configuration specification for each database can contain two different "
11004 #: build/C/man5/nsswitch.conf.5:150
11006 msgid "* The service specification like `files', `db', or `nis'."
11010 #: build/C/man5/nsswitch.conf.5:152
11012 msgid "* The reaction on lookup result like `[NOTFOUND=return]'."
11015 #. type: Plain text
11016 #: build/C/man5/nsswitch.conf.5:160
11018 "For libc5 with NYS, the allowed service specifications are `files', `nis', "
11019 "and `nisplus'. For hosts, you could specify `dns' as extra service, for "
11020 "passwd and group `compat', but not for shadow."
11023 #. type: Plain text
11024 #: build/C/man5/nsswitch.conf.5:173
11026 "For glibc, you must have a file called B</lib/libnss_SERVICE.so.>I<X> for "
11027 "every SERVICE you are using. On a standard installation, you could use "
11028 "`files', `db', `nis', and `nisplus'. For hosts, you could specify `dns' as "
11029 "extra service, for passwd, group, and shadow `compat'. These services will "
11030 "not be used by libc5 with NYS. The version number I<X> is 1 for glibc 2.0 "
11031 "and 2 for glibc 2.1."
11034 #. type: Plain text
11035 #: build/C/man5/nsswitch.conf.5:179
11037 "The second item in the specification gives the user much finer control on "
11038 "the lookup process. Action items are placed between two service names and "
11039 "are written within brackets. The general form is"
11042 #. type: Plain text
11043 #: build/C/man5/nsswitch.conf.5:181
11044 msgid "`[' ( `!'? STATUS `=' ACTION )+ `]'"
11047 #. type: Plain text
11048 #: build/C/man5/nsswitch.conf.5:183
11053 #: build/C/man5/nsswitch.conf.5:185
11055 msgid "STATUS =E<gt> success | notfound | unavail | tryagain"
11059 #: build/C/man5/nsswitch.conf.5:187
11061 msgid "ACTION =E<gt> return | continue"
11064 #. type: Plain text
11065 #: build/C/man5/nsswitch.conf.5:195
11067 "The case of the keywords is insignificant. The STATUS values are the "
11068 "results of a call to a lookup function of a specific service. They mean:"
11072 #: build/C/man5/nsswitch.conf.5:195
11077 #. type: Plain text
11078 #: build/C/man5/nsswitch.conf.5:200
11080 "No error occurred and the wanted entry is returned. The default action for "
11081 "this is `return'."
11085 #: build/C/man5/nsswitch.conf.5:200
11087 msgid "B<notfound>"
11090 #. type: Plain text
11091 #: build/C/man5/nsswitch.conf.5:204
11093 "The lookup process succeeded, but the needed value was not found. The "
11094 "default action is `continue'."
11098 #: build/C/man5/nsswitch.conf.5:204
11103 #. type: Plain text
11104 #: build/C/man5/nsswitch.conf.5:212
11106 "The service is permanently unavailable. This can either mean the needed "
11107 "file is not available, or, for DNS, the server is not available or does not "
11108 "allow queries. The default action is `continue'."
11112 #: build/C/man5/nsswitch.conf.5:212
11114 msgid "B<tryagain>"
11117 #. type: Plain text
11118 #: build/C/man5/nsswitch.conf.5:218
11120 "The service is temporarily unavailable. This could mean a file is locked or "
11121 "a server currently cannot accept more connections. The default action is "
11126 #: build/C/man5/nsswitch.conf.5:218
11128 msgid "Interaction with +/- syntax (compat mode)"
11131 #. type: Plain text
11132 #: build/C/man5/nsswitch.conf.5:246
11134 "Linux libc5 without NYS does not have the name service switch but does allow "
11135 "the user some policy control. In I</etc/passwd> you could have entries of "
11136 "the form +user or +@netgroup (include the specified user from the NIS passwd "
11137 "map), -user or -@netgroup (exclude the specified user), and + (include every "
11138 "user, except the excluded ones, from the NIS passwd map). Since most people "
11139 "only put a + at the end of I</etc/passwd> to include everything from NIS, "
11140 "the switch provides a faster alternative for this case (`passwd: files nis') "
11141 "which doesn't require the single + entry in I</etc/passwd>, I</etc/group>, "
11142 "and I</etc/shadow>. If this is not sufficient, the NSS `compat' service "
11143 "provides full +/- semantics. By default, the source is `nis', but this may "
11144 "be overridden by specifying `nisplus' as source for the pseudo-databases "
11145 "B<passwd_compat>, B<group_compat> and B<shadow_compat>. These "
11146 "pseudo-databases are only available in GNU C Library."
11149 #. type: Plain text
11150 #: build/C/man5/nsswitch.conf.5:251
11152 "A service named SERVICE is implemented by a shared object library named "
11153 "B<libnss_SERVICE.so.>I<X> that resides in I</lib>."
11156 #. type: Plain text
11157 #: build/C/man5/nsswitch.conf.5:255
11158 msgid "configuration file"
11162 #: build/C/man5/nsswitch.conf.5:255
11164 msgid "B</lib/libnss_compat.so.>I<X>"
11167 #. type: Plain text
11168 #: build/C/man5/nsswitch.conf.5:258
11169 msgid "implements `compat' source for glibc2"
11173 #: build/C/man5/nsswitch.conf.5:258
11175 msgid "B</lib/libnss_db.so.>I<X>"
11178 #. type: Plain text
11179 #: build/C/man5/nsswitch.conf.5:261
11180 msgid "implements `db' source for glibc2"
11184 #: build/C/man5/nsswitch.conf.5:261
11186 msgid "B</lib/libnss_dns.so.>I<X>"
11189 #. type: Plain text
11190 #: build/C/man5/nsswitch.conf.5:264
11191 msgid "implements `dns' source for glibc2"
11195 #: build/C/man5/nsswitch.conf.5:264
11197 msgid "B</lib/libnss_files.so.>I<X>"
11200 #. type: Plain text
11201 #: build/C/man5/nsswitch.conf.5:267
11202 msgid "implements `files' source for glibc2"
11206 #: build/C/man5/nsswitch.conf.5:267
11208 msgid "B</lib/libnss_hesiod.so.>I<X>"
11211 #. type: Plain text
11212 #: build/C/man5/nsswitch.conf.5:270
11213 msgid "implements `hesiod' source for glibc2"
11217 #: build/C/man5/nsswitch.conf.5:270
11219 msgid "B</lib/libnss_nis.so.>I<X>"
11222 #. type: Plain text
11223 #: build/C/man5/nsswitch.conf.5:273
11224 msgid "implements `nis' source for glibc2"
11228 #: build/C/man5/nsswitch.conf.5:273
11230 msgid "I</lib/libnss_nisplus.so.2>"
11233 #. type: Plain text
11234 #: build/C/man5/nsswitch.conf.5:276
11235 msgid "implements `nisplus' source for glibc 2.1"
11238 #. type: Plain text
11239 #: build/C/man5/nsswitch.conf.5:282
11241 "Within each process that uses B<nsswitch.conf>, the entire file is read only "
11242 "once; if the file is later changed, the process will continue using the old "
11246 #. type: Plain text
11247 #: build/C/man5/nsswitch.conf.5:286
11249 "With Solaris, it isn't possible to link programs using the NSS Service "
11250 "statically. With Linux, this is no problem."
11254 #: build/C/man7/packet.7:7
11260 #: build/C/man7/packet.7:7 build/C/man7/x25.7:7
11265 #. type: Plain text
11266 #: build/C/man7/packet.7:10
11267 msgid "packet, AF_PACKET - packet interface on device level."
11270 #. type: Plain text
11271 #: build/C/man7/packet.7:13
11273 msgid "B<#include E<lt>sys/socket.hE<gt>>\n"
11276 #. type: Plain text
11277 #: build/C/man7/packet.7:15
11279 msgid "B<#include E<lt>netpacket/packet.hE<gt>>\n"
11282 #. type: Plain text
11283 #: build/C/man7/packet.7:17
11285 msgid "B<#include E<lt>net/ethernet.hE<gt> /* the L2 protocols */>\n"
11288 #. type: Plain text
11289 #: build/C/man7/packet.7:19
11292 "B<packet_socket = socket(AF_PACKET, int >I<socket_type>B<, int "
11293 ">I<protocol>B<);>\n"
11296 #. type: Plain text
11297 #: build/C/man7/packet.7:25
11299 "Packet sockets are used to receive or send raw packets at the device driver "
11300 "(OSI Layer 2) level. They allow the user to implement protocol modules in "
11301 "user space on top of the physical layer."
11304 #. type: Plain text
11305 #: build/C/man7/packet.7:47
11307 "The I<socket_type> is either B<SOCK_RAW> for raw packets including the link "
11308 "level header or B<SOCK_DGRAM> for cooked packets with the link level header "
11309 "removed. The link level header information is available in a common format "
11310 "in a I<sockaddr_ll>. I<protocol> is the IEEE 802.3 protocol number in "
11311 "network order. See the I<E<lt>linux/if_ether.hE<gt>> include file for a "
11312 "list of allowed protocols. When protocol is set to B<htons(ETH_P_ALL)> then "
11313 "all protocols are received. All incoming packets of that protocol type will "
11314 "be passed to the packet socket before they are passed to the protocols "
11315 "implemented in the kernel."
11318 #. type: Plain text
11319 #: build/C/man7/packet.7:51
11321 "Only processes with effective UID 0 or the B<CAP_NET_RAW> capability may "
11322 "open packet sockets."
11325 #. type: Plain text
11326 #: build/C/man7/packet.7:69
11328 "B<SOCK_RAW> packets are passed to and from the device driver without any "
11329 "changes in the packet data. When receiving a packet, the address is still "
11330 "parsed and passed in a standard I<sockaddr_ll> address structure. When "
11331 "transmitting a packet, the user supplied buffer should contain the physical "
11332 "layer header. That packet is then queued unmodified to the network driver "
11333 "of the interface defined by the destination address. Some device drivers "
11334 "always add other headers. B<SOCK_RAW> is similar to but not compatible with "
11335 "the obsolete B<AF_INET/SOCK_PACKET> of Linux 2.0."
11338 #. type: Plain text
11339 #: build/C/man7/packet.7:79
11341 "B<SOCK_DGRAM> operates on a slightly higher level. The physical header is "
11342 "removed before the packet is passed to the user. Packets sent through a "
11343 "B<SOCK_DGRAM> packet socket get a suitable physical layer header based on "
11344 "the information in the I<sockaddr_ll> destination address before they are "
11348 #. type: Plain text
11349 #: build/C/man7/packet.7:92
11351 "By default all packets of the specified protocol type are passed to a packet "
11352 "socket. To only get packets from a specific interface use B<bind>(2) "
11353 "specifying an address in a I<struct sockaddr_ll> to bind the packet socket "
11354 "to an interface. Only the I<sll_protocol> and the I<sll_ifindex> address "
11355 "fields are used for purposes of binding."
11358 #. type: Plain text
11359 #: build/C/man7/packet.7:96
11360 msgid "The B<connect>(2) operation is not supported on packet sockets."
11363 #. type: Plain text
11364 #: build/C/man7/packet.7:105
11366 "When the B<MSG_TRUNC> flag is passed to B<recvmsg>(2), B<recv>(2), "
11367 "B<recvfrom>(2) the real length of the packet on the wire is always "
11368 "returned, even when it is longer than the buffer."
11372 #: build/C/man7/packet.7:105
11374 msgid "Address Types"
11377 #. type: Plain text
11378 #: build/C/man7/packet.7:107
11379 msgid "The sockaddr_ll is a device independent physical layer address."
11382 #. type: Plain text
11383 #: build/C/man7/packet.7:119
11386 "struct sockaddr_ll {\n"
11387 " unsigned short sll_family; /* Always AF_PACKET */\n"
11388 " unsigned short sll_protocol; /* Physical layer protocol */\n"
11389 " int sll_ifindex; /* Interface number */\n"
11390 " unsigned short sll_hatype; /* Header type */\n"
11391 " unsigned char sll_pkttype; /* Packet type */\n"
11392 " unsigned char sll_halen; /* Length of address */\n"
11393 " unsigned char sll_addr[8]; /* Physical layer address */\n"
11397 #. type: Plain text
11398 #: build/C/man7/packet.7:158
11400 "I<sll_protocol> is the standard ethernet protocol type in network order as "
11401 "defined in the I<E<lt>linux/if_ether.hE<gt>> include file. It defaults to "
11402 "the socket's protocol. I<sll_ifindex> is the interface index of the "
11403 "interface (see B<netdevice>(7)); 0 matches any interface (only permitted for "
11404 "binding). I<sll_hatype> is a ARP type as defined in the "
11405 "I<E<lt>linux/if_arp.hE<gt>> include file. I<sll_pkttype> contains the "
11406 "packet type. Valid types are B<PACKET_HOST> for a packet addressed to the "
11407 "local host, B<PACKET_BROADCAST> for a physical layer broadcast packet, "
11408 "B<PACKET_MULTICAST> for a packet sent to a physical layer multicast address, "
11409 "B<PACKET_OTHERHOST> for a packet to some other host that has been caught by "
11410 "a device driver in promiscuous mode, and B<PACKET_OUTGOING> for a packet "
11411 "originated from the local host that is looped back to a packet socket. "
11412 "These types make only sense for receiving. I<sll_addr> and I<sll_halen> "
11413 "contain the physical layer (e.g., IEEE 802.3) address and its length. The "
11414 "exact interpretation depends on the device."
11417 #. type: Plain text
11418 #: build/C/man7/packet.7:174
11420 "When you send packets it is enough to specify I<sll_family>, I<sll_addr>, "
11421 "I<sll_halen>, I<sll_ifindex>. The other fields should be 0. I<sll_hatype> "
11422 "and I<sll_pkttype> are set on received packets for your information. For "
11423 "bind only I<sll_protocol> and I<sll_ifindex> are used."
11426 #. type: Plain text
11427 #: build/C/man7/packet.7:189
11429 "Packet sockets can be used to configure physical layer multicasting and "
11430 "promiscuous mode. It works by calling B<setsockopt>(2) on a packet socket "
11431 "for B<SOL_PACKET> and one of the options B<PACKET_ADD_MEMBERSHIP> to add a "
11432 "binding or B<PACKET_DROP_MEMBERSHIP> to drop it. They both expect a "
11433 "B<packet_mreq> structure as argument:"
11436 #. type: Plain text
11437 #: build/C/man7/packet.7:198
11440 "struct packet_mreq {\n"
11441 " int mr_ifindex; /* interface index */\n"
11442 " unsigned short mr_type; /* action */\n"
11443 " unsigned short mr_alen; /* address length */\n"
11444 " unsigned char mr_address[8]; /* physical layer address */\n"
11448 #. type: Plain text
11449 #: build/C/man7/packet.7:219
11451 "B<mr_ifindex> contains the interface index for the interface whose status "
11452 "should be changed. The B<mr_type> parameter specifies which action to "
11453 "perform. B<PACKET_MR_PROMISC> enables receiving all packets on a shared "
11454 "medium (often known as \"promiscuous mode\"), B<PACKET_MR_MULTICAST> binds "
11455 "the socket to the physical layer multicast group specified in B<mr_address> "
11456 "and B<mr_alen>, and B<PACKET_MR_ALLMULTI> sets the socket up to receive all "
11457 "multicast packets arriving at the interface."
11460 #. type: Plain text
11461 #: build/C/man7/packet.7:225
11463 "In addition the traditional ioctls B<SIOCSIFFLAGS>, B<SIOCADDMULTI>, "
11464 "B<SIOCDELMULTI> can be used for the same purpose."
11467 #. FIXME Document SIOCGSTAMPNS
11468 #. type: Plain text
11469 #: build/C/man7/packet.7:231
11471 "B<SIOCGSTAMP> can be used to receive the timestamp of the last received "
11472 "packet. Argument is a I<struct timeval.>"
11475 #. type: Plain text
11476 #: build/C/man7/packet.7:237
11478 "In addition all standard ioctls defined in B<netdevice>(7) and B<socket>(7) "
11479 "are valid on packet sockets."
11483 #: build/C/man7/packet.7:237 build/C/man7/raw.7:127 build/C/man7/tcp.7:1079 build/C/man7/udp.7:97
11485 msgid "Error Handling"
11488 #. type: Plain text
11489 #: build/C/man7/packet.7:241
11491 "Packet sockets do no error handling other than errors occurred while passing "
11492 "the packet to the device driver. They don't have the concept of a pending "
11496 #. type: Plain text
11497 #: build/C/man7/packet.7:245
11498 msgid "Unknown multicast group address passed."
11501 #. type: Plain text
11502 #: build/C/man7/packet.7:248
11503 msgid "User passed invalid memory address."
11506 #. type: Plain text
11507 #: build/C/man7/packet.7:251 build/C/man7/raw.7:151
11508 msgid "Invalid argument."
11511 #. type: Plain text
11512 #: build/C/man7/packet.7:254
11513 msgid "Packet is bigger than interface MTU."
11517 #: build/C/man7/packet.7:254
11519 msgid "B<ENETDOWN>"
11522 #. type: Plain text
11523 #: build/C/man7/packet.7:257
11524 msgid "Interface is not up."
11527 #. type: Plain text
11528 #: build/C/man7/packet.7:260
11529 msgid "Not enough memory to allocate the packet."
11532 #. type: Plain text
11533 #: build/C/man7/packet.7:263
11534 msgid "Unknown device name or interface index specified in interface address."
11537 #. type: Plain text
11538 #: build/C/man7/packet.7:266
11539 msgid "No packet received."
11542 #. type: Plain text
11543 #: build/C/man7/packet.7:269
11544 msgid "No interface address passed."
11548 #: build/C/man7/packet.7:269
11553 #. type: Plain text
11554 #: build/C/man7/packet.7:272
11555 msgid "Interface address contained an invalid interface index."
11558 #. type: Plain text
11559 #: build/C/man7/packet.7:275
11560 msgid "User has insufficient privileges to carry out this operation."
11563 #. type: Plain text
11564 #: build/C/man7/packet.7:277
11565 msgid "In addition other errors may be generated by the low-level driver."
11568 #. type: Plain text
11569 #: build/C/man7/packet.7:282
11571 "B<AF_PACKET> is a new feature in Linux 2.2. Earlier Linux versions "
11572 "supported only B<SOCK_PACKET>."
11575 #. type: Plain text
11576 #: build/C/man7/packet.7:287
11578 "The include file I<E<lt>netpacket/packet.hE<gt>> is present since glibc "
11579 "2.1. Older systems need:"
11582 #. type: Plain text
11583 #: build/C/man7/packet.7:293
11586 "#include E<lt>asm/types.hE<gt>\n"
11587 "#include E<lt>linux/if_packet.hE<gt>\n"
11588 "#include E<lt>linux/if_ether.hE<gt> /* The L2 protocols */\n"
11591 #. type: Plain text
11592 #: build/C/man7/packet.7:303
11594 "For portable programs it is suggested to use B<AF_PACKET> via B<pcap>(3); "
11595 "although this only covers a subset of the B<AF_PACKET> features."
11598 #. type: Plain text
11599 #: build/C/man7/packet.7:324
11601 "The B<SOCK_DGRAM> packet sockets make no attempt to create or parse the IEEE "
11602 "802.2 LLC header for a IEEE 802.3 frame. When B<ETH_P_802_3> is specified "
11603 "as protocol for sending the kernel creates the 802.3 frame and fills out the "
11604 "length field; the user has to supply the LLC header to get a fully "
11605 "conforming packet. Incoming 802.3 packets are not multiplexed on the "
11606 "DSAP/SSAP protocol fields; instead they are supplied to the user as protocol "
11607 "B<ETH_P_802_2> with the LLC header prepended. It is thus not possible to "
11608 "bind to B<ETH_P_802_3>; bind to B<ETH_P_802_2> instead and do the protocol "
11609 "multiplex yourself. The default for sending is the standard Ethernet DIX "
11610 "encapsulation with the protocol filled in."
11613 #. type: Plain text
11614 #: build/C/man7/packet.7:326
11615 msgid "Packet sockets are not subject to the input or output firewall chains."
11618 #. type: Plain text
11619 #: build/C/man7/packet.7:336
11621 "In Linux 2.0, the only way to get a packet socket was by calling "
11622 "B<socket(AF_INET, SOCK_PACKET, >I<protocol>B<)>. This is still supported "
11623 "but strongly deprecated. The main difference between the two methods is "
11624 "that B<SOCK_PACKET> uses the old I<struct sockaddr_pkt> to specify an "
11625 "interface, which doesn't provide physical layer independence."
11628 #. type: Plain text
11629 #: build/C/man7/packet.7:344
11632 "struct sockaddr_pkt {\n"
11633 " unsigned short spkt_family;\n"
11634 " unsigned char spkt_device[14];\n"
11635 " unsigned short spkt_protocol;\n"
11639 #. type: Plain text
11640 #: build/C/man7/packet.7:356
11642 "I<spkt_family> contains the device type, I<spkt_protocol> is the IEEE 802.3 "
11643 "protocol type as defined in I<E<lt>sys/if_ether.hE<gt>> and I<spkt_device> "
11644 "is the device name as a null-terminated string, for example, eth0."
11647 #. type: Plain text
11648 #: build/C/man7/packet.7:358
11649 msgid "This structure is obsolete and should not be used in new code."
11652 #. type: Plain text
11653 #: build/C/man7/packet.7:362
11655 "glibc 2.1 does not have a define for B<SOL_PACKET>. The suggested "
11656 "workaround is to use:"
11659 #. type: Plain text
11660 #: build/C/man7/packet.7:368
11663 "#ifndef SOL_PACKET\n"
11664 "#define SOL_PACKET 263\n"
11668 #. type: Plain text
11669 #: build/C/man7/packet.7:373
11671 "This is fixed in later glibc versions and also does not occur on libc5 "
11675 #. type: Plain text
11676 #: build/C/man7/packet.7:375
11677 msgid "The IEEE 802.2/803.3 LLC handling could be considered as a bug."
11680 #. type: Plain text
11681 #: build/C/man7/packet.7:377
11682 msgid "Socket filters are not documented."
11686 #. This man page was written by Andi Kleen with help from Matthew Wilcox.
11687 #. AF_PACKET in Linux 2.2 was implemented
11688 #. by Alexey Kuznetsov, based on code by Alan Cox and others.
11689 #. type: Plain text
11690 #: build/C/man7/packet.7:389
11692 "The B<MSG_TRUNC> B<recvmsg>(2) extension is an ugly hack and should be "
11693 "replaced by a control message. There is currently no way to get the "
11694 "original destination address of packets via B<SOCK_DGRAM>."
11697 #. type: Plain text
11698 #: build/C/man7/packet.7:396
11700 "B<socket>(2), B<pcap>(3), B<capabilities>(7), B<ip>(7), B<raw>(7), "
11704 #. type: Plain text
11705 #: build/C/man7/packet.7:398
11706 msgid "RFC\\ 894 for the standard IP Ethernet encapsulation."
11709 #. type: Plain text
11710 #: build/C/man7/packet.7:400
11711 msgid "RFC\\ 1700 for the IEEE 802.3 IP encapsulation."
11714 #. type: Plain text
11715 #: build/C/man7/packet.7:404
11716 msgid "The I<E<lt>linux/if_ether.hE<gt>> include file for physical layer protocols."
11720 #: build/C/man5/protocols.5:28
11726 #: build/C/man5/protocols.5:28
11731 #. type: Plain text
11732 #: build/C/man5/protocols.5:31
11733 msgid "protocols - protocols definition file"
11736 #. type: Plain text
11737 #: build/C/man5/protocols.5:39
11739 "This file is a plain ASCII file, describing the various DARPA internet "
11740 "protocols that are available from the TCP/IP subsystem. It should be "
11741 "consulted instead of using the numbers in the ARPA include files, or, even "
11742 "worse, just guessing them. These numbers will occur in the protocol field "
11743 "of any IP header."
11746 #. .. by the DDN Network Information Center.
11747 #. type: Plain text
11748 #: build/C/man5/protocols.5:45
11750 "Keep this file untouched since changes would result in incorrect IP "
11751 "packages. Protocol numbers and names are specified by the IANA (Internet "
11752 "Assigned Numbers Authority)."
11755 #. type: Plain text
11756 #: build/C/man5/protocols.5:47
11757 msgid "Each line is of the following format:"
11760 #. type: Plain text
11761 #: build/C/man5/protocols.5:50
11762 msgid "I<protocol number aliases ...>"
11765 #. type: Plain text
11766 #: build/C/man5/protocols.5:56
11768 "where the fields are delimited by spaces or tabs. Empty lines are ignored. "
11769 "If a line contains a hash mark (#), the hash mark and the part of the line "
11770 "following it are ignored."
11774 #: build/C/man5/protocols.5:58 build/C/man5/services.5:109
11776 msgid "I<protocol>"
11779 #. type: Plain text
11780 #: build/C/man5/protocols.5:66
11781 msgid "the native name for the protocol. For example I<ip>, I<tcp>, or I<udp>."
11784 #. type: Plain text
11785 #: build/C/man5/protocols.5:70
11787 "the official number for this protocol as it will appear within the IP "
11791 #. type: Plain text
11792 #: build/C/man5/protocols.5:73
11793 msgid "optional aliases for the protocol."
11796 #. The following is not true as at glibc 2.8 (a line with a comma is
11797 #. ignored by getservent()); it's not clear if/when it was ever true.
11798 #. As a backward compatibility feature, the slash (/) between the
11802 #. name can in fact be either a slash or a comma (,).
11803 #. Use of the comma in
11804 #. modern installations is deprecated.
11805 #. type: Plain text
11806 #: build/C/man5/protocols.5:76 build/C/man5/services.5:165
11808 "This file might be distributed over a network using a network-wide naming "
11809 "service like Yellow Pages/NIS or BIND/Hesiod."
11812 #. type: Plain text
11813 #: build/C/man5/protocols.5:80
11814 msgid "The protocols definition file."
11817 #. type: Plain text
11818 #: build/C/man5/protocols.5:82
11819 msgid "B<getprotoent>(3)"
11822 #. type: Plain text
11823 #: build/C/man5/protocols.5:84
11824 msgid "http://www.iana.org/assignments/protocol-numbers"
11828 #: build/C/man7/raw.7:9
11833 #. type: Plain text
11834 #: build/C/man7/raw.7:12
11835 msgid "raw, SOCK_RAW - Linux IPv4 raw sockets"
11838 #. type: Plain text
11839 #: build/C/man7/raw.7:18
11840 msgid "B<raw_socket = socket(AF_INET, SOCK_RAW, int >I<protocol>B<);>"
11843 #. type: Plain text
11844 #: build/C/man7/raw.7:22
11846 "Raw sockets allow new IPv4 protocols to be implemented in user space. A raw "
11847 "socket receives or sends the raw datagram not including link level headers."
11850 #. type: Plain text
11851 #: build/C/man7/raw.7:28
11853 "The IPv4 layer generates an IP header when sending a packet unless the "
11854 "B<IP_HDRINCL> socket option is enabled on the socket. When it is enabled, "
11855 "the packet must contain an IP header. For receiving the IP header is always "
11856 "included in the packet."
11859 #. type: Plain text
11860 #: build/C/man7/raw.7:32
11862 "Only processes with an effective user ID of 0 or the B<CAP_NET_RAW> "
11863 "capability are allowed to open raw sockets."
11866 #. type: Plain text
11867 #: build/C/man7/raw.7:39
11869 "All packets or errors matching the I<protocol> number specified for the raw "
11870 "socket are passed to this socket. For a list of the allowed protocols see "
11871 "RFC\\ 1700 assigned numbers and B<getprotobyname>(3)."
11874 #. type: Plain text
11875 #: build/C/man7/raw.7:49
11877 "A protocol of B<IPPROTO_RAW> implies enabled B<IP_HDRINCL> and is able to "
11878 "send any IP protocol that is specified in the passed header. Receiving of "
11879 "all IP protocols via B<IPPROTO_RAW> is not possible using raw sockets."
11883 #: build/C/man7/raw.7:54
11885 msgid "IP Header fields modified on sending by B<IP_HDRINCL>\n"
11889 #: build/C/man7/raw.7:55
11891 msgid "IP Checksum:Always filled in.\n"
11895 #: build/C/man7/raw.7:56
11897 msgid "Source Address:Filled in when zero.\n"
11901 #: build/C/man7/raw.7:57
11903 msgid "Packet Id:Filled in when zero.\n"
11907 #: build/C/man7/raw.7:58
11909 msgid "Total Length:Always filled in.\n"
11912 #. type: Plain text
11913 #: build/C/man7/raw.7:72
11915 "If B<IP_HDRINCL> is specified and the IP header has a nonzero destination "
11916 "address then the destination address of the socket is used to route the "
11917 "packet. When B<MSG_DONTROUTE> is specified, the destination address should "
11918 "refer to a local interface, otherwise a routing table lookup is done anyway "
11919 "but gatewayed routes are ignored."
11922 #. type: Plain text
11923 #: build/C/man7/raw.7:80
11925 "If B<IP_HDRINCL> isn't set, then IP header options can be set on raw sockets "
11926 "with B<setsockopt>(2); see B<ip>(7) for more information."
11929 #. type: Plain text
11930 #: build/C/man7/raw.7:85
11932 "In Linux 2.2, all IP header fields and options can be set using IP socket "
11933 "options. This means raw sockets are usually only needed for new protocols "
11934 "or protocols with no user interface (like ICMP)."
11937 #. type: Plain text
11938 #: build/C/man7/raw.7:89
11940 "When a packet is received, it is passed to any raw sockets which have been "
11941 "bound to its protocol before it is passed to other protocol handlers (e.g., "
11942 "kernel protocol modules)."
11945 #. type: Plain text
11946 #: build/C/man7/raw.7:105
11948 "Raw sockets use the standard I<sockaddr_in> address structure defined in "
11949 "B<ip>(7). The I<sin_port> field could be used to specify the IP protocol "
11950 "number, but it is ignored for sending in Linux 2.2 and should be always set "
11951 "to 0 (see BUGS). For incoming packets, I<sin_port> is set to the protocol "
11952 "of the packet. See the I<E<lt>netinet/in.hE<gt>> include file for valid IP "
11956 #. Or SOL_RAW on Linux
11957 #. type: Plain text
11958 #: build/C/man7/raw.7:114
11960 "Raw socket options can be set with B<setsockopt>(2) and read with "
11961 "B<getsockopt>(2) by passing the B<IPPROTO_RAW> family flag."
11965 #: build/C/man7/raw.7:114
11967 msgid "B<ICMP_FILTER>"
11970 #. type: Plain text
11971 #: build/C/man7/raw.7:122
11973 "Enable a special filter for raw sockets bound to the B<IPPROTO_ICMP> "
11974 "protocol. The value has a bit set for each ICMP message type which should "
11975 "be filtered out. The default is to filter no ICMP messages."
11978 #. type: Plain text
11979 #: build/C/man7/raw.7:127
11981 "In addition, all B<ip>(7) B<IPPROTO_IP> socket options valid for datagram "
11982 "sockets are supported."
11985 #. type: Plain text
11986 #: build/C/man7/raw.7:140
11988 "Errors originating from the network are only passed to the user when the "
11989 "socket is connected or the B<IP_RECVERR> flag is enabled. For connected "
11990 "sockets, only B<EMSGSIZE> and B<EPROTO> are passed for compatibility. With "
11991 "B<IP_RECVERR>, all network errors are saved in the error queue."
11994 #. type: Plain text
11995 #: build/C/man7/raw.7:145
11997 "User tried to send to a broadcast address without having the broadcast flag "
11998 "set on the socket."
12001 #. type: Plain text
12002 #: build/C/man7/raw.7:148
12003 msgid "An invalid memory address was supplied."
12006 #. type: Plain text
12007 #: build/C/man7/raw.7:158
12009 "Packet too big. Either Path MTU Discovery is enabled (the "
12010 "B<IP_MTU_DISCOVER> socket flag) or the packet size exceeds the maximum "
12011 "allowed IPv4 packet size of 64KB."
12015 #: build/C/man7/raw.7:158 build/C/man7/unix.7:357
12017 msgid "B<EOPNOTSUPP>"
12020 #. type: Plain text
12021 #: build/C/man7/raw.7:162
12022 msgid "Invalid flag has been passed to a socket call (like B<MSG_OOB>)."
12025 #. type: Plain text
12026 #: build/C/man7/raw.7:168
12028 "The user doesn't have permission to open raw sockets. Only processes with "
12029 "an effective user ID of 0 or the B<CAP_NET_RAW> attribute may do that."
12033 #: build/C/man7/raw.7:168
12038 #. type: Plain text
12039 #: build/C/man7/raw.7:171
12040 msgid "An ICMP error has arrived reporting a parameter problem."
12043 #. type: Plain text
12044 #: build/C/man7/raw.7:177
12046 "B<IP_RECVERR> and B<ICMP_FILTER> are new in Linux 2.2. They are Linux "
12047 "extensions and should not be used in portable programs."
12050 #. type: Plain text
12051 #: build/C/man7/raw.7:183
12053 "Linux 2.0 enabled some bug-to-bug compatibility with BSD in the raw socket "
12054 "code when the B<SO_BSDCOMPAT> socket option was set \\(em since Linux 2.2, "
12055 "this option no longer has that effect."
12058 #. type: Plain text
12059 #: build/C/man7/raw.7:201
12061 "By default, raw sockets do path MTU (Maximum Transmission Unit) discovery. "
12062 "This means the kernel will keep track of the MTU to a specific target IP "
12063 "address and return B<EMSGSIZE> when a raw packet write exceeds it. When "
12064 "this happens, the application should decrease the packet size. Path MTU "
12065 "discovery can be also turned off using the B<IP_MTU_DISCOVER> socket option "
12066 "or the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file, see B<ip>(7) for "
12067 "details. When turned off, raw sockets will fragment outgoing packets that "
12068 "exceed the interface MTU. However, disabling it is not recommended for "
12069 "performance and reliability reasons."
12072 #. type: Plain text
12073 #: build/C/man7/raw.7:210
12075 "A raw socket can be bound to a specific local address using the B<bind>(2) "
12076 "call. If it isn't bound, all packets with the specified IP protocol are "
12077 "received. In addition, a RAW socket can be bound to a specific network "
12078 "device using B<SO_BINDTODEVICE>; see B<socket>(7)."
12081 #. type: Plain text
12082 #: build/C/man7/raw.7:221
12084 "An B<IPPROTO_RAW> socket is send only. If you really want to receive all IP "
12085 "packets, use a B<packet>(7) socket with the B<ETH_P_IP> protocol. Note "
12086 "that packet sockets don't reassemble IP fragments, unlike raw sockets."
12089 #. type: Plain text
12090 #: build/C/man7/raw.7:227
12092 "If you want to receive all ICMP packets for a datagram socket, it is often "
12093 "better to use B<IP_RECVERR> on that particular socket; see B<ip>(7)."
12096 #. type: Plain text
12097 #: build/C/man7/raw.7:234
12099 "Raw sockets may tap all IP protocols in Linux, even protocols like ICMP or "
12100 "TCP which have a protocol module in the kernel. In this case, the packets "
12101 "are passed to both the kernel module and the raw socket(s). This should not "
12102 "be relied upon in portable programs, many other BSD socket implementation "
12103 "have limitations here."
12106 #. type: Plain text
12107 #: build/C/man7/raw.7:239
12109 "Linux never changes headers passed from the user (except for filling in some "
12110 "zeroed fields as described for B<IP_HDRINCL>). This differs from many other "
12111 "implementations of raw sockets."
12114 #. type: Plain text
12115 #: build/C/man7/raw.7:242
12117 "RAW sockets are generally rather unportable and should be avoided in "
12118 "programs intended to be portable."
12121 #. type: Plain text
12122 #: build/C/man7/raw.7:248
12124 "Sending on raw sockets should take the IP protocol from I<sin_port>; this "
12125 "ability was lost in Linux 2.2. The workaround is to use B<IP_HDRINCL>."
12128 #. type: Plain text
12129 #: build/C/man7/raw.7:250
12130 msgid "Transparent proxy extensions are not described."
12133 #. type: Plain text
12134 #: build/C/man7/raw.7:255
12136 "When the B<IP_HDRINCL> option is set, datagrams will not be fragmented and "
12137 "are limited to the interface MTU."
12141 #. This man page was written by Andi Kleen.
12142 #. type: Plain text
12143 #: build/C/man7/raw.7:265
12145 "Setting the IP protocol for sending in I<sin_port> got lost in Linux 2.2. "
12146 "The protocol that the socket was bound to or that was specified in the "
12147 "initial B<socket>(2) call is always used."
12150 #. type: Plain text
12151 #: build/C/man7/raw.7:271
12152 msgid "B<recvmsg>(2), B<sendmsg>(2), B<capabilities>(7), B<ip>(7), B<socket>(7)"
12155 #. type: Plain text
12156 #: build/C/man7/raw.7:274
12157 msgid "B<RFC\\ 1191> for path MTU discovery."
12160 #. type: Plain text
12161 #: build/C/man7/raw.7:279
12163 "B<RFC\\ 791> and the I<E<lt>linux/ip.hE<gt>> include file for the IP "
12168 #: build/C/man3/rcmd.3:41
12174 #: build/C/man3/rcmd.3:41
12179 #. type: Plain text
12180 #: build/C/man3/rcmd.3:45
12182 "rcmd, rresvport, iruserok, ruserok - routines for returning a stream to a "
12186 #. type: Plain text
12187 #: build/C/man3/rcmd.3:48
12190 "B<#include E<lt>netdb.hE<gt> \\ \\ >/* Or E<lt>unistd.hE<gt> on some systems "
12194 #. type: Plain text
12195 #: build/C/man3/rcmd.3:51
12198 "B<int rcmd(char **>I<ahost>B<, int >I<inport>B<, const char *>I<locuser>B<, "
12200 "B< const char *>I<remuser>B<, const char *>I<cmd>B<, int "
12204 #. type: Plain text
12205 #: build/C/man3/rcmd.3:53
12207 msgid "B<int rresvport(int *>I<port>B<);>\n"
12210 #. type: Plain text
12211 #: build/C/man3/rcmd.3:56
12214 "B<int iruserok(uint32_t >I<raddr>B<, int >I<superuser>B<, >\n"
12215 "B< const char *>I<ruser>B<, const char *>I<luser>B<);>\n"
12218 #. type: Plain text
12219 #: build/C/man3/rcmd.3:59
12222 "B<int ruserok(const char *>I<rhost>B<, int >I<superuser>B<, >\n"
12223 "B< const char *>I<ruser>B<, const char *>I<luser>B<);>\n"
12226 #. type: Plain text
12227 #: build/C/man3/rcmd.3:70
12228 msgid "B<rcmd>(), B<rresvport>(), B<ruserok>(): _BSD_SOURCE"
12231 #. type: Plain text
12232 #: build/C/man3/rcmd.3:92
12234 "The B<rcmd>() function is used by the superuser to execute a command on a "
12235 "remote machine using an authentication scheme based on privileged port "
12236 "numbers. The B<rresvport>() function returns a descriptor to a socket with "
12237 "an address in the privileged port space. The B<iruserok>() and "
12238 "B<ruserok>() functions are used by servers to authenticate clients "
12239 "requesting service with B<rcmd>(). All four functions are present in the "
12240 "same file and are used by the B<rshd>(8) server (among others)."
12243 #. type: Plain text
12244 #: build/C/man3/rcmd.3:107
12246 "The B<rcmd>() function looks up the host I<*ahost> using "
12247 "B<gethostbyname>(3), returning -1 if the host does not exist. Otherwise "
12248 "I<*ahost> is set to the standard name of the host and a connection is "
12249 "established to a server residing at the well-known Internet port I<inport>."
12252 #. type: Plain text
12253 #: build/C/man3/rcmd.3:136
12255 "If the connection succeeds, a socket in the Internet domain of type "
12256 "B<SOCK_STREAM> is returned to the caller, and given to the remote command as "
12257 "I<stdin> and I<stdout>. If I<fd2p> is nonzero, then an auxiliary channel to "
12258 "a control process will be set up, and a descriptor for it will be placed in "
12259 "I<*fd2p>. The control process will return diagnostic output from the "
12260 "command (unit 2) on this channel, and will also accept bytes on this channel "
12261 "as being UNIX signal numbers, to be forwarded to the process group of the "
12262 "command. If I<fd2p> is 0, then the I<stderr> (unit 2 of the remote command) "
12263 "will be made the same as the I<stdout> and no provision is made for sending "
12264 "arbitrary signals to the remote process, although you may be able to get its "
12265 "attention by using out-of-band data."
12268 #. type: Plain text
12269 #: build/C/man3/rcmd.3:139
12270 msgid "The protocol is described in detail in B<rshd>(8)."
12273 #. type: Plain text
12274 #: build/C/man3/rcmd.3:149
12276 "The B<rresvport>() function is used to obtain a socket with a privileged "
12277 "address bound to it. This socket is suitable for use by B<rcmd>() and "
12278 "several other functions. Privileged Internet ports are those in the range 0 "
12279 "to 1023. Only the superuser is allowed to bind an address of this sort to a "
12283 #. type: Plain text
12284 #: build/C/man3/rcmd.3:166
12286 "The B<iruserok>() and B<ruserok>() functions take a remote host's IP "
12287 "address or name, respectively, two usernames and a flag indicating whether "
12288 "the local user's name is that of the superuser. Then, if the user is I<not> "
12289 "the superuser, it checks the I</etc/hosts.equiv> file. If that lookup is "
12290 "not done, or is unsuccessful, the I<.rhosts> in the local user's home "
12291 "directory is checked to see if the request for service is allowed."
12294 #. type: Plain text
12295 #: build/C/man3/rcmd.3:182
12297 "If this file does not exist, is not a regular file, is owned by anyone other "
12298 "than the user or the superuser, or is writable by anyone other than the "
12299 "owner, the check automatically fails. Zero is returned if the machine name "
12300 "is listed in the I<hosts.equiv> file, or the host and remote username are "
12301 "found in the I<.rhosts> file; otherwise B<iruserok>() and B<ruserok>() "
12302 "return -1. If the local domain (as obtained from B<gethostname>(2)) is the "
12303 "same as the remote domain, only the machine name need be specified."
12306 #. type: Plain text
12307 #: build/C/man3/rcmd.3:188
12309 "If the IP address of the remote host is known, B<iruserok>() should be used "
12310 "in preference to B<ruserok>(), as it does not require trusting the DNS "
12311 "server for the remote host's domain."
12314 #. type: Plain text
12315 #: build/C/man3/rcmd.3:194
12317 "The B<rcmd>() function returns a valid socket descriptor on success. It "
12318 "returns -1 on error and prints a diagnostic message on the standard error."
12321 #. type: Plain text
12322 #: build/C/man3/rcmd.3:205
12324 "The B<rresvport>() function returns a valid, bound socket descriptor on "
12325 "success. It returns -1 on error with the global value I<errno> set "
12326 "according to the reason for failure. The error code B<EAGAIN> is overloaded "
12327 "to mean \"All network ports in use.\""
12330 #. type: Plain text
12331 #: build/C/man3/rcmd.3:211
12333 "Not in POSIX.1-2001. Present on the BSDs, Solaris, and many other systems. "
12334 "These functions appeared in 4.2BSD."
12337 #. Bug filed 25 Nov 2007:
12338 #. http://sources.redhat.com/bugzilla/show_bug.cgi?id=5399
12339 #. type: Plain text
12340 #: build/C/man3/rcmd.3:216
12341 msgid "B<iruserok>() is not declared in glibc headers."
12344 #. type: Plain text
12345 #: build/C/man3/rcmd.3:224
12347 "B<rlogin>(1), B<rsh>(1), B<intro>(2), B<rexec>(3), B<rexecd>(8), "
12348 "B<rlogind>(8), B<rshd>(8)"
12352 #: build/C/man5/resolv.conf.5:21
12354 msgid "RESOLV.CONF"
12358 #: build/C/man5/resolv.conf.5:21
12363 #. type: Plain text
12364 #: build/C/man5/resolv.conf.5:25
12365 msgid "resolv.conf - resolver configuration file"
12368 #. type: Plain text
12369 #: build/C/man5/resolv.conf.5:27
12370 msgid "B</etc/resolv.conf>"
12373 #. type: Plain text
12374 #: build/C/man5/resolv.conf.5:36
12376 "The I<resolver> is a set of routines in the C library that provide access to "
12377 "the Internet Domain Name System (DNS). The resolver configuration file "
12378 "contains information that is read by the resolver routines the first time "
12379 "they are invoked by a process. The file is designed to be human readable "
12380 "and contains a list of keywords with values that provide various types of "
12381 "resolver information."
12384 #. type: Plain text
12385 #: build/C/man5/resolv.conf.5:41
12387 "On a normally configured system this file should not be necessary. The only "
12388 "name server to be queried will be on the local machine; the domain name is "
12389 "determined from the hostname and the domain search path is constructed from "
12393 #. type: Plain text
12394 #: build/C/man5/resolv.conf.5:43
12395 msgid "The different configuration options are:"
12399 #: build/C/man5/resolv.conf.5:43
12401 msgid "B<nameserver> Name server IP address"
12404 #. type: Plain text
12405 #: build/C/man5/resolv.conf.5:59
12407 "Internet address (in dot notation) of a name server that the resolver should "
12408 "query. Up to B<MAXNS> (currently 3, see I<E<lt>resolv.hE<gt>>) name servers "
12409 "may be listed, one per keyword. If there are multiple servers, the resolver "
12410 "library queries them in the order listed. If no B<nameserver> entries are "
12411 "present, the default is to use the name server on the local machine. (The "
12412 "algorithm used is to try a name server, and if the query times out, try the "
12413 "next, until out of name servers, then repeat trying all the name servers "
12414 "until a maximum number of retries are made.)"
12418 #: build/C/man5/resolv.conf.5:59
12420 msgid "B<domain> Local domain name."
12423 #. type: Plain text
12424 #: build/C/man5/resolv.conf.5:69
12426 "Most queries for names within this domain can use short names relative to "
12427 "the local domain. If no B<domain> entry is present, the domain is "
12428 "determined from the local hostname returned by B<gethostname>(2); the domain "
12429 "part is taken to be everything after the first \\(aq.\\(aq. Finally, if the "
12430 "hostname does not contain a domain part, the root domain is assumed."
12434 #: build/C/man5/resolv.conf.5:69
12436 msgid "B<search> Search list for host-name lookup."
12439 #. When having a resolv.conv with a line
12440 #. search subdomain.domain.tld domain.tld
12441 #. and doing a hostlookup, for example by
12442 #. ping host.anothersubdomain
12443 #. it sends dns-requests for
12444 #. host.anothersubdomain.
12445 #. host.anothersubdomain.subdomain.domain.tld.
12446 #. host.anothersubdomain.domain.tld.
12447 #. thus not only causing unnecessary traffic for the root-dns-servers
12448 #. but broadcasting information to the outside and making man-in-the-middle
12449 #. attacks possible.
12450 #. type: Plain text
12451 #: build/C/man5/resolv.conf.5:99
12453 "The search list is normally determined from the local domain name; by "
12454 "default, it contains only the local domain name. This may be changed by "
12455 "listing the desired domain search path following the I<search> keyword with "
12456 "spaces or tabs separating the names. Resolver queries having fewer than "
12457 "I<ndots> dots (default is 1) in them will be attempted using each component "
12458 "of the search path in turn until a match is found. For environments with "
12459 "multiple subdomains please read B<options ndots:>I<n> below to avoid "
12460 "man-in-the-middle attacks and unnecessary traffic for the root-dns-servers. "
12461 "Note that this process may be slow and will generate a lot of network "
12462 "traffic if the servers for the listed domains are not local, and that "
12463 "queries will time out if no server is available for one of the domains."
12466 #. type: Plain text
12467 #: build/C/man5/resolv.conf.5:102
12469 "The search list is currently limited to six domains with a total of 256 "
12474 #: build/C/man5/resolv.conf.5:102
12476 msgid "B<sortlist>"
12479 #. type: Plain text
12480 #: build/C/man5/resolv.conf.5:115
12482 "This option allows addresses returned by B<gethostbyname>(3) to be sorted. "
12483 "A sortlist is specified by IP-address-netmask pairs. The netmask is "
12484 "optional and defaults to the natural netmask of the net. The IP address and "
12485 "optional network pairs are separated by slashes. Up to 10 pairs may be "
12486 "specified. Here is an example:"
12489 #. type: Plain text
12490 #: build/C/man5/resolv.conf.5:118
12491 msgid "sortlist 130.155.160.0/255.255.240.0 130.155.0.0"
12495 #: build/C/man5/resolv.conf.5:120
12500 #. type: Plain text
12501 #: build/C/man5/resolv.conf.5:124
12503 "Options allows certain internal resolver variables to be modified. The "
12507 #. type: Plain text
12508 #: build/C/man5/resolv.conf.5:127
12509 msgid "B<options> I<option> I<...>"
12512 #. type: Plain text
12513 #: build/C/man5/resolv.conf.5:129
12514 msgid "where I<option> is one of the following:"
12518 #: build/C/man5/resolv.conf.5:129
12523 #. Since glibc 2.2?
12524 #. type: Plain text
12525 #: build/C/man5/resolv.conf.5:136
12526 msgid "sets B<RES_DEBUG> in I<_res.options>."
12530 #: build/C/man5/resolv.conf.5:136
12532 msgid "B<ndots:>I<n>"
12536 #. type: Plain text
12537 #: build/C/man5/resolv.conf.5:150
12539 "sets a threshold for the number of dots which must appear in a name given to "
12540 "B<res_query>(3) (see B<resolver>(3)) before an I<initial absolute query> "
12541 "will be made. The default for I<n> is 1, meaning that if there are any dots "
12542 "in a name, the name will be tried first as an absolute name before any "
12543 "I<search list> elements are appended to it. The value for this option is "
12544 "silently capped to 15."
12548 #: build/C/man5/resolv.conf.5:150
12550 msgid "B<timeout:>I<n>"
12554 #. type: Plain text
12555 #: build/C/man5/resolv.conf.5:161
12557 "sets the amount of time the resolver will wait for a response from a remote "
12558 "name server before retrying the query via a different name server. Measured "
12559 "in seconds, the default is B<RES_TIMEOUT> (currently 5, see "
12560 "I<E<lt>resolv.hE<gt>>). The value for this option is silently capped to 30."
12564 #: build/C/man5/resolv.conf.5:161
12566 msgid "B<attempts:>I<n>"
12569 #. type: Plain text
12570 #: build/C/man5/resolv.conf.5:170
12572 "sets the number of times the resolver will send a query to its name servers "
12573 "before giving up and returning an error to the calling application. The "
12574 "default is B<RES_DFLRETRY> (currently 2, see I<E<lt>resolv.hE<gt>>). The "
12575 "value for this option is silently capped to 5."
12579 #: build/C/man5/resolv.conf.5:170
12585 #. type: Plain text
12586 #: build/C/man5/resolv.conf.5:180
12588 "sets B<RES_ROTATE> in I<_res.options>, which causes round robin selection of "
12589 "nameservers from among those listed. This has the effect of spreading the "
12590 "query load among all listed servers, rather than having all clients try the "
12591 "first listed server first every time."
12595 #: build/C/man5/resolv.conf.5:180
12597 msgid "B<no-check-names>"
12601 #. type: Plain text
12602 #: build/C/man5/resolv.conf.5:190
12604 "sets B<RES_NOCHECKNAME> in I<_res.options>, which disables the modern BIND "
12605 "checking of incoming hostnames and mail names for invalid characters such as "
12606 "underscore (_), non-ASCII, or control characters."
12610 #: build/C/man5/resolv.conf.5:190
12616 #. type: Plain text
12617 #: build/C/man5/resolv.conf.5:201
12619 "sets B<RES_USE_INET6> in I<_res.options>. This has the effect of trying a "
12620 "AAAA query before an A query inside the B<gethostbyname>(3) function, and "
12621 "of mapping IPv4 responses in IPv6 \"tunneled form\" if no AAAA records are "
12622 "found but an A record set exists."
12626 #: build/C/man5/resolv.conf.5:201
12628 msgid "B<ip6-bytestring> (since glibc 2.3.4)"
12631 #. type: Plain text
12632 #: build/C/man5/resolv.conf.5:210
12634 "sets B<RES_USE_BSTRING> in I<_res.options>. This causes reverse IPv6 "
12635 "lookups to be made using the bit-label format described in RFC\\ 2673; if "
12636 "this option is not set, then nibble format is used."
12640 #: build/C/man5/resolv.conf.5:210
12642 msgid "B<ip6-dotint>/B<no-ip6-dotint> (since glibc 2.3.4)"
12645 #. type: Plain text
12646 #: build/C/man5/resolv.conf.5:227
12648 "Clear/set B<RES_NOIP6DOTINT> in I<_res.options>. When this option is clear "
12649 "(B<ip6-dotint>), reverse IPv6 lookups are made in the (deprecated) "
12650 "I<ip6.int> zone; when this option is set (B<no-ip6-dotint>), reverse IPv6 "
12651 "lookups are made in the I<ip6.arpa> zone by default. This option is set by "
12656 #: build/C/man5/resolv.conf.5:227
12658 msgid "B<edns0> (since glibc 2.6)"
12661 #. type: Plain text
12662 #: build/C/man5/resolv.conf.5:234
12664 "sets B<RES_USE_EDNSO> in I<_res.options>. This enables support for the DNS "
12665 "extensions described in RFC\\ 2671."
12668 #. type: Plain text
12669 #: build/C/man5/resolv.conf.5:239
12671 "The I<domain> and I<search> keywords are mutually exclusive. If more than "
12672 "one instance of these keywords is present, the last instance wins."
12675 #. type: Plain text
12676 #: build/C/man5/resolv.conf.5:244
12678 "The I<search> keyword of a system's I<resolv.conf> file can be overridden on "
12679 "a per-process basis by setting the environment variable B<LOCALDOMAIN> to a "
12680 "space-separated list of search domains."
12683 #. type: Plain text
12684 #: build/C/man5/resolv.conf.5:250
12686 "The I<options> keyword of a system's I<resolv.conf> file can be amended on a "
12687 "per-process basis by setting the environment variable B<RES_OPTIONS> to a "
12688 "space-separated list of resolver options as explained above under "
12692 #. type: Plain text
12693 #: build/C/man5/resolv.conf.5:254
12695 "The keyword and value must appear on a single line, and the keyword (e.g., "
12696 "B<nameserver>) must start the line. The value follows the keyword, "
12697 "separated by white space."
12700 #. type: Plain text
12701 #: build/C/man5/resolv.conf.5:257
12703 "Lines that contain a semicolon (;) or hash character (#) in the first "
12704 "column are treated as comments."
12707 #. type: Plain text
12708 #: build/C/man5/resolv.conf.5:260
12709 msgid "I</etc/resolv.conf>, I<E<lt>resolv.hE<gt>>"
12712 #. type: Plain text
12713 #: build/C/man5/resolv.conf.5:265
12714 msgid "B<gethostbyname>(3), B<resolver>(3), B<hostname>(7), B<named>(8)"
12717 #. type: Plain text
12718 #: build/C/man5/resolv.conf.5:267
12719 msgid "Name Server Operations Guide for BIND"
12723 #: build/C/man3/resolver.3:30
12729 #: build/C/man3/resolver.3:30
12734 #. type: Plain text
12735 #: build/C/man3/resolver.3:34
12737 "res_init, res_query, res_search, res_querydomain, res_mkquery, res_send, "
12738 "dn_comp, dn_expand - resolver routines"
12741 #. type: Plain text
12742 #: build/C/man3/resolver.3:40
12745 "B<#include E<lt>netinet/in.hE<gt>>\n"
12746 "B<#include E<lt>arpa/nameser.hE<gt>>\n"
12747 "B<#include E<lt>resolv.hE<gt>>\n"
12748 "B<extern struct state _res;>\n"
12751 #. type: Plain text
12752 #: build/C/man3/resolver.3:42
12754 msgid "B<int res_init(void);>\n"
12757 #. type: Plain text
12758 #: build/C/man3/resolver.3:44
12760 msgid "B<int res_query(const char *>I<dname>B<, int >I<class>B<, int >I<type>B<,>\n"
12763 #. type: Plain text
12764 #: build/C/man3/resolver.3:46 build/C/man3/resolver.3:51
12766 msgid "B<unsigned char *>I<answer>B<, int >I<anslen>B<);>\n"
12769 #. type: Plain text
12770 #: build/C/man3/resolver.3:49
12773 "B<int res_search(const char *>I<dname>B<, int >I<class>B<, int "
12777 #. type: Plain text
12778 #: build/C/man3/resolver.3:54
12780 msgid "B<int res_querydomain(const char *>I<name>B<, const char *>I<domain>B<,>\n"
12783 #. type: Plain text
12784 #: build/C/man3/resolver.3:57
12787 "B<int >I<class>B<, int >I<type>B<, unsigned char *>I<answer>B<,>\n"
12788 "B<int >I<anslen>B<);>\n"
12791 #. type: Plain text
12792 #: build/C/man3/resolver.3:60
12794 msgid "B<int res_mkquery(int >I<op>B<, const char *>I<dname>B<, int >I<class>B<,>\n"
12797 #. type: Plain text
12798 #: build/C/man3/resolver.3:63
12801 "B<int >I<type>B<, char *>I<data>B<, int >I<datalen>B<, struct rrec "
12803 "B<char *>I<buf>B<, int >I<buflen>B<);>\n"
12806 #. type: Plain text
12807 #: build/C/man3/resolver.3:66
12810 "B<int res_send(const char *>I<msg>B<, int >I<msglen>B<, char "
12811 "*>I<answer>B<,>\n"
12814 #. type: Plain text
12815 #: build/C/man3/resolver.3:68
12817 msgid "B<int >I<anslen>B<);>\n"
12820 #. type: Plain text
12821 #: build/C/man3/resolver.3:71
12823 msgid "B<int dn_comp(unsigned char *>I<exp_dn>B<, unsigned char *>I<comp_dn>B<,>\n"
12826 #. type: Plain text
12827 #: build/C/man3/resolver.3:73
12830 "B<int >I<length>B<, unsigned char **>I<dnptrs>B<, unsigned char "
12831 "**>I<lastdnptr>B<);>\n"
12834 #. type: Plain text
12835 #: build/C/man3/resolver.3:76
12837 msgid "B<int dn_expand(unsigned char *>I<msg>B<, unsigned char *>I<eomorig>B<,>\n"
12840 #. type: Plain text
12841 #: build/C/man3/resolver.3:79
12844 "B<unsigned char *>I<comp_dn>B<, char *>I<exp_dn>B<,>\n"
12845 "B<int >I<length>B<);>\n"
12848 #. type: Plain text
12849 #: build/C/man3/resolver.3:83
12850 msgid "Link with I<-lresolv>."
12853 #. type: Plain text
12854 #: build/C/man3/resolver.3:86
12856 "These functions make queries to and interpret the responses from Internet "
12857 "domain name servers."
12860 #. type: Plain text
12861 #: build/C/man3/resolver.3:99
12863 "The B<res_init>() function reads the configuration files (see "
12864 "resolv.conf(5)) to get the default domain name, search order and name server "
12865 "address(es). If no server is given, the local host is tried. If no domain "
12866 "is given, that associated with the local host is used. It can be overridden "
12867 "with the environment variable B<LOCALDOMAIN>. B<res_init>() is normally "
12868 "executed by the first call to one of the other functions."
12871 #. type: Plain text
12872 #: build/C/man3/resolver.3:107
12874 "The B<res_query>() function queries the name server for the fully qualified "
12875 "domain name I<name> of specified I<type> and I<class>. The reply is left in "
12876 "the buffer I<answer> of length I<anslen> supplied by the caller."
12879 #. type: Plain text
12880 #: build/C/man3/resolver.3:120
12882 "The B<res_search>() function makes a query and waits for the response like "
12883 "B<res_query>(), but in addition implements the default and search rules "
12884 "controlled by B<RES_DEFNAMES> and B<RES_DNSRCH> (see description of I<_res> "
12888 #. type: Plain text
12889 #: build/C/man3/resolver.3:126
12891 "The B<res_querydomain>() function makes a query using B<res_query>() on "
12892 "the concatenation of I<name> and I<domain>."
12895 #. type: Plain text
12896 #: build/C/man3/resolver.3:129
12897 msgid "The following functions are lower-level routines used by B<res_query>()."
12900 #. type: Plain text
12901 #: build/C/man3/resolver.3:140
12903 "The B<res_mkquery>() function constructs a query message in I<buf> of "
12904 "length I<buflen> for the domain name I<dname>. The query type I<op> is "
12905 "usually B<QUERY>, but can be any of the types defined in "
12906 "I<E<lt>arpa/nameser.hE<gt>>. I<newrr> is currently unused."
12909 #. type: Plain text
12910 #: build/C/man3/resolver.3:150
12912 "The B<res_send>() function sends a preformatted query given in I<msg> of "
12913 "length I<msglen> and returns the answer in I<answer> which is of length "
12914 "I<anslen>. It will call B<res_init>(), if it has not already been called."
12917 #. type: Plain text
12918 #: build/C/man3/resolver.3:163
12920 "The B<dn_comp>() function compresses the domain name I<exp_dn> and stores "
12921 "it in the buffer I<comp_dn> of length I<length>. The compression uses an "
12922 "array of pointers I<dnptrs> to previously compressed names in the current "
12923 "message. The first pointer points to the beginning of the message and the "
12924 "list ends with NULL. The limit of the array is specified by I<lastdnptr>. "
12925 "If I<dnptr> is NULL, domain names are not compressed. If I<lastdnptr> is "
12926 "NULL, the list of labels is not updated."
12929 #. type: Plain text
12930 #: build/C/man3/resolver.3:172
12932 "The B<dn_expand>() function expands the compressed domain name I<comp_dn> "
12933 "to a full domain name, which is placed in the buffer I<exp_dn> of size "
12934 "I<length>. The compressed name is contained in a query or reply message, "
12935 "and I<msg> points to the beginning of the message."
12938 #. type: Plain text
12939 #: build/C/man3/resolver.3:180
12941 "The resolver routines use global configuration and state information "
12942 "contained in the structure I<_res>, which is defined in "
12943 "I<E<lt>resolv.hE<gt>>. The only field that is normally manipulated by the "
12944 "user is I<_res.options>. This field can contain the bitwise \"OR\" of the "
12945 "following options:"
12949 #: build/C/man3/resolver.3:180
12951 msgid "B<RES_INIT>"
12954 #. type: Plain text
12955 #: build/C/man3/resolver.3:185
12956 msgid "True if B<res_init>() has been called."
12960 #: build/C/man3/resolver.3:185
12962 msgid "B<RES_DEBUG>"
12965 #. type: Plain text
12966 #: build/C/man3/resolver.3:188
12967 msgid "Print debugging messages."
12971 #: build/C/man3/resolver.3:188
12973 msgid "B<RES_AAONLY>"
12976 #. type: Plain text
12977 #: build/C/man3/resolver.3:195
12979 "Accept authoritative answers only. B<res_send>() continues until it finds "
12980 "an authoritative answer or returns an error. [Not currently implemented]."
12984 #: build/C/man3/resolver.3:195
12986 msgid "B<RES_USEVC>"
12989 #. type: Plain text
12990 #: build/C/man3/resolver.3:198
12991 msgid "Use TCP connections for queries rather than UDP datagrams."
12995 #: build/C/man3/resolver.3:198
12997 msgid "B<RES_PRIMARY>"
13000 #. type: Plain text
13001 #: build/C/man3/resolver.3:201
13002 msgid "Query primary domain name server only."
13006 #: build/C/man3/resolver.3:201
13008 msgid "B<RES_IGNTC>"
13011 #. type: Plain text
13012 #: build/C/man3/resolver.3:206
13014 "Ignore truncation errors. Don't retry with TCP. [Not currently "
13019 #: build/C/man3/resolver.3:206
13021 msgid "B<RES_RECURSE>"
13024 #. type: Plain text
13025 #: build/C/man3/resolver.3:213
13027 "Set the recursion desired bit in queries. Recursion is carried out by the "
13028 "domain name server, not by B<res_send>(). [Enabled by default]."
13032 #: build/C/man3/resolver.3:213
13034 msgid "B<RES_DEFNAMES>"
13037 #. type: Plain text
13038 #: build/C/man3/resolver.3:220
13040 "If set, B<res_search>() will append the default domain name to single "
13041 "component names, i.e., those that do not contain a dot. [Enabled by "
13046 #: build/C/man3/resolver.3:220
13048 msgid "B<RES_STAYOPEN>"
13051 #. type: Plain text
13052 #: build/C/man3/resolver.3:225
13053 msgid "Used with B<RES_USEVC> to keep the TCP connection open between queries."
13057 #: build/C/man3/resolver.3:225
13059 msgid "B<RES_DNSRCH>"
13062 #. type: Plain text
13063 #: build/C/man3/resolver.3:234
13065 "If set, B<res_search>() will search for hostnames in the current domain and "
13066 "in parent domains. This option is used by B<gethostbyname>(3). [Enabled by "
13070 #. type: Plain text
13071 #: build/C/man3/resolver.3:239
13072 msgid "The B<res_init>() function returns 0 on success, or -1 if an error occurs."
13075 #. type: Plain text
13076 #: build/C/man3/resolver.3:249
13078 "The B<res_query>(), B<res_search>(), B<res_querydomain>(), B<res_mkquery>() "
13079 "and B<res_send>() functions return the length of the response, or -1 if an "
13083 #. type: Plain text
13084 #: build/C/man3/resolver.3:256
13086 "The B<dn_comp>() and B<dn_expand>() functions return the length of the "
13087 "compressed name, or -1 if an error occurs."
13090 #. type: Plain text
13091 #: build/C/man3/resolver.3:260
13094 "/etc/resolv.conf resolver configuration file\n"
13095 "/etc/host.conf resolver configuration file\n"
13098 #. type: Plain text
13099 #: build/C/man3/resolver.3:263
13103 #. type: Plain text
13104 #: build/C/man3/resolver.3:269
13106 "B<gethostbyname>(3), B<resolv.conf>(5), B<resolver>(5), B<hostname>(7), "
13111 #: build/C/man3/rexec.3:39
13116 #. type: Plain text
13117 #: build/C/man3/rexec.3:42
13118 msgid "rexec - return stream to a remote command"
13121 #. type: Plain text
13122 #: build/C/man3/rexec.3:46
13125 "B<#define _BSD_SOURCE> /* See feature_test_macros(7) */\n"
13126 "B<#include E<lt>netdb.hE<gt>>\n"
13129 #. type: Plain text
13130 #: build/C/man3/rexec.3:49
13133 "B<int rexec(char **>I<ahost>B<, int >I<inport>B<, char *>I<user>B<, >\n"
13134 "B< char *>I<passwd>B<, char *>I<cmd>B<, int *>I<fd2p>B<);>\n"
13137 #. type: Plain text
13138 #: build/C/man3/rexec.3:53
13139 msgid "This interface is obsoleted by B<rcmd>(3)."
13142 #. type: Plain text
13143 #: build/C/man3/rexec.3:72
13145 "The B<rexec>() function looks up the host I<*ahost> using "
13146 "B<gethostbyname>(3), returning -1 if the host does not exist. Otherwise "
13147 "I<*ahost> is set to the standard name of the host. If a username and "
13148 "password are both specified, then these are used to authenticate to the "
13149 "foreign host; otherwise the environment and then the user's I<.netrc> file "
13150 "in his home directory are searched for appropriate information. If all this "
13151 "fails, the user is prompted for the information."
13154 #. type: Plain text
13155 #: build/C/man3/rexec.3:83
13157 "The port I<inport> specifies which well-known DARPA Internet port to use for "
13158 "the connection; the call I<getservbyname(\"exec\", \"tcp\")> (see "
13159 "B<getservent>(3)) will return a pointer to a structure that contains the "
13160 "necessary port. The protocol for connection is described in detail in "
13164 #. type: Plain text
13165 #: build/C/man3/rexec.3:116
13167 "If the connection succeeds, a socket in the Internet domain of type "
13168 "B<SOCK_STREAM> is returned to the caller, and given to the remote command as "
13169 "I<stdin> and I<stdout>. If I<fd2p> is nonzero, then an auxiliary channel to "
13170 "a control process will be setup, and a descriptor for it will be placed in "
13171 "I<*fd2p>. The control process will return diagnostic output from the "
13172 "command (unit 2) on this channel, and will also accept bytes on this channel "
13173 "as being UNIX signal numbers, to be forwarded to the process group of the "
13174 "command. The diagnostic information returned does not include remote "
13175 "authorization failure, as the secondary connection is set up after "
13176 "authorization has been verified. If I<fd2p> is 0, then the I<stderr> (unit "
13177 "2 of the remote command) will be made the same as the I<stdout> and no "
13178 "provision is made for sending arbitrary signals to the remote process, "
13179 "although you may be able to get its attention by using out-of-band data."
13182 #. type: Plain text
13183 #: build/C/man3/rexec.3:123
13185 "Not in POSIX.1-2001. Present on the BSDs, Solaris, and many other systems. "
13186 "The B<rexec>() function appeared in 4.2BSD."
13189 #. type: Plain text
13190 #: build/C/man3/rexec.3:127
13191 msgid "The B<rexec>() function sends the unencrypted password across the network."
13194 #. type: Plain text
13195 #: build/C/man3/rexec.3:132
13197 "The underlying service is considered a big security hole and therefore not "
13198 "enabled on many sites, see B<rexecd>(8) for explanations."
13201 #. type: Plain text
13202 #: build/C/man3/rexec.3:135
13203 msgid "B<rcmd>(3), B<rexecd>(8)"
13207 #: build/C/man5/services.5:34
13213 #: build/C/man5/services.5:34
13218 #. type: Plain text
13219 #: build/C/man5/services.5:37
13220 msgid "services - Internet network services list"
13223 #. type: Plain text
13224 #: build/C/man5/services.5:52
13226 "B<services> is a plain ASCII file providing a mapping between human-friendly "
13227 "textual names for internet services, and their underlying assigned port "
13228 "numbers and protocol types. Every networking program should look into this "
13229 "file to get the port number (and protocol) for its service. The C library "
13230 "routines B<getservent>(3), B<getservbyname>(3), B<getservbyport>(3), "
13231 "B<setservent>(3), and B<endservent>(3) support querying this file from "
13235 #. type: Plain text
13236 #: build/C/man5/services.5:58
13238 "Port numbers are assigned by the IANA (Internet Assigned Numbers Authority), "
13239 "and their current policy is to assign both TCP and UDP protocols when "
13240 "assigning a port number. Therefore, most entries will have two entries, "
13241 "even for TCP-only services."
13244 #. type: Plain text
13245 #: build/C/man5/services.5:70
13247 "Port numbers below 1024 (so-called \"low numbered\" ports) can only be bound "
13248 "to by root (see B<bind>(2), B<tcp>(7), and B<udp>(7)). This is so clients "
13249 "connecting to low numbered ports can trust that the service running on the "
13250 "port is the standard implementation, and not a rogue service run by a user "
13251 "of the machine. Well-known port numbers specified by the IANA are normally "
13252 "located in this root-only space."
13255 #. type: Plain text
13256 #: build/C/man5/services.5:85
13258 "The presence of an entry for a service in the B<services> file does not "
13259 "necessarily mean that the service is currently running on the machine. See "
13260 "B<inetd.conf>(5) for the configuration of Internet services offered. Note "
13261 "that not all networking services are started by B<inetd>(8), and so won't "
13262 "appear in B<inetd.conf>(5). In particular, news (NNTP) and mail (SMTP) "
13263 "servers are often initialized from the system boot scripts."
13266 #. type: Plain text
13267 #: build/C/man5/services.5:94
13269 "The location of the B<services> file is defined by B<_PATH_SERVICES> in "
13270 "I<E<lt>netdb.hE<gt>>. This is usually set to I</etc/services>."
13273 #. type: Plain text
13274 #: build/C/man5/services.5:96
13275 msgid "Each line describes one service, and is of the form:"
13278 #. type: Plain text
13279 #: build/C/man5/services.5:98
13280 msgid "I<service-name\\ \\ \\ port>B</>I<protocol\\ \\ \\ >[I<aliases ...>]"
13284 #: build/C/man5/services.5:98
13290 #: build/C/man5/services.5:100
13292 msgid "I<service-name>"
13295 #. type: Plain text
13296 #: build/C/man5/services.5:106
13298 "is the friendly name the service is known by and looked up under. It is "
13299 "case sensitive. Often, the client program is named after the "
13304 #: build/C/man5/services.5:106
13309 #. type: Plain text
13310 #: build/C/man5/services.5:109
13311 msgid "is the port number (in decimal) to use for this service."
13314 #. type: Plain text
13315 #: build/C/man5/services.5:120
13317 "is the type of protocol to be used. This field should match an entry in the "
13318 "B<protocols>(5) file. Typical values include B<tcp> and B<udp>."
13321 #. type: Plain text
13322 #: build/C/man5/services.5:126
13324 "is an optional space or tab separated list of other names for this service. "
13325 "Again, the names are case sensitive."
13328 #. type: Plain text
13329 #: build/C/man5/services.5:128
13330 msgid "Either spaces or tabs may be used to separate the fields."
13333 #. type: Plain text
13334 #: build/C/man5/services.5:132
13336 "Comments are started by the hash sign (#) and continue until the end of the "
13337 "line. Blank lines are skipped."
13340 #. type: Plain text
13341 #: build/C/man5/services.5:143
13343 "The I<service-name> should begin in the first column of the file, since "
13344 "leading spaces are not stripped. I<service-names> can be any printable "
13345 "characters excluding space and tab. However, a conservative choice of "
13346 "characters should be used to minimize compatibility problems. E.g., a-z, "
13347 "0-9, and hyphen (-) would seem a sensible choice."
13350 #. type: Plain text
13351 #: build/C/man5/services.5:152
13353 "Lines not matching this format should not be present in the file. "
13354 "(Currently, they are silently skipped by B<getservent>(3), "
13355 "B<getservbyname>(3), and B<getservbyport>(3). However, this behavior should "
13356 "not be relied on.)"
13359 #. type: Plain text
13360 #: build/C/man5/services.5:169
13361 msgid "A sample B<services> file might look like this:"
13365 #: build/C/man5/services.5:172
13370 #. type: Plain text
13371 #: build/C/man5/services.5:182
13375 "qotd 17/tcp quote\n"
13376 "msp 18/tcp # message send protocol\n"
13377 "msp 18/udp # message send protocol\n"
13378 "chargen 19/tcp ttytst source\n"
13379 "chargen 19/udp ttytst source\n"
13381 "# 22 - unassigned\n"
13385 #. type: Plain text
13386 #: build/C/man5/services.5:188
13387 msgid "The Internet network services list"
13391 #: build/C/man5/services.5:188
13393 msgid "I<E<lt>netdb.hE<gt>>"
13397 #. It's not clear when/if the following was ever true;
13398 #. it isn't true for glibc 2.8:
13399 #. There is a maximum of 35 aliases, due to the way the
13400 #. .BR getservent (3)
13401 #. code is written.
13403 #. It's not clear when/if the following was ever true;
13404 #. it isn't true for glibc 2.8:
13405 #. Lines longer than
13407 #. (currently 1024) characters will be ignored by
13408 #. .BR getservent (3),
13409 #. .BR getservbyname (3),
13411 #. .BR getservbyport (3).
13412 #. However, this will also cause the next line to be mis-parsed.
13413 #. type: Plain text
13414 #: build/C/man5/services.5:209
13415 msgid "Definition of B<_PATH_SERVICES>"
13418 #. type: Plain text
13419 #: build/C/man5/services.5:219
13421 "B<listen>(2), B<endservent>(3), B<getservbyname>(3), B<getservbyport>(3), "
13422 "B<getservent>(3), B<setservent>(3), B<inetd.conf>(5), B<protocols>(5), "
13426 #. type: Plain text
13427 #: build/C/man5/services.5:221
13428 msgid "Assigned Numbers RFC, most recently RFC\\ 1700, (AKA STD0002)"
13432 #: build/C/man3/setnetgrent.3:5
13434 msgid "SETNETGRENT"
13438 #: build/C/man3/setnetgrent.3:5
13443 #. type: Plain text
13444 #: build/C/man3/setnetgrent.3:9
13446 "setnetgrent, endnetgrent, getnetgrent, getnetgrent_r, innetgr - handle "
13447 "network group entries"
13450 #. type: Plain text
13451 #: build/C/man3/setnetgrent.3:14
13453 msgid "B<int setnetgrent(const char *>I<netgroup>B<);>\n"
13456 #. type: Plain text
13457 #: build/C/man3/setnetgrent.3:16
13459 msgid "B<void endnetgrent(void);>\n"
13462 #. type: Plain text
13463 #: build/C/man3/setnetgrent.3:18
13466 "B<int getnetgrent(char **>I<host>B<, char **>I<user>B<, char "
13467 "**>I<domain>B<);>\n"
13470 #. type: Plain text
13471 #: build/C/man3/setnetgrent.3:21
13474 "B<int getnetgrent_r(char **>I<host>B<, char **>I<user>B<,>\n"
13475 "B< char **>I<domain>B<, char *>I<buf>B<, int "
13476 ">I<buflen>B<);>\n"
13479 #. type: Plain text
13480 #: build/C/man3/setnetgrent.3:24
13483 "B<int innetgr(const char *>I<netgroup>B<, const char *>I<host>B<,>\n"
13484 "B< const char *>I<user>B<, const char *>I<domain>B<);>\n"
13487 #. type: Plain text
13488 #: build/C/man3/setnetgrent.3:38
13490 "B<setnetgrent>(), B<endnetgrent>(), B<getnetgrent>(), B<getnetgrent_r>(), "
13491 "B<innetgr>(): _BSD_SOURCE || _SVID_SOURCE"
13494 #. type: Plain text
13495 #: build/C/man3/setnetgrent.3:52
13497 "The I<netgroup> is a SunOS invention. A netgroup database is a list of "
13498 "string triples (I<hostname>, I<username>, I<domainname>) or other netgroup "
13499 "names. Any of the elements in a triple can be empty, which means that "
13500 "anything matches. The functions described here allow access to the netgroup "
13501 "databases. The file I</etc/nsswitch.conf> defines what database is "
13505 #. type: Plain text
13506 #: build/C/man3/setnetgrent.3:72
13508 "The B<setnetgrent>() call defines the netgroup that will be searched by "
13509 "subsequent B<getnetgrent>() calls. The B<getnetgrent>() function "
13510 "retrieves the next netgroup entry, and returns pointers in I<host>, I<user>, "
13511 "I<domain>. A NULL pointer means that the corresponding entry matches any "
13512 "string. The pointers are valid only as long as there is no call to other "
13513 "netgroup-related functions. To avoid this problem you can use the GNU "
13514 "function B<getnetgrent_r>() that stores the strings in the supplied "
13515 "buffer. To free all allocated buffers use B<endnetgrent>()."
13518 #. type: Plain text
13519 #: build/C/man3/setnetgrent.3:81
13521 "In most cases you only want to check if the triplet (I<hostname>, "
13522 "I<username>, I<domainname>) is a member of a netgroup. The function "
13523 "B<innetgr>() can be used for this without calling the above three "
13524 "functions. Again, a NULL pointer is a wildcard and matches any string. The "
13525 "function is thread-safe."
13528 #. type: Plain text
13529 #: build/C/man3/setnetgrent.3:83
13530 msgid "These functions return 1 on success and 0 for failure."
13533 #. type: Plain text
13534 #: build/C/man3/setnetgrent.3:85
13535 msgid "I</etc/netgroup>"
13538 #. getnetgrent_r() is on Solaris 8 and AIX 5.1, but not the BSDs.
13539 #. type: Plain text
13540 #: build/C/man3/setnetgrent.3:98
13542 "These functions are not in POSIX.1-2001, but B<setnetgrent>(), "
13543 "B<endnetgrent>(), B<getnetgrent>(), and B<innetgr>() are available on most "
13544 "UNIX systems. B<getnetgrent_r>() is not widely available on other systems."
13547 #. type: Plain text
13548 #: build/C/man3/setnetgrent.3:102
13549 msgid "In the BSD implementation, B<setnetgrent>() returns void."
13552 #. type: Plain text
13553 #: build/C/man3/setnetgrent.3:106
13554 msgid "B<sethostent>(3), B<setprotoent>(3), B<setservent>(3)"
13558 #: build/C/man2/shutdown.2:38
13563 #. type: Plain text
13564 #: build/C/man2/shutdown.2:41
13565 msgid "shutdown - shut down part of a full-duplex connection"
13568 #. type: Plain text
13569 #: build/C/man2/shutdown.2:45
13570 msgid "B<int shutdown(int >I<sockfd>B<, int >I<how>B<);>"
13573 #. type: Plain text
13574 #: build/C/man2/shutdown.2:67
13576 "The B<shutdown>() call causes all or part of a full-duplex connection on "
13577 "the socket associated with I<sockfd> to be shut down. If I<how> is "
13578 "B<SHUT_RD>, further receptions will be disallowed. If I<how> is B<SHUT_WR>, "
13579 "further transmissions will be disallowed. If I<how> is B<SHUT_RDWR>, "
13580 "further receptions and transmissions will be disallowed."
13583 #. type: Plain text
13584 #: build/C/man2/shutdown.2:77
13585 msgid "I<sockfd> is not a valid descriptor."
13588 #. type: Plain text
13589 #: build/C/man2/shutdown.2:80
13590 msgid "The specified socket is not connected."
13593 #. type: Plain text
13594 #: build/C/man2/shutdown.2:84
13595 msgid "I<sockfd> is a file, not a socket."
13598 #. type: Plain text
13599 #: build/C/man2/shutdown.2:88
13601 "POSIX.1-2001, 4.4BSD (the B<shutdown>() function call first appeared in "
13605 #. type: Plain text
13606 #: build/C/man2/shutdown.2:97
13608 "The constants B<SHUT_RD>, B<SHUT_WR>, B<SHUT_RDWR> have the value 0, 1, 2, "
13609 "respectively, and are defined in I<E<lt>sys/socket.hE<gt>> since "
13613 #. type: Plain text
13614 #: build/C/man2/shutdown.2:101
13615 msgid "B<connect>(2), B<socket>(2), B<socket>(7)"
13619 #: build/C/man7/tcp.7:16
13624 #. type: Plain text
13625 #: build/C/man7/tcp.7:19
13626 msgid "tcp - TCP protocol"
13629 #. type: Plain text
13630 #: build/C/man7/tcp.7:25
13631 msgid "B<#include E<lt>netinet/tcp.hE<gt>>"
13634 #. type: Plain text
13635 #: build/C/man7/tcp.7:27
13636 msgid "B<tcp_socket = socket(AF_INET, SOCK_STREAM, 0);>"
13639 #. type: Plain text
13640 #: build/C/man7/tcp.7:40
13642 "This is an implementation of the TCP protocol defined in RFC\\ 793, RFC\\ "
13643 "1122 and RFC\\ 2001 with the NewReno and SACK extensions. It provides a "
13644 "reliable, stream-oriented, full-duplex connection between two sockets on top "
13645 "of B<ip>(7), for both v4 and v6 versions. TCP guarantees that the data "
13646 "arrives in order and retransmits lost packets. It generates and checks a "
13647 "per-packet checksum to catch transmission errors. TCP does not preserve "
13648 "record boundaries."
13651 #. type: Plain text
13652 #: build/C/man7/tcp.7:59
13654 "A newly created TCP socket has no remote or local address and is not fully "
13655 "specified. To create an outgoing TCP connection use B<connect>(2) to "
13656 "establish a connection to another TCP socket. To receive new incoming "
13657 "connections, first B<bind>(2) the socket to a local address and port and "
13658 "then call B<listen>(2) to put the socket into the listening state. After "
13659 "that a new socket for each incoming connection can be accepted using "
13660 "B<accept>(2). A socket which has had B<accept>(2) or B<connect>(2) "
13661 "successfully called on it is fully specified and may transmit data. Data "
13662 "cannot be transmitted on listening or not yet connected sockets."
13665 #. type: Plain text
13666 #: build/C/man7/tcp.7:79
13668 "Linux supports RFC\\ 1323 TCP high performance extensions. These include "
13669 "Protection Against Wrapped Sequence Numbers (PAWS), Window Scaling and "
13670 "Timestamps. Window scaling allows the use of large (E<gt> 64K) TCP windows "
13671 "in order to support links with high latency or bandwidth. To make use of "
13672 "them, the send and receive buffer sizes must be increased. They can be set "
13673 "globally with the I</proc/sys/net/ipv4/tcp_wmem> and "
13674 "I</proc/sys/net/ipv4/tcp_rmem> files, or on individual sockets by using the "
13675 "B<SO_SNDBUF> and B<SO_RCVBUF> socket options with the B<setsockopt>(2) "
13679 #. type: Plain text
13680 #: build/C/man7/tcp.7:110
13682 "The maximum sizes for socket buffers declared via the B<SO_SNDBUF> and "
13683 "B<SO_RCVBUF> mechanisms are limited by the values in the "
13684 "I</proc/sys/net/core/rmem_max> and I</proc/sys/net/core/wmem_max> files. "
13685 "Note that TCP actually allocates twice the size of the buffer requested in "
13686 "the B<setsockopt>(2) call, and so a succeeding B<getsockopt>(2) call will "
13687 "not return the same size of buffer as requested in the B<setsockopt>(2) "
13688 "call. TCP uses the extra space for administrative purposes and internal "
13689 "kernel structures, and the I</proc> file values reflect the larger sizes "
13690 "compared to the actual TCP windows. On individual connections, the socket "
13691 "buffer size must be set prior to the B<listen>(2) or B<connect>(2) calls "
13692 "in order to have it take effect. See B<socket>(7) for more information."
13695 #. type: Plain text
13696 #: build/C/man7/tcp.7:142
13698 "TCP supports urgent data. Urgent data is used to signal the receiver that "
13699 "some important message is part of the data stream and that it should be "
13700 "processed as soon as possible. To send urgent data specify the B<MSG_OOB> "
13701 "option to B<send>(2). When urgent data is received, the kernel sends a "
13702 "B<SIGURG> signal to the process or process group that has been set as the "
13703 "socket \"owner\" using the B<SIOCSPGRP> or B<FIOSETOWN> ioctls (or the "
13704 "POSIX.1-2001-specified B<fcntl>(2) B<F_SETOWN> operation). When the "
13705 "B<SO_OOBINLINE> socket option is enabled, urgent data is put into the normal "
13706 "data stream (a program can test for its location using the B<SIOCATMARK> "
13707 "ioctl described below), otherwise it can be only received when the "
13708 "B<MSG_OOB> flag is set for B<recv>(2) or B<recvmsg>(2)."
13711 #. type: Plain text
13712 #: build/C/man7/tcp.7:150
13714 "Linux 2.4 introduced a number of changes for improved throughput and "
13715 "scaling, as well as enhanced functionality. Some of these features include "
13716 "support for zero-copy B<sendfile>(2), Explicit Congestion Notification, new "
13717 "management of TIME_WAIT sockets, keep-alive socket options and support for "
13718 "Duplicate SACK extensions."
13722 #: build/C/man7/tcp.7:150
13724 msgid "Address Formats"
13727 #. type: Plain text
13728 #: build/C/man7/tcp.7:159
13730 "TCP is built on top of IP (see B<ip>(7)). The address formats defined by "
13731 "B<ip>(7) apply to TCP. TCP only supports point-to-point communication; "
13732 "broadcasting and multicasting are not supported."
13735 #. type: Plain text
13736 #: build/C/man7/tcp.7:171
13738 "System-wide TCP parameter settings can be accessed by files in the directory "
13739 "I</proc/sys/net/ipv4/>. In addition, most IP I</proc> interfaces also apply "
13740 "to TCP; see B<ip>(7). Variables described as I<Boolean> take an integer "
13741 "value, with a nonzero value (\"true\") meaning that the corresponding option "
13742 "is enabled, and a zero value (\"false\") meaning that the option is "
13747 #: build/C/man7/tcp.7:171
13749 msgid "I<tcp_abc> (Integer; default: 0; since Linux 2.6.15)"
13752 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
13753 #. type: Plain text
13754 #: build/C/man7/tcp.7:179
13756 "Control the Appropriate Byte Count (ABC), defined in RFC 3465. ABC is a way "
13757 "of increasing the congestion window (I<cwnd>) more slowly in response to "
13758 "partial acknowledgments. Possible values are:"
13762 #: build/C/man7/tcp.7:180 build/C/man7/tcp.7:349 build/C/man7/tcp.7:370 build/C/man7/tcp.7:514
13767 #. type: Plain text
13768 #: build/C/man7/tcp.7:184
13769 msgid "increase I<cwnd> once per acknowledgment (no ABC)"
13773 #: build/C/man7/tcp.7:184 build/C/man7/tcp.7:351 build/C/man7/tcp.7:377 build/C/man7/tcp.7:516
13778 #. type: Plain text
13779 #: build/C/man7/tcp.7:188
13780 msgid "increase I<cwnd> once per acknowledgment of full sized segment"
13784 #: build/C/man7/tcp.7:188 build/C/man7/tcp.7:353 build/C/man7/tcp.7:384 build/C/man7/tcp.7:518
13789 #. type: Plain text
13790 #: build/C/man7/tcp.7:193
13792 "allow increase I<cwnd> by two if acknowledgment is of two segments to "
13793 "compensate for delayed acknowledgments."
13797 #: build/C/man7/tcp.7:194
13799 msgid "I<tcp_abort_on_overflow> (Boolean; default: disabled; since Linux 2.4)"
13803 #. type: Plain text
13804 #: build/C/man7/tcp.7:206
13806 "Enable resetting connections if the listening service is too slow and unable "
13807 "to keep up and accept them. It means that if overflow occurred due to a "
13808 "burst, the connection will recover. Enable this option I<only> if you are "
13809 "really sure that the listening daemon cannot be tuned to accept connections "
13810 "faster. Enabling this option can harm the clients of your server."
13814 #: build/C/man7/tcp.7:206
13816 msgid "I<tcp_adv_win_scale> (integer; default: 2; since Linux 2.4)"
13819 #. Since 2.4.0-test7
13820 #. type: Plain text
13821 #: build/C/man7/tcp.7:218
13823 "Count buffering overhead as I<bytes/2^tcp_adv_win_scale>, if "
13824 "I<tcp_adv_win_scale> is greater than 0; or "
13825 "I<bytes-bytes/2^(-tcp_adv_win_scale)>, if I<tcp_adv_win_scale> is less than "
13826 "or equal to zero."
13829 #. type: Plain text
13830 #: build/C/man7/tcp.7:231
13832 "The socket receive buffer space is shared between the application and "
13833 "kernel. TCP maintains part of the buffer as the TCP window, this is the "
13834 "size of the receive window advertised to the other end. The rest of the "
13835 "space is used as the \"application\" buffer, used to isolate the network "
13836 "from scheduling and application latencies. The I<tcp_adv_win_scale> default "
13837 "value of 2 implies that the space used for the application buffer is one "
13838 "fourth that of the total."
13842 #: build/C/man7/tcp.7:231
13845 "I<tcp_allowed_congestion_control> (String; default: see text; since Linux "
13849 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
13850 #. FIXME How are the items in this delimited? Null bytes, spaces, commas?
13851 #. type: Plain text
13852 #: build/C/man7/tcp.7:243
13854 "Show/set the congestion control algorithm choices available to unprivileged "
13855 "processes (see the description of the B<TCP_CONGESTION> socket option). The "
13856 "list is a subset of those listed in I<tcp_available_congestion_control>. "
13857 "The default value for this list is \"reno\" plus the default setting of "
13858 "I<tcp_congestion_control>."
13862 #: build/C/man7/tcp.7:243
13864 msgid "I<tcp_available_congestion_control> (String; read-only; since Linux 2.4.20)"
13867 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
13868 #. FIXME How are the items in this delimited? Null bytes, spaces, commas?
13869 #. type: Plain text
13870 #: build/C/man7/tcp.7:253
13872 "Show a list of the congestion-control algorithms that are registered. This "
13873 "list is a limiting set for the list in I<tcp_allowed_congestion_control>. "
13874 "More congestion-control algorithms may be available as modules, but not "
13879 #: build/C/man7/tcp.7:253
13881 msgid "I<tcp_app_win> (integer; default: 31; since Linux 2.4)"
13884 #. Since 2.4.0-test7
13885 #. type: Plain text
13886 #: build/C/man7/tcp.7:258
13888 "This variable defines how many bytes of the TCP window are reserved for "
13889 "buffering overhead."
13893 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
13894 #. type: Plain text
13895 #: build/C/man7/tcp.7:264
13897 "A maximum of (I<window/2^tcp_app_win>, mss) bytes in the window are reserved "
13898 "for the application buffer. A value of 0 implies that no amount is "
13903 #: build/C/man7/tcp.7:264
13905 msgid "I<tcp_base_mss> (Integer; default: 512; since Linux 2.6.17)"
13909 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
13910 #. type: Plain text
13911 #: build/C/man7/tcp.7:273
13913 "The initial value of I<search_low> to be used by the packetization layer "
13914 "Path MTU discovery (MTU probing). If MTU probing is enabled, this is the "
13915 "initial MSS used by the connection."
13919 #: build/C/man7/tcp.7:273
13921 msgid "I<tcp_bic> (Boolean; default: disabled; Linux 2.4.27/2.6.6 to 2.6.13)"
13925 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
13926 #. type: Plain text
13927 #: build/C/man7/tcp.7:287
13929 "Enable BIC TCP congestion control algorithm. BIC-TCP is a sender-side only "
13930 "change that ensures a linear RTT fairness under large windows while offering "
13931 "both scalability and bounded TCP-friendliness. The protocol combines two "
13932 "schemes called additive increase and binary search increase. When the "
13933 "congestion window is large, additive increase with a large increment ensures "
13934 "linear RTT fairness as well as good scalability. Under small congestion "
13935 "windows, binary search increase provides TCP friendliness."
13939 #: build/C/man7/tcp.7:287
13941 msgid "I<tcp_bic_low_window> (integer; default: 14; Linux 2.4.27/2.6.6 to 2.6.13)"
13945 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
13946 #. type: Plain text
13947 #: build/C/man7/tcp.7:294
13949 "Set the threshold window (in packets) where BIC TCP starts to adjust the "
13950 "congestion window. Below this threshold BIC TCP behaves the same as the "
13951 "default TCP Reno."
13955 #: build/C/man7/tcp.7:294
13958 "I<tcp_bic_fast_convergence> (Boolean; default: enabled; Linux 2.4.27/2.6.6 "
13962 #. type: Plain text
13963 #: build/C/man7/tcp.7:298
13965 "Force BIC TCP to more quickly respond to changes in congestion window. "
13966 "Allows two flows sharing the same connection to converge more rapidly."
13970 #: build/C/man7/tcp.7:298
13972 msgid "I<tcp_congestion_control> (String; default: see text; since Linux 2.4.13)"
13975 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
13976 #. type: Plain text
13977 #: build/C/man7/tcp.7:305
13979 "Set the default congestion-control algorithm to be used for new "
13980 "connections. The algorithm \"reno\" is always available, but additional "
13981 "choices may be available depending on kernel configuration. The default "
13982 "value for this file is set as part of kernel configuration."
13986 #: build/C/man7/tcp.7:305
13988 msgid "I<tcp_dma_copybreak> (integer; default: 4096; since Linux 2.6.24)"
13991 #. type: Plain text
13992 #: build/C/man7/tcp.7:312
13994 "Lower limit, in bytes, of the size of socket reads that will be offloaded to "
13995 "a DMA copy engine, if one is present in the system and the kernel was "
13996 "configured with the B<CONFIG_NET_DMA> option."
14000 #: build/C/man7/tcp.7:312
14002 msgid "I<tcp_dsack> (Boolean; default: enabled; since Linux 2.4)"
14005 #. Since 2.4.0-test7
14006 #. type: Plain text
14007 #: build/C/man7/tcp.7:316
14008 msgid "Enable RFC\\ 2883 TCP Duplicate SACK support."
14012 #: build/C/man7/tcp.7:316
14014 msgid "I<tcp_ecn> (Boolean; default: disabled; since Linux 2.4)"
14017 #. Since 2.4.0-test7
14018 #. type: Plain text
14019 #: build/C/man7/tcp.7:323
14021 "Enable RFC\\ 2884 Explicit Congestion Notification. When enabled, "
14022 "connectivity to some destinations could be affected due to older, "
14023 "misbehaving routers along the path causing connections to be dropped."
14027 #: build/C/man7/tcp.7:323
14029 msgid "I<tcp_fack> (Boolean; default: enabled; since Linux 2.2)"
14033 #. type: Plain text
14034 #: build/C/man7/tcp.7:327
14035 msgid "Enable TCP Forward Acknowledgement support."
14039 #: build/C/man7/tcp.7:327
14041 msgid "I<tcp_fin_timeout> (integer; default: 60; since Linux 2.2)"
14046 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
14047 #. type: Plain text
14048 #: build/C/man7/tcp.7:337
14050 "This specifies how many seconds to wait for a final FIN packet before the "
14051 "socket is forcibly closed. This is strictly a violation of the TCP "
14052 "specification, but required to prevent denial-of-service attacks. In Linux "
14053 "2.2, the default value was 180."
14057 #: build/C/man7/tcp.7:337
14059 msgid "I<tcp_frto> (integer; default: 0; since Linux 2.4.21/2.6)"
14062 #. Since 2.4.21/2.5.43
14063 #. type: Plain text
14064 #: build/C/man7/tcp.7:346
14066 "Enable F-RTO, an enhanced recovery algorithm for TCP retransmission timeouts "
14067 "(RTOs). It is particularly beneficial in wireless environments where packet "
14068 "loss is typically due to random radio interference rather than intermediate "
14069 "router congestion. See RFC 4138 for more details."
14072 #. type: Plain text
14073 #: build/C/man7/tcp.7:348
14074 msgid "This file can have one of the following values:"
14077 #. type: Plain text
14078 #: build/C/man7/tcp.7:351
14082 #. type: Plain text
14083 #: build/C/man7/tcp.7:353
14084 msgid "The basic version F-RTO algorithm is enabled."
14087 #. type: Plain text
14088 #: build/C/man7/tcp.7:358
14090 "Enable SACK-enhanced F-RTO if flow uses SACK. The basic version can be used "
14091 "also when SACK is in use though in that case scenario(s) exists where F-RTO "
14092 "interacts badly with the packet counting of the SACK-enabled TCP flow."
14095 #. type: Plain text
14096 #: build/C/man7/tcp.7:362
14098 "Before Linux 2.6.22, this parameter was a Boolean value, supporting just "
14099 "values 0 and 1 above."
14103 #: build/C/man7/tcp.7:362
14105 msgid "I<tcp_frto_response> (integer; default: 0; since Linux 2.6.22)"
14108 #. type: Plain text
14109 #: build/C/man7/tcp.7:369
14111 "When F-RTO has detected that a TCP retransmission timeout was spurious (i.e, "
14112 "the timeout would have been avoided had TCP set a longer retransmission "
14113 "timeout), TCP has several options concerning what to do next. Possible "
14117 #. type: Plain text
14118 #: build/C/man7/tcp.7:377
14120 "Rate halving based; a smooth and conservative response, results in halved "
14121 "congestion window (I<cwnd>) and slow-start threshold (I<ssthresh>) after "
14125 #. type: Plain text
14126 #: build/C/man7/tcp.7:384
14128 "Very conservative response; not recommended because even though being valid, "
14129 "it interacts poorly with the rest of Linux TCP; halves I<cwnd> and "
14130 "I<ssthresh> immediately."
14133 #. type: Plain text
14134 #: build/C/man7/tcp.7:393
14136 "Aggressive response; undoes congestion-control measures that are now known "
14137 "to be unnecessary (ignoring the possibility of a lost retransmission that "
14138 "would require TCP to be more cautious); I<cwnd> and I<ssthresh> are restored "
14139 "to the values prior to timeout."
14143 #: build/C/man7/tcp.7:394
14145 msgid "I<tcp_keepalive_intvl> (integer; default: 75; since Linux 2.4)"
14149 #. type: Plain text
14150 #: build/C/man7/tcp.7:398
14151 msgid "The number of seconds between TCP keep-alive probes."
14155 #: build/C/man7/tcp.7:398
14157 msgid "I<tcp_keepalive_probes> (integer; default: 9; since Linux 2.2)"
14161 #. type: Plain text
14162 #: build/C/man7/tcp.7:404
14164 "The maximum number of TCP keep-alive probes to send before giving up and "
14165 "killing the connection if no response is obtained from the other end."
14169 #: build/C/man7/tcp.7:404
14171 msgid "I<tcp_keepalive_time> (integer; default: 7200; since Linux 2.2)"
14175 #. type: Plain text
14176 #: build/C/man7/tcp.7:416
14178 "The number of seconds a connection needs to be idle before TCP begins "
14179 "sending out keep-alive probes. Keep-alives are only sent when the "
14180 "B<SO_KEEPALIVE> socket option is enabled. The default value is 7200 seconds "
14181 "(2 hours). An idle connection is terminated after approximately an "
14182 "additional 11 minutes (9 probes an interval of 75 seconds apart) when "
14183 "keep-alive is enabled."
14187 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
14188 #. type: Plain text
14189 #: build/C/man7/tcp.7:421
14191 "Note that underlying connection tracking mechanisms and application timeouts "
14192 "may be much shorter."
14196 #: build/C/man7/tcp.7:421
14198 msgid "I<tcp_low_latency> (Boolean; default: disabled; since Linux 2.4.21/2.6)"
14201 #. Since 2.4.21/2.5.60
14202 #. type: Plain text
14203 #: build/C/man7/tcp.7:429
14205 "If enabled, the TCP stack makes decisions that prefer lower latency as "
14206 "opposed to higher throughput. It this option is disabled, then higher "
14207 "throughput is preferred. An example of an application where this default "
14208 "should be changed would be a Beowulf compute cluster."
14212 #: build/C/man7/tcp.7:429
14214 msgid "I<tcp_max_orphans> (integer; default: see below; since Linux 2.4)"
14218 #. type: Plain text
14219 #: build/C/man7/tcp.7:443
14221 "The maximum number of orphaned (not attached to any user file handle) TCP "
14222 "sockets allowed in the system. When this number is exceeded, the orphaned "
14223 "connection is reset and a warning is printed. This limit exists only to "
14224 "prevent simple denial-of-service attacks. Lowering this limit is not "
14225 "recommended. Network conditions might require you to increase the number of "
14226 "orphans allowed, but note that each orphan can eat up to ~64K of unswappable "
14227 "memory. The default initial value is set equal to the kernel parameter "
14228 "NR_FILE. This initial default is adjusted depending on the memory in the "
14233 #: build/C/man7/tcp.7:443
14235 msgid "I<tcp_max_syn_backlog> (integer; default: see below; since Linux 2.2)"
14239 #. type: Plain text
14240 #: build/C/man7/tcp.7:460
14242 "The maximum number of queued connection requests which have still not "
14243 "received an acknowledgement from the connecting client. If this number is "
14244 "exceeded, the kernel will begin dropping requests. The default value of 256 "
14245 "is increased to 1024 when the memory present in the system is adequate or "
14246 "greater (E<gt>= 128Mb), and reduced to 128 for those systems with very low "
14247 "memory (E<lt>= 32Mb). It is recommended that if this needs to be increased "
14248 "above 1024, TCP_SYNQ_HSIZE in I<include/net/tcp.h> be modified to keep "
14249 "TCP_SYNQ_HSIZE*16E<lt>=tcp_max_syn_backlog, and the kernel be recompiled."
14253 #: build/C/man7/tcp.7:460
14255 msgid "I<tcp_max_tw_buckets> (integer; default: see below; since Linux 2.4)"
14259 #. type: Plain text
14260 #: build/C/man7/tcp.7:470
14262 "The maximum number of sockets in TIME_WAIT state allowed in the system. "
14263 "This limit exists only to prevent simple denial-of-service attacks. The "
14264 "default value of NR_FILE*2 is adjusted depending on the memory in the "
14265 "system. If this number is exceeded, the socket is closed and a warning is "
14270 #: build/C/man7/tcp.7:470
14272 msgid "I<tcp_moderate_rcvbuf> (Boolean; default: enabled; since Linux 2.4.17/2.6.7)"
14275 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
14276 #. type: Plain text
14277 #: build/C/man7/tcp.7:477
14279 "If enabled, TCP performs receive buffer auto-tuning, attempting to "
14280 "automatically size the buffer (no greater than I<tcp_rmem[2]>) to match the "
14281 "size required by the path for full throughput."
14285 #: build/C/man7/tcp.7:477
14287 msgid "I<tcp_mem> (since Linux 2.4)"
14290 #. Since 2.4.0-test7
14291 #. type: Plain text
14292 #: build/C/man7/tcp.7:489
14294 "This is a vector of 3 integers: [low, pressure, high]. These bounds, "
14295 "measured in units of the system page size, are used by TCP to track its "
14296 "memory usage. The defaults are calculated at boot time from the amount of "
14297 "available memory. (TCP can only use I<low memory> for this, which is "
14298 "limited to around 900 megabytes on 32-bit systems. 64-bit systems do not "
14299 "suffer this limitation.)"
14303 #: build/C/man7/tcp.7:490
14308 #. type: Plain text
14309 #: build/C/man7/tcp.7:494
14311 "TCP doesn't regulate its memory allocation when the number of pages it has "
14312 "allocated globally is below this number."
14316 #: build/C/man7/tcp.7:494 build/C/man7/udp.7:145
14318 msgid "I<pressure>"
14321 #. type: Plain text
14322 #: build/C/man7/tcp.7:503
14324 "When the amount of memory allocated by TCP exceeds this number of pages, TCP "
14325 "moderates its memory consumption. This memory pressure state is exited once "
14326 "the number of pages allocated falls below the I<low> mark."
14330 #: build/C/man7/tcp.7:503
14335 #. type: Plain text
14336 #: build/C/man7/tcp.7:507
14338 "The maximum number of pages, globally, that TCP will allocate. This value "
14339 "overrides any other limits imposed by the kernel."
14343 #: build/C/man7/tcp.7:508
14345 msgid "I<tcp_mtu_probing> (integer; default: 0; since Linux 2.6.17)"
14348 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
14349 #. type: Plain text
14350 #: build/C/man7/tcp.7:513
14352 "This parameter controls TCP Packetization-Layer Path MTU Discovery. The "
14353 "following values may be assigned to the file:"
14356 #. type: Plain text
14357 #: build/C/man7/tcp.7:516
14361 #. type: Plain text
14362 #: build/C/man7/tcp.7:518
14363 msgid "Disabled by default, enabled when an ICMP black hole detected"
14366 #. type: Plain text
14367 #: build/C/man7/tcp.7:521
14368 msgid "Always enabled, use initial MSS of I<tcp_base_mss>."
14372 #: build/C/man7/tcp.7:522
14374 msgid "I<tcp_no_metrics_save> (Boolean; default: disabled; since Linux 2.6.6)"
14377 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
14378 #. type: Plain text
14379 #: build/C/man7/tcp.7:533
14381 "By default, TCP saves various connection metrics in the route cache when the "
14382 "connection closes, so that connections established in the near future can "
14383 "use these to set initial conditions. Usually, this increases overall "
14384 "performance, but it may sometimes cause performance degradation. If "
14385 "I<tcp_no_metrics_save> is enabled, TCP will not cache metrics on closing "
14390 #: build/C/man7/tcp.7:533
14392 msgid "I<tcp_orphan_retries> (integer; default: 8; since Linux 2.4)"
14396 #. type: Plain text
14397 #: build/C/man7/tcp.7:538
14399 "The maximum number of attempts made to probe the other end of a connection "
14400 "which has been closed by our end."
14404 #: build/C/man7/tcp.7:538
14406 msgid "I<tcp_reordering> (integer; default: 3; since Linux 2.4)"
14409 #. Since 2.4.0-test7
14410 #. type: Plain text
14411 #: build/C/man7/tcp.7:547
14413 "The maximum a packet can be reordered in a TCP packet stream without TCP "
14414 "assuming packet loss and going into slow start. It is not advisable to "
14415 "change this number. This is a packet reordering detection metric designed "
14416 "to minimize unnecessary back off and retransmits provoked by reordering of "
14417 "packets on a connection."
14421 #: build/C/man7/tcp.7:547
14423 msgid "I<tcp_retrans_collapse> (Boolean; default: enabled; since Linux 2.2)"
14427 #. type: Plain text
14428 #: build/C/man7/tcp.7:551
14429 msgid "Try to send full-sized packets during retransmit."
14433 #: build/C/man7/tcp.7:551
14435 msgid "I<tcp_retries1> (integer; default: 3; since Linux 2.2)"
14439 #. type: Plain text
14440 #: build/C/man7/tcp.7:561
14442 "The number of times TCP will attempt to retransmit a packet on an "
14443 "established connection normally, without the extra effort of getting the "
14444 "network layers involved. Once we exceed this number of retransmits, we "
14445 "first have the network layer update the route if possible before each new "
14446 "retransmit. The default is the RFC specified minimum of 3."
14450 #: build/C/man7/tcp.7:561
14452 msgid "I<tcp_retries2> (integer; default: 15; since Linux 2.2)"
14456 #. type: Plain text
14457 #: build/C/man7/tcp.7:571
14459 "The maximum number of times a TCP packet is retransmitted in established "
14460 "state before giving up. The default value is 15, which corresponds to a "
14461 "duration of approximately between 13 to 30 minutes, depending on the "
14462 "retransmission timeout. The RFC\\ 1122 specified minimum limit of 100 "
14463 "seconds is typically deemed too short."
14467 #: build/C/man7/tcp.7:571
14469 msgid "I<tcp_rfc1337> (Boolean; default: disabled; since Linux 2.2)"
14473 #. type: Plain text
14474 #: build/C/man7/tcp.7:579
14476 "Enable TCP behavior conformant with RFC\\ 1337. When disabled, if a RST is "
14477 "received in TIME_WAIT state, we close the socket immediately without waiting "
14478 "for the end of the TIME_WAIT period."
14482 #: build/C/man7/tcp.7:579
14484 msgid "I<tcp_rmem> (since Linux 2.4)"
14487 #. Since 2.4.0-test7
14488 #. type: Plain text
14489 #: build/C/man7/tcp.7:587
14491 "This is a vector of 3 integers: [min, default, max]. These parameters are "
14492 "used by TCP to regulate receive buffer sizes. TCP dynamically adjusts the "
14493 "size of the receive buffer from the defaults listed below, in the range of "
14494 "these values, depending on memory available in the system."
14498 #: build/C/man7/tcp.7:588 build/C/man7/tcp.7:764 build/C/man7/udp.7:139
14503 #. type: Plain text
14504 #: build/C/man7/tcp.7:603
14506 "minimum size of the receive buffer used by each TCP socket. The default "
14507 "value is the system page size. (On Linux 2.4, the default value is 4K, "
14508 "lowered to B<PAGE_SIZE> bytes in low-memory systems.) This value is used to "
14509 "ensure that in memory pressure mode, allocations below this size will still "
14510 "succeed. This is not used to bound the size of the receive buffer declared "
14511 "using B<SO_RCVBUF> on a socket."
14515 #: build/C/man7/tcp.7:603 build/C/man7/tcp.7:774
14520 #. type: Plain text
14521 #: build/C/man7/tcp.7:617
14523 "the default size of the receive buffer for a TCP socket. This value "
14524 "overwrites the initial default buffer size from the generic global "
14525 "I<net.core.rmem_default> defined for all protocols. The default value is "
14526 "87380 bytes. (On Linux 2.4, this will be lowered to 43689 in low-memory "
14527 "systems.) If larger receive buffer sizes are desired, this value should be "
14528 "increased (to affect all sockets). To employ large TCP windows, the "
14529 "I<net.ipv4.tcp_window_scaling> must be enabled (default)."
14533 #: build/C/man7/tcp.7:617 build/C/man7/tcp.7:788 build/C/man7/udp.7:151
14538 #. type: Plain text
14539 #: build/C/man7/tcp.7:626
14541 "the maximum size of the receive buffer used by each TCP socket. This value "
14542 "does not override the global I<net.core.rmem_max>. This is not used to "
14543 "limit the size of the receive buffer declared using B<SO_RCVBUF> on a "
14544 "socket. The default value is calculated using the formula"
14547 #. type: Plain text
14548 #: build/C/man7/tcp.7:628
14550 msgid " max(87380, min(4MB, I<tcp_mem>[1]*PAGE_SIZE/128))\n"
14553 #. type: Plain text
14554 #: build/C/man7/tcp.7:631
14556 "(On Linux 2.4, the default is 87380*2 bytes, lowered to 87380 in low-memory "
14561 #: build/C/man7/tcp.7:632
14563 msgid "I<tcp_sack> (Boolean; default: enabled; since Linux 2.2)"
14567 #. type: Plain text
14568 #: build/C/man7/tcp.7:636
14569 msgid "Enable RFC\\ 2018 TCP Selective Acknowledgements."
14573 #: build/C/man7/tcp.7:636
14575 msgid "I<tcp_slow_start_after_idle> (Boolean; default: enabled; since Linux 2.6.18)"
14578 #. The following is from 2.6.28-rc4: Documentation/networking/ip-sysctl.txt
14579 #. type: Plain text
14580 #: build/C/man7/tcp.7:644
14582 "If enabled, provide RFC 2861 behavior and time out the congestion window "
14583 "after an idle period. An idle period is defined as the current RTO "
14584 "(retransmission timeout). If disabled, the congestion window will not be "
14585 "timed out after an idle period."
14589 #: build/C/man7/tcp.7:644
14591 msgid "I<tcp_stdurg> (Boolean; default: disabled; since Linux 2.2)"
14595 #. RFC 793 was ambiguous in its specification of the meaning of the
14596 #. urgent pointer. RFC 1122 (and RFC 961) fixed on a particular
14597 #. resolution of this ambiguity (unfortunately the "wrong" one).
14598 #. type: Plain text
14599 #: build/C/man7/tcp.7:658
14601 "If this option is enabled, then use the RFC\\ 1122 interpretation of the TCP "
14602 "urgent-pointer field. According to this interpretation, the urgent pointer "
14603 "points to the last byte of urgent data. If this option is disabled, then "
14604 "use the BSD-compatible interpretation of the urgent pointer: the urgent "
14605 "pointer points to the first byte after the urgent data. Enabling this "
14606 "option may lead to interoperability problems."
14610 #: build/C/man7/tcp.7:658
14612 msgid "I<tcp_syn_retries> (integer; default: 5; since Linux 2.2)"
14616 #. type: Plain text
14617 #: build/C/man7/tcp.7:665
14619 "The maximum number of times initial SYNs for an active TCP connection "
14620 "attempt will be retransmitted. This value should not be higher than 255. "
14621 "The default value is 5, which corresponds to approximately 180 seconds."
14625 #: build/C/man7/tcp.7:665
14627 msgid "I<tcp_synack_retries> (integer; default: 5; since Linux 2.2)"
14631 #. type: Plain text
14632 #: build/C/man7/tcp.7:671
14634 "The maximum number of times a SYN/ACK segment for a passive TCP connection "
14635 "will be retransmitted. This number should not be higher than 255."
14639 #: build/C/man7/tcp.7:671
14641 msgid "I<tcp_syncookies> (Boolean; since Linux 2.2)"
14645 #. type: Plain text
14646 #: build/C/man7/tcp.7:691
14648 "Enable TCP syncookies. The kernel must be compiled with "
14649 "B<CONFIG_SYN_COOKIES>. Send out syncookies when the syn backlog queue of a "
14650 "socket overflows. The syncookies feature attempts to protect a socket from "
14651 "a SYN flood attack. This should be used as a last resort, if at all. This "
14652 "is a violation of the TCP protocol, and conflicts with other areas of TCP "
14653 "such as TCP extensions. It can cause problems for clients and relays. It "
14654 "is not recommended as a tuning mechanism for heavily loaded servers to help "
14655 "with overloaded or misconfigured conditions. For recommended alternatives "
14656 "see I<tcp_max_syn_backlog>, I<tcp_synack_retries>, and "
14657 "I<tcp_abort_on_overflow>."
14661 #: build/C/man7/tcp.7:691
14663 msgid "I<tcp_timestamps> (Boolean; default: enabled; since Linux 2.2)"
14667 #. type: Plain text
14668 #: build/C/man7/tcp.7:695
14669 msgid "Enable RFC\\ 1323 TCP timestamps."
14673 #: build/C/man7/tcp.7:695
14675 msgid "I<tcp_tso_win_divisor> (integer; default: 3; since Linux 2.6.9)"
14678 #. type: Plain text
14679 #: build/C/man7/tcp.7:701
14681 "This parameter controls what percentage of the congestion window can be "
14682 "consumed by a single TCP Segmentation Offload (TSO) frame. The setting of "
14683 "this parameter is a tradeoff between burstiness and building larger TSO "
14688 #: build/C/man7/tcp.7:701
14690 msgid "I<tcp_tw_recycle> (Boolean; default: disabled; since Linux 2.4)"
14695 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
14696 #. type: Plain text
14697 #: build/C/man7/tcp.7:710
14699 "Enable fast recycling of TIME_WAIT sockets. Enabling this option is not "
14700 "recommended since this causes problems when working with NAT (Network "
14701 "Address Translation)."
14705 #: build/C/man7/tcp.7:710
14707 msgid "I<tcp_tw_reuse> (Boolean; default: disabled; since Linux 2.4.19/2.6)"
14710 #. Since 2.4.19/2.5.43
14712 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
14713 #. type: Plain text
14714 #: build/C/man7/tcp.7:718
14716 "Allow to reuse TIME_WAIT sockets for new connections when it is safe from "
14717 "protocol viewpoint. It should not be changed without advice/request of "
14718 "technical experts."
14722 #: build/C/man7/tcp.7:718
14724 msgid "I<tcp_vegas_cong_avoid> (Boolean; default: disabled; Linux 2.2 to 2.6.13)"
14727 #. Since 2.1.8; removed in 2.6.13
14729 #. The following is from 2.6.12: Documentation/networking/ip-sysctl.txt
14730 #. type: Plain text
14731 #: build/C/man7/tcp.7:729
14733 "Enable TCP Vegas congestion avoidance algorithm. TCP Vegas is a sender-side "
14734 "only change to TCP that anticipates the onset of congestion by estimating "
14735 "the bandwidth. TCP Vegas adjusts the sending rate by modifying the "
14736 "congestion window. TCP Vegas should provide less packet loss, but it is not "
14737 "as aggressive as TCP Reno."
14741 #: build/C/man7/tcp.7:729
14743 msgid "I<tcp_westwood> (Boolean; default: disabled; Linux 2.4.26/2.6.3 to 2.6.13)"
14746 #. type: Plain text
14747 #: build/C/man7/tcp.7:741
14749 "Enable TCP Westwood+ congestion control algorithm. TCP Westwood+ is a "
14750 "sender-side only modification of the TCP Reno protocol stack that optimizes "
14751 "the performance of TCP congestion control. It is based on end-to-end "
14752 "bandwidth estimation to set congestion window and slow start threshold after "
14753 "a congestion episode. Using this estimation, TCP Westwood+ adaptively sets "
14754 "a slow start threshold and a congestion window which takes into account the "
14755 "bandwidth used at the time congestion is experienced. TCP Westwood+ "
14756 "significantly increases fairness with respect to TCP Reno in wired networks "
14757 "and throughput over wireless links."
14761 #: build/C/man7/tcp.7:741
14763 msgid "I<tcp_window_scaling> (Boolean; default: enabled; since Linux 2.2)"
14767 #. type: Plain text
14768 #: build/C/man7/tcp.7:755
14770 "Enable RFC\\ 1323 TCP window scaling. This feature allows the use of a "
14771 "large window (E<gt> 64K) on a TCP connection, should the other end support "
14772 "it. Normally, the 16 bit window length field in the TCP header limits the "
14773 "window size to less than 64K bytes. If larger windows are desired, "
14774 "applications can increase the size of their socket buffers and the window "
14775 "scaling option will be employed. If I<tcp_window_scaling> is disabled, TCP "
14776 "will not negotiate the use of window scaling with the other end during "
14777 "connection setup."
14781 #: build/C/man7/tcp.7:755
14783 msgid "I<tcp_wmem> (since Linux 2.4)"
14786 #. Since 2.4.0-test7
14787 #. type: Plain text
14788 #: build/C/man7/tcp.7:763
14790 "This is a vector of 3 integers: [min, default, max]. These parameters are "
14791 "used by TCP to regulate send buffer sizes. TCP dynamically adjusts the size "
14792 "of the send buffer from the default values listed below, in the range of "
14793 "these values, depending on memory available."
14796 #. type: Plain text
14797 #: build/C/man7/tcp.7:774
14799 "Minimum size of the send buffer used by each TCP socket. The default value "
14800 "is the system page size. (On Linux 2.4, the default value is 4K bytes.) "
14801 "This value is used to ensure that in memory pressure mode, allocations below "
14802 "this size will still succeed. This is not used to bound the size of the "
14803 "send buffer declared using B<SO_SNDBUF> on a socket."
14806 #. True in Linux 2.4 and 2.6
14807 #. type: Plain text
14808 #: build/C/man7/tcp.7:788
14810 "The default size of the send buffer for a TCP socket. This value overwrites "
14811 "the initial default buffer size from the generic global "
14812 "I</proc/sys/net/core/wmem_default> defined for all protocols. The default "
14813 "value is 16K bytes. If larger send buffer sizes are desired, this value "
14814 "should be increased (to affect all sockets). To employ large TCP windows, "
14815 "the I</proc/sys/net/ipv4/tcp_window_scaling> must be set to a nonzero value "
14819 #. type: Plain text
14820 #: build/C/man7/tcp.7:797
14822 "The maximum size of the send buffer used by each TCP socket. This value "
14823 "does not override the value in I</proc/sys/net/core/wmem_max>. This is not "
14824 "used to limit the size of the send buffer declared using B<SO_SNDBUF> on a "
14825 "socket. The default value is calculated using the formula"
14828 #. type: Plain text
14829 #: build/C/man7/tcp.7:799
14831 msgid " max(65536, min(4MB, I<tcp_mem>[1]*PAGE_SIZE/128))\n"
14834 #. type: Plain text
14835 #: build/C/man7/tcp.7:802
14837 "(On Linux 2.4, the default value is 128K bytes, lowered 64K depending on "
14838 "low-memory systems.)"
14842 #: build/C/man7/tcp.7:803
14845 "I<tcp_workaround_signed_windows> (Boolean; default: disabled; since Linux "
14849 #. type: Plain text
14850 #: build/C/man7/tcp.7:809
14852 "If enabled, assume that no receipt of a window-scaling option means that the "
14853 "remote TCP is broken and treats the window as a signed quantity. If "
14854 "disabled, assume that the remote TCP is not broken even if we do not receive "
14855 "a window scaling option from it."
14858 #. or SOL_TCP on Linux
14859 #. FIXME Document TCP_CONGESTION (new in 2.6.13)
14860 #. type: Plain text
14861 #: build/C/man7/tcp.7:824
14863 "To set or get a TCP socket option, call B<getsockopt>(2) to read or "
14864 "B<setsockopt>(2) to write the option with the option level argument set to "
14865 "B<IPPROTO_TCP>. In addition, most B<IPPROTO_IP> socket options are valid on "
14866 "TCP sockets. For more information see B<ip>(7)."
14870 #: build/C/man7/tcp.7:824
14872 msgid "B<TCP_CORK> (since Linux 2.2)"
14875 #. precisely: since 2.1.127
14876 #. type: Plain text
14877 #: build/C/man7/tcp.7:840
14879 "If set, don't send out partial frames. All queued partial frames are sent "
14880 "when the option is cleared again. This is useful for prepending headers "
14881 "before calling B<sendfile>(2), or for throughput optimization. As currently "
14882 "implemented, there is a 200 millisecond ceiling on the time for which output "
14883 "is corked by B<TCP_CORK>. If this ceiling is reached, then queued data is "
14884 "automatically transmitted. This option can be combined with B<TCP_NODELAY> "
14885 "only since Linux 2.5.71. This option should not be used in code intended to "
14890 #: build/C/man7/tcp.7:840
14892 msgid "B<TCP_DEFER_ACCEPT> (since Linux 2.4)"
14895 #. Precisely: since 2.3.38
14896 #. type: Plain text
14897 #: build/C/man7/tcp.7:848
14899 "Allow a listener to be awakened only when data arrives on the socket. Takes "
14900 "an integer value (seconds), this can bound the maximum number of attempts "
14901 "TCP will make to complete the connection. This option should not be used in "
14902 "code intended to be portable."
14906 #: build/C/man7/tcp.7:848
14908 msgid "B<TCP_INFO> (since Linux 2.4)"
14911 #. type: Plain text
14912 #: build/C/man7/tcp.7:854
14914 "Used to collect information about this socket. The kernel returns a "
14915 "I<struct tcp_info> as defined in the file I</usr/include/linux/tcp.h>. This "
14916 "option should not be used in code intended to be portable."
14920 #: build/C/man7/tcp.7:854
14922 msgid "B<TCP_KEEPCNT> (since Linux 2.4)"
14925 #. Precisely: since 2.3.18
14926 #. type: Plain text
14927 #: build/C/man7/tcp.7:861
14929 "The maximum number of keepalive probes TCP should send before dropping the "
14930 "connection. This option should not be used in code intended to be portable."
14934 #: build/C/man7/tcp.7:861
14936 msgid "B<TCP_KEEPIDLE> (since Linux 2.4)"
14939 #. Precisely: since 2.3.18
14940 #. type: Plain text
14941 #: build/C/man7/tcp.7:870
14943 "The time (in seconds) the connection needs to remain idle before TCP starts "
14944 "sending keepalive probes, if the socket option B<SO_KEEPALIVE> has been set "
14945 "on this socket. This option should not be used in code intended to be "
14950 #: build/C/man7/tcp.7:870
14952 msgid "B<TCP_KEEPINTVL> (since Linux 2.4)"
14955 #. Precisely: since 2.3.18
14956 #. type: Plain text
14957 #: build/C/man7/tcp.7:875
14959 "The time (in seconds) between individual keepalive probes. This option "
14960 "should not be used in code intended to be portable."
14964 #: build/C/man7/tcp.7:875
14966 msgid "B<TCP_LINGER2> (since Linux 2.4)"
14969 #. Precisely: since 2.3.41
14970 #. type: Plain text
14971 #: build/C/man7/tcp.7:887
14973 "The lifetime of orphaned FIN_WAIT2 state sockets. This option can be used "
14974 "to override the system-wide setting in the file "
14975 "I</proc/sys/net/ipv4/tcp_fin_timeout> for this socket. This is not to be "
14976 "confused with the B<socket>(7) level option B<SO_LINGER>. This option "
14977 "should not be used in code intended to be portable."
14981 #: build/C/man7/tcp.7:887
14983 msgid "B<TCP_MAXSEG>"
14986 #. Present in Linux 1.0
14988 #. Document TCP_MD5SIG, added in Linux 2.6.20,
14989 #. Needs CONFIG_TCP_MD5SIG
14990 #. From net/inet/Kconfig
14991 #. bool "TCP: MD5 Signature Option support (RFC2385) (EXPERIMENTAL)"
14992 #. RFC2385 specifies a method of giving MD5 protection to TCP sessions.
14993 #. Its main (only?) use is to protect BGP sessions between core routers
14994 #. on the Internet.
14996 #. There is a TCP_MD5SIG option documented in FreeBSD's tcp(4),
14997 #. but probably many details are different on Linux
14998 #. Authors were yoshfuji@linux-ipv6.org and Dave Muller
14999 #. http://thread.gmane.org/gmane.linux.network/47490
15000 #. http://www.daemon-systems.org/man/tcp.4.html
15001 #. http://article.gmane.org/gmane.os.netbsd.devel.network/3767/match=tcp_md5sig+freebsd
15002 #. type: Plain text
15003 #: build/C/man7/tcp.7:911
15005 "The maximum segment size for outgoing TCP packets. If this option is set "
15006 "before connection establishment, it also changes the MSS value announced to "
15007 "the other end in the initial packet. Values greater than the (eventual) "
15008 "interface MTU have no effect. TCP will also impose its minimum and maximum "
15009 "bounds over the value provided."
15013 #: build/C/man7/tcp.7:911
15015 msgid "B<TCP_NODELAY>"
15018 #. Present in Linux 1.0
15019 #. type: Plain text
15020 #: build/C/man7/tcp.7:928
15022 "If set, disable the Nagle algorithm. This means that segments are always "
15023 "sent as soon as possible, even if there is only a small amount of data. "
15024 "When not set, data is buffered until there is a sufficient amount to send "
15025 "out, thereby avoiding the frequent sending of small packets, which results "
15026 "in poor utilization of the network. This option is overridden by "
15027 "B<TCP_CORK>; however, setting this option forces an explicit flush of "
15028 "pending output, even if B<TCP_CORK> is currently set."
15032 #: build/C/man7/tcp.7:928
15034 msgid "B<TCP_QUICKACK> (since Linux 2.4.4)"
15037 #. FIXME Document TCP_USER_TIMEOUT (new in 2.6.37)
15038 #. See commit dca43c75e7e545694a9dd6288553f55c53e2a3a3
15039 #. type: Plain text
15040 #: build/C/man7/tcp.7:945
15042 "Enable quickack mode if set or disable quickack mode if cleared. In "
15043 "quickack mode, acks are sent immediately, rather than delayed if needed in "
15044 "accordance to normal TCP operation. This flag is not permanent, it only "
15045 "enables a switch to or from quickack mode. Subsequent operation of the TCP "
15046 "protocol will once again enter/leave quickack mode depending on internal "
15047 "protocol processing and factors such as delayed ack timeouts occurring and "
15048 "data transfer. This option should not be used in code intended to be "
15053 #: build/C/man7/tcp.7:945
15055 msgid "B<TCP_SYNCNT> (since Linux 2.4)"
15058 #. Precisely: since 2.3.18
15059 #. type: Plain text
15060 #: build/C/man7/tcp.7:952
15062 "Set the number of SYN retransmits that TCP should send before aborting the "
15063 "attempt to connect. It cannot exceed 255. This option should not be used "
15064 "in code intended to be portable."
15068 #: build/C/man7/tcp.7:952
15070 msgid "B<TCP_WINDOW_CLAMP> (since Linux 2.4)"
15073 #. Precisely: since 2.3.41
15074 #. type: Plain text
15075 #: build/C/man7/tcp.7:959
15077 "Bound the size of the advertised window to this value. The kernel imposes a "
15078 "minimum size of SOCK_MIN_RCVBUF/2. This option should not be used in code "
15079 "intended to be portable."
15083 #: build/C/man7/tcp.7:959 build/C/man7/unix.7:170
15085 msgid "Sockets API"
15088 #. type: Plain text
15089 #: build/C/man7/tcp.7:968
15091 "TCP provides limited support for out-of-band data, in the form of (a single "
15092 "byte of) urgent data. In Linux this means if the other end sends newer "
15093 "out-of-band data the older urgent data is inserted as normal data into the "
15094 "stream (even when B<SO_OOBINLINE> is not set). This differs from BSD-based "
15098 #. type: Plain text
15099 #: build/C/man7/tcp.7:975
15101 "Linux uses the BSD compatible interpretation of the urgent pointer field by "
15102 "default. This violates RFC\\ 1122, but is required for interoperability "
15103 "with other stacks. It can be changed via I</proc/sys/net/ipv4/tcp_stdurg>."
15106 #. type: Plain text
15107 #: build/C/man7/tcp.7:980
15109 "It is possible to peek at out-of-band data using the I<recv>(2) B<MSG_PEEK> "
15113 #. type: Plain text
15114 #: build/C/man7/tcp.7:996
15116 "Since version 2.4, Linux supports the use of B<MSG_TRUNC> in the I<flags> "
15117 "argument of B<recv>(2) (and B<recvmsg>(2)). This flag causes the received "
15118 "bytes of data to be discarded, rather than passed back in a caller-supplied "
15119 "buffer. Since Linux 2.4.4, B<MSG_PEEK> also has this effect when used in "
15120 "conjunction with B<MSG_OOB> to receive out-of-band data."
15123 #. type: Plain text
15124 #: build/C/man7/tcp.7:1002 build/C/man7/unix.7:283
15126 "The following B<ioctl>(2) calls return information in I<value>. The "
15127 "correct syntax is:"
15130 #. type: Plain text
15131 #: build/C/man7/tcp.7:1007
15134 "B<int>I< value>B<;>\n"
15135 "I<error>B< = ioctl(>I<tcp_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
15138 #. type: Plain text
15139 #: build/C/man7/tcp.7:1012
15140 msgid "I<ioctl_type> is one of the following:"
15144 #: build/C/man7/tcp.7:1012 build/C/man7/unix.7:293
15149 #. FIXME http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
15150 #. filed 2010-09-10, may cause SIOCINQ to be defined in glibc headers
15151 #. SIOCOUTQ also has an effect for UNIX domain sockets, but not
15152 #. quite what userland might expect. It seems to return the number
15153 #. of bytes allocated for buffers containing pending output.
15154 #. That number is normally larger than the number of bytes of pending
15155 #. output. Since this info is, from userland's point of view, imprecise,
15156 #. and it may well change, probably best not to document this now.
15157 #. type: Plain text
15158 #: build/C/man7/tcp.7:1028 build/C/man7/unix.7:315
15160 "Returns the amount of queued unread data in the receive buffer. The socket "
15161 "must not be in LISTEN state, otherwise an error (B<EINVAL>) is returned. "
15162 "B<SIOCINQ> is defined in I<E<lt>linux/sockios.hE<gt>>. Alternatively, you "
15163 "can use the synonymous B<FIONREAD>, defined in I<E<lt>sys/ioctl.hE<gt>>."
15167 #: build/C/man7/tcp.7:1028
15169 msgid "B<SIOCATMARK>"
15172 #. type: Plain text
15173 #: build/C/man7/tcp.7:1033
15175 "Returns true (i.e., I<value> is nonzero) if the inbound data stream is at "
15179 #. type: Plain text
15180 #: build/C/man7/tcp.7:1049
15182 "If the B<SO_OOBINLINE> socket option is set, and B<SIOCATMARK> returns true, "
15183 "then the next read from the socket will return the urgent data. If the "
15184 "B<SO_OOBINLINE> socket option is not set, and B<SIOCATMARK> returns true, "
15185 "then the next read from the socket will return the bytes following the "
15186 "urgent data (to actually read the urgent data requires the B<recv(MSG_OOB)> "
15190 #. type: Plain text
15191 #: build/C/man7/tcp.7:1063
15193 "Note that a read never reads across the urgent mark. If an application is "
15194 "informed of the presence of urgent data via B<select>(2) (using the "
15195 "I<exceptfds> argument) or through delivery of a B<SIGURG> signal, then it "
15196 "can advance up to the mark using a loop which repeatedly tests B<SIOCATMARK> "
15197 "and performs a read (requesting any number of bytes) as long as "
15198 "B<SIOCATMARK> returns false."
15202 #: build/C/man7/tcp.7:1063
15204 msgid "B<SIOCOUTQ>"
15207 #. FIXME http://sources.redhat.com/bugzilla/show_bug.cgi?id=12002,
15208 #. filed 2010-09-10, may cause SIOCOUTQ to be defined in glibc headers
15209 #. type: Plain text
15210 #: build/C/man7/tcp.7:1079
15212 "Returns the amount of unsent data in the socket send queue. The socket must "
15213 "not be in LISTEN state, otherwise an error (B<EINVAL>) is returned. "
15214 "B<SIOCOUTQ> is defined in I<E<lt>linux/sockios.hE<gt>>. Alternatively, you "
15215 "can use the synonymous B<TIOCOUTQ>, defined in I<E<lt>sys/ioctl.hE<gt>>."
15218 #. type: Plain text
15219 #: build/C/man7/tcp.7:1084
15221 "When a network error occurs, TCP tries to resend the packet. If it doesn't "
15222 "succeed after some time, either B<ETIMEDOUT> or the last received error on "
15223 "this connection is reported."
15226 #. type: Plain text
15227 #: build/C/man7/tcp.7:1095
15229 "Some applications require a quicker error notification. This can be enabled "
15230 "with the B<IPPROTO_IP> level B<IP_RECVERR> socket option. When this option "
15231 "is enabled, all incoming errors are immediately passed to the user program. "
15232 "Use this option with care \\(em it makes TCP less tolerant to routing "
15233 "changes and other normal network conditions."
15237 #: build/C/man7/tcp.7:1096
15239 msgid "B<EAFNOTSUPPORT>"
15242 #. type: Plain text
15243 #: build/C/man7/tcp.7:1102
15244 msgid "Passed socket address type in I<sin_family> was not B<AF_INET>."
15247 #. type: Plain text
15248 #: build/C/man7/tcp.7:1106
15250 "The other end closed the socket unexpectedly or a read is executed on a shut "
15255 #: build/C/man7/tcp.7:1106
15257 msgid "B<ETIMEDOUT>"
15260 #. type: Plain text
15261 #: build/C/man7/tcp.7:1109
15262 msgid "The other end didn't acknowledge retransmitted data after some time."
15265 #. type: Plain text
15266 #: build/C/man7/tcp.7:1113
15268 "Any errors defined for B<ip>(7) or the generic socket layer may also be "
15269 "returned for TCP."
15272 #. type: Plain text
15273 #: build/C/man7/tcp.7:1120
15275 "Support for Explicit Congestion Notification, zero-copy B<sendfile>(2), "
15276 "reordering support and some SACK extensions (DSACK) were introduced in 2.4. "
15277 "Support for forward acknowledgement (FACK), TIME_WAIT recycling, and "
15278 "per-connection keepalive socket options were introduced in 2.3."
15281 #. type: Plain text
15282 #: build/C/man7/tcp.7:1122
15283 msgid "Not all errors are documented."
15286 #. Only a single Linux kernel version is described
15287 #. Info for 2.2 was lost. Should be added again,
15288 #. or put into a separate page.
15290 #. This man page was originally written by Andi Kleen.
15291 #. It was updated for 2.4 by Nivedita Singhvi with input from
15292 #. Alexey Kuznetsov's Documentation/networking/ip-sysctl.txt
15294 #. type: Plain text
15295 #: build/C/man7/tcp.7:1132
15296 msgid "IPv6 is not described."
15299 #. type: Plain text
15300 #: build/C/man7/tcp.7:1144
15302 "B<accept>(2), B<bind>(2), B<connect>(2), B<getsockopt>(2), B<listen>(2), "
15303 "B<recvmsg>(2), B<sendfile>(2), B<sendmsg>(2), B<socket>(2), B<ip>(7), "
15307 #. type: Plain text
15308 #: build/C/man7/tcp.7:1146
15309 msgid "RFC\\ 793 for the TCP specification."
15312 #. type: Plain text
15313 #: build/C/man7/tcp.7:1148
15315 "RFC\\ 1122 for the TCP requirements and a description of the Nagle "
15319 #. type: Plain text
15320 #: build/C/man7/tcp.7:1150
15321 msgid "RFC\\ 1323 for TCP timestamp and window scaling options."
15324 #. type: Plain text
15325 #: build/C/man7/tcp.7:1152
15326 msgid "RFC\\ 1644 for a description of TIME_WAIT assassination hazards."
15329 #. type: Plain text
15330 #: build/C/man7/tcp.7:1154
15331 msgid "RFC\\ 3168 for a description of Explicit Congestion Notification."
15334 #. type: Plain text
15335 #: build/C/man7/tcp.7:1156
15336 msgid "RFC\\ 2581 for TCP congestion control algorithms."
15339 #. type: Plain text
15340 #: build/C/man7/tcp.7:1158
15341 msgid "RFC\\ 2018 and RFC\\ 2883 for SACK and extensions to SACK."
15345 #: build/C/man7/udp.7:8
15351 #: build/C/man7/udp.7:8
15356 #. type: Plain text
15357 #: build/C/man7/udp.7:11
15358 msgid "udp - User Datagram Protocol for IPv4"
15361 #. type: Plain text
15362 #: build/C/man7/udp.7:17
15363 msgid "B<udp_socket = socket(AF_INET, SOCK_DGRAM, 0);>"
15366 #. type: Plain text
15367 #: build/C/man7/udp.7:23
15369 "This is an implementation of the User Datagram Protocol described in RFC\\ "
15370 "768. It implements a connectionless, unreliable datagram packet service. "
15371 "Packets may be reordered or duplicated before they arrive. UDP generates "
15372 "and checks checksums to catch transmission errors."
15375 #. type: Plain text
15376 #: build/C/man7/udp.7:52
15378 "When a UDP socket is created, its local and remote addresses are "
15379 "unspecified. Datagrams can be sent immediately using B<sendto>(2) or "
15380 "B<sendmsg>(2) with a valid destination address as an argument. When "
15381 "B<connect>(2) is called on the socket, the default destination address is "
15382 "set and datagrams can now be sent using B<send>(2) or B<write>(2) without "
15383 "specifying a destination address. It is still possible to send to other "
15384 "destinations by passing an address to B<sendto>(2) or B<sendmsg>(2). In "
15385 "order to receive packets, the socket can be bound to a local address first "
15386 "by using B<bind>(2). Otherwise the socket layer will automatically assign a "
15387 "free local port out of the range defined by "
15388 "I</proc/sys/net/ipv4/ip_local_port_range> and bind the socket to "
15392 #. type: Plain text
15393 #: build/C/man7/udp.7:60
15395 "All receive operations return only one packet. When the packet is smaller "
15396 "than the passed buffer, only that much data is returned; when it is bigger, "
15397 "the packet is truncated and the B<MSG_TRUNC> flag is set. B<MSG_WAITALL> is "
15401 #. type: Plain text
15402 #: build/C/man7/udp.7:69
15404 "IP options may be sent or received using the socket options described in "
15405 "B<ip>(7). They are only processed by the kernel when the appropriate "
15406 "I</proc> parameter is enabled (but still passed to the user even when it is "
15407 "turned off). See B<ip>(7)."
15410 #. type: Plain text
15411 #: build/C/man7/udp.7:74
15413 "When the B<MSG_DONTROUTE> flag is set on sending, the destination address "
15414 "must refer to a local interface address and the packet is only sent to that "
15418 #. type: Plain text
15419 #: build/C/man7/udp.7:92
15421 "By default, Linux UDP does path MTU (Maximum Transmission Unit) discovery. "
15422 "This means the kernel will keep track of the MTU to a specific target IP "
15423 "address and return B<EMSGSIZE> when a UDP packet write exceeds it. When "
15424 "this happens, the application should decrease the packet size. Path MTU "
15425 "discovery can be also turned off using the B<IP_MTU_DISCOVER> socket option "
15426 "or the I</proc/sys/net/ipv4/ip_no_pmtu_disc> file; see B<ip>(7) for "
15427 "details. When turned off, UDP will fragment outgoing UDP packets that "
15428 "exceed the interface MTU. However, disabling it is not recommended for "
15429 "performance and reliability reasons."
15432 #. type: Plain text
15433 #: build/C/man7/udp.7:97
15434 msgid "UDP uses the IPv4 I<sockaddr_in> address format described in B<ip>(7)."
15437 #. type: Plain text
15438 #: build/C/man7/udp.7:108
15440 "All fatal errors will be passed to the user as an error return even when the "
15441 "socket is not connected. This includes asynchronous errors received from "
15442 "the network. You may get an error for an earlier packet that was sent on "
15443 "the same socket. This behavior differs from many other BSD socket "
15444 "implementations which don't pass any errors unless the socket is connected. "
15445 "Linux's behavior is mandated by B<RFC\\ 1122>."
15448 #. type: Plain text
15449 #: build/C/man7/udp.7:122
15451 "For compatibility with legacy code, in Linux 2.0 and 2.2 it was possible to "
15452 "set the B<SO_BSDCOMPAT> B<SOL_SOCKET> option to receive remote errors only "
15453 "when the socket has been connected (except for B<EPROTO> and B<EMSGSIZE>). "
15454 "Locally generated errors are always passed. Support for this socket option "
15455 "was removed in later kernels; see B<socket>(7) for further information."
15458 #. type: Plain text
15459 #: build/C/man7/udp.7:131
15461 "When the B<IP_RECVERR> option is enabled, all errors are stored in the "
15462 "socket error queue, and can be received by B<recvmsg>(2) with the "
15463 "B<MSG_ERRQUEUE> flag set."
15466 #. type: Plain text
15467 #: build/C/man7/udp.7:134
15469 "System-wide UDP parameter settings can be accessed by files in the directory "
15470 "I</proc/sys/net/ipv4/>."
15474 #: build/C/man7/udp.7:134
15476 msgid "I<udp_mem> (since Linux 2.6.25)"
15479 #. type: Plain text
15480 #: build/C/man7/udp.7:138
15482 "This is a vector of three integers governing the number of pages allowed for "
15483 "queueing by all UDP sockets."
15486 #. type: Plain text
15487 #: build/C/man7/udp.7:145
15489 "Below this number of pages, UDP is not bothered about its memory appetite. "
15490 "When the amount of memory allocated by UDP exceeds this number, UDP starts "
15491 "to moderate memory usage."
15494 #. type: Plain text
15495 #: build/C/man7/udp.7:151
15497 "This value was introduced to follow the format of I<tcp_mem> (see "
15501 #. type: Plain text
15502 #: build/C/man7/udp.7:154
15503 msgid "Number of pages allowed for queueing by all UDP sockets."
15506 #. type: Plain text
15507 #: build/C/man7/udp.7:158
15509 "Defaults values for these three items are calculated at boot time from the "
15510 "amount of available memory."
15514 #: build/C/man7/udp.7:158
15516 msgid "I<udp_rmem_min> (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
15519 #. type: Plain text
15520 #: build/C/man7/udp.7:165
15522 "Minimal size, in bytes, of receive buffers used by UDP sockets in "
15523 "moderation. Each UDP socket is able to use the size for receiving data, "
15524 "even if total pages of UDP sockets exceed I<udp_mem> pressure."
15528 #: build/C/man7/udp.7:165
15530 msgid "I<udp_wmem_min> (integer; default value: PAGE_SIZE; since Linux 2.6.25)"
15533 #. type: Plain text
15534 #: build/C/man7/udp.7:172
15536 "Minimal size, in bytes, of send buffer used by UDP sockets in moderation. "
15537 "Each UDP socket is able to use the size for sending data, even if total "
15538 "pages of UDP sockets exceed I<udp_mem> pressure."
15541 #. type: Plain text
15542 #: build/C/man7/udp.7:179
15544 "To set or get a UDP socket option, call B<getsockopt>(2) to read or "
15545 "B<setsockopt>(2) to write the option with the option level argument set to "
15550 #: build/C/man7/udp.7:179
15552 msgid "B<UDP_CORK> (since Linux 2.5.44)"
15555 #. FIXME document UDP_ENCAP (new in kernel 2.5.67)
15556 #. From include/linux/udp.h:
15557 #. /* UDP encapsulation types */
15558 #. #define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
15559 #. #define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */
15560 #. #define UDP_ENCAP_L2TPINUDP 3 /* rfc2661 */
15561 #. type: Plain text
15562 #: build/C/man7/udp.7:192
15564 "If this option is enabled, then all data output on this socket is "
15565 "accumulated into a single datagram that is transmitted when the option is "
15566 "disabled. This option should not be used in code intended to be portable."
15569 #. type: Plain text
15570 #: build/C/man7/udp.7:196
15571 msgid "These ioctls can be accessed using B<ioctl>(2). The correct syntax is:"
15574 #. type: Plain text
15575 #: build/C/man7/udp.7:201
15578 "B<int>I< value>B<;>\n"
15579 "I<error>B< = ioctl(>I<udp_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
15583 #: build/C/man7/udp.7:203
15585 msgid "B<FIONREAD> (B<SIOCINQ>)"
15588 #. See http://www.securiteam.com/unixfocus/5KP0I15IKO.html
15589 #. "GNUnet DoS (UDP Socket Unreachable)", 14 May 2006
15590 #. type: Plain text
15591 #: build/C/man7/udp.7:221
15593 "Gets a pointer to an integer as argument. Returns the size of the next "
15594 "pending datagram in the integer in bytes, or 0 when no datagram is pending. "
15595 "B<Warning:> Using B<FIONREAD>, it is impossible to distinguish the case "
15596 "where no datagram is pending from the case where the next pending datagram "
15597 "contains zero bytes of data. It is safer to use B<select>(2), B<poll>(2), "
15598 "or B<epoll>(7) to distinguish these cases."
15602 #: build/C/man7/udp.7:221
15604 msgid "B<TIOCOUTQ> (B<SIOCOUTQ>)"
15607 #. type: Plain text
15608 #: build/C/man7/udp.7:225
15610 "Returns the number of data bytes in the local send queue. Only supported "
15611 "with Linux 2.4 and above."
15614 #. type: Plain text
15615 #: build/C/man7/udp.7:231
15617 "In addition all ioctls documented in B<ip>(7) and B<socket>(7) are "
15621 #. type: Plain text
15622 #: build/C/man7/udp.7:237
15624 "All errors documented for B<socket>(7) or B<ip>(7) may be returned by a "
15625 "send or receive on a UDP socket."
15629 #: build/C/man7/udp.7:237 build/C/man7/unix.7:320
15631 msgid "B<ECONNREFUSED>"
15634 #. type: Plain text
15635 #: build/C/man7/udp.7:241
15637 "No receiver was associated with the destination address. This might be "
15638 "caused by a previous packet sent over the socket."
15642 #. This man page was written by Andi Kleen.
15643 #. type: Plain text
15644 #: build/C/man7/udp.7:246
15645 msgid "B<IP_RECVERR> is a new feature in Linux 2.2."
15648 #. type: Plain text
15649 #: build/C/man7/udp.7:251
15650 msgid "B<ip>(7), B<raw>(7), B<socket>(7), B<udplite>(7)"
15653 #. type: Plain text
15654 #: build/C/man7/udp.7:253
15655 msgid "RFC\\ 768 for the User Datagram Protocol."
15658 #. type: Plain text
15659 #: build/C/man7/udp.7:255
15660 msgid "RFC\\ 1122 for the host requirements."
15663 #. type: Plain text
15664 #: build/C/man7/udp.7:257
15665 msgid "RFC\\ 1191 for a description of path MTU discovery."
15669 #: build/C/man7/udplite.7:25
15674 #. type: Plain text
15675 #: build/C/man7/udplite.7:28
15676 msgid "udplite - Lightweight User Datagram Protocol"
15679 #. type: Plain text
15680 #: build/C/man7/udplite.7:36
15681 msgid "B<sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);>"
15684 #. type: Plain text
15685 #: build/C/man7/udplite.7:39
15687 "This is an implementation of the Lightweight User Datagram Protocol "
15688 "(UDP-Lite), as described in RFC\\ 3828."
15691 #. type: Plain text
15692 #: build/C/man7/udplite.7:45
15694 "UDP-Lite is an extension of UDP (RFC\\ 768) to support variable-length "
15695 "checksums. This has advantages for some types of multimedia transport that "
15696 "may be able to make use of slightly damaged datagrams, rather than having "
15697 "them discarded by lower-layer protocols."
15700 #. type: Plain text
15701 #: build/C/man7/udplite.7:51
15703 "The variable-length checksum coverage is set via a B<setsockopt>(2) "
15704 "option. If this option is not set, the only difference to UDP is in using a "
15705 "different IP protocol identifier (IANA number 136)."
15708 #. type: Plain text
15709 #: build/C/man7/udplite.7:56
15711 "The UDP-Lite implementation is a full extension of B<udp>(7), i.e., it "
15712 "shares the same API and API behaviour, and in addition offers two socket "
15713 "options to control the checksum coverage."
15716 #. type: Plain text
15717 #: build/C/man7/udplite.7:65
15719 "UDP-Litev4 uses the I<sockaddr_in> address format described in B<ip>(7). "
15720 "UDP-Litev6 uses the I<sockaddr_in6> address format described in B<ipv6>(7)."
15723 #. type: Plain text
15724 #: build/C/man7/udplite.7:78
15726 "To set or get a UDP-Lite socket option, call B<getsockopt>(2) to read or "
15727 "B<setsockopt>(2) to write the option with the option level argument set to "
15728 "B<IPPROTO_UDPLITE>. In addition, all B<IPPROTO_UDP> socket options are "
15729 "valid on a UDP-Lite socket. See B<udp>(7) for more information."
15732 #. type: Plain text
15733 #: build/C/man7/udplite.7:80
15734 msgid "The following two options are specific to UDP-Lite."
15738 #: build/C/man7/udplite.7:80
15740 msgid "B<UDPLITE_SEND_CSCOV>"
15743 #. type: Plain text
15744 #: build/C/man7/udplite.7:85
15746 "This option sets the sender checksum coverage and takes an I<int> as "
15747 "argument, with a checksum coverage value in the range 0..2^16-1."
15750 #. type: Plain text
15751 #: build/C/man7/udplite.7:89
15753 "A value of 0 means that the entire datagram is always covered. Values from "
15754 "1-7 are illegal (RFC\\ 3828, 3.1) and are rounded up to the minimum coverage "
15758 #. type: Plain text
15759 #: build/C/man7/udplite.7:95
15761 "With regard to IPv6 jumbograms (RFC\\ 2675), the UDP-Litev6 checksum "
15762 "coverage is limited to the first 2^16-1 octets, as per RFC\\ 3828, 3.5. "
15763 "Higher values are therefore silently truncated to 2^16-1. If in doubt, the "
15764 "current coverage value can always be queried using B<getsockopt>(2)."
15768 #: build/C/man7/udplite.7:95
15770 msgid "B<UDPLITE_RECV_CSCOV>"
15773 #. type: Plain text
15774 #: build/C/man7/udplite.7:106
15776 "This is the receiver-side analogue and uses the same argument format and "
15777 "value range as B<UDPLITE_SEND_CSCOV>. This option is not required to enable "
15778 "traffic with partial checksum coverage. Its function is that of a traffic "
15779 "filter: when enabled, it instructs the kernel to drop all packets which have "
15780 "a coverage I<less> than the specified coverage value."
15783 #. SO_NO_CHECK exists and is supported by UDPv4, but is
15784 #. commented out in socket(7), hence also commented out here
15786 #. Since UDP-Lite mandates checksums, checksumming can not be disabled
15791 #. type: Plain text
15792 #: build/C/man7/udplite.7:119
15794 "When the value of B<UDPLITE_RECV_CSCOV> exceeds the actual packet coverage, "
15795 "incoming packets are silently dropped, but may generate a warning message in "
15799 #. type: Plain text
15800 #: build/C/man7/udplite.7:124
15802 "All errors documented for B<udp>(7) may be returned. UDP-Lite does not add "
15806 #. FIXME . remove this section once glibc supports UDP-Lite
15807 #. type: Plain text
15808 #: build/C/man7/udplite.7:127
15809 msgid "Where glibc support is missing, the following definitions are needed:"
15812 #. The following two are defined in the kernel in linux/net/udplite.h
15813 #. type: Plain text
15814 #: build/C/man7/udplite.7:134
15817 "#define IPPROTO_UDPLITE 136\n"
15818 "#define UDPLITE_SEND_CSCOV 10\n"
15819 "#define UDPLITE_RECV_CSCOV 11\n"
15822 #. type: Plain text
15823 #: build/C/man7/udplite.7:139
15824 msgid "I</proc/net/snmp> - basic UDP-Litev4 statistics counters."
15827 #. type: Plain text
15828 #: build/C/man7/udplite.7:142
15829 msgid "I</proc/net/snmp6> - basic UDP-Litev6 statistics counters."
15832 #. type: Plain text
15833 #: build/C/man7/udplite.7:144
15834 msgid "UDP-Litev4/v6 first appeared in Linux 2.6.20."
15837 #. type: Plain text
15838 #: build/C/man7/udplite.7:149
15839 msgid "B<ip>(7), B<ipv6>(7), B<socket>(7), B<udp>(7)"
15842 #. type: Plain text
15843 #: build/C/man7/udplite.7:151
15844 msgid "RFC\\ 3828 for the Lightweight User Datagram Protocol (UDP-Lite)"
15847 #. type: Plain text
15848 #: build/C/man7/udplite.7:153
15849 msgid "I<Documentation/networking/udplite.txt>"
15853 #: build/C/man7/unix.7:15
15859 #: build/C/man7/unix.7:15
15864 #. type: Plain text
15865 #: build/C/man7/unix.7:19
15866 msgid "unix, AF_UNIX, AF_LOCAL - Sockets for local interprocess communication"
15869 #. type: Plain text
15870 #: build/C/man7/unix.7:23
15871 msgid "B<#include E<lt>sys/un.hE<gt>>"
15874 #. type: Plain text
15875 #: build/C/man7/unix.7:25
15876 msgid "I<unix_socket>B< = socket(AF_UNIX, type, 0);>"
15879 #. type: Plain text
15880 #: build/C/man7/unix.7:27
15881 msgid "I<error>B< = socketpair(AF_UNIX, type, 0, int *>I<sv>B<);>"
15884 #. type: Plain text
15885 #: build/C/man7/unix.7:38
15887 "The B<AF_UNIX> (also known as B<AF_LOCAL>) socket family is used to "
15888 "communicate between processes on the same machine efficiently. "
15889 "Traditionally, UNIX domain sockets can be either unnamed, or bound to a file "
15890 "system pathname (marked as being of type socket). Linux also supports an "
15891 "abstract namespace which is independent of the file system."
15894 #. type: Plain text
15895 #: build/C/man7/unix.7:50
15897 "Valid types are: B<SOCK_STREAM>, for a stream-oriented socket and "
15898 "B<SOCK_DGRAM>, for a datagram-oriented socket that preserves message "
15899 "boundaries (as on most UNIX implementations, UNIX domain datagram sockets "
15900 "are always reliable and don't reorder datagrams); and (since Linux 2.6.4) "
15901 "B<SOCK_SEQPACKET>, for a connection-oriented socket that preserves message "
15902 "boundaries and delivers messages in the order that they were sent."
15905 #. type: Plain text
15906 #: build/C/man7/unix.7:53
15908 "UNIX domain sockets support passing file descriptors or process credentials "
15909 "to other processes using ancillary data."
15912 #. type: Plain text
15913 #: build/C/man7/unix.7:55
15914 msgid "A UNIX domain socket address is represented in the following structure:"
15917 #. type: Plain text
15918 #: build/C/man7/unix.7:59
15920 msgid "#define UNIX_PATH_MAX 108\n"
15923 #. type: Plain text
15924 #: build/C/man7/unix.7:64
15927 "struct sockaddr_un {\n"
15928 " sa_family_t sun_family; /* AF_UNIX */\n"
15929 " char sun_path[UNIX_PATH_MAX]; /* pathname */\n"
15933 #. type: Plain text
15934 #: build/C/man7/unix.7:70
15935 msgid "I<sun_family> always contains B<AF_UNIX>."
15938 #. type: Plain text
15939 #: build/C/man7/unix.7:72
15940 msgid "Three types of address are distinguished in this structure:"
15943 #. type: Plain text
15944 #: build/C/man7/unix.7:87
15946 "I<pathname>: a UNIX domain socket can be bound to a null-terminated file "
15947 "system pathname using B<bind>(2). When the address of the socket is "
15948 "returned by B<getsockname>(2), B<getpeername>(2), and B<accept>(2), its "
15949 "length is I<offsetof(struct sockaddr_un, sun_path) + strlen(sun_path) + 1>, "
15950 "and I<sun_path> contains the null-terminated pathname."
15953 #. There is quite some variation across implementations: FreeBSD
15954 #. says the length is 16 bytes, HP-UX 11 says it's zero bytes.
15955 #. type: Plain text
15956 #: build/C/man7/unix.7:107
15958 "I<unnamed>: A stream socket that has not been bound to a pathname using "
15959 "B<bind>(2) has no name. Likewise, the two sockets created by "
15960 "B<socketpair>(2) are unnamed. When the address of an unnamed socket is "
15961 "returned by B<getsockname>(2), B<getpeername>(2), and B<accept>(2), its "
15962 "length is I<sizeof(sa_family_t)>, and I<sun_path> should not be inspected."
15965 #. type: Plain text
15966 #: build/C/man7/unix.7:133
15968 "I<abstract>: an abstract socket address is distinguished by the fact that "
15969 "I<sun_path[0]> is a null byte (\\(aq\\e0\\(aq). The socket's address in "
15970 "this namespace is given by the additional bytes in I<sun_path> that are "
15971 "covered by the specified length of the address structure. (Null bytes in "
15972 "the name have no special significance.) The name has no connection with "
15973 "file system pathnames. When the address of an abstract socket is returned "
15974 "by B<getsockname>(2), B<getpeername>(2), and B<accept>(2), the returned "
15975 "I<addrlen> is greater than I<sizeof(sa_family_t)> (i.e., greater than 2), "
15976 "and the name of the socket is contained in the first I<(addrlen - "
15977 "sizeof(sa_family_t))> bytes of I<sun_path>. The abstract socket namespace "
15978 "is a nonportable Linux extension."
15981 #. type: Plain text
15982 #: build/C/man7/unix.7:146
15984 "For historical reasons these socket options are specified with a "
15985 "B<SOL_SOCKET> type even though they are B<AF_UNIX> specific. They can be "
15986 "set with B<setsockopt>(2) and read with B<getsockopt>(2) by specifying "
15987 "B<SOL_SOCKET> as the socket family."
15991 #: build/C/man7/unix.7:146
15993 msgid "B<SO_PASSCRED>"
15996 #. type: Plain text
15997 #: build/C/man7/unix.7:153
15999 "Enables the receiving of the credentials of the sending process in an "
16000 "ancillary message. When this option is set and the socket is not yet "
16001 "connected a unique name in the abstract namespace will be generated "
16002 "automatically. Expects an integer boolean flag."
16006 #: build/C/man7/unix.7:153
16008 msgid "Autobind Feature"
16011 #. i.e. sizeof(short)
16012 #. type: Plain text
16013 #: build/C/man7/unix.7:170
16015 "If a B<bind>(2) call specifies I<addrlen> as I<sizeof(sa_family_t)>, or the "
16016 "B<SO_PASSCRED> socket option was specified for a socket that was not "
16017 "explicitly bound to an address, then the socket is autobound to an abstract "
16018 "address. The address consists of a null byte followed by 5 bytes in the "
16019 "character set I<[0-9a-f]>. (Thus, there is a limit of 2^20 autobind "
16023 #. type: Plain text
16024 #: build/C/man7/unix.7:173
16026 "The following paragraphs describe domain-specific details and unsupported "
16027 "features of the sockets API for UNIX domain sockets on Linux."
16030 #. type: Plain text
16031 #: build/C/man7/unix.7:181
16033 "UNIX domain sockets do not support the transmission of out-of-band data (the "
16034 "B<MSG_OOB> flag for B<send>(2) and B<recv>(2))."
16037 #. type: Plain text
16038 #: build/C/man7/unix.7:186
16039 msgid "The B<send>(2) B<MSG_MORE> flag is not supported by UNIX domain sockets."
16042 #. type: Plain text
16043 #: build/C/man7/unix.7:194
16045 "The use of B<MSG_TRUNC> in the I<flags> argument of B<recv>(2) is not "
16046 "supported by UNIX domain sockets."
16049 #. type: Plain text
16050 #: build/C/man7/unix.7:206
16052 "The B<SO_SNDBUF> socket option does have an effect for UNIX domain sockets, "
16053 "but the B<SO_RCVBUF> option does not. For datagram sockets, the "
16054 "B<SO_SNDBUF> value imposes an upper limit on the size of outgoing "
16055 "datagrams. This limit is calculated as the doubled (see B<socket>(7)) "
16056 "option value less 32 bytes used for overhead."
16060 #: build/C/man7/unix.7:206
16062 msgid "Ancillary Messages"
16065 #. type: Plain text
16066 #: build/C/man7/unix.7:228
16068 "Ancillary data is sent and received using B<sendmsg>(2) and B<recvmsg>(2). "
16069 "For historical reasons the ancillary message types listed below are "
16070 "specified with a B<SOL_SOCKET> type even though they are B<AF_UNIX> "
16071 "specific. To send them set the I<cmsg_level> field of the struct I<cmsghdr> "
16072 "to B<SOL_SOCKET> and the I<cmsg_type> field to the type. For more "
16073 "information see B<cmsg>(3)."
16077 #: build/C/man7/unix.7:228
16079 msgid "B<SCM_RIGHTS>"
16082 #. type: Plain text
16083 #: build/C/man7/unix.7:234
16085 "Send or receive a set of open file descriptors from another process. The "
16086 "data portion contains an integer array of the file descriptors. The passed "
16087 "file descriptors behave as though they have been created with B<dup>(2)."
16091 #: build/C/man7/unix.7:234
16093 msgid "B<SCM_CREDENTIALS>"
16096 #. type: Plain text
16097 #: build/C/man7/unix.7:244
16099 "Send or receive UNIX credentials. This can be used for authentication. The "
16100 "credentials are passed as a I<struct ucred> ancillary message. Thus "
16101 "structure is defined in I<E<lt>sys/socket.hE<gt>> as follows:"
16104 #. type: Plain text
16105 #: build/C/man7/unix.7:252
16109 " pid_t pid; /* process ID of the sending process */\n"
16110 " uid_t uid; /* user ID of the sending process */\n"
16111 " gid_t gid; /* group ID of the sending process */\n"
16115 #. type: Plain text
16116 #: build/C/man7/unix.7:261
16118 "Since glibc 2.8, the B<_GNU_SOURCE> feature test macro must be defined "
16119 "(before including I<any> header files) in order to obtain the definition of "
16123 #. type: Plain text
16124 #: build/C/man7/unix.7:277
16126 "The credentials which the sender specifies are checked by the kernel. A "
16127 "process with effective user ID 0 is allowed to specify values that do not "
16128 "match its own. The sender must specify its own process ID (unless it has "
16129 "the capability B<CAP_SYS_ADMIN>), its user ID, effective user ID, or saved "
16130 "set-user-ID (unless it has B<CAP_SETUID>), and its group ID, effective group "
16131 "ID, or saved set-group-ID (unless it has B<CAP_SETGID>). To receive a "
16132 "I<struct ucred> message the B<SO_PASSCRED> option must be enabled on the "
16136 #. type: Plain text
16137 #: build/C/man7/unix.7:288
16140 "B<int>I< value>B<;>\n"
16141 "I<error>B< = ioctl(>I<unix_socket>B<, >I<ioctl_type>B<, &>I<value>B<);>\n"
16144 #. type: Plain text
16145 #: build/C/man7/unix.7:293
16146 msgid "I<ioctl_type> can be:"
16149 #. type: Plain text
16150 #: build/C/man7/unix.7:320
16152 "The specified local address is already in use or the file system socket "
16153 "object already exists."
16156 #. type: Plain text
16157 #: build/C/man7/unix.7:326
16159 "The remote address specified by B<connect>(2) was not a listening socket. "
16160 "This error can also occur if the target filename is not a socket."
16164 #: build/C/man7/unix.7:326
16166 msgid "B<ECONNRESET>"
16169 #. type: Plain text
16170 #: build/C/man7/unix.7:329
16171 msgid "Remote socket was unexpectedly closed."
16174 #. type: Plain text
16175 #: build/C/man7/unix.7:332
16176 msgid "User memory address was not valid."
16179 #. type: Plain text
16180 #: build/C/man7/unix.7:341
16182 "Invalid argument passed. A common cause is that the value B<AF_UNIX> was "
16183 "not specified in the I<sun_type> field of passed addresses, or the socket "
16184 "was in an invalid state for the applied operation."
16187 #. type: Plain text
16188 #: build/C/man7/unix.7:346
16190 "B<connect>(2) called on an already connected socket or a target address was "
16191 "specified on a connected socket."
16194 #. type: Plain text
16195 #: build/C/man7/unix.7:351
16197 "The pathname in the remote address specified to B<connect>(2) did not "
16202 #: build/C/man7/unix.7:351
16207 #. type: Plain text
16208 #: build/C/man7/unix.7:357
16209 msgid "Socket operation needs a target address, but the socket is not connected."
16212 #. type: Plain text
16213 #: build/C/man7/unix.7:361
16215 "Stream operation called on non-stream oriented socket or tried to use the "
16216 "out-of-band data option."
16219 #. type: Plain text
16220 #: build/C/man7/unix.7:365
16221 msgid "The sender passed invalid credentials in the I<struct ucred>."
16224 #. type: Plain text
16225 #: build/C/man7/unix.7:377
16227 "Remote socket was closed on a stream socket. If enabled, a B<SIGPIPE> is "
16228 "sent as well. This can be avoided by passing the B<MSG_NOSIGNAL> flag to "
16229 "B<sendmsg>(2) or B<recvmsg>(2)."
16233 #: build/C/man7/unix.7:377
16235 msgid "B<EPROTONOSUPPORT>"
16238 #. type: Plain text
16239 #: build/C/man7/unix.7:381
16240 msgid "Passed protocol is not B<AF_UNIX>."
16244 #: build/C/man7/unix.7:381
16246 msgid "B<EPROTOTYPE>"
16249 #. type: Plain text
16250 #: build/C/man7/unix.7:387
16252 "Remote socket does not match the local socket type (B<SOCK_DGRAM> versus "
16256 #. type: Plain text
16257 #: build/C/man7/unix.7:390
16258 msgid "Unknown socket type."
16261 #. type: Plain text
16262 #: build/C/man7/unix.7:394
16264 "Other errors can be generated by the generic socket layer or by the file "
16265 "system while generating a file system socket object. See the appropriate "
16266 "manual pages for more information."
16269 #. type: Plain text
16270 #: build/C/man7/unix.7:400
16272 "B<SCM_CREDENTIALS> and the abstract namespace were introduced with Linux 2.2 "
16273 "and should not be used in portable programs. (Some BSD-derived systems also "
16274 "support credential passing, but the implementation details differ.)"
16277 #. type: Plain text
16278 #: build/C/man7/unix.7:411
16280 "In the Linux implementation, sockets which are visible in the file system "
16281 "honor the permissions of the directory they are in. Their owner, group and "
16282 "their permissions can be changed. Creation of a new socket will fail if the "
16283 "process does not have write and search (execute) permission on the directory "
16284 "the socket is created in. Connecting to the socket object requires "
16285 "read/write permission. This behavior differs from many BSD-derived systems "
16286 "which ignore permissions for UNIX domain sockets. Portable programs should "
16287 "not rely on this feature for security."
16290 #. type: Plain text
16291 #: build/C/man7/unix.7:419
16293 "Binding to a socket with a filename creates a socket in the file system that "
16294 "must be deleted by the caller when it is no longer needed (using "
16295 "B<unlink>(2)). The usual UNIX close-behind semantics apply; the socket can "
16296 "be unlinked at any time and will be finally removed from the file system "
16297 "when the last reference to it is closed."
16300 #. type: Plain text
16301 #: build/C/man7/unix.7:428
16303 "To pass file descriptors or credentials over a B<SOCK_STREAM>, you need to "
16304 "send or receive at least one byte of nonancillary data in the same "
16305 "B<sendmsg>(2) or B<recvmsg>(2) call."
16308 #. type: Plain text
16309 #: build/C/man7/unix.7:430
16310 msgid "UNIX domain stream sockets do not support the notion of out-of-band data."
16313 #. type: Plain text
16314 #: build/C/man7/unix.7:433
16315 msgid "See B<bind>(2)."
16318 #. type: Plain text
16319 #: build/C/man7/unix.7:438
16320 msgid "For an example of the use of B<SCM_RIGHTS> see B<cmsg>(3)."
16323 #. type: Plain text
16324 #: build/C/man7/unix.7:447
16326 "B<recvmsg>(2), B<sendmsg>(2), B<socket>(2), B<socketpair>(2), B<cmsg>(3), "
16327 "B<capabilities>(7), B<credentials>(7), B<socket>(7)"
16331 #: build/C/man7/x25.7:7
16336 #. type: Plain text
16337 #: build/C/man7/x25.7:10
16338 msgid "x25, AF_X25 - ITU-T X.25 / ISO-8208 protocol interface."
16341 #. type: Plain text
16342 #: build/C/man7/x25.7:14
16343 msgid "B<#include E<lt>linux/x25.hE<gt>>"
16346 #. type: Plain text
16347 #: build/C/man7/x25.7:16
16348 msgid "B<x25_socket = socket(AF_X25, SOCK_SEQPACKET, 0);>"
16351 #. type: Plain text
16352 #: build/C/man7/x25.7:25
16354 "X25 sockets provide an interface to the X.25 packet layer protocol. This "
16355 "allows applications to communicate over a public X.25 data network as "
16356 "standardized by International Telecommunication Union's recommendation X.25 "
16357 "(X.25 DTE-DCE mode). X25 sockets can also be used for communication without "
16358 "an intermediate X.25 network (X.25 DTE-DTE mode) as described in ISO-8208."
16361 #. type: Plain text
16362 #: build/C/man7/x25.7:42
16364 "Message boundaries are preserved \\(em a B<read>(2) from a socket will "
16365 "retrieve the same chunk of data as output with the corresponding B<write>(2) "
16366 "to the peer socket. When necessary, the kernel takes care of segmenting and "
16367 "reassembling long messages by means of the X.25 M-bit. There is no "
16368 "hard-coded upper limit for the message size. However, reassembling of a "
16369 "long message might fail if there is a temporary lack of system resources or "
16370 "when other constraints (such as socket memory or buffer size limits) become "
16371 "effective. If that occurs, the X.25 connection will be reset."
16375 #: build/C/man7/x25.7:42
16377 msgid "Socket Addresses"
16380 #. type: Plain text
16381 #: build/C/man7/x25.7:49
16383 "The B<AF_X25> socket address family uses the I<struct sockaddr_x25> for "
16384 "representing network addresses as defined in ITU-T recommendation X.121."
16387 #. type: Plain text
16388 #: build/C/man7/x25.7:56
16391 "struct sockaddr_x25 {\n"
16392 " sa_family_t sx25_family; /* must be AF_X25 */\n"
16393 " x25_address sx25_addr; /* X.121 Address */\n"
16397 #. type: Plain text
16398 #: build/C/man7/x25.7:67
16400 "I<sx25_addr> contains a char array I<x25_addr[]> to be interpreted as a "
16401 "null-terminated string. I<sx25_addr.x25_addr[]> consists of up to 15 (not "
16402 "counting the terminating 0) ASCII characters forming the X.121 address. "
16403 "Only the decimal digit characters from \\(aq0\\(aq to \\(aq9\\(aq are "
16407 #. type: Plain text
16408 #: build/C/man7/x25.7:76
16410 "The following X.25-specific socket options can be set by using "
16411 "B<setsockopt>(2) and read with B<getsockopt>(2) with the I<level> argument "
16412 "set to B<SOL_X25>."
16416 #: build/C/man7/x25.7:76
16418 msgid "B<X25_QBITINCL>"
16421 #. type: Plain text
16422 #: build/C/man7/x25.7:95
16424 "Controls whether the X.25 Q-bit (Qualified Data Bit) is accessible by the "
16425 "user. It expects an integer argument. If set to 0 (default), the Q-bit is "
16426 "never set for outgoing packets and the Q-bit of incoming packets is "
16427 "ignored. If set to 1, an additional first byte is prepended to each message "
16428 "read from or written to the socket. For data read from the socket, a 0 "
16429 "first byte indicates that the Q-bits of the corresponding incoming data "
16430 "packets were not set. A first byte with value 1 indicates that the Q-bit of "
16431 "the corresponding incoming data packets was set. If the first byte of the "
16432 "data written to the socket is 1 the Q-bit of the corresponding outgoing data "
16433 "packets will be set. If the first byte is 0 the Q-bit will not be set."
16436 #. type: Plain text
16437 #: build/C/man7/x25.7:97
16438 msgid "The AF_X25 protocol family is a new feature of Linux 2.2."
16441 #. type: Plain text
16442 #: build/C/man7/x25.7:100
16443 msgid "Plenty, as the X.25 PLP implementation is B<CONFIG_EXPERIMENTAL>."
16446 #. type: Plain text
16447 #: build/C/man7/x25.7:102
16448 msgid "This man page is incomplete."
16451 #. type: Plain text
16452 #: build/C/man7/x25.7:109
16454 "There is no dedicated application programmer's header file yet; you need to "
16455 "include the kernel header file I<E<lt>linux/x25.hE<gt>>. "
16456 "B<CONFIG_EXPERIMENTAL> might also imply that future versions of the "
16457 "interface are not binary compatible."
16460 #. type: Plain text
16461 #: build/C/man7/x25.7:113
16463 "X.25 N-Reset events are not propagated to the user process yet. Thus, if a "
16464 "reset occurred, data might be lost without notice."
16467 #. type: Plain text
16468 #: build/C/man7/x25.7:116
16469 msgid "B<socket>(2), B<socket>(7)"
16472 #. type: Plain text
16473 #: build/C/man7/x25.7:120
16475 "Jonathan Simon Naylor: \\(lqThe Re-Analysis and Re-Implementation of "
16476 "X.25.\\(rq The URL is"
16479 #. type: Plain text
16480 #: build/C/man7/x25.7:122
16481 msgid "I<ftp://ftp.pspt.fi/pub/ham/linux/ax25/x25doc.tgz>"