New getsockopt option to get socket cookie
authorChenbo Feng <fengc@google.com>
Thu, 6 Apr 2017 02:00:55 +0000 (19:00 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 8 Apr 2017 15:07:01 +0000 (08:07 -0700)
Introduce a new getsockopt operation to retrieve the socket cookie
for a specific socket based on the socket fd.  It returns a unique
non-decreasing cookie for each socket.
Tested: https://android-review.googlesource.com/#/c/358163/

Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Chenbo Feng <fengc@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
14 files changed:
arch/alpha/include/uapi/asm/socket.h
arch/avr32/include/uapi/asm/socket.h
arch/frv/include/uapi/asm/socket.h
arch/ia64/include/uapi/asm/socket.h
arch/m32r/include/uapi/asm/socket.h
arch/mips/include/uapi/asm/socket.h
arch/mn10300/include/uapi/asm/socket.h
arch/parisc/include/uapi/asm/socket.h
arch/powerpc/include/uapi/asm/socket.h
arch/s390/include/uapi/asm/socket.h
arch/sparc/include/uapi/asm/socket.h
arch/xtensa/include/uapi/asm/socket.h
include/uapi/asm-generic/socket.h
net/core/sock.c

index 1bb8cac61a284d7a9ac2150d079170f09044a692..148d7a32754e343397e84bb077afee8b82ecf3c6 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _UAPI_ASM_SOCKET_H */
index f824eeb0f2e4c6d8ba639765f1d5394988ffd81e..2434d08ad8d6be3f3e0151bd081a4eed4c4978bd 100644 (file)
@@ -96,4 +96,6 @@
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _UAPI__ASM_AVR32_SOCKET_H */
index a8ad9bebfc47e908d1b2d0b9d5ff4423ce29f631..1ccf45657472a5240ddd815c90de42397effc64d 100644 (file)
@@ -96,5 +96,7 @@
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_SOCKET_H */
 
index 6af3253e420952697bd70518a7a1701bcf016a7d..2c3f4b48042ae34319a2359b69ffd8fe57cedc21 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_IA64_SOCKET_H */
index e98b6bb897c0d06af2018297b97b9780e404e8e8..ae6548d29a1819b4cc75826b881697a753e63a36 100644 (file)
@@ -96,4 +96,6 @@
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_M32R_SOCKET_H */
index ae2b62e39d4dbe7ba7911322404d84b718e27940..3418ec9c1c5016df7c5acd27cdce5e3507ef4175 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _UAPI_ASM_SOCKET_H */
index e4ac1843ee0172436ca682d7669c23d763445045..4526e92301a6768ec714c5d95d501cdfafaf5cfa 100644 (file)
@@ -96,4 +96,6 @@
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_SOCKET_H */
index f754c793e82a417ef5d50142e6a642059a108771..514701840bd93441c54107d57f10411b64576f13 100644 (file)
@@ -95,4 +95,6 @@
 
 #define SO_INCOMING_NAPI_ID    0x4031
 
+#define SO_COOKIE              0x4032
+
 #endif /* _UAPI_ASM_SOCKET_H */
index 5f84af7dcb2e59482419dc8d72b24c61c80d4818..58e2ec0310fc9508b51c39ec6ab00edb7e51c258 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_POWERPC_SOCKET_H */
index 25ac4960e70758afedeb92bbcb546f6121fccf4b..e8e5ecf673fdd864cf9a50a6e7c99512ec446c40 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _ASM_SOCKET_H */
index b05513acd589ba8d763f5da7bdd7bc16a59ac95c..3f4ad19d9ec70c7ab080483fa936219ef9be05f6 100644 (file)
@@ -92,6 +92,8 @@
 
 #define SO_INCOMING_NAPI_ID    0x003a
 
+#define SO_COOKIE              0x003b
+
 /* Security levels - as per NRL IPv6 - don't actually do anything */
 #define SO_SECURITY_AUTHENTICATION             0x5001
 #define SO_SECURITY_ENCRYPTION_TRANSPORT       0x5002
index 786606c81edd07af0b68a3c75079f2d80ba8a7c1..1eb6d2fe70d3483aa191a3f7cf4d3ad3dfe497a9 100644 (file)
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* _XTENSA_SOCKET_H */
index c98a52fb572a4e9ad59410f43931aa81205212ec..2b488565599daf73b8942fe6482890830af94dff 100644 (file)
@@ -98,4 +98,6 @@
 
 #define SO_INCOMING_NAPI_ID    56
 
+#define SO_COOKIE              57
+
 #endif /* __ASM_GENERIC_SOCKET_H */
index 392f9b6f96e26b89751ec97f26d08a52e1c7cf57..a06bb7a2a689b63275994034e47e452c11c4acff 100644 (file)
@@ -1083,6 +1083,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
 
        union {
                int val;
+               u64 val64;
                struct linger ling;
                struct timeval tm;
        } v;
@@ -1340,6 +1341,13 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
                break;
 #endif
 
+       case SO_COOKIE:
+               lv = sizeof(u64);
+               if (len < lv)
+                       return -EINVAL;
+               v.val64 = sock_gen_cookie(sk);
+               break;
+
        default:
                /* We implement the SO_SNDLOWAT etc to not be settable
                 * (1003.1g 7).