src/java.base/windows/native/libnet/NetworkInterface_winXP.c
changeset 47317 62e749769358
parent 47309 66774e1fc3a7
child 49140 9ffbe8258541
equal deleted inserted replaced
47316:1129253d3bc7 47317:62e749769358
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2016, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    77     char *error_msg_buf = NULL;
    77     char *error_msg_buf = NULL;
    78     size_t error_msg_buf_size =
    78     size_t error_msg_buf_size =
    79             strlen("IP Helper Library GetAdaptersAddresses function failed"
    79             strlen("IP Helper Library GetAdaptersAddresses function failed"
    80                    " with error == ") + 10;
    80                    " with error == ") + 10;
    81     int _ret = 0;
    81     int _ret = 0;
       
    82     int try;
    82 
    83 
    83 
    84 
    84     adapterInfo = (IP_ADAPTER_ADDRESSES *) malloc(BUFF_SIZE);
    85     adapterInfo = (IP_ADAPTER_ADDRESSES *) malloc(BUFF_SIZE);
    85     if (adapterInfo == NULL) {
    86     if (adapterInfo == NULL) {
    86         JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
    87         JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
    92     flags = GAA_FLAG_SKIP_DNS_SERVER;
    93     flags = GAA_FLAG_SKIP_DNS_SERVER;
    93     flags |= GAA_FLAG_SKIP_MULTICAST;
    94     flags |= GAA_FLAG_SKIP_MULTICAST;
    94     flags |= GAA_FLAG_INCLUDE_PREFIX;
    95     flags |= GAA_FLAG_INCLUDE_PREFIX;
    95     ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
    96     ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
    96 
    97 
    97     for (int try = 0; ret == ERROR_BUFFER_OVERFLOW && try < MAX_TRIES; ++try) {
    98     for (try = 0; ret == ERROR_BUFFER_OVERFLOW && try < MAX_TRIES; ++try) {
    98         IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
    99         IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
    99         if (len < (ULONG_MAX - BUFF_SIZE)) {
   100         if (len < (ULONG_MAX - BUFF_SIZE)) {
   100             len += BUFF_SIZE;
   101             len += BUFF_SIZE;
   101         }
   102         }
   102         newAdapterInfo =
   103         newAdapterInfo =
   158     ULONG len;
   159     ULONG len;
   159     char *error_msg_buf = NULL;
   160     char *error_msg_buf = NULL;
   160     size_t error_msg_buf_size =
   161     size_t error_msg_buf_size =
   161         strlen("IP Helper Library GetAdaptersAddresses function failed with error == ") + 10;
   162         strlen("IP Helper Library GetAdaptersAddresses function failed with error == ") + 10;
   162     int _ret = 0;
   163     int _ret = 0;
       
   164     int try;
   163     adapterInfo = (IP_ADAPTER_ADDRESSES *) malloc(BUFF_SIZE);
   165     adapterInfo = (IP_ADAPTER_ADDRESSES *) malloc(BUFF_SIZE);
   164     if (adapterInfo == NULL) {
   166     if (adapterInfo == NULL) {
   165         JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
   167         JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
   166             "Native heap allocation failure");
   168             "Native heap allocation failure");
   167         return NULL;
   169         return NULL;
   169     len = BUFF_SIZE;
   171     len = BUFF_SIZE;
   170     flags = GAA_FLAG_SKIP_DNS_SERVER;
   172     flags = GAA_FLAG_SKIP_DNS_SERVER;
   171     flags |= GAA_FLAG_SKIP_MULTICAST;
   173     flags |= GAA_FLAG_SKIP_MULTICAST;
   172     flags |= GAA_FLAG_INCLUDE_PREFIX;
   174     flags |= GAA_FLAG_INCLUDE_PREFIX;
   173     val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
   175     val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
   174     for (int try = 0; val == ERROR_BUFFER_OVERFLOW && try < MAX_TRIES; ++try) {
   176     for (try = 0; val == ERROR_BUFFER_OVERFLOW && try < MAX_TRIES; ++try) {
   175         IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
   177         IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
   176         if (len < (ULONG_MAX - BUFF_SIZE)) {
   178         if (len < (ULONG_MAX - BUFF_SIZE)) {
   177             len += BUFF_SIZE;
   179             len += BUFF_SIZE;
   178         }
   180         }
   179         newAdapterInfo =
   181         newAdapterInfo =