John,

linux has both ip_mreq and ip_mreqn structs, but
after better consideration,

I think it's better to *leave this code as is* because
ip_mreq is obsoleted and general direction should be to
use ip_mreqn for all OS that have it but these changes clearly out of
scope of this CR,

-Dmitry

On 2012-09-15 00:06, John Zavgren wrote:
> I agree with all the changes you recommend except the last one... see below.
> ----- Original Message -----
> From: dmitry.samers...@oracle.com
> To: john.zavg...@oracle.com
> Cc: net-dev@openjdk.java.net
> Sent: Friday, September 14, 2012 3:08:57 PM GMT -05:00 US/Canada Eastern
> Subject: Re: Proposed changes for Bug 7193520
> 
> John,
> 
> Changes look good for me.
> Few nits below.
> 
> 
> PlainDatagramSocketImpl.c
> 
> 
> 318  brackets is not necessary anymore
> 
> 1644 whole #ifdef could be removed
>         struct ip_mreqn mreqn;
>      is not necessary anymore,
> 
> 2283 the same
> 
> 2294 #ifdef is not necessary anymore
> ------- This is the original code near line number 2294
> #ifdef __linux__
>                 mname.imr_address.s_addr =
>                     (isOldKernel ? mreqn.imr_address.s_addr : in.s_addr);
> 
> #else
>                 mname.imr_interface.s_addr = in.s_addr;
> #endif
> ---------------
> When Linux is the OS, the structure field name to be set is "imr_address", 
> whereas when other OSes are used, the field name is: imr_interface.
> Am I understanding your suggestion correctly?
> 
> Thanks!
> John
> 
> 
> -Dmitry
> 
> 
> 
> On 2012-09-14 22:22, John Zavgren wrote:
>> Greetings:
>>
>>
>> This bug (7193520) was filed because there are obsolete checks in the 
>> openJDK native code that implements datagram sockets, e.g.,
>> src/solaris/native/java/net/PlainDatagramSocketImpl.c
>> and it's Java counterpart:
>> src/share/classes/java/net/AbstractPlainDatagramSocketImpl.java
>>
>> The native code (PlainDatagramSocketImpl.c and "friends") runs real time 
>> checks for the Linux kernel version number. If the most significant two 
>> fields of the version number is "2.2" on the host platform, then these 
>> checks cause the socket to be created, used, and managed differently than if 
>> the Linux kernel version were newer. (These behavior changes were necessary 
>> because Linux kernel 2.2.X
>> IP networking was was implemented differently and lacked features of the 
>> newer kernels.)
>>
>> However, the run time logic isn't actually needed anymore because openJDK 
>> doesn't support Linux kernel 2.2.X, and consequently one cannot run openJDK 
>> on these older OSes. The run time checks are never used.
>>
>> The proposed changes to the code 
>> (http://cr.openjdk.java.net/~chegar/7193520/webrev.00/) eliminate 
>> distracting dead wood, and it makes it run (slightly) faster, because the 
>> run time checks are eliminated.
>>
>>
>> Thanks!
>> and
>> RSVP
>> John Zavgren
>> john.zavg...@oracle.com
>>
>>
>>
>>
> 
> 


-- 
Dmitry Samersoff
Java Hotspot development team, SPB04
* There will come soft rains ...


Reply via email to