Cleanup the IPv6 addresses printing in /proc files
Subsystems (4)
PATCH 1/1 Cleanup the IPv6 addresses printing in /proc files
The /proc/net udp6, tcp6 and raw6 files print the IPs of the connection ends. Make a NIP6Lxxx macros (L stands for "long") for making the printing code look nicer.
---
include/linux/kernel.h +7 -0
@@ -307,6 +307,13 @@ static inline int __attribute__ ((format (printf, 1, 2))) pr_debug(const char *#define NIP6_FMT "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x"#define NIP6_SEQFMT "%04x%04x%04x%04x%04x%04x%04x%04x" +#define NIP6L (addr) \ + ((addr).s6_addr32[0]), \ + ((addr).s6_addr32[1]), \ + ((addr).s6_addr32[2]), \ + ((addr).s6_addr32[3]) +#define NIP6L_FMT "%08X%08X%08X%08X" +#if defined(__LITTLE_ENDIAN)#define HIPQUAD (addr) \ ((unsigned char *)&addr)[3], \
net/ipv6/raw.c +2 -6
@@ -1250,13 +1250,9 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i) destp =0 ; srcp =inet_sk (sp)->num; seq_printf(seq, - "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " + "%4d: " NIP6L_FMT ":%04X " NIP6L_FMT ":%04X " "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p\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, + i, NIP6L(*src), srcp, NIP6L(*dest), destp, sp->sk_state, atomic_read(&sp->sk_wmem_alloc), atomic_read(&sp->sk_rmem_alloc),
net/ipv6/tcp_ipv6.c +7 -20
@@ -1945,15 +1945,10 @@ static void get_openreq6(struct seq_file *seq, ttd =0 ; seq_printf(seq, - "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " + "%4d: " NIP6L_FMT ":%04X " NIP6L_FMT ":%04X " "%02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %p\n", - i, - src->s6_addr32[0], src->s6_addr32[1], - src->s6_addr32[2], src->s6_addr32[3], - ntohs(inet_sk(sk)->sport), - dest->s6_addr32[0], dest->s6_addr32[1], - dest->s6_addr32[2], dest->s6_addr32[3], - ntohs(inet_rsk(req)->rmt_port), + i, NIP6L(*src), ntohs(inet_sk(sk)->sport), + NIP6L(*dest), ntohs(inet_rsk(req)->rmt_port), TCP_SYN_RECV, 0,0, /* could print option size, but that is af dependent. */ 1, /* timers active (only the expire timer) */
@@ -1996,13 +1991,9 @@ static void get_tcp6_sock(struct seq_file *seq, struct sock *sp, int i) } seq_printf(seq, - "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " + "%4d: " NIP6L_FMT ":%04X " NIP6L_FMT ":%04X " "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %u %u %u %u %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, + i, NIP6L(*src), srcp, NIP6L(*dest), destp, sp->sk_state, tp->write_seq-tp->snd_una, (sp->sk_state == TCP_LISTEN) ? sp->sk_ack_backlog : (tp->rcv_nxt - tp->copied_seq),
@@ -2037,13 +2028,9 @@ static void get_timewait6_sock(struct seq_file *seq, srcp =ntohs (tw->tw_sport);seq_printf (seq, -"%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " +"%4d: " NIP6L_FMT ":%04X " NIP6L_FMT ":%04X " "%02X %08X:%08X %02X:%08lX %08X %5d %8d %d %d %p\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, + i,NIP6L (*src), srcp,NIP6L (*dest), destp, tw->tw_substate,0 ,0 ,3 ,jiffies_to_clock_t (ttd),0 ,0 ,0 ,0 ,atomic_read (&tw->tw_refcnt), tw);
net/ipv6/udp.c +2 -6
@@ -919,13 +919,9 @@ static void udp6_sock_seq_show(struct seq_file *seq, struct sock *sp, int bucket destp =ntohs (inet->dport); srcp =ntohs (inet->sport); seq_printf(seq, - "%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X " + "%4d: " NIP6L_FMT ":%04X " NIP6L_FMT ":%04X " "%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p\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, + bucket, NIP6L(*src), srcp, NIP6L(*dest), destp, sp->sk_state, atomic_read(&sp->sk_wmem_alloc), atomic_read(&sp->sk_rmem_alloc),
From: Pavel Emelyanov <[email protected]>
Date: Tue, 23 Oct 2007 20:37:22 +0400
Quoted 5 lines
The
/proc/netudp6, tcp6 and raw6 files print the IPs of the connection ends. Make a NIP6Lxxx macros (L stands for "long") for making the printing code look nicer.Signed-off-by Pavel Emelyanov <[email protected]>
Applied, thanks.
Quoted 7 lines · David Miller
From: Pavel Emelyanov <[email protected]>
Date: Tue, 23 Oct 2007 20:37:22 +0400Quoted 4 lines
The
/proc/netudp6, tcp6 and raw6 files print the IPs of the connection ends. Make a NIP6Lxxx macros (L stands for "long") for making the printing code look nicer.Signed-off-by Pavel Emelyanov <[email protected]>Applied, thanks.
Why aren't these addresses converted with ntohl?
David Miller
maintainerFrom: Joe Perches <[email protected]>
Date: Tue, 23 Oct 2007 21:04:01 -0700
Quoted 10 lines · David Miller
Quoted 7 lines
From: Pavel Emelyanov <[email protected]>
Date: Tue, 23 Oct 2007 20:37:22 +0400Quoted 4 lines
The
/proc/netudp6, tcp6 and raw6 files print the IPs of the connection ends. Make a NIP6Lxxx macros (L stands for "long") for making the printing code look nicer.Signed-off-by Pavel Emelyanov <[email protected]>Applied, thanks.
Why aren't these addresses converted with ntohl?
The reason is immaterial because whatever the kernel is doing now we have to keep doing because applications parsing these /proc files expect things to be how they are.
We'll break things if we change it.
Quoted 1 line · David Miller
We'll break things if we change it.
Maybe, but definitely the macro names should
reflect this brokenness.
David Miller
maintainerFrom: Joe Perches <[email protected]>
Date: Tue, 23 Oct 2007 21:15:36 -0700
Quoted 5 lines · David Miller
Quoted 1 line
We'll break things if we change it.
Maybe, but definitely the macro names should
reflect this brokenness.
That's a good point, we don't want to encourage further use of these things.
Pavel, I'm going to revert this patch for now. It may save some code lines, but it does so at the expense of creating an interface we actually don't want more users of.