[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <49E75A18.7020002@hp.com>
Date: Thu, 16 Apr 2009 12:17:28 -0400
From: Brian Haley <brian.haley@...com>
To: Stephen Hemminger <shemminger@...tta.com>
CC: David Miller <davem@...emloft.net>, ysugiura@...aclelinux.com,
netdev@...r.kernel.org
Subject: Re: [IPV6]: ROUTE:read ifname in rt6_info_route()
Stephen Hemminger wrote:
> On Thu, 16 Apr 2009 04:38:00 -0700 (PDT)
> David Miller <davem@...emloft.net> wrote:
>
>> From: Yuta sugiura <ysugiura@...aclelinux.com>
>> Date: Thu, 16 Apr 2009 20:05:05 +0900
>>
>>> Hi,
>>> I have a suggestion about /proc/net/IPv6_route format.
>>> In rt6_info_route(), interface name is treated as a maximum 8
>>> characters.
>>> But the type of (struct rt6_inf *)->u.dst.dev->name is char[IFNAMESIZ=
>>> 16]
>>> so, I think that it should change "%8s" to "%16s".
>> Isn't there a way to pass the field length as a paramenter
>> to formatting functions? Then we can just pass in
>> IFNAMESIZE as that parameter.
>
> seq_printf(m, " %08x %08x %08x %08x %*s\n"
> rt->rt6i_metric, atomic_read(&rt->u.dst.__refcnt),
> rt->u.dst.__use, rt->rt6i_flags,
> IFNAMESIZE,
> rt->rt6i_dev ? rt->rt6i_dev->name : "")
Does the kernel actually truncate an interface name more than 8 chars long in
the original version? I did a quick test in userspace and found that
printf("%*s\n", 1, "foo");
prints:
foo
I think the width specifier is used for *minimum* width, not maximum.
-Brian
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists