2362N/A * Copyright (c) 2007, Oracle and/or its affiliates. All rights reserved. 0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 0N/A * This code is free software; you can redistribute it and/or modify it 0N/A * under the terms of the GNU General Public License version 2 only, as 2362N/A * published by the Free Software Foundation. Oracle designates this 0N/A * particular file as subject to the "Classpath" exception as provided 2362N/A * by Oracle in the LICENSE file that accompanied this code. 0N/A * This code is distributed in the hope that it will be useful, but WITHOUT 0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 0N/A * version 2 for more details (a copy is included in the LICENSE file that 0N/A * accompanied this code). 0N/A * You should have received a copy of the GNU General Public License version 0N/A * 2 along with this work; if not, write to the Free Software Foundation, 0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 0N/A * This function "purges" all outstanding ICMP port unreachable packets 0N/A * outstanding on a socket and returns JNI_TRUE if any ICMP messages 0N/A * have been purged. The rational for purging is to emulate normal BSD 0N/A * behaviour whereby receiving a "connection reset" status resets the 0N/A * Peek at the queue to see if there is an ICMP port unreachable. If there 0N/A * is then receive it. 0N/A /* some other error - we don't care here */ 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketCreate 0N/A /* SIO_UDP_CONNRESET fixes a "bug" introduced in Windows 2000, which 0N/A * returns connection reset errors on unconnected UDP sockets (as well 0N/A * as connected sockets). The solution is to only enable this feature 0N/A * when the socket is connected. 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketBind 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketConnect 0N/A /* see comment in socketCreate */ 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketDisconnect 0N/A /* see comment in socketCreate */ 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketClose 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketLocalPort 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketLocalAddress 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketReceiveOrPeekData 0N/A /* if we are only peeking. Called from peekData */ 0N/A /* Note: the buffer needn't be greater than 65,536 (0xFFFF) 0N/A * the max size of an IP packet. Anything bigger is truncated anyway. 0N/A "Receive timed out");
0N/A "operation interrupted");
0N/A /* receive the packet */ 0N/A /* An icmp port unreachable - we must receive this as Windows 0N/A * does not reset the state of the socket until this has been 0N/A "ICMP Port Unreachable");
0N/A /* Adjust timeout */ 0N/A "Receive timed out");
0N/A /* truncate the data if the packet's length is too small */ 0N/A /* it is because the buffer is too small. It's UDP, it's 0N/A * unreliable, it's all good. discard the rest of the 0N/A "operation interrupted");
0N/A * Check if there is an InetAddress already associated with this 0N/A * packet. If so, we check if it is the same source address. We 0N/A * can't update any existing InetAddress because it is immutable 0N/A /* force a new InetAddress to be created */ 0N/A /* stuff the new Inetaddress into the packet */ 0N/A /* populate the packet */ 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketSend 0N/A sap = 0;
/* arg to JVM_Sendto () null in this case */ 0N/A /* Note: the buffer needn't be greater than 65,536 (0xFFFF) 0N/A * the max size of an IP packet. Anything bigger is truncated anyway. 0N/A "operation interrupted");
0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketSetIntOption 0N/A * Class: java_net_DualStackPlainDatagramSocketImpl 0N/A * Method: socketGetIntOption