]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
net: ipv6: Unify {raw,udp}6_sock_seq_show.
authorLorenzo Colitti <lorenzo@google.com>
Fri, 31 May 2013 15:05:48 +0000 (15:05 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Jun 2013 19:56:14 +0000 (12:56 -0700)
udp6_sock_seq_show and raw6_sock_seq_show are identical, except
the UDP version displays ports and the raw version displays the
protocol. Refactor most of the code in these two functions into
a new common ip6_dgram_sock_seq_show function, in preparation
for using it to display ICMPv6 sockets as well.

Also reduce the indentation in parts of include/net/transp_v6.h
to improve readability.

Compiles and displays reasonable results with CONFIG_IPV6={n,m,y}

Signed-off-by: Lorenzo Colitti <lorenzo@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/transp_v6.h
net/ipv6/datagram.c
net/ipv6/raw.c
net/ipv6/udp.c

index 2d9d0e3115b9284a27adfe1bf44dcea9a5e37271..6dddc08f27c9766d879a06b214ff4609fce38c1d 100644 (file)
@@ -49,6 +49,12 @@ extern int           ip6_datagram_send_ctl(struct net *net,
                                              int *hlimit, int *tclass,
                                              int *dontfrag);
 
+extern void            ip6_dgram_sock_seq_show(struct seq_file *seq,
+                                               struct sock *sp,
+                                               __u16 srcp,
+                                               __u16 destp,
+                                               int bucket);
+
 #define                LOOPBACK4_IPV6          cpu_to_be32(0x7f000006)
 
 /*
@@ -58,4 +64,11 @@ extern const struct inet_connection_sock_af_ops ipv4_specific;
 
 extern void inet6_destroy_sock(struct sock *sk);
 
+#define IPV6_SEQ_DGRAM_HEADER \
+                          "  sl  "                                     \
+                          "local_address                         "     \
+                          "remote_address                        "     \
+                          "st tx_queue rx_queue tr tm->when retrnsmt"  \
+                          "   uid  timeout inode ref pointer drops\n"
+
 #endif
index 4b56cbbc789062d89c5a708386a03e5a8ded8bc6..197e6f4a2b7499c67440b66e04d646d631caefa5 100644 (file)
@@ -879,3 +879,30 @@ exit_f:
        return err;
 }
 EXPORT_SYMBOL_GPL(ip6_datagram_send_ctl);
+
+void ip6_dgram_sock_seq_show(struct seq_file *seq, struct sock *sp,
+                            __u16 srcp, __u16 destp, int bucket)
+{
+       struct ipv6_pinfo *np = inet6_sk(sp);
+       const struct in6_addr *dest, *src;
+
+       dest  = &np->daddr;
+       src   = &np->rcv_saddr;
+       seq_printf(seq,
+                  "%5d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
+                  "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %d\n",
+                  bucket,
+                  src->s6_addr32[0], src->s6_addr32[1],
+                  src->s6_addr32[2], src->s6_addr32[3], srcp,
+                  dest->s6_addr32[0], dest->s6_addr32[1],
+                  dest->s6_addr32[2], dest->s6_addr32[3], destp,
+                  sp->sk_state,
+                  sk_wmem_alloc_get(sp),
+                  sk_rmem_alloc_get(sp),
+                  0, 0L, 0,
+                  from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
+                  0,
+                  sock_i_ino(sp),
+                  atomic_read(&sp->sk_refcnt), sp,
+                  atomic_read(&sp->sk_drops));
+}
index 4f8886aa8429b3e8b10656c4b85448ed83d24f36..c45f7a5c36e96f98487ca194c5f08e5d0f931852 100644 (file)
@@ -1227,45 +1227,16 @@ struct proto rawv6_prot = {
 };
 
 #ifdef CONFIG_PROC_FS
-static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
-{
-       struct ipv6_pinfo *np = inet6_sk(sp);
-       const struct in6_addr *dest, *src;
-       __u16 destp, srcp;
-
-       dest  = &np->daddr;
-       src   = &np->rcv_saddr;
-       destp = 0;
-       srcp  = inet_sk(sp)->inet_num;
-       seq_printf(seq,
-                  "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
-                  "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %d\n",
-                  i,
-                  src->s6_addr32[0], src->s6_addr32[1],
-                  src->s6_addr32[2], src->s6_addr32[3], srcp,
-                  dest->s6_addr32[0], dest->s6_addr32[1],
-                  dest->s6_addr32[2], dest->s6_addr32[3], destp,
-                  sp->sk_state,
-                  sk_wmem_alloc_get(sp),
-                  sk_rmem_alloc_get(sp),
-                  0, 0L, 0,
-                  from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
-                  0,
-                  sock_i_ino(sp),
-                  atomic_read(&sp->sk_refcnt), sp, atomic_read(&sp->sk_drops));
-}
-
 static int raw6_seq_show(struct seq_file *seq, void *v)
 {
-       if (v == SEQ_START_TOKEN)
-               seq_printf(seq,
-                          "  sl  "
-                          "local_address                         "
-                          "remote_address                        "
-                          "st tx_queue rx_queue tr tm->when retrnsmt"
-                          "   uid  timeout inode ref pointer drops\n");
-       else
-               raw6_sock_seq_show(seq, v, raw_seq_private(seq)->bucket);
+       if (v == SEQ_START_TOKEN) {
+               seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
+       } else {
+               struct sock *sp = v;
+               __u16 srcp  = inet_sk(sp)->inet_num;
+               ip6_dgram_sock_seq_show(seq, v, srcp, 0,
+                                       raw_seq_private(seq)->bucket);
+       }
        return 0;
 }
 
index 42923b14dfa618ce83ba969c126611fe2ad4a828..b5808539cd5c50fd2d2cff7d99ee8acd0cde94e5 100644 (file)
@@ -1359,48 +1359,17 @@ static const struct inet6_protocol udpv6_protocol = {
 
 /* ------------------------------------------------------------------------ */
 #ifdef CONFIG_PROC_FS
-
-static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket)
-{
-       struct inet_sock *inet = inet_sk(sp);
-       struct ipv6_pinfo *np = inet6_sk(sp);
-       const struct in6_addr *dest, *src;
-       __u16 destp, srcp;
-
-       dest  = &np->daddr;
-       src   = &np->rcv_saddr;
-       destp = ntohs(inet->inet_dport);
-       srcp  = ntohs(inet->inet_sport);
-       seq_printf(seq,
-                  "%5d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
-                  "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %pK %d\n",
-                  bucket,
-                  src->s6_addr32[0], src->s6_addr32[1],
-                  src->s6_addr32[2], src->s6_addr32[3], srcp,
-                  dest->s6_addr32[0], dest->s6_addr32[1],
-                  dest->s6_addr32[2], dest->s6_addr32[3], destp,
-                  sp->sk_state,
-                  sk_wmem_alloc_get(sp),
-                  sk_rmem_alloc_get(sp),
-                  0, 0L, 0,
-                  from_kuid_munged(seq_user_ns(seq), sock_i_uid(sp)),
-                  0,
-                  sock_i_ino(sp),
-                  atomic_read(&sp->sk_refcnt), sp,
-                  atomic_read(&sp->sk_drops));
-}
-
 int udp6_seq_show(struct seq_file *seq, void *v)
 {
-       if (v == SEQ_START_TOKEN)
-               seq_printf(seq,
-                          "  sl  "
-                          "local_address                         "
-                          "remote_address                        "
-                          "st tx_queue rx_queue tr tm->when retrnsmt"
-                          "   uid  timeout inode ref pointer drops\n");
-       else
-               udp6_sock_seq_show(seq, v, ((struct udp_iter_state *)seq->private)->bucket);
+       if (v == SEQ_START_TOKEN) {
+               seq_puts(seq, IPV6_SEQ_DGRAM_HEADER);
+       } else {
+               int bucket = ((struct udp_iter_state *)seq->private)->bucket;
+               struct inet_sock *inet = inet_sk(v);
+               __u16 srcp = ntohs(inet->inet_sport);
+               __u16 destp = ntohs(inet->inet_dport);
+               ip6_dgram_sock_seq_show(seq, v, srcp, destp, bucket);
+       }
        return 0;
 }