diff options
| author | Patrick McHardy <kaber@trash.net> | 2005-08-09 22:30:51 -0400 |
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2005-08-29 18:31:35 -0400 |
| commit | b0573dea1fb32ebc72ffa05980fd840df1d80860 (patch) | |
| tree | ae10ad849dce6dbeec1b281fbd51214030f21902 | |
| parent | f9e815b376dc19e6afc551cd755ac64e9e42d81f (diff) | |
[NET]: Introduce SO_{SND,RCV}BUFFORCE socket options
Allows overriding of sysctl_{wmem,rmrm}_max
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
| -rw-r--r-- | include/asm-alpha/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-arm/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-arm26/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-cris/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-frv/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-h8300/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-i386/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-ia64/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-m32r/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-m68k/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-mips/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-parisc/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-ppc/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-ppc64/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-s390/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-sh/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-sparc/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-sparc64/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-v850/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-x86_64/socket.h | 2 | ||||
| -rw-r--r-- | include/asm-xtensa/socket.h | 2 | ||||
| -rw-r--r-- | net/core/sock.c | 18 |
22 files changed, 58 insertions, 2 deletions
diff --git a/include/asm-alpha/socket.h b/include/asm-alpha/socket.h index d00259d3dc..b519322913 100644 --- a/include/asm-alpha/socket.h +++ b/include/asm-alpha/socket.h | |||
| @@ -25,6 +25,8 @@ | |||
| 25 | #define SO_ERROR 0x1007 | 25 | #define SO_ERROR 0x1007 |
| 26 | #define SO_SNDBUF 0x1001 | 26 | #define SO_SNDBUF 0x1001 |
| 27 | #define SO_RCVBUF 0x1002 | 27 | #define SO_RCVBUF 0x1002 |
| 28 | #define SO_SNDBUFFORCE 0x100a | ||
| 29 | #define SO_RCVBUFFORCE 0x100b | ||
| 28 | #define SO_RCVLOWAT 0x1010 | 30 | #define SO_RCVLOWAT 0x1010 |
| 29 | #define SO_SNDLOWAT 0x1011 | 31 | #define SO_SNDLOWAT 0x1011 |
| 30 | #define SO_RCVTIMEO 0x1012 | 32 | #define SO_RCVTIMEO 0x1012 |
diff --git a/include/asm-arm/socket.h b/include/asm-arm/socket.h index 46d20585d9..3c51da6438 100644 --- a/include/asm-arm/socket.h +++ b/include/asm-arm/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-arm26/socket.h b/include/asm-arm26/socket.h index 46d20585d9..3c51da6438 100644 --- a/include/asm-arm26/socket.h +++ b/include/asm-arm26/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-cris/socket.h b/include/asm-cris/socket.h index f159b4f165..8b1da3e58c 100644 --- a/include/asm-cris/socket.h +++ b/include/asm-cris/socket.h | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | #define SO_BROADCAST 6 | 16 | #define SO_BROADCAST 6 |
| 17 | #define SO_SNDBUF 7 | 17 | #define SO_SNDBUF 7 |
| 18 | #define SO_RCVBUF 8 | 18 | #define SO_RCVBUF 8 |
| 19 | #define SO_SNDBUFFORCE 32 | ||
| 20 | #define SO_RCVBUFFORCE 33 | ||
| 19 | #define SO_KEEPALIVE 9 | 21 | #define SO_KEEPALIVE 9 |
| 20 | #define SO_OOBINLINE 10 | 22 | #define SO_OOBINLINE 10 |
| 21 | #define SO_NO_CHECK 11 | 23 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-frv/socket.h b/include/asm-frv/socket.h index c3be17c7de..7177f8b981 100644 --- a/include/asm-frv/socket.h +++ b/include/asm-frv/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-h8300/socket.h b/include/asm-h8300/socket.h index af33b8525d..d98cf85baf 100644 --- a/include/asm-h8300/socket.h +++ b/include/asm-h8300/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-i386/socket.h b/include/asm-i386/socket.h index 07f6b38ad1..802ae76195 100644 --- a/include/asm-i386/socket.h +++ b/include/asm-i386/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-ia64/socket.h b/include/asm-ia64/socket.h index 21a9f10d6b..a255006fb7 100644 --- a/include/asm-ia64/socket.h +++ b/include/asm-ia64/socket.h | |||
| @@ -23,6 +23,8 @@ | |||
| 23 | #define SO_BROADCAST 6 | 23 | #define SO_BROADCAST 6 |
| 24 | #define SO_SNDBUF 7 | 24 | #define SO_SNDBUF 7 |
| 25 | #define SO_RCVBUF 8 | 25 | #define SO_RCVBUF 8 |
| 26 | #define SO_SNDBUFFORCE 32 | ||
| 27 | #define SO_RCVBUFFORCE 33 | ||
| 26 | #define SO_KEEPALIVE 9 | 28 | #define SO_KEEPALIVE 9 |
| 27 | #define SO_OOBINLINE 10 | 29 | #define SO_OOBINLINE 10 |
| 28 | #define SO_NO_CHECK 11 | 30 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-m32r/socket.h b/include/asm-m32r/socket.h index 159519d990..8b6680f223 100644 --- a/include/asm-m32r/socket.h +++ b/include/asm-m32r/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-m68k/socket.h b/include/asm-m68k/socket.h index 8d0b9fc2d0..f578ca4b77 100644 --- a/include/asm-m68k/socket.h +++ b/include/asm-m68k/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-mips/socket.h b/include/asm-mips/socket.h index 020b4db70e..d478a86294 100644 --- a/include/asm-mips/socket.h +++ b/include/asm-mips/socket.h | |||
| @@ -37,6 +37,8 @@ To add: #define SO_REUSEPORT 0x0200 /* Allow local address and port reuse. */ | |||
| 37 | #define SO_ERROR 0x1007 /* get error status and clear */ | 37 | #define SO_ERROR 0x1007 /* get error status and clear */ |
| 38 | #define SO_SNDBUF 0x1001 /* Send buffer size. */ | 38 | #define SO_SNDBUF 0x1001 /* Send buffer size. */ |
| 39 | #define SO_RCVBUF 0x1002 /* Receive buffer. */ | 39 | #define SO_RCVBUF 0x1002 /* Receive buffer. */ |
| 40 | #define SO_SNDBUFFORCE 0x100a | ||
| 41 | #define SO_RCVBUFFORCE 0x100b | ||
| 40 | #define SO_SNDLOWAT 0x1003 /* send low-water mark */ | 42 | #define SO_SNDLOWAT 0x1003 /* send low-water mark */ |
| 41 | #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ | 43 | #define SO_RCVLOWAT 0x1004 /* receive low-water mark */ |
| 42 | #define SO_SNDTIMEO 0x1005 /* send timeout */ | 44 | #define SO_SNDTIMEO 0x1005 /* send timeout */ |
diff --git a/include/asm-parisc/socket.h b/include/asm-parisc/socket.h index 4a77996c18..1bf54dc53c 100644 --- a/include/asm-parisc/socket.h +++ b/include/asm-parisc/socket.h | |||
| @@ -16,6 +16,8 @@ | |||
| 16 | /* To add :#define SO_REUSEPORT 0x0200 */ | 16 | /* To add :#define SO_REUSEPORT 0x0200 */ |
| 17 | #define SO_SNDBUF 0x1001 | 17 | #define SO_SNDBUF 0x1001 |
| 18 | #define SO_RCVBUF 0x1002 | 18 | #define SO_RCVBUF 0x1002 |
| 19 | #define SO_SNDBUFFORCE 0x100a | ||
| 20 | #define SO_RCVBUFFORCE 0x100b | ||
| 19 | #define SO_SNDLOWAT 0x1003 | 21 | #define SO_SNDLOWAT 0x1003 |
| 20 | #define SO_RCVLOWAT 0x1004 | 22 | #define SO_RCVLOWAT 0x1004 |
| 21 | #define SO_SNDTIMEO 0x1005 | 23 | #define SO_SNDTIMEO 0x1005 |
diff --git a/include/asm-ppc/socket.h b/include/asm-ppc/socket.h index 4134376b0f..296e1a3469 100644 --- a/include/asm-ppc/socket.h +++ b/include/asm-ppc/socket.h | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | #define SO_BROADCAST 6 | 20 | #define SO_BROADCAST 6 |
| 21 | #define SO_SNDBUF 7 | 21 | #define SO_SNDBUF 7 |
| 22 | #define SO_RCVBUF 8 | 22 | #define SO_RCVBUF 8 |
| 23 | #define SO_SNDBUFFORCE 32 | ||
| 24 | #define SO_RCVBUFFORCE 33 | ||
| 23 | #define SO_KEEPALIVE 9 | 25 | #define SO_KEEPALIVE 9 |
| 24 | #define SO_OOBINLINE 10 | 26 | #define SO_OOBINLINE 10 |
| 25 | #define SO_NO_CHECK 11 | 27 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-ppc64/socket.h b/include/asm-ppc64/socket.h index 59e00dfc8b..9e1af8eb2d 100644 --- a/include/asm-ppc64/socket.h +++ b/include/asm-ppc64/socket.h | |||
| @@ -21,6 +21,8 @@ | |||
| 21 | #define SO_BROADCAST 6 | 21 | #define SO_BROADCAST 6 |
| 22 | #define SO_SNDBUF 7 | 22 | #define SO_SNDBUF 7 |
| 23 | #define SO_RCVBUF 8 | 23 | #define SO_RCVBUF 8 |
| 24 | #define SO_SNDBUFFORCE 32 | ||
| 25 | #define SO_RCVBUFFORCE 33 | ||
| 24 | #define SO_KEEPALIVE 9 | 26 | #define SO_KEEPALIVE 9 |
| 25 | #define SO_OOBINLINE 10 | 27 | #define SO_OOBINLINE 10 |
| 26 | #define SO_NO_CHECK 11 | 28 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-s390/socket.h b/include/asm-s390/socket.h index 0e96eeca4e..15a5298c87 100644 --- a/include/asm-s390/socket.h +++ b/include/asm-s390/socket.h | |||
| @@ -22,6 +22,8 @@ | |||
| 22 | #define SO_BROADCAST 6 | 22 | #define SO_BROADCAST 6 |
| 23 | #define SO_SNDBUF 7 | 23 | #define SO_SNDBUF 7 |
| 24 | #define SO_RCVBUF 8 | 24 | #define SO_RCVBUF 8 |
| 25 | #define SO_SNDBUFFORCE 32 | ||
| 26 | #define SO_RCVBUFFORCE 33 | ||
| 25 | #define SO_KEEPALIVE 9 | 27 | #define SO_KEEPALIVE 9 |
| 26 | #define SO_OOBINLINE 10 | 28 | #define SO_OOBINLINE 10 |
| 27 | #define SO_NO_CHECK 11 | 29 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-sh/socket.h b/include/asm-sh/socket.h index dde696c3b4..553904ff93 100644 --- a/include/asm-sh/socket.h +++ b/include/asm-sh/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_RCVBUFFORCE 32 | ||
| 18 | #define SO_SNDBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-sparc/socket.h b/include/asm-sparc/socket.h index c1154e3ecf..09575b608a 100644 --- a/include/asm-sparc/socket.h +++ b/include/asm-sparc/socket.h | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | 29 | ||
| 30 | #define SO_SNDBUF 0x1001 | 30 | #define SO_SNDBUF 0x1001 |
| 31 | #define SO_RCVBUF 0x1002 | 31 | #define SO_RCVBUF 0x1002 |
| 32 | #define SO_SNDBUFFORCE 0x100a | ||
| 33 | #define SO_RCVBUFFORCE 0x100b | ||
| 32 | #define SO_ERROR 0x1007 | 34 | #define SO_ERROR 0x1007 |
| 33 | #define SO_TYPE 0x1008 | 35 | #define SO_TYPE 0x1008 |
| 34 | 36 | ||
diff --git a/include/asm-sparc64/socket.h b/include/asm-sparc64/socket.h index 865547a239..59987dad33 100644 --- a/include/asm-sparc64/socket.h +++ b/include/asm-sparc64/socket.h | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | 29 | ||
| 30 | #define SO_SNDBUF 0x1001 | 30 | #define SO_SNDBUF 0x1001 |
| 31 | #define SO_RCVBUF 0x1002 | 31 | #define SO_RCVBUF 0x1002 |
| 32 | #define SO_SNDBUFFORCE 0x100a | ||
| 33 | #define SO_RCVBUFFORCE 0x100b | ||
| 32 | #define SO_ERROR 0x1007 | 34 | #define SO_ERROR 0x1007 |
| 33 | #define SO_TYPE 0x1008 | 35 | #define SO_TYPE 0x1008 |
| 34 | 36 | ||
diff --git a/include/asm-v850/socket.h b/include/asm-v850/socket.h index 213b852af5..0240d366a0 100644 --- a/include/asm-v850/socket.h +++ b/include/asm-v850/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-x86_64/socket.h b/include/asm-x86_64/socket.h index d9a252ea82..f2cdbeae5d 100644 --- a/include/asm-x86_64/socket.h +++ b/include/asm-x86_64/socket.h | |||
| @@ -14,6 +14,8 @@ | |||
| 14 | #define SO_BROADCAST 6 | 14 | #define SO_BROADCAST 6 |
| 15 | #define SO_SNDBUF 7 | 15 | #define SO_SNDBUF 7 |
| 16 | #define SO_RCVBUF 8 | 16 | #define SO_RCVBUF 8 |
| 17 | #define SO_SNDBUFFORCE 32 | ||
| 18 | #define SO_RCVBUFFORCE 33 | ||
| 17 | #define SO_KEEPALIVE 9 | 19 | #define SO_KEEPALIVE 9 |
| 18 | #define SO_OOBINLINE 10 | 20 | #define SO_OOBINLINE 10 |
| 19 | #define SO_NO_CHECK 11 | 21 | #define SO_NO_CHECK 11 |
diff --git a/include/asm-xtensa/socket.h b/include/asm-xtensa/socket.h index daccd05a14..00f83f3a6d 100644 --- a/include/asm-xtensa/socket.h +++ b/include/asm-xtensa/socket.h | |||
| @@ -24,6 +24,8 @@ | |||
| 24 | #define SO_BROADCAST 6 | 24 | #define SO_BROADCAST 6 |
| 25 | #define SO_SNDBUF 7 | 25 | #define SO_SNDBUF 7 |
| 26 | #define SO_RCVBUF 8 | 26 | #define SO_RCVBUF 8 |
| 27 | #define SO_SNDBUFFORCE 32 | ||
| 28 | #define SO_RCVBUFFORCE 33 | ||
| 27 | #define SO_KEEPALIVE 9 | 29 | #define SO_KEEPALIVE 9 |
| 28 | #define SO_OOBINLINE 10 | 30 | #define SO_OOBINLINE 10 |
| 29 | #define SO_NO_CHECK 11 | 31 | #define SO_NO_CHECK 11 |
diff --git a/net/core/sock.c b/net/core/sock.c index 12f6d9a2a5..51a5e7ddee 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
| @@ -260,7 +260,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
| 260 | 260 | ||
| 261 | if (val > sysctl_wmem_max) | 261 | if (val > sysctl_wmem_max) |
| 262 | val = sysctl_wmem_max; | 262 | val = sysctl_wmem_max; |
| 263 | 263 | set_sndbuf: | |
| 264 | sk->sk_userlocks |= SOCK_SNDBUF_LOCK; | 264 | sk->sk_userlocks |= SOCK_SNDBUF_LOCK; |
| 265 | if ((val * 2) < SOCK_MIN_SNDBUF) | 265 | if ((val * 2) < SOCK_MIN_SNDBUF) |
| 266 | sk->sk_sndbuf = SOCK_MIN_SNDBUF; | 266 | sk->sk_sndbuf = SOCK_MIN_SNDBUF; |
| @@ -274,6 +274,13 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
| 274 | sk->sk_write_space(sk); | 274 | sk->sk_write_space(sk); |
| 275 | break; | 275 | break; |
| 276 | 276 | ||
| 277 | case SO_SNDBUFFORCE: | ||
| 278 | if (!capable(CAP_NET_ADMIN)) { | ||
| 279 | ret = -EPERM; | ||
| 280 | break; | ||
| 281 | } | ||
| 282 | goto set_sndbuf; | ||
| 283 | |||
| 277 | case SO_RCVBUF: | 284 | case SO_RCVBUF: |
| 278 | /* Don't error on this BSD doesn't and if you think | 285 | /* Don't error on this BSD doesn't and if you think |
| 279 | about it this is right. Otherwise apps have to | 286 | about it this is right. Otherwise apps have to |
| @@ -282,7 +289,7 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
| 282 | 289 | ||
| 283 | if (val > sysctl_rmem_max) | 290 | if (val > sysctl_rmem_max) |
| 284 | val = sysctl_rmem_max; | 291 | val = sysctl_rmem_max; |
| 285 | 292 | set_rcvbuf: | |
| 286 | sk->sk_userlocks |= SOCK_RCVBUF_LOCK; | 293 | sk->sk_userlocks |= SOCK_RCVBUF_LOCK; |
| 287 | /* FIXME: is this lower bound the right one? */ | 294 | /* FIXME: is this lower bound the right one? */ |
| 288 | if ((val * 2) < SOCK_MIN_RCVBUF) | 295 | if ((val * 2) < SOCK_MIN_RCVBUF) |
| @@ -291,6 +298,13 @@ int sock_setsockopt(struct socket *sock, int level, int optname, | |||
| 291 | sk->sk_rcvbuf = val * 2; | 298 | sk->sk_rcvbuf = val * 2; |
| 292 | break; | 299 | break; |
| 293 | 300 | ||
| 301 | case SO_RCVBUFFORCE: | ||
| 302 | if (!capable(CAP_NET_ADMIN)) { | ||
| 303 | ret = -EPERM; | ||
| 304 | break; | ||
| 305 | } | ||
| 306 | goto set_rcvbuf; | ||
| 307 | |||
| 294 | case SO_KEEPALIVE: | 308 | case SO_KEEPALIVE: |
| 295 | #ifdef CONFIG_INET | 309 | #ifdef CONFIG_INET |
| 296 | if (sk->sk_protocol == IPPROTO_TCP) | 310 | if (sk->sk_protocol == IPPROTO_TCP) |
