BACKPORT [FROMLIST] New getsockopt option to get socket cookie

Cherry-pick from linux net-next branch commit
http://patchwork.ozlabs.org/patch/747590/

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/

Test: Unit test added in kernel/tests

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>
This commit is contained in:
Chenbo Feng
2017-04-05 19:00:55 -07:00
parent a5d371cda6
commit 3fe100ef0c
14 changed files with 34 additions and 0 deletions
+2
View File
@@ -97,4 +97,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _UAPI_ASM_SOCKET_H */
+2
View File
@@ -90,4 +90,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _UAPI__ASM_AVR32_SOCKET_H */
+2
View File
@@ -90,5 +90,7 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_SOCKET_H */
+2
View File
@@ -99,4 +99,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_IA64_SOCKET_H */
+2
View File
@@ -90,4 +90,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_M32R_SOCKET_H */
+2
View File
@@ -108,4 +108,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _UAPI_ASM_SOCKET_H */
+2
View File
@@ -90,4 +90,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_SOCKET_H */
+2
View File
@@ -89,4 +89,6 @@
#define SO_CNX_ADVICE 0x402E
#define SO_COOKIE 0x4032
#endif /* _UAPI_ASM_SOCKET_H */
+2
View File
@@ -97,4 +97,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_POWERPC_SOCKET_H */
+2
View File
@@ -96,4 +96,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _ASM_SOCKET_H */
+2
View File
@@ -86,6 +86,8 @@
#define SO_CNX_ADVICE 0x0037
#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
+2
View File
@@ -101,4 +101,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* _XTENSA_SOCKET_H */
+2
View File
@@ -92,4 +92,6 @@
#define SO_CNX_ADVICE 53
#define SO_COOKIE 57
#endif /* __ASM_GENERIC_SOCKET_H */
+8
View File
@@ -1034,6 +1034,7 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
union {
int val;
u64 val64;
struct linger ling;
struct timeval tm;
} v;
@@ -1264,6 +1265,13 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
v.val = sk->sk_incoming_cpu;
break;
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).