2012-10-09 15:47:14 +07:00
|
|
|
/*
|
|
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
|
|
* for more details.
|
|
|
|
*
|
|
|
|
* Copyright (C) 1997, 1999, 2000, 2001 Ralf Baechle
|
|
|
|
* Copyright (C) 2000, 2001 Silicon Graphics, Inc.
|
|
|
|
*/
|
|
|
|
#ifndef _UAPI_ASM_SOCKET_H
|
|
|
|
#define _UAPI_ASM_SOCKET_H
|
|
|
|
|
|
|
|
#include <asm/sockios.h>
|
|
|
|
|
|
|
|
/*
|
|
|
|
* For setsockopt(2)
|
|
|
|
*
|
|
|
|
* This defines are ABI conformant as far as Linux supports these ...
|
|
|
|
*/
|
|
|
|
#define SOL_SOCKET 0xffff
|
|
|
|
|
|
|
|
#define SO_DEBUG 0x0001 /* Record debugging information. */
|
|
|
|
#define SO_REUSEADDR 0x0004 /* Allow reuse of local addresses. */
|
|
|
|
#define SO_KEEPALIVE 0x0008 /* Keep connections alive and send
|
|
|
|
SIGPIPE when they die. */
|
|
|
|
#define SO_DONTROUTE 0x0010 /* Don't do local routing. */
|
|
|
|
#define SO_BROADCAST 0x0020 /* Allow transmission of
|
2013-01-22 18:59:30 +07:00
|
|
|
broadcast messages. */
|
2012-10-09 15:47:14 +07:00
|
|
|
#define SO_LINGER 0x0080 /* Block on close of a reliable
|
|
|
|
socket to transmit pending data. */
|
|
|
|
#define SO_OOBINLINE 0x0100 /* Receive out-of-band data in-band. */
|
2013-01-22 16:49:50 +07:00
|
|
|
#define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */
|
2012-10-09 15:47:14 +07:00
|
|
|
|
|
|
|
#define SO_TYPE 0x1008 /* Compatible name for SO_STYLE. */
|
2013-01-22 18:59:30 +07:00
|
|
|
#define SO_STYLE SO_TYPE /* Synonym */
|
2012-10-09 15:47:14 +07:00
|
|
|
#define SO_ERROR 0x1007 /* get error status and clear */
|
|
|
|
#define SO_SNDBUF 0x1001 /* Send buffer size. */
|
|
|
|
#define SO_RCVBUF 0x1002 /* Receive buffer. */
|
|
|
|
#define SO_SNDLOWAT 0x1003 /* send low-water mark */
|
|
|
|
#define SO_RCVLOWAT 0x1004 /* receive low-water mark */
|
|
|
|
#define SO_SNDTIMEO 0x1005 /* send timeout */
|
2013-01-22 18:59:30 +07:00
|
|
|
#define SO_RCVTIMEO 0x1006 /* receive timeout */
|
2012-10-09 15:47:14 +07:00
|
|
|
#define SO_ACCEPTCONN 0x1009
|
|
|
|
#define SO_PROTOCOL 0x1028 /* protocol type */
|
|
|
|
#define SO_DOMAIN 0x1029 /* domain/socket family */
|
|
|
|
|
|
|
|
/* linux-specific, might as well be the same as on i386 */
|
|
|
|
#define SO_NO_CHECK 11
|
|
|
|
#define SO_PRIORITY 12
|
|
|
|
#define SO_BSDCOMPAT 14
|
|
|
|
|
|
|
|
#define SO_PASSCRED 17
|
|
|
|
#define SO_PEERCRED 18
|
|
|
|
|
|
|
|
/* Security levels - as per NRL IPv6 - don't actually do anything */
|
|
|
|
#define SO_SECURITY_AUTHENTICATION 22
|
|
|
|
#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
|
|
|
|
#define SO_SECURITY_ENCRYPTION_NETWORK 24
|
|
|
|
|
|
|
|
#define SO_BINDTODEVICE 25
|
|
|
|
|
|
|
|
/* Socket filtering */
|
2013-01-22 18:59:30 +07:00
|
|
|
#define SO_ATTACH_FILTER 26
|
|
|
|
#define SO_DETACH_FILTER 27
|
sk-filter: Add ability to get socket filter program (v2)
The SO_ATTACH_FILTER option is set only. I propose to add the get
ability by using SO_ATTACH_FILTER in getsockopt. To be less
irritating to eyes the SO_GET_FILTER alias to it is declared. This
ability is required by checkpoint-restore project to be able to
save full state of a socket.
There are two issues with getting filter back.
First, kernel modifies the sock_filter->code on filter load, thus in
order to return the filter element back to user we have to decode it
into user-visible constants. Fortunately the modification in question
is interconvertible.
Second, the BPF_S_ALU_DIV_K code modifies the command argument k to
speed up the run-time division by doing kernel_k = reciprocal(user_k).
Bad news is that different user_k may result in same kernel_k, so we
can't get the original user_k back. Good news is that we don't have
to do it. What we need to is calculate a user2_k so, that
reciprocal(user2_k) == reciprocal(user_k) == kernel_k
i.e. if it's re-loaded back the compiled again value will be exactly
the same as it was. That said, the user2_k can be calculated like this
user2_k = reciprocal(kernel_k)
with an exception, that if kernel_k == 0, then user2_k == 1.
The optlen argument is treated like this -- when zero, kernel returns
the amount of sock_fprog elements in filter, otherwise it should be
large enough for the sock_fprog array.
changes since v1:
* Declared SO_GET_FILTER in all arch headers
* Added decode of vlan-tag codes
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-11-01 09:01:48 +07:00
|
|
|
#define SO_GET_FILTER SO_ATTACH_FILTER
|
2012-10-09 15:47:14 +07:00
|
|
|
|
2013-01-22 18:59:30 +07:00
|
|
|
#define SO_PEERNAME 28
|
2012-10-09 15:47:14 +07:00
|
|
|
#define SO_TIMESTAMP 29
|
|
|
|
#define SCM_TIMESTAMP SO_TIMESTAMP
|
|
|
|
|
|
|
|
#define SO_PEERSEC 30
|
|
|
|
#define SO_SNDBUFFORCE 31
|
|
|
|
#define SO_RCVBUFFORCE 33
|
|
|
|
#define SO_PASSSEC 34
|
|
|
|
#define SO_TIMESTAMPNS 35
|
|
|
|
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
|
|
|
|
|
|
|
|
#define SO_MARK 36
|
|
|
|
|
|
|
|
#define SO_TIMESTAMPING 37
|
|
|
|
#define SCM_TIMESTAMPING SO_TIMESTAMPING
|
|
|
|
|
2013-01-22 18:59:30 +07:00
|
|
|
#define SO_RXQ_OVFL 40
|
2012-10-09 15:47:14 +07:00
|
|
|
|
|
|
|
#define SO_WIFI_STATUS 41
|
|
|
|
#define SCM_WIFI_STATUS SO_WIFI_STATUS
|
|
|
|
#define SO_PEEK_OFF 42
|
|
|
|
|
|
|
|
/* Instruct lower device to use last 4-bytes of skb data as FCS */
|
|
|
|
#define SO_NOFCS 43
|
|
|
|
|
2013-01-17 04:55:49 +07:00
|
|
|
#define SO_LOCK_FILTER 44
|
2012-10-09 15:47:14 +07:00
|
|
|
|
2013-03-28 18:19:25 +07:00
|
|
|
#define SO_SELECT_ERR_QUEUE 45
|
|
|
|
|
2013-07-10 21:13:36 +07:00
|
|
|
#define SO_BUSY_POLL 46
|
2013-06-14 20:33:57 +07:00
|
|
|
|
2013-09-24 22:20:52 +07:00
|
|
|
#define SO_MAX_PACING_RATE 47
|
|
|
|
|
2014-01-17 23:09:45 +07:00
|
|
|
#define SO_BPF_EXTENSIONS 48
|
|
|
|
|
2012-10-09 15:47:14 +07:00
|
|
|
#endif /* _UAPI_ASM_SOCKET_H */
|