1SOCKET(7) Linux Programmer's Manual SOCKET(7)
2
3
4
6 socket - Linux socket interface
7
9 #include <sys/socket.h>
10
11 sockfd = socket(int socket_family, int socket_type, int protocol);
12
14 This manual page describes the Linux networking socket layer user
15 interface. The BSD compatible sockets are the uniform interface
16 between the user process and the network protocol stacks in the kernel.
17 The protocol modules are grouped into protocol families such as
18 AF_INET, AF_IPX, and AF_PACKET, and socket types such as SOCK_STREAM or
19 SOCK_DGRAM. See socket(2) for more information on families and types.
20
21 Socket-layer functions
22 These functions are used by the user process to send or receive packets
23 and to do other socket operations. For more information see their
24 respective manual pages.
25
26 socket(2) creates a socket, connect(2) connects a socket to a remote
27 socket address, the bind(2) function binds a socket to a local socket
28 address, listen(2) tells the socket that new connections shall be
29 accepted, and accept(2) is used to get a new socket with a new incoming
30 connection. socketpair(2) returns two connected anonymous sockets
31 (implemented only for a few local families like AF_UNIX)
32
33 send(2), sendto(2), and sendmsg(2) send data over a socket, and
34 recv(2), recvfrom(2), recvmsg(2) receive data from a socket. poll(2)
35 and select(2) wait for arriving data or a readiness to send data. In
36 addition, the standard I/O operations like write(2), writev(2), send‐
37 file(2), read(2), and readv(2) can be used to read and write data.
38
39 getsockname(2) returns the local socket address and getpeername(2)
40 returns the remote socket address. getsockopt(2) and setsockopt(2) are
41 used to set or get socket layer or protocol options. ioctl(2) can be
42 used to set or read some other options.
43
44 close(2) is used to close a socket. shutdown(2) closes parts of a
45 full-duplex socket connection.
46
47 Seeking, or calling pread(2) or pwrite(2) with a nonzero position is
48 not supported on sockets.
49
50 It is possible to do nonblocking I/O on sockets by setting the O_NON‐
51 BLOCK flag on a socket file descriptor using fcntl(2). Then all opera‐
52 tions that would block will (usually) return with EAGAIN (operation
53 should be retried later); connect(2) will return EINPROGRESS error.
54 The user can then wait for various events via poll(2) or select(2).
55
56 ┌────────────────────────────────────────────────────────────────────┐
57 │ I/O events │
58 ├───────────┬───────────┬────────────────────────────────────────────┤
59 │Event │ Poll flag │ Occurrence │
60 ├───────────┼───────────┼────────────────────────────────────────────┤
61 │Read │ POLLIN │ New data arrived. │
62 ├───────────┼───────────┼────────────────────────────────────────────┤
63 │Read │ POLLIN │ A connection setup has been completed (for │
64 │ │ │ connection-oriented sockets) │
65 ├───────────┼───────────┼────────────────────────────────────────────┤
66 │Read │ POLLHUP │ A disconnection request has been initiated │
67 │ │ │ by the other end. │
68 ├───────────┼───────────┼────────────────────────────────────────────┤
69 │Read │ POLLHUP │ A connection is broken (only for connec‐ │
70 │ │ │ tion-oriented protocols). When the socket │
71 │ │ │ is written SIGPIPE is also sent. │
72 ├───────────┼───────────┼────────────────────────────────────────────┤
73 │Write │ POLLOUT │ Socket has enough send buffer space for │
74 │ │ │ writing new data. │
75 ├───────────┼───────────┼────────────────────────────────────────────┤
76 │Read/Write │ POLLIN | │ An outgoing connect(2) finished. │
77 │ │ POLLOUT │ │
78 ├───────────┼───────────┼────────────────────────────────────────────┤
79 │Read/Write │ POLLERR │ An asynchronous error occurred. │
80 ├───────────┼───────────┼────────────────────────────────────────────┤
81 │Read/Write │ POLLHUP │ The other end has shut down one direction. │
82 ├───────────┼───────────┼────────────────────────────────────────────┤
83 │Exception │ POLLPRI │ Urgent data arrived. SIGURG is sent then. │
84 └───────────┴───────────┴────────────────────────────────────────────┘
85 An alternative to poll(2) and select(2) is to let the kernel inform the
86 application about events via a SIGIO signal. For that the O_ASYNC flag
87 must be set on a socket file descriptor via fcntl(2) and a valid signal
88 handler for SIGIO must be installed via sigaction(2). See the Signals
89 discussion below.
90
91 Socket address structures
92 Each socket domain has its own format for socket addresses, with a
93 domain-specific address structure. Each of these structures begins
94 with an integer "family" field (typed as sa_family_t) that indicates
95 the type of the address structure. This allows the various system
96 calls (e.g., connect(2), bind(2), accept(2), getsockname(2), getpeer‐
97 name(2)), which are generic to all socket domains, to determine the
98 domain of a particular socket address.
99
100 To allow any type of socket address to be passed to interfaces in the
101 sockets API, the type struct sockaddr is defined. The purpose of this
102 type is purely to allow casting of domain-specific socket address types
103 to a "generic" type, so as to avoid compiler warnings about type mis‐
104 matches in calls to the sockets API.
105
106 In addition, the sockets API provides the data type struct sock‐
107 addr_storage. This type is suitable to accommodate all supported
108 domain-specific socket address structures; it is large enough and is
109 aligned properly. (In particular, it is large enough to hold IPv6
110 socket addresses.) The structure includes the following field, which
111 can be used to identify the type of socket address actually stored in
112 the structure:
113
114 sa_family_t ss_family;
115
116 The sockaddr_storage structure is useful in programs that must handle
117 socket addresses in a generic way (e.g., programs that must deal with
118 both IPv4 and IPv6 socket addresses).
119
120 Socket options
121 The socket options listed below can be set by using setsockopt(2) and
122 read with getsockopt(2) with the socket level set to SOL_SOCKET for all
123 sockets. Unless otherwise noted, optval is a pointer to an int.
124
125 SO_ACCEPTCONN
126 Returns a value indicating whether or not this socket has been
127 marked to accept connections with listen(2). The value 0 indi‐
128 cates that this is not a listening socket, the value 1 indicates
129 that this is a listening socket. This socket option is read-
130 only.
131
132 SO_ATTACH_FILTER (since Linux 2.2), SO_ATTACH_BPF (since Linux 3.19)
133 Attach a classic BPF (SO_ATTACH_FILTER) or an extended BPF
134 (SO_ATTACH_BPF) program to the socket for use as a filter of
135 incoming packets. A packet will be dropped if the filter pro‐
136 gram returns zero. If the filter program returns a nonzero
137 value which is less than the packet's data length, the packet
138 will be truncated to the length returned. If the value returned
139 by the filter is greater than or equal to the packet's data
140 length, the packet is allowed to proceed unmodified.
141
142 The argument for SO_ATTACH_FILTER is a sock_fprog structure,
143 defined in <linux/filter.h>:
144
145 struct sock_fprog {
146 unsigned short len;
147 struct sock_filter *filter;
148 };
149
150 The argument for SO_ATTACH_BPF is a file descriptor returned by
151 the bpf(2) system call and must refer to a program of type
152 BPF_PROG_TYPE_SOCKET_FILTER.
153
154 These options may be set multiple times for a given socket, each
155 time replacing the previous filter program. The classic and
156 extended versions may be called on the same socket, but the pre‐
157 vious filter will always be replaced such that a socket never
158 has more than one filter defined.
159
160 Both classic and extended BPF are explained in the kernel source
161 file Documentation/networking/filter.txt
162
163 SO_ATTACH_REUSEPORT_CBPF, SO_ATTACH_REUSEPORT_EBPF
164 For use with the SO_REUSEPORT option, these options allow the
165 user to set a classic BPF (SO_ATTACH_REUSEPORT_CBPF) or an
166 extended BPF (SO_ATTACH_REUSEPORT_EBPF) program which defines
167 how packets are assigned to the sockets in the reuseport group
168 (that is, all sockets which have SO_REUSEPORT set and are using
169 the same local address to receive packets).
170
171 The BPF program must return an index between 0 and N-1 repre‐
172 senting the socket which should receive the packet (where N is
173 the number of sockets in the group). If the BPF program returns
174 an invalid index, socket selection will fall back to the plain
175 SO_REUSEPORT mechanism.
176
177 Sockets are numbered in the order in which they are added to the
178 group (that is, the order of bind(2) calls for UDP sockets or
179 the order of listen(2) calls for TCP sockets). New sockets
180 added to a reuseport group will inherit the BPF program. When a
181 socket is removed from a reuseport group (via close(2)), the
182 last socket in the group will be moved into the closed socket's
183 position.
184
185 These options may be set repeatedly at any time on any socket in
186 the group to replace the current BPF program used by all sockets
187 in the group.
188
189 SO_ATTACH_REUSEPORT_CBPF takes the same argument type as
190 SO_ATTACH_FILTER and SO_ATTACH_REUSEPORT_EBPF takes the same
191 argument type as SO_ATTACH_BPF.
192
193 UDP support for this feature is available since Linux 4.5; TCP
194 support is available since Linux 4.6.
195
196 SO_BINDTODEVICE
197 Bind this socket to a particular device like “eth0”, as speci‐
198 fied in the passed interface name. If the name is an empty
199 string or the option length is zero, the socket device binding
200 is removed. The passed option is a variable-length null-termi‐
201 nated interface name string with the maximum size of IFNAMSIZ.
202 If a socket is bound to an interface, only packets received from
203 that particular interface are processed by the socket. Note
204 that this works only for some socket types, particularly AF_INET
205 sockets. It is not supported for packet sockets (use normal
206 bind(2) there).
207
208 Before Linux 3.8, this socket option could be set, but could not
209 retrieved with getsockopt(2). Since Linux 3.8, it is readable.
210 The optlen argument should contain the buffer size available to
211 receive the device name and is recommended to be IFNAMSIZ bytes.
212 The real device name length is reported back in the optlen argu‐
213 ment.
214
215 SO_BROADCAST
216 Set or get the broadcast flag. When enabled, datagram sockets
217 are allowed to send packets to a broadcast address. This option
218 has no effect on stream-oriented sockets.
219
220 SO_BSDCOMPAT
221 Enable BSD bug-to-bug compatibility. This is used by the UDP
222 protocol module in Linux 2.0 and 2.2. If enabled, ICMP errors
223 received for a UDP socket will not be passed to the user pro‐
224 gram. In later kernel versions, support for this option has
225 been phased out: Linux 2.4 silently ignores it, and Linux 2.6
226 generates a kernel warning (printk()) if a program uses this
227 option. Linux 2.0 also enabled BSD bug-to-bug compatibility
228 options (random header changing, skipping of the broadcast flag)
229 for raw sockets with this option, but that was removed in Linux
230 2.2.
231
232 SO_DEBUG
233 Enable socket debugging. Allowed only for processes with the
234 CAP_NET_ADMIN capability or an effective user ID of 0.
235
236 SO_DETACH_FILTER (since Linux 2.2), SO_DETACH_BPF (since Linux 3.19)
237 These two options, which are synonyms, may be used to remove the
238 classic or extended BPF program attached to a socket with either
239 SO_ATTACH_FILTER or SO_ATTACH_BPF. The option value is ignored.
240
241 SO_DOMAIN (since Linux 2.6.32)
242 Retrieves the socket domain as an integer, returning a value
243 such as AF_INET6. See socket(2) for details. This socket
244 option is read-only.
245
246 SO_ERROR
247 Get and clear the pending socket error. This socket option is
248 read-only. Expects an integer.
249
250 SO_DONTROUTE
251 Don't send via a gateway, send only to directly connected hosts.
252 The same effect can be achieved by setting the MSG_DONTROUTE
253 flag on a socket send(2) operation. Expects an integer boolean
254 flag.
255
256 SO_INCOMING_CPU (gettable since Linux 3.19, settable since Linux 4.4)
257 Sets or gets the CPU affinity of a socket. Expects an integer
258 flag.
259
260 int cpu = 1;
261 socklen_t len = sizeof(cpu);
262 setsockopt(fd, SOL_SOCKET, SO_INCOMING_CPU, &cpu, &len);
263
264 Because all of the packets for a single stream (i.e., all pack‐
265 ets for the same 4-tuple) arrive on the single RX queue that is
266 associated with a particular CPU, the typical use case is to
267 employ one listening process per RX queue, with the incoming
268 flow being handled by a listener on the same CPU that is han‐
269 dling the RX queue. This provides optimal NUMA behavior and
270 keeps CPU caches hot.
271
272 SO_KEEPALIVE
273 Enable sending of keep-alive messages on connection-oriented
274 sockets. Expects an integer boolean flag.
275
276 SO_LINGER
277 Sets or gets the SO_LINGER option. The argument is a linger
278 structure.
279
280 struct linger {
281 int l_onoff; /* linger active */
282 int l_linger; /* how many seconds to linger for */
283 };
284
285 When enabled, a close(2) or shutdown(2) will not return until
286 all queued messages for the socket have been successfully sent
287 or the linger timeout has been reached. Otherwise, the call
288 returns immediately and the closing is done in the background.
289 When the socket is closed as part of exit(2), it always lingers
290 in the background.
291
292 SO_LOCK_FILTER
293 When set, this option will prevent changing the filters associ‐
294 ated with the socket. These filters include any set using the
295 socket options SO_ATTACH_FILTER, SO_ATTACH_BPF, SO_ATTACH_REUSE‐
296 PORT_CBPF and SO_ATTACH_REUSEPORT_EPBF.
297
298 The typical use case is for a privileged process to set up a raw
299 socket (an operation that requires the CAP_NET_RAW capability),
300 apply a restrictive filter, set the SO_LOCK_FILTER option, and
301 then either drop its privileges or pass the socket file descrip‐
302 tor to an unprivileged process via a UNIX domain socket.
303
304 Once the SO_LOCK_FILTER option has been enabled, attempts to
305 change or remove the filter attached to a socket, or to disable
306 the SO_LOCK_FILTER option will fail with the error EPERM.
307
308 SO_MARK (since Linux 2.6.25)
309 Set the mark for each packet sent through this socket (similar
310 to the netfilter MARK target but socket-based). Changing the
311 mark can be used for mark-based routing without netfilter or for
312 packet filtering. Setting this option requires the
313 CAP_NET_ADMIN capability.
314
315 SO_OOBINLINE
316 If this option is enabled, out-of-band data is directly placed
317 into the receive data stream. Otherwise, out-of-band data is
318 passed only when the MSG_OOB flag is set during receiving.
319
320 SO_PASSCRED
321 Enable or disable the receiving of the SCM_CREDENTIALS control
322 message. For more information see unix(7).
323
324 SO_PEEK_OFF (since Linux 3.4)
325 This option, which is currently supported only for unix(7) sock‐
326 ets, sets the value of the "peek offset" for the recv(2) system
327 call when used with MSG_PEEK flag.
328
329 When this option is set to a negative value (it is set to -1 for
330 all new sockets), traditional behavior is provided: recv(2) with
331 the MSG_PEEK flag will peek data from the front of the queue.
332
333 When the option is set to a value greater than or equal to zero,
334 then the next peek at data queued in the socket will occur at
335 the byte offset specified by the option value. At the same
336 time, the "peek offset" will be incremented by the number of
337 bytes that were peeked from the queue, so that a subsequent peek
338 will return the next data in the queue.
339
340 If data is removed from the front of the queue via a call to
341 recv(2) (or similar) without the MSG_PEEK flag, the "peek off‐
342 set" will be decreased by the number of bytes removed. In other
343 words, receiving data without the MSG_PEEK flag will cause the
344 "peek offset" to be adjusted to maintain the correct relative
345 position in the queued data, so that a subsequent peek will
346 retrieve the data that would have been retrieved had the data
347 not been removed.
348
349 For datagram sockets, if the "peek offset" points to the middle
350 of a packet, the data returned will be marked with the MSG_TRUNC
351 flag.
352
353 The following example serves to illustrate the use of
354 SO_PEEK_OFF. Suppose a stream socket has the following queued
355 input data:
356
357 aabbccddeeff
358
359 The following sequence of recv(2) calls would have the effect
360 noted in the comments:
361
362 int ov = 4; // Set peek offset to 4
363 setsockopt(fd, SOL_SOCKET, SO_PEEK_OFF, &ov, sizeof(ov));
364
365 recv(fd, buf, 2, MSG_PEEK); // Peeks "cc"; offset set to 6
366 recv(fd, buf, 2, MSG_PEEK); // Peeks "dd"; offset set to 8
367 recv(fd, buf, 2, 0); // Reads "aa"; offset set to 6
368 recv(fd, buf, 2, MSG_PEEK); // Peeks "ee"; offset set to 8
369
370 SO_PEERCRED
371 Return the credentials of the foreign process connected to this
372 socket. This is possible only for connected AF_UNIX stream
373 sockets and AF_UNIX stream and datagram socket pairs created
374 using socketpair(2); see unix(7). The returned credentials are
375 those that were in effect at the time of the call to connect(2)
376 or socketpair(2). The argument is a ucred structure; define the
377 _GNU_SOURCE feature test macro to obtain the definition of that
378 structure from <sys/socket.h>. This socket option is read-only.
379
380 SO_PRIORITY
381 Set the protocol-defined priority for all packets to be sent on
382 this socket. Linux uses this value to order the networking
383 queues: packets with a higher priority may be processed first
384 depending on the selected device queueing discipline. Setting a
385 priority outside the range 0 to 6 requires the CAP_NET_ADMIN
386 capability.
387
388 SO_PROTOCOL (since Linux 2.6.32)
389 Retrieves the socket protocol as an integer, returning a value
390 such as IPPROTO_SCTP. See socket(2) for details. This socket
391 option is read-only.
392
393 SO_RCVBUF
394 Sets or gets the maximum socket receive buffer in bytes. The
395 kernel doubles this value (to allow space for bookkeeping over‐
396 head) when it is set using setsockopt(2), and this doubled value
397 is returned by getsockopt(2). The default value is set by the
398 /proc/sys/net/core/rmem_default file, and the maximum allowed
399 value is set by the /proc/sys/net/core/rmem_max file. The mini‐
400 mum (doubled) value for this option is 256.
401
402 SO_RCVBUFFORCE (since Linux 2.6.14)
403 Using this socket option, a privileged (CAP_NET_ADMIN) process
404 can perform the same task as SO_RCVBUF, but the rmem_max limit
405 can be overridden.
406
407 SO_RCVLOWAT and SO_SNDLOWAT
408 Specify the minimum number of bytes in the buffer until the
409 socket layer will pass the data to the protocol (SO_SNDLOWAT) or
410 the user on receiving (SO_RCVLOWAT). These two values are ini‐
411 tialized to 1. SO_SNDLOWAT is not changeable on Linux (setsock‐
412 opt(2) fails with the error ENOPROTOOPT). SO_RCVLOWAT is
413 changeable only since Linux 2.4. The select(2) and poll(2) sys‐
414 tem calls currently do not respect the SO_RCVLOWAT setting on
415 Linux, and mark a socket readable when even a single byte of
416 data is available. A subsequent read from the socket will block
417 until SO_RCVLOWAT bytes are available.
418
419 SO_RCVTIMEO and SO_SNDTIMEO
420 Specify the receiving or sending timeouts until reporting an
421 error. The argument is a struct timeval. If an input or output
422 function blocks for this period of time, and data has been sent
423 or received, the return value of that function will be the
424 amount of data transferred; if no data has been transferred and
425 the timeout has been reached, then -1 is returned with errno set
426 to EAGAIN or EWOULDBLOCK, or EINPROGRESS (for connect(2)) just
427 as if the socket was specified to be nonblocking. If the time‐
428 out is set to zero (the default), then the operation will never
429 timeout. Timeouts only have effect for system calls that per‐
430 form socket I/O (e.g., read(2), recvmsg(2), send(2),
431 sendmsg(2)); timeouts have no effect for select(2), poll(2),
432 epoll_wait(2), and so on.
433
434 SO_REUSEADDR
435 Indicates that the rules used in validating addresses supplied
436 in a bind(2) call should allow reuse of local addresses. For
437 AF_INET sockets this means that a socket may bind, except when
438 there is an active listening socket bound to the address. When
439 the listening socket is bound to INADDR_ANY with a specific port
440 then it is not possible to bind to this port for any local
441 address. Argument is an integer boolean flag.
442
443 SO_REUSEPORT (since Linux 3.9)
444 Permits multiple AF_INET or AF_INET6 sockets to be bound to an
445 identical socket address. This option must be set on each
446 socket (including the first socket) prior to calling bind(2) on
447 the socket. To prevent port hijacking, all of the processes
448 binding to the same address must have the same effective UID.
449 This option can be employed with both TCP and UDP sockets.
450
451 For TCP sockets, this option allows accept(2) load distribution
452 in a multi-threaded server to be improved by using a distinct
453 listener socket for each thread. This provides improved load
454 distribution as compared to traditional techniques such using a
455 single accept(2)ing thread that distributes connections, or hav‐
456 ing multiple threads that compete to accept(2) from the same
457 socket.
458
459 For UDP sockets, the use of this option can provide better dis‐
460 tribution of incoming datagrams to multiple processes (or
461 threads) as compared to the traditional technique of having mul‐
462 tiple processes compete to receive datagrams on the same socket.
463
464 SO_RXQ_OVFL (since Linux 2.6.33)
465 Indicates that an unsigned 32-bit value ancillary message (cmsg)
466 should be attached to received skbs indicating the number of
467 packets dropped by the socket since its creation.
468
469 SO_SNDBUF
470 Sets or gets the maximum socket send buffer in bytes. The ker‐
471 nel doubles this value (to allow space for bookkeeping overhead)
472 when it is set using setsockopt(2), and this doubled value is
473 returned by getsockopt(2). The default value is set by the
474 /proc/sys/net/core/wmem_default file and the maximum allowed
475 value is set by the /proc/sys/net/core/wmem_max file. The mini‐
476 mum (doubled) value for this option is 2048.
477
478 SO_SNDBUFFORCE (since Linux 2.6.14)
479 Using this socket option, a privileged (CAP_NET_ADMIN) process
480 can perform the same task as SO_SNDBUF, but the wmem_max limit
481 can be overridden.
482
483 SO_TIMESTAMP
484 Enable or disable the receiving of the SO_TIMESTAMP control mes‐
485 sage. The timestamp control message is sent with level
486 SOL_SOCKET and the cmsg_data field is a struct timeval indicat‐
487 ing the reception time of the last packet passed to the user in
488 this call. See cmsg(3) for details on control messages.
489
490 SO_TYPE
491 Gets the socket type as an integer (e.g., SOCK_STREAM). This
492 socket option is read-only.
493
494 SO_BUSY_POLL (since Linux 3.11)
495 Sets the approximate time in microseconds to busy poll on a
496 blocking receive when there is no data. Increasing this value
497 requires CAP_NET_ADMIN. The default for this option is con‐
498 trolled by the /proc/sys/net/core/busy_read file.
499
500 The value in the /proc/sys/net/core/busy_poll file determines
501 how long select(2) and poll(2) will busy poll when they operate
502 on sockets with SO_BUSY_POLL set and no events to report are
503 found.
504
505 In both cases, busy polling will only be done when the socket
506 last received data from a network device that supports this
507 option.
508
509 While busy polling may improve latency of some applications,
510 care must be taken when using it since this will increase both
511 CPU utilization and power usage.
512
513 Signals
514 When writing onto a connection-oriented socket that has been shut down
515 (by the local or the remote end) SIGPIPE is sent to the writing process
516 and EPIPE is returned. The signal is not sent when the write call
517 specified the MSG_NOSIGNAL flag.
518
519 When requested with the FIOSETOWN fcntl(2) or SIOCSPGRP ioctl(2), SIGIO
520 is sent when an I/O event occurs. It is possible to use poll(2) or
521 select(2) in the signal handler to find out which socket the event
522 occurred on. An alternative (in Linux 2.2) is to set a real-time sig‐
523 nal using the F_SETSIG fcntl(2); the handler of the real time signal
524 will be called with the file descriptor in the si_fd field of its sig‐
525 info_t. See fcntl(2) for more information.
526
527 Under some circumstances (e.g., multiple processes accessing a single
528 socket), the condition that caused the SIGIO may have already disap‐
529 peared when the process reacts to the signal. If this happens, the
530 process should wait again because Linux will resend the signal later.
531
532 /proc interfaces
533 The core socket networking parameters can be accessed via files in the
534 directory /proc/sys/net/core/.
535
536 rmem_default
537 contains the default setting in bytes of the socket receive buf‐
538 fer.
539
540 rmem_max
541 contains the maximum socket receive buffer size in bytes which a
542 user may set by using the SO_RCVBUF socket option.
543
544 wmem_default
545 contains the default setting in bytes of the socket send buffer.
546
547 wmem_max
548 contains the maximum socket send buffer size in bytes which a
549 user may set by using the SO_SNDBUF socket option.
550
551 message_cost and message_burst
552 configure the token bucket filter used to load limit warning
553 messages caused by external network events.
554
555 netdev_max_backlog
556 Maximum number of packets in the global input queue.
557
558 optmem_max
559 Maximum length of ancillary data and user control data like the
560 iovecs per socket.
561
562 Ioctls
563 These operations can be accessed using ioctl(2):
564
565 error = ioctl(ip_socket, ioctl_type, &value_result);
566
567 SIOCGSTAMP
568 Return a struct timeval with the receive timestamp of the last
569 packet passed to the user. This is useful for accurate round
570 trip time measurements. See setitimer(2) for a description of
571 struct timeval. This ioctl should be used only if the socket
572 option SO_TIMESTAMP is not set on the socket. Otherwise, it
573 returns the timestamp of the last packet that was received while
574 SO_TIMESTAMP was not set, or it fails if no such packet has been
575 received, (i.e., ioctl(2) returns -1 with errno set to ENOENT).
576
577 SIOCSPGRP
578 Set the process or process group that is to receive SIGIO or
579 SIGURG signals when I/O becomes possible or urgent data is
580 available. The argument is a pointer to a pid_t. For further
581 details, see the description of F_SETOWN in fcntl(2).
582
583 FIOASYNC
584 Change the O_ASYNC flag to enable or disable asynchronous I/O
585 mode of the socket. Asynchronous I/O mode means that the SIGIO
586 signal or the signal set with F_SETSIG is raised when a new I/O
587 event occurs.
588
589 Argument is an integer boolean flag. (This operation is synony‐
590 mous with the use of fcntl(2) to set the O_ASYNC flag.)
591
592 SIOCGPGRP
593 Get the current process or process group that receives SIGIO or
594 SIGURG signals, or 0 when none is set.
595
596 Valid fcntl(2) operations:
597
598 FIOGETOWN
599 The same as the SIOCGPGRP ioctl(2).
600
601 FIOSETOWN
602 The same as the SIOCSPGRP ioctl(2).
603
605 SO_BINDTODEVICE was introduced in Linux 2.0.30. SO_PASSCRED is new in
606 Linux 2.2. The /proc interfaces were introduced in Linux 2.2. SO_RCV‐
607 TIMEO and SO_SNDTIMEO are supported since Linux 2.3.41. Earlier, time‐
608 outs were fixed to a protocol-specific setting, and could not be read
609 or written.
610
612 Linux assumes that half of the send/receive buffer is used for internal
613 kernel structures; thus the values in the corresponding /proc files are
614 twice what can be observed on the wire.
615
616 Linux will allow port reuse only with the SO_REUSEADDR option when this
617 option was set both in the previous program that performed a bind(2) to
618 the port and in the program that wants to reuse the port. This differs
619 from some implementations (e.g., FreeBSD) where only the later program
620 needs to set the SO_REUSEADDR option. Typically this difference is
621 invisible, since, for example, a server program is designed to always
622 set this option.
623
625 wireshark(1), bpf(2), connect(2), getsockopt(2), setsockopt(2),
626 socket(2), pcap(3), capabilities(7), ddp(7), ip(7), packet(7), tcp(7),
627 udp(7), unix(7), tcpdump(8)
628
630 This page is part of release 4.15 of the Linux man-pages project. A
631 description of the project, information about reporting bugs, and the
632 latest version of this page, can be found at
633 https://www.kernel.org/doc/man-pages/.
634
635
636
637Linux 2018-02-02 SOCKET(7)