diff for duplicates of <20181124022035.17519-9-deepa.kernel@gmail.com> diff --git a/a/1.txt b/N1/1.txt index 9b16bd3..c6fd4d8 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -42,14 +42,14 @@ index 352e3dc0b3d9..8b9f6f7f8087 100644 #if !defined(__KERNEL__) - #if __BITS_PER_LONG == 64 + #if __BITS_PER_LONG = 64 #define SO_TIMESTAMP SO_TIMESTAMP_OLD #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD +#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #else - #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) - #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) -+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) + #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) + #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) ++#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) #endif -#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD @@ -69,14 +69,14 @@ index d1752e3f1248..9fc80c5d54e4 100644 #if !defined(__KERNEL__) - #if __BITS_PER_LONG == 64 + #if __BITS_PER_LONG = 64 #define SO_TIMESTAMP SO_TIMESTAMP_OLD #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD +#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #else - #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) - #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) -+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) + #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) + #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) ++#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) #endif -#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD @@ -96,14 +96,14 @@ index 0a45b668abd1..82f1c9447d6b 100644 #if !defined(__KERNEL__) - #if __BITS_PER_LONG == 64 + #if __BITS_PER_LONG = 64 #define SO_TIMESTAMP SO_TIMESTAMP_OLD #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD +#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #else - #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) - #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) -+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) + #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) + #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) ++#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) #endif -#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD @@ -127,14 +127,14 @@ index dc8527cae5a7..5bdbb25c28d2 100644 #if !defined(__KERNEL__) - #if __BITS_PER_LONG == 64 + #if __BITS_PER_LONG = 64 #define SO_TIMESTAMP SO_TIMESTAMP_OLD #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD +#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #else - #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) - #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) -+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) + #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) + #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) ++#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) #endif -#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD @@ -157,7 +157,7 @@ index 8b571e9b9f76..372fd77698a2 100644 +extern void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timestamping_internal *tss); + /* The __sys_...msg variants allow MSG_CMSG_COMPAT iff - * forbid_cmsg_compat==false + * forbid_cmsg_compat=false */ diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h index 0b0fae6b57a9..2fdfb6126246 100644 @@ -177,9 +177,9 @@ index 0b0fae6b57a9..2fdfb6126246 100644 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD +#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD #else - #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) - #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) -+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) + #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW) + #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW) ++#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW) #endif -#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD @@ -257,7 +257,7 @@ index 7b485dfaa400..29cc1f0f0071 100644 +static int setsockopt_timestamping(struct sock *sk, int type, int val) +{ -+ if (type == SO_TIMESTAMPING_NEW) ++ if (type = SO_TIMESTAMPING_NEW) + sock_set_flag(sk, SOCK_TSTAMP_NEW); + + if (val & ~SOF_TIMESTAMPING_MASK) @@ -265,8 +265,8 @@ index 7b485dfaa400..29cc1f0f0071 100644 + + if (val & SOF_TIMESTAMPING_OPT_ID && + !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) { -+ if (sk->sk_protocol == IPPROTO_TCP && -+ sk->sk_type == SOCK_STREAM) { ++ if (sk->sk_protocol = IPPROTO_TCP && ++ sk->sk_type = SOCK_STREAM) { + if ((1 << sk->sk_state) & + (TCPF_CLOSE | TCPF_LISTEN)) + return -EINVAL; @@ -285,7 +285,7 @@ index 7b485dfaa400..29cc1f0f0071 100644 + sock_enable_timestamp(sk, + SOCK_TIMESTAMPING_RX_SOFTWARE); + } else { -+ if (type == SO_TIMESTAMPING_NEW) ++ if (type = SO_TIMESTAMPING_NEW) + sock_reset_flag(sk, SOCK_TSTAMP_NEW); + sock_disable_timestamp(sk, + (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE)); @@ -308,8 +308,8 @@ index 7b485dfaa400..29cc1f0f0071 100644 - - if (val & SOF_TIMESTAMPING_OPT_ID && - !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) { -- if (sk->sk_protocol == IPPROTO_TCP && -- sk->sk_type == SOCK_STREAM) { +- if (sk->sk_protocol = IPPROTO_TCP && +- sk->sk_type = SOCK_STREAM) { - if ((1 << sk->sk_state) & - (TCPF_CLOSE | TCPF_LISTEN)) { - ret = -EINVAL; @@ -447,8 +447,7 @@ index 9abeb6bc9cfe..14fa6febfc3d 100644 - int empty = 1, false_tstamp = 0; + struct scm_timestamping_internal tss; + int empty = 1, false_tstamp = 0, new_tstamp = 0; - struct skb_shared_hwtstamps *shhwtstamps = - skb_hwtstamps(skb); + struct skb_shared_hwtstamps *shhwtstamps skb_hwtstamps(skb); @@ -756,20 +757,23 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk, diff --git a/a/content_digest b/N1/content_digest index 355a226..5fd2855 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,7 +1,7 @@ "ref\020181124022035.17519-1-deepa.kernel@gmail.com\0" "From\0Deepa Dinamani <deepa.kernel@gmail.com>\0" "Subject\0[PATCH 8/8] socket: Add SO_TIMESTAMPING_NEW\0" - "Date\0Fri, 23 Nov 2018 18:20:35 -0800\0" + "Date\0Sat, 24 Nov 2018 02:20:35 +0000\0" "To\0davem@davemloft.net" " linux-kernel@vger.kernel.org\0" "Cc\0netdev@vger.kernel.org" @@ -66,14 +66,14 @@ " \n" " #if !defined(__KERNEL__)\n" " \n" - " #if __BITS_PER_LONG == 64\n" + " #if __BITS_PER_LONG = 64\n" " #define SO_TIMESTAMP\t\tSO_TIMESTAMP_OLD\n" " #define SO_TIMESTAMPNS\t\tSO_TIMESTAMPNS_OLD\n" "+#define SO_TIMESTAMPING\t\tSO_TIMESTAMPING_OLD\n" " #else\n" - " #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" - " #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" - "+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" + " #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" + " #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" + "+#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" " #endif\n" " \n" "-#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD\n" @@ -93,14 +93,14 @@ " \n" " #if !defined(__KERNEL__)\n" " \n" - " #if __BITS_PER_LONG == 64\n" + " #if __BITS_PER_LONG = 64\n" " #define SO_TIMESTAMP\t\tSO_TIMESTAMP_OLD\n" " #define SO_TIMESTAMPNS\t\tSO_TIMESTAMPNS_OLD\n" "+#define SO_TIMESTAMPING\t\tSO_TIMESTAMPING_OLD\n" " #else\n" - " #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" - " #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" - "+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" + " #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" + " #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" + "+#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" " #endif\n" " \n" "-#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD\n" @@ -120,14 +120,14 @@ " \n" " #if !defined(__KERNEL__)\n" " \n" - " #if __BITS_PER_LONG == 64\n" + " #if __BITS_PER_LONG = 64\n" " #define SO_TIMESTAMP\t\tSO_TIMESTAMP_OLD\n" " #define SO_TIMESTAMPNS\t\tSO_TIMESTAMPNS_OLD\n" "+#define SO_TIMESTAMPING\t\tSO_TIMESTAMPING_OLD\n" " #else\n" - " #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" - " #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" - "+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" + " #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" + " #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" + "+#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" " #endif\n" " \n" "-#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD\n" @@ -151,14 +151,14 @@ " \n" " #if !defined(__KERNEL__)\n" " \n" - " #if __BITS_PER_LONG == 64\n" + " #if __BITS_PER_LONG = 64\n" " #define SO_TIMESTAMP\t\tSO_TIMESTAMP_OLD\n" " #define SO_TIMESTAMPNS\t\tSO_TIMESTAMPNS_OLD\n" "+#define SO_TIMESTAMPING\t\tSO_TIMESTAMPING_OLD\n" " #else\n" - " #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" - " #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" - "+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" + " #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" + " #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" + "+#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" " #endif\n" " \n" "-#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD\n" @@ -181,7 +181,7 @@ "+extern void put_cmsg_scm_timestamping(struct msghdr *msg, struct scm_timestamping_internal *tss);\n" "+\n" " /* The __sys_...msg variants allow MSG_CMSG_COMPAT iff\n" - " * forbid_cmsg_compat==false\n" + " * forbid_cmsg_compat=false\n" " */\n" "diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h\n" "index 0b0fae6b57a9..2fdfb6126246 100644\n" @@ -201,9 +201,9 @@ " #define SO_TIMESTAMPNS\t\tSO_TIMESTAMPNS_OLD\n" "+#define SO_TIMESTAMPING\t\tSO_TIMESTAMPING_OLD\n" " #else\n" - " #define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" - " #define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" - "+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" + " #define SO_TIMESTAMP (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)\n" + " #define SO_TIMESTAMPNS (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)\n" + "+#define SO_TIMESTAMPING (sizeof(time_t) = sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)\n" " #endif\n" " \n" "-#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD\n" @@ -281,7 +281,7 @@ " \n" "+static int setsockopt_timestamping(struct sock *sk, int type, int val)\n" "+{\n" - "+\tif (type == SO_TIMESTAMPING_NEW)\n" + "+\tif (type = SO_TIMESTAMPING_NEW)\n" "+\t\tsock_set_flag(sk, SOCK_TSTAMP_NEW);\n" "+\n" "+\tif (val & ~SOF_TIMESTAMPING_MASK)\n" @@ -289,8 +289,8 @@ "+\n" "+\tif (val & SOF_TIMESTAMPING_OPT_ID &&\n" "+\t !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) {\n" - "+\t\tif (sk->sk_protocol == IPPROTO_TCP &&\n" - "+\t\t sk->sk_type == SOCK_STREAM) {\n" + "+\t\tif (sk->sk_protocol = IPPROTO_TCP &&\n" + "+\t\t sk->sk_type = SOCK_STREAM) {\n" "+\t\t\tif ((1 << sk->sk_state) &\n" "+\t\t\t (TCPF_CLOSE | TCPF_LISTEN))\n" "+\t\t\t\treturn -EINVAL;\n" @@ -309,7 +309,7 @@ "+\t\tsock_enable_timestamp(sk,\n" "+\t\t\t\t SOCK_TIMESTAMPING_RX_SOFTWARE);\n" "+\t} else {\n" - "+\t\tif (type == SO_TIMESTAMPING_NEW)\n" + "+\t\tif (type = SO_TIMESTAMPING_NEW)\n" "+\t\t\tsock_reset_flag(sk, SOCK_TSTAMP_NEW);\n" "+\t\tsock_disable_timestamp(sk,\n" "+\t\t\t\t (1UL << SOCK_TIMESTAMPING_RX_SOFTWARE));\n" @@ -332,8 +332,8 @@ "-\n" "-\t\tif (val & SOF_TIMESTAMPING_OPT_ID &&\n" "-\t\t !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) {\n" - "-\t\t\tif (sk->sk_protocol == IPPROTO_TCP &&\n" - "-\t\t\t sk->sk_type == SOCK_STREAM) {\n" + "-\t\t\tif (sk->sk_protocol = IPPROTO_TCP &&\n" + "-\t\t\t sk->sk_type = SOCK_STREAM) {\n" "-\t\t\t\tif ((1 << sk->sk_state) &\n" "-\t\t\t\t (TCPF_CLOSE | TCPF_LISTEN)) {\n" "-\t\t\t\t\tret = -EINVAL;\n" @@ -471,8 +471,7 @@ "-\tint empty = 1, false_tstamp = 0;\n" "+\tstruct scm_timestamping_internal tss;\n" "+\tint empty = 1, false_tstamp = 0, new_tstamp = 0;\n" - " \tstruct skb_shared_hwtstamps *shhwtstamps =\n" - " \t\tskb_hwtstamps(skb);\n" + " \tstruct skb_shared_hwtstamps *shhwtstamps \t\tskb_hwtstamps(skb);\n" " \n" "@@ -756,20 +757,23 @@ void __sock_recv_timestamp(struct msghdr *msg, struct sock *sk,\n" " \n" @@ -505,4 +504,4 @@ "-- \n" 2.17.1 -9a2a9d30759bb15dc4ab66028e62a630ed000d3ec497f7b91eb3f7a6bf369289 +e1ff4f095be2edc3cc222e2175c63895b3ec8945aa57fad2894ccb0bf3eed020
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.