HP OpenVMS Systems Documentation |
HP TCP/IP Services for OpenVMS
|
Previous | Contents | Index |
For TCP/IP Services, $QIO uses the following system resources:
For $QIO, completion can be synchronized as follows:
Each function used with $QIO has its own error codes. See the error codes listed under the individual descriptions of the I/O function code in the remainder of this chapter.
6.2 Network Pseudodevice Driver I/O Functions
The network pseudodevice allows physical, logical, and virtual I/O
functions. The physical and logical I/O functions are used only with
the IP layer. Table 6-2 lists the basic I/O functions and their
modifiers. The sections that follow describe in greater detail the
operation of these I/O functions.
Function Code and Arguments | Function Modifier | Description |
---|---|---|
IO$_ACCESS p3,p4 |
IO$M_ACCEPT
IO$M_EXTEND IO$M_NOW |
Opens a connection. |
IO$_ACPCONTROL p1, p2, p3, p4 | Performs an ACP (ancillary control process) operation. | |
IO$_DEACCESS p4 |
IO$M_NOW
IO$M_SHUTDOWN |
Aborts or closes a connection. |
IO$_READVBLK p1,p2,p3,p4,p6 |
IO$M_EXTEND
IO$M_INTERRUPT |
Reads a virtual block. |
IO$M_LOCKBUF
IO$M_PURGE |
Controls the buffer operations. | |
IO$_SENSEMODE p2, p3,p4,p6 | Reads the network pseudodevice characteristics. | |
IO$_SENSECHAR p2, p3,p4,p6 | Reads the network pseudodevice characteristics. | |
IO$_SETMODE p1, p2, p3,p4,p5 |
IO$M_OUTBAND
IO$M_READATTN IO$M_WRTATTN |
Sets the network pseudodevice characteristics for subsequent operations. |
IO$_SETCHAR p1, p2, p3,p4,p5 |
IO$M_OUTBAND
IO$M_READATTN IO$M_WRTEATTN |
Sets the network pseudodevice characteristics for subsequent operations. |
IO$_WRITEVBLK p1,p2,p3,p4,p5 | IO$M_INTERRUPT | Writes a virtual block. |
Table 5-2 lists the file names of the symbol definition files. These files specify $QIO arguments (p1,p2,...p6) for applications written in the corresponding programming languages. You must invoke the symbol definition by using the appropriate statement in your application.
When using a connection-oriented protocol, such as TCP, the IO$_ACCESS function initiates a connection and specifies a remote port number and IP address. When using a connectionless protocol, such as UDP, the IO$_ACCESS function sets the remote port number and IP address.For TCP, a connection request times out at a specified interval (75 seconds is the default). This interval can be changed by setting the inet subsystem parameter tcp_keepinit . The program can also set a specific timeout interval for a socket that it has created, as described in Table A-2.
If a connection fails, you must deallocate the socket and then create a new socket before trying to reconnect.
Related Functions
p3
OpenVMS usage: socket_name type: vector byte (unsigned) access: read only mechanism: by item_list_2 descriptor
The remote port number and IP address of the host to connect. The p3 argument is the address of an item_list_2 descriptor that points to the socket address structure containing the remote port number and IP address.
IO$M_NOW Regardless of a $QIO or $QIOW, if the system detects a condition that would cause the operation to block, the system completes the I/O operation and returns the SS$_SUSPENDED status code.
SS$_NORMAL The service completed successfully. SS$_BADPARAM Programming error that occurred for one of the following reasons:
- $QIO system service was specified without a socket.
- An IO$_ACCESS function was specified without the address of a remote socket name ( p3 was null).
SS$_BUGCHECK Inconsistent state. Report the problem to your HP support representative. SS$_CANCEL The I/O operation was canceled by a $CANCEL system service. SS$_CONNECFAIL The connection to a network object timed out or failed. SS$_DEVINTACT The network driver was not started. SS$_DEVNOTMOUNT The network driver is loaded, but the INETACP is not currently available for use. SS$_DUPLNAM A network configuration error. No ports were available for new connections. SS$_EXQUOTA The process has exceeded a process quota. SS$_FILALRACC The specified socket name is already in use by one of the following:
- On a raw socket, the remote IP address was already specified on a previous IO$_ACCESS call.
- On a datagram, the remote IP address was already specified on a previous IO$_ACCESS call.
- On a stream socket, the IO$_ACCESS function targeted a stream socket that was already connected.
SS$_ILLCNTRFUNC Illegal function. SS$_INSFMEM Insufficient system dynamic memory to complete the service. SS$_IVADDR The specified IP address was not found, or an invalid port number and IP address combination was specified with the IO$_ACCESS function. Port 0 is not allowed with the IO$_ACCESS function. SS$_IVBUFLEN The size of the socket name structure specified with the IO$_ACCESS function was invalid. SS$_LINKABORT The remote socket closed the connection. SS$_NOLICENSE The TCP/IP Services license is not present. SS$_PROTOCOL A network protocol error occurred. The address family specified in the socket address structure is not supported. SS$_REJECT The network connection is rejected for one of the following reasons:
- An attempt was made to connect to a remote socket that is already connected.
- An error was encountered while establishing the connection
- The peer socket refused the connection request or is closing the connection.
SS$_SHUT The local or remote node is no longer accepting connections. SS$_SUSPENDED The system detected a condition that might cause the operation to block. SS$_TIMEOUT A TCP connection timed out before the connection could be established. SS$_UNREACHABLE The remote node is currently unreachable.
This function is used with a connection-based protocol, such as TCP, to accept a new connection on a passive socket.This function completes the first connection on the queue of pending connections.
Related Functions
The equivalent Sockets API function is accept() .
p3
OpenVMS usage: socket_name type: vector byte (unsigned) access: read only mechanism: by item_list_3 descriptor
The remote port number and IP address of a new connection. The p3 argument is the address of an item_list_3 descriptor that points to the socket address structure into which the remote port number and IP address of the new connection is written.p4
OpenVMS usage: channel type: word (unsigned) access: write only mechanism: by reference
The I/O channel number assigned to a new connection. The p4 argument is the address of a word into which the new connection's channel number is written.
IO$M_EXTEND Allows the usage of BSD Version 4.4 formatted socket address structures. Use this modifier to operate in the IPv6 environment. IO$M_NOW Regardless of a $QIO or $QIOW, if the system detects a condition that would cause the operation to block, the system completes the I/O operation and returns the SS$_SUSPENDED status code.
SS$_NORMAL The service completed successfully. SS$_BADPARAM Programming error that occurred for one of the following reasons:
- $QIO system service was specified without a socket.
- A IO$_ACCESS|IO$M_ACCEPT function was specified without the address of the channel for the new connection ( p4 was null or invalid).
SS$_BUGCHECK Inconsistent state. Report the problem to your HP support representative. SS$_CANCEL The I/O operation was canceled by a $CANCEL system service. SS$_DEVINTACT The network driver was not started. SS$_DEVNOTMOUNT The network driver is loaded, but the INETACP is not currently available for use. SS$_EXQUOTA The process has exceeded a process quota. SS$_FILALRACC The specified socket name is already in use by one of the following:
- On a raw socket, the remote IP address was already specified on a previous IO$_ACCESS call.
- On a datagram, the remote IP address was already specified on a previous IO$_ACCESS call.
- On a stream socket, the IO$_ACCESS function targeted a stream socket that was already connected.
SS$_ILLCNTRFUNC Illegal function. SS$_INSFMEM Insufficient system dynamic memory to complete the service. SS$_IVADDR The specified IP address was not found, or an invalid port number and IP address combination was specified with the IO$_ACCESS function. Port 0 is not allowed with the IO$_ACCESS function. SS$_IVBUFLEN The size of the socket name structure specified with the IO$_ACCESS function was invalid. SS$_LINKABORT The remote socket closed the connection. SS$_NOLICENSE The TCP/IP Services license is not present. SS$_PROTOCOL A network protocol error occurred. The address family specified in the socket address structure is not supported. SS$_REJECT The network connection is rejected for one of the following reasons:
- An attempt was made to connect to a remote socket that is already connected.
- An error was encountered while establishing the connection
- The peer socket refused the connection request or is closing the connection.
SS$_SHUT The local or remote node is no longer accepting connections. SS$_SUSPENDED The system detected a condition that might cause the operation to block. SS$_TIMEOUT A TCP connection timed out before the connection could be established. SS$_UNREACHABLE The remote node is currently unreachable.
The IO$_ACPCONTROL function accesses the network ACP to retrieve information from the host and the network database files.Related Functions
The equivalent Sockets API functions are gethostbyaddr() , gethostbyname() , getnetbyaddr() , and getnetbyname() .
p1
OpenVMS usage: subfunction_code type: longword (unsigned) access: read only mechanism: by descriptor-fixed-length descriptor
A longword identifying the network ACP operation to perform. The p1 argument is the address of a descriptor pointing to this longword.To specify the network ACP operation to perform, select a subfunction code from Table 6-3 and a call code from Table 6-4.
Table 6-3 defines subfunction codes for network ACP operations.
.
Table 6-3 Subfunction Codes Subfunction Code Description INETACP_FUNC$C_GETHOSTBYADDR Get the host name of the specified IP address from the hosts database. 1 INETACP_FUNC$C_GETHOSTBYNAME Get the IP address of the specified host from the hosts database. 1 INETACP_FUNC$C_GETNETBYADDR Get the network name of the specified IP address from the network database. INETACP_FUNC$C_GETNETBYNAME Get the IP address of the specified network from the network database.
Table 6-4 defines call codes for network ACP operations.
Call Code | Description |
---|---|
INETACP$C_ALIASES | Returns the list of alias names associated with the specified host or network from the internet hosts or network database. |
INETACP$C_TRANS | Returns the IP address associated with the specified host or network as a 32-bit value in network byte order. |
INETACPC$C_HOSTENT_OFFSET | Returns full host information in a modified hostent structure. In the modified structure, pointers are replaced with offsets from the beginning of the structure. |
INETACP$C_NETENT_OFFSET | Returns full network information in a modified netent structure. In the modified structure, pointers are replaced with offsets from the beginning of the structure. |
IO$_ACPCONTROL searches the local hosts database for the host's name. If a matching host name is not found in the local hosts database, IO$_ACPCONTROL then searches the BIND database if the BIND resolver is enabled.
OpenVMS usage: | char_string |
type: | character-coded text string |
access: | read only |
mechanism: | by descriptor-fixed-length string descriptor |
All IP addresses are specified in dotted-decimal notation.
OpenVMS usage: | word_unsigned |
type: | word (unsigned) |
access: | write only |
mechanism: | by reference |
OpenVMS usage: | buffer |
type: | vector byte (unsigned) |
access: | write only |
mechanism: | by descriptor-fixed-length descriptor |
The format of the data returned in the output buffer is dictated by the call code specified by the p1 argument.
SS$_NORMAL The service completed successfully SS$_ABORT An error was detected while performing an ACP function. SS$_BADPARAM Programming or internal error. A bad parameter (name or address) was specified in the call. SS$_BUFFEROVF Programming error. There was not enough space for returning all alias names in the call. SS$_ENDOFFILE The information requested is not in the database. SS$_ILLCNTRFUNC Illegal function. SS$_NOPRIV The privilege level was insufficient for the execution of an ACP function. SS$_RESULTOVF The ACP overflowed the buffer in returning a parameter. SS$_SHUT The local or remote node is no longer accepting connections.
Previous | Next | Contents | Index |