HPlogo NetIPC 3000/XL Programmer's Reference Manual: HP 3000 MPE/iX Computer Systems > Chapter 3 NetIPC Intrinsics

IPCSHUTDOWN

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

 » Glossary

 » Index

Releases a descriptor and any resources associated with it.

Syntax

IPCSHUTDOWN  (descriptor[,flags][,opt][,result]

Parameters

descriptor (input)

32-bit integer, by value. The socket to be released. May be a call socket, destination, or VC socket descriptor.

flags

32 bits, by reference. A bit representation of various options. The following flag is defined:

flag [17] — (TCP only.) graceful release of connection.

opt

Record or byte array, by reference. A list of options, with associated information. The following option is defined:

  • clear user data (code=2, length=n, n bytes) (input). (X.25 only.) If the fast select facility was used in the connection request, and the connection was accepted, you can include a clear user data field which can contain up to 128 bytes of data. For more information, see the discussion of the fast select facility in Chapter 1 “NetIPC Fundamentals” of this manual.

  • reason code (code=143, length=2) (input). (X.25 only.) This option allows you to include cause and diagnostic values in the X.25 clear packets when a connection is closed down. The first byte contains the cause and the second byte contains the diagnostic code. A list of cause and diagnostic codes used with NS X.25 protocol access is contained in Appendix B “Cause and Diagnostic Codes” If DTE originated, the cause code will always be zero.

result (output)

32-bit integer, by reference. The error code returned; zero if no error.

Description

The IPCSHUTDOWN intrinsic permits the creating process to close a call socket or a VC socket descriptor or to release a connection. The descriptor is the only required parameter (option variable).

IPCSHUTDOWN can be called to release a call socket descriptor, a destination descriptor, or a VC socket descriptor. Since systems resources are used up as long as call sockets and destination sockets exist, you should release them whenever they are no longer needed.

The call socket is needed as long as a process expects to receive a connection request on that socket. A process which receives a connection request can release the call sockets any time after the connection request is received via IPCRECVCN, as long as no other connection requests are expected for that call socket. For more information on IPCSHUTDOWN, refer to "Shutting Down Sockets and Connections" at the beginning of this chapter. Condition codes returned by this intrinsic are:

  • CCE — Succeeded.

  • CCL — Failed.

  • CCG — Not returned by this intrinsic.

This intrinsic cannot be called in split stack mode.

Protocol-Specific Considerations

The following Table 3-11 “IPCSEND Protocol Specific Parameters” outlines parameters that are specific to the particular protocol you are accessing.

Table 3-11 IPCSEND Protocol Specific Parameters

Parameters

TCP

X.25

flags

17

Graceful release of connection

n/a

opt

 

2

n/a

Clear user data

143

n/a

Reason code

 

X.25 Considerations

Shutting down an X.25 connection causes a clear packet to be sent by X.25 over an SVC, unless the virtual circuit is already cleared. You can specify the cause and diagnostic fields in the opt parameter (code=143) that will be included in the clear packet over an SVC. Over a public data network (PDN), the cause may not be transmitted to the remote node.

When used with direct access to level 3, the intrinsic IPCSHUTDOWN can only be called in waited mode. The intrinsic will not return until the request is completed.X.25 direct access to level 3 does not support the graceful release bit. As a suggestion, to ensure that no data packets are lost before the clear packet is sent, use the D bit option in the last IPCSEND. This would assure end-to-end acknowledgment of this message before issuing the IPCSHUTDOWN to clear the virtual circuit. Another method is to send an unimportant message as the last message. (See example 2 in Chapter 4 “NetIPC Examples” for an example of this method.)

Common errors returned by IPCSHUTDOWN in result are.

SOCKERR   0  Request completed successfully.
SOCKERR  54  Invalid call socket descriptor.
SOCKERR  66  Invalid connection descriptor. 
SOCKERR  67  Connection failure detected.
SOCKERR 142  Invalid call user data opt record entry.
SOCKERR 170  Error with use of the fast select facility.

A complete table of SOCKERRs is included in Appendix C “Error Messages”

TCP

If graceful release is specified and supported by the remote process, the requestor of a graceful release will go to a simplex-in state (that is, able only to receive, unable to send) and the remote process will go to a simplex-out state. The VC remains in this state until the remote process shuts down its socket, at which time all resources are released. See "Shutting Down a Connection" in Chapter 1 “NetIPC Fundamentals” for the steps to take in implementing a graceful release shutdown.

If graceful release is selected, a SOCKERR 102 result will be returned if any of the following conditions exists:

  • A connection request has been received, but the connection has not been accepted.

  • The connection has already been gracefully released, and the process is therefore in a simplex-in state.

  • A connection request has been issued, but the connection has not yet been established.

  • The connection has been aborted.

  • The protocol module (part of the NS transport) does not support graceful release.

  • Data is being sent from the connection. This could occur, for example, if IPCSEND was called in nowait mode and has not yet completed.

Cross-System Considerations For TCP

The following are cross-system programming considerations for this intrinsic:

HP 3000 to HP 1000:

Socket shut down — The HP 3000 provides a graceful release flag (flag 17) that is not available on the HP 1000. Do not set the graceful release flag on the HP 3000. Otherwise, the HP 1000 will not perform a normal shutdown. If the HP 3000 process sets the graceful release flag, the HP 1000 IPCRecv call will return a NetIPC error 68 (No more data). The HP 1000 process should handle error 68 as if it were an error 64 (Connection aborted by peer). After receiving an error 68, subsequent IPCRecv calls on the HP 1000 will return an error 109 (Remote connection has already graceful released the socket).

HP 3000 to HP 9000:

Socket shut down — The HP 3000 provides a graceful release flag that is not available on the HP 9000. If the graceful release flag (flag 17) is set on the HP 3000, the HP 9000 will respond as though it were a normal shutdown. The HP 3000 does not support shared sockets; the HP 9000 does. Shared sockets are destroyed only when the descriptor being released is the sole descriptor for that socket. Therefore, the HP 9000 process may take longer to close the connection than expected.

HP 3000 to PC NetIPC:

Socket shut down — The HP 3000 provides a graceful release flag that is not available on the PC. If the graceful release flag (flag 17) is set on the HP 3000, the PC will respond as though it were a normal shutdown.

Feedback to webmaster