aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/sock_diag.h
diff options
context:
space:
mode:
authorYafang Shao <laoar.shao@gmail.com>2018-04-22 21:50:04 +0800
committerDavid S. Miller <davem@davemloft.net>2018-04-23 11:56:44 -0400
commitc6849a3ac17e336811f1d5bba991d2a9bdc47af1 (patch)
treeb7348427ce20d56554deaabba280b190f46d9cb1 /include/linux/sock_diag.h
parentMerge branch 'fib-rules-extack-support' (diff)
downloadlinux-dev-c6849a3ac17e336811f1d5bba991d2a9bdc47af1.tar.xz
linux-dev-c6849a3ac17e336811f1d5bba991d2a9bdc47af1.zip
net: init sk_cookie for inet socket
With sk_cookie we can identify a socket, that is very helpful for traceing and statistic, i.e. tcp tracepiont and ebpf. So we'd better init it by default for inet socket. When using it, we just need call atomic64_read(&sk->sk_cookie). Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/sock_diag.h')
-rw-r--r--include/linux/sock_diag.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/sock_diag.h b/include/linux/sock_diag.h
index 15fe980a27ea..5c916e6dff36 100644
--- a/include/linux/sock_diag.h
+++ b/include/linux/sock_diag.h
@@ -25,6 +25,15 @@ void sock_diag_unregister(const struct sock_diag_handler *h);
void sock_diag_register_inet_compat(int (*fn)(struct sk_buff *skb, struct nlmsghdr *nlh));
void sock_diag_unregister_inet_compat(int (*fn)(struct sk_buff *skb, struct nlmsghdr *nlh));
+static inline
+void sock_init_cookie(struct sock *sk)
+{
+ u64 res;
+
+ res = atomic64_inc_return(&sock_net(sk)->cookie_gen);
+ atomic64_set(&sk->sk_cookie, res);
+}
+
u64 sock_gen_cookie(struct sock *sk);
int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie);
void sock_diag_save_cookie(struct sock *sk, __u32 *cookie);