HP 3000 Manuals

IPCCONNECT [ Net IPC 3000/XL Programmer's Reference Manual ] MPE/iX 5.0 Documentation


Net IPC 3000/XL Programmer's Reference Manual

IPCCONNECT 

Requests a connection to another process.

Syntax 
__________________________________________________________________________
|                                                                        |
|                                                                        |
|     IPCCONNECT ([ calldesc], destdesc[ ,flags][, opt], vcdesc[, result]|
|                                                                        |
__________________________________________________________________________

Parameters 

 calldesc (input) 

32-bit integer, by value.  A call socket descriptor for a call socket
belonging to this process.  Required for X.25 level 3 access.  For TCP
access, if -1, or if omitted, a call socket is created temporarily to
establish the connection.

 destdesc (input) 

32-bit integer, by value.  Destination descriptor.  Describes the
location of the named call socket.  (this is the call socket to which the
connection request will be sent).  A destination descriptor can be
obtained by calling IPCDEST. For TCP access you can also obtain a
destination descriptor by calling IPCLOOKUP.

 flags (input) 

32 bits, by reference.  A bit representation of various options.  No
flags are defined for access to the X.25 protocol.  The following flag
bits are defined:

 *  flags [0] (input).  (TCP only.)  Makes the connection a "protected"
    one.  A protected connection is one which only privileged users may
    establish or use.

 *  flags [21] (input).  (TCP only.)  Enables checksumming on the
    Transmission Control Protocol (TCP) connection for error checking.
    Checksumming may also be set by the corresponding IPCRECVCN call.  If
    either side specifies "checksum enabled" then the connection will be
    checksummed.

    TCP checksum may be enabled globally, over all connections, when
    configuring the Network Transport.  Checksumming enabled by either
    IPCRECVCN or the network transport (remote or local) configuration
    overrides a 0 setting (checksum disabled) for this flag.  Checksum
    error checking is handled at the link level and is not normally
    required at the user level.

    Checksumming is only used for connections between nodes and is not
    used for connections within the same node.  Enabling checksumming may
    reduce network performance.  Recommended value:  0.

 opt (input) 

Record or byte array, by reference.  A list of options, with associated
information.  Possible options are:

 *  call user data (code=2, length=n, n bytes) (input).  For access to
    the X.25 protocol only.  This option contains data to be inserted as
    the call user data (CUD) field in an X.25 packet.  The maximum length
    for the CUD is 16 bytes.  With the fast select facility, the maximum
    length for the CUD is 128 bytes.  HP has reserved the first four
    bytes of the CUD for protocol addressing.  The user can supply data
    up to 12 bytes (or 124 bytes with fast select).  By setting the no
    address flag (protocol flags option), the user can access all 16
    bytes (or 128 bytes with fast select) of the CUD. See Chapter 1,
    Access to the Call User Data (CUD) Field for more information.

 *  maximum send size (code=3, length=2; 2-byte integer).  (TCP only.)
    This option, which must be in the range from 1 to 30,000, specifies
    the length of the longest message the user expects to send on this
    connection.  The information is passed to the protocol module for
    internal use only.  This does not mean that the user cannot send a
    message larger than the value that is specified in this option code.
    If this option is not used, the protocol module will be able to send
    messages at least 1024 bytes long.  If the value specified is smaller
    than a previously specified maximum send size, then the new value is
    ignored.

 *  maximum receive size (code=4, length=2; 2-byte integer).  (TCP only.)
    This option, which must be in the range from 1 to 30,000, specifies
    the length of the longest message the user expects to receive on this
    connection.  The information is passed to the protocol module for
    calculating its transmission-window size.  This does not mean that
    the user cannot receive messages larger than the length specified
    with this option code.  If this option is not used, the protocol
    module can handle messages of at least 1024 bytes long.  If the value
    specified is smaller than a previously specified maximum receive
    size, then the new value is ignored.

 *  address option (code=128, length=2; 2-byte integer)(input).  (TCP
    only.)  This option specifies the source port address of the
    connection request.  Addresses in the range (octal) %74057 to %77777
    can be used without special capabilities.

 *  facilities set name (code=142, length=8, packed array of 8
    characters) (input).  For access to the X.25 protocol only.  This
    option field is used to associate a facilities set with the virtual
    circuit to be created over an SVC. This option does not apply to a
    PVC. This is an optional parameter and defaults to the facilities set
    name entered while configuring the X.25 network with NMMGR on the HP
    3000.

 *  protocol flags (code=144, length=4, 4-byte buffer) (input).  This
    option contains 32 bits of protocol-specific flags.  The following
    flags are currently defined:

     *  no address (bit 17, input).  (X.25 only.)  This flag provides the
        user with access to the entire X.25 call user data field (16
        bytes or 128 bytes with fast select).  This option can be useful
        for communication with non-HP nodes.

 *  facility field (code=145, length=n, n bytes) (input).  This option
    field defines the part of the facility field built using the facility
    set.  This data must follow the X.25 recommendation and is appended
    to the facilities from the facility set without any change.  See the
    discussion entitled "Facility Field " in Chapter 1 for more
    information.

 vcdesc (output) 

32-bit integer, by reference.  The returned VC socket descriptor, a
number identifying a VC socket belonging to this process through which
data can be sent or received.  This descriptor can be used in other
intrinsics.

 result (output) 

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

Description 

The IPCCONNECT intrinsic is used to establish a VC socket (for a virtual
circuit) to another process.  The calling process must first create a
call socket for itself and obtain the destination descriptor of a call
socket belonging to the other process.

A successful result means that the connection request has been initiated.
The process which requested the connection (via IPCCONNECT) must then
call IPCRECV with the VC socket descriptor value in order to complete the
connection.  IPCCONNECT is a non-blocking call:  the calling process is
not blocked pending completion of its request.

Only the destination descriptor and VC socket descriptor parameters are
required (that is, the intrinsic is option variable).

Condition codes returned by this intrinsic are as follows:

 *  CCE--Succeeded.

 *  CCL--Failed.

 *  CCG--Not returned by this intrinsic.

Protocol-Specific Considerations 

The following table outlines parameters that are specific to the
particular protocol you are accessing.

          Table 3-2.  IPCCONNECT Protocol Specific Parameters 

----------------------------------------------------------------------------------------------
|                              |                              |                              |
|          Parameters          |             TCP              |             X.25             |
|                              |                              |                              |
----------------------------------------------------------------------------------------------
|                              |                              |                              |
| flags                        |                              |                              |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|              0               | Protected connection         | n/a                          |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|              21              | Enable checksum              | n/a                          |
|                              |                              |                              |
----------------------------------------------------------------------------------------------
|                              |                              |                              |
| opt                          |                              |                              |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|              2               | n/a                          | Call user data (CUD)         |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|              3               | Maximum send size            | n/a                          |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|              4               | Maximum receive size         | n/a                          |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|             128              | TCP source port address      | n/a                          |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|             142              | n/a                          | Facilities set name          |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|             144              | None defined                 | Bit 17:  access to CUD       |
|                              |                              |                              |
|                                                                                            |
|                              |                              |                              |
|             145              | n/a                          | Facility field               |
|                              |                              |                              |
----------------------------------------------------------------------------------------------

X.25 Considerations 

IPCCONNECT used over a switched virtual circuit causes the X.25 protocol
to send a call request packet to the node and process described by the
destination socket.  Over a permanent virtual circuit (PVC), a reset
packet is sent.

The  opt parameter CUD field is sent as the CUD field in the call request
packet.  Based on the setting of the  opt protocol flags "no address"
flag, the user has access to either 12 or 16 bytes in the CUD field.
With fast select, the user has access to either 124 or 128 bytes.

For communication between HP nodes, the first four bytes of the CUD field
are interpreted as an address for incoming call packets (the third and
fourth bytes contain the protocol relative address).  The X.25 protocol
uses this data to find the proper source socket to route the incoming
call.  This corresponds to the relative address parameter passed when the
source socket was created.

Common errors returned by IPCCONNECT in result are:

     SOCKERR   0  Request completed successfully.
     SOCKERR  46  Unable to interpret received path
                  report.
     SOCKERR  55  Exceeded protocol module's limit.
     SOCKERR 116  Destination unreachable.
     SOCKERR 143  Invalid facilities set.
     SOCKERR 155  Invalid X.25 flags.
     SOCKERR 157  No virtual circuit configured.
     SOCKERR 160  Incompatible with protocol state.
     SOCKERR 162  X.25 permanent virtual circuit does
                  not exist.
     SOCKERR 163  Permanent virtual circuit already
                  established.
     SOCKERR 170  Error with use of the fast select facility.
     SOCKERR 171  Invalid facility field opt record entry.

A complete table of SOCKERRs is included in Appendix C.

TCP Access 

If a call socket descriptor is not supplied, or if the specified value is
-1, a "ghost" socket is created for the purpose of setting up the
connection.  This temporary socket is destroyed before the IPCCONNECT
call is complete.

Cross-System Considerations for TCP 

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

HP 3000 to HP 1000 
Checksumming - TCP checksumming will be enabled for both sides of the
connection if it is enabled by either side for HP 3000 to HP 1000
cross-system communication.  On both the HP 3000 and HP 1000 checksumming
can be enabled by setting bit 21 in the flags parameter.

Send and receive sizes - The HP 3000 send and receive size range is 1 to
30,000 bytes.  The HP 1000 send and receive size range is 1 to 8,000
bytes.  Although the ranges are different, specify a send size within the
correct range.  For example, if the HP 3000 node sends 16,000 bytes, the
HP 1000 node can call IPCRECVtwice, receiving the first 8,000 bytes the
first time and the second 8,000 bytes the second time.

Note that the default send and receive sizes are different on different
HP systems.  On the HP 3000, the default send and receive size is less
than or equal to 1,024 bytes.  On the HP 1000 the default send and
receive size is 100 bytes.

HP 3000 to HP 9000: 
Checksumming - When the ipcconnect() call is executed on the HP 9000
node, checksumming is always enabled.  Therefore checksumming is always
enabled for the HP 3000-to-HP 9000 connection.

Send and receive sizes - The HP 3000 send and receive size range is 1 to
30,000 bytes.  The HP 9000 send and receive size range is 1 to 32,767
bytes.  although the ranges are different, cross-system communication is
not affected.  If you specify a send or receive size, be sure it is
within the correct range for the respective system.

Note that the default send and receive sizes are different on different
HP systems.  On the HP 3000, the default send and receive is less than or
equal to 1,024 bytes.  On the HP 9000, the default send and receive size
is 100 bytes.

HP 3000 to PC NetIPC 
Checksumming - With PC NetIPC, the TCP checksum option cannot be turned
on.  But if the HP 3000 requires it, the TCP checksum is in effect on
both sides of the connection.

Send and receive sizes - The HP 3000 send and receive size range is 1 to
30,000 bytes.  The PC send and receive size range is 1 to 65,535 bytes.
Although the ranges are different, cross-system communication is not
affected.  For example, if the PC node sends 60,000 bytes, the HP 3000
node can call IPCRECVtwice, receiving the first 30,000 bytes the first
time and the second 30,000 bytes the second time.

Note that the default send and receive sizes are different on different
HP systems.  On the HP 3000, the default send and receive size is less
than or equal to 1,024 bytes.



MPE/iX 5.0 Documentation