RFR: JDK-8257235: [PATCH] InetAddress.isReachable: Try to use an IPPROTO_ICMP socket type before attempting RAW_SOCK [v2]
Conor Cleary
ccleary at openjdk.java.net
Fri Feb 19 14:56:41 UTC 2021
On Fri, 19 Feb 2021 14:48:39 GMT, Conor Cleary <ccleary at openjdk.org> wrote:
>> Jamie Le Tual has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Fixed formatting
>
> src/java.base/unix/native/libnet/Inet4AddressImpl.c line 375:
>
>> 373: icmp->icmp_type = ICMP_ECHO;
>> 374: icmp->icmp_code = 0;
>> 375: // same result as downcasting the little-endian pid, although we are not longer
>
> I don't think this is true. When downcasting the pid (which is at this stage in Nework/Big-Endian Order), the host order will be considered. Assuming that the downcast is to `uint16_t`, which it looks like is what icmp_id takes, the 16 least significant bits will be considered (if the host machine is little-endian of course). This is different from the 16 bit right shift. Here is some example output from a short C program I wrote (output is in hex to more easily demonstrate bitwise ops):
>
> pid size: 4
> int size: 4
>
> getpid() testing:
> pid = be67f
> htonl = 7fe60b00
> cast = b00
>>> 16 = 7fe6
On that note, is it ok to ignore any bits that are shifted out? For example, `7fe60b00 >> 16` results in `00007fe6` while the trailing `0b00` is ignored.
-------------
PR: https://git.openjdk.java.net/jdk/pull/1502
More information about the net-dev
mailing list