OpenVZ Forum


Home » Mailing lists » Devel » [PATCH] Cleanup the IPv6 addresses printing in /proc files
[PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22221] Tue, 23 October 2007 16:37 Go to next message
Pavel Emelianov is currently offline  Pavel Emelianov
Messages: 1149
Registered: September 2006
Senior Member
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.

Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

---

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 94bc996..5d199ae 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -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], \
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c
index ca24ef1..c3a1939 100644
--- a/net/ipv6/raw.c
+++ b/net/ipv6/raw.c
@@ -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),
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 737b755..0041be3 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -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);
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index caebad6..bcc5f8e 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -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),
Re: [PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22238 is a reply to message #22221] Wed, 24 October 2007 03:43 Go to previous messageGo to next message
davem is currently offline  davem
Messages: 463
Registered: February 2006
Senior Member
From: Pavel Emelyanov <xemul@openvz.org>
Date: Tue, 23 Oct 2007 20:37:22 +0400

> 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.
> 
> Signed-off-by: Pavel Emelyanov <xemul@openvz.org>

Applied, thanks.
Re: [PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22239 is a reply to message #22221] Wed, 24 October 2007 04:10 Go to previous messageGo to next message
davem is currently offline  davem
Messages: 463
Registered: February 2006
Senior Member
From: Joe Perches <joe@perches.com>
Date: Tue, 23 Oct 2007 21:04:01 -0700

> On Tue, 2007-10-23 at 20:43 -0700, David Miller wrote:
> > From: Pavel Emelyanov <xemul@openvz.org>
> > Date: Tue, 23 Oct 2007 20:37:22 +0400
> > > 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.
> > > Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
> > 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.
Re: [PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22244 is a reply to message #22221] Wed, 24 October 2007 04:18 Go to previous message
davem is currently offline  davem
Messages: 463
Registered: February 2006
Senior Member
From: Joe Perches <joe@perches.com>
Date: Tue, 23 Oct 2007 21:15:36 -0700

> On Tue, 2007-10-23 at 21:10 -0700, David Miller wrote:
> > 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.
Re: [PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22251 is a reply to message #22239] Wed, 24 October 2007 04:15 Go to previous message
Joe Perches is currently offline  Joe Perches
Messages: 3
Registered: August 2007
Junior Member
On Tue, 2007-10-23 at 21:10 -0700, David Miller wrote:
> We'll break things if we change it.

Maybe, but definitely the macro names should
reflect this brokenness.
Re: [PATCH] Cleanup the IPv6 addresses printing in /proc files [message #22252 is a reply to message #22238] Wed, 24 October 2007 04:04 Go to previous message
Joe Perches is currently offline  Joe Perches
Messages: 3
Registered: August 2007
Junior Member
On Tue, 2007-10-23 at 20:43 -0700, David Miller wrote:
> From: Pavel Emelyanov <xemul@openvz.org>
> Date: Tue, 23 Oct 2007 20:37:22 +0400
> > 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.
> > Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
> Applied, thanks.

Why aren't these addresses converted with ntohl?
Previous Topic: [PATCH] Explicitly call fib_get_table() in fib_frontend.c
Next Topic: [PATCH] Move cgroups destroy() callbacks to cgroup_diput()
Goto Forum:
  


Current Time: Mon Jun 17 13:51:58 GMT 2024

Total time taken to generate the page: 0.03924 seconds