Review for fix to Bug 7078386
Michael McMahon
michael.x.mcmahon at oracle.com
Fri Dec 16 01:01:13 PST 2011
Brandon,
The fix looks good to me. Thanks for contributing it.
- Michael.
On 15/12/11 23:14, Brandon Passanisi wrote:
> Hello net-dev. I was wondering if somebody could review the proposed
> fix for the following bug:
>
> Bug URL: http://monaco.sfbay.sun.com/detail.jsf?cr=7078386
> Webrev : http://cr.openjdk.java.net/~michaelm/7078386/webrev.1/
>
>
> The bug is caused by an incorrect format string used in the fscanf
> call within enumIPv6Interfaces of
> jdk/src/solaris/native/java/net/NetworkInterface.c, which specifies a
> two-digit hex number for the network interface index value. It has
> been shown that network interface index values can be more than 255,
> thus requiring the need to obtain more than two digits. I eventually
> searched through the following linux kernel source file:
>
> linux-source-2.6.32/net/ipv6/addrconf.c
>
> ... and it appears the interface index value is being written and an
> integer within the function inet6_fill_ifinfo in the following block
> of code starting on line 3785:
>
> if (dev->ifindex != dev->iflink)
> NLA_PUT_U32(skb, IFLA_LINK, dev->iflink);
>
> iflink is defined in linux-source-2.6.32/include/linux/netdevice.h as
> an int on line 742:
>
> /* Interface index. Unique device identifier */
> int ifindex;
> int iflink;
>
> Because of this and because an integer is 32 bits, it appears that
> updating the format string to use %08x for the interface index value
> seems most correct.
>
> I have tested out this fix successfully in the following ways:
>
> 1. I ran the IBM-supplied test programs tapadd and Scope to create
> over 255 address in order to test an interface index value of at
> least three digits. (These programs will be added to the bug
> report if not present at this time.) The tapadd program is a C
> test requiring root access that uses tun/tap to create over 255
> interfaces. Scope is a java program that does a
> NetworkInterface.getByName() on a known interface with an index
> over 255.
>
> 2. I modified the Scope program to additionally test all created
> interfaces, not just one interface with an index value over 255.
> (The original Scope test program just checks a single interface.)
> This is important to show there aren't regressions.
>
> 3. I created another test program using a script to run 'ip'
> commands to create over 255 interfaces. This script runs in a
> loop using the commands "sudo ip tunnel add..." and "sudo ip -6
> addr add..." to add the interfaces. Then, I used the Scope
> program to verify the created interfaces.
>
> I wasn't able to create a script that would create a really huge
> amount of interfaces because using numbers like 65536 or higher in my
> script caused my Ubuntu linux to hang. So, I'm not quite sure how to
> truly test large interface index values like 65536 or more.
>
> Thanks.
> --
> Oracle <http://www.oracle.com>
> Brandon Passanisi | Principle Member of Technical Staff
>
> Green Oracle <http://www.oracle.com/commitment> Oracle is committed to
> developing practices and products that help protect the environment
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/net-dev/attachments/20111216/8e75c974/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 658 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/net-dev/attachments/20111216/8e75c974/attachment.gif
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 356 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/net-dev/attachments/20111216/8e75c974/attachment-0001.gif
More information about the net-dev
mailing list