cc/td/doc/product/software/ioss390
hometocprevnextglossaryfeedbacksearchhelp
PDF

Table of Contents

User Exits

User Exits

This chapter provides information about writing exit routines for Cisco IOS for S/390. It includes these sections:

Provides a brief overview of the exit routines.
Defines data areas, macro instructions, and coding conventions and restrictions that apply to all user exit routines in Cisco IOS for S/390.
Describes how to use the SUNRCVD and SENDSYN exit points in Cisco IOS for S/390 to control inbound and outbound TCP connection requests if you have exits TCPX0001 and TCPX0002 coded in prior releases of Cisco IOS for S/390.

Overview

The Cisco IOS for S/390 exit facility lets users write exit routines to handle certain specialized requirements within their installation.

Various user exit points are defined within Cisco IOS for S/390 to allow the product to be customized. Multiple exit programs can be configured for the various exit points. An exit program can communicate with itself across various exit point invocations by establishing an exit context. Exit programs can issue messages, accept or reject various requests, and change or reroute messages. Exit points are defined in message services, at various points in the TCP/IP stack, and in FTP.

The user exit points listed in the following table are defined. These exits are configured in the IJTCFGxx member of the PARM data set. See the Cisco IOS for S/390 Customization Guide for details on configuring the exit points.


Table 5-1: Defined User Exit Points
Exit Point When Invoked Function
INIT Startup Initialize the exit environment
TERM Shutdown Terminate the exit environment
LOG Message is formatted Exit can change the message text, reroute the message, or suppress the message
TCPBIND TCP bind request is received Exit can reject the request
SYNRCVD TCP syn packet is received Exit can reject the connection
SENDSYN TCP syn packet is about to be sent Exit can reject the request
TCPESTAB New TCP connection is established Information only
TCPCLOSE TCP connection is closed Information only
UDPBIND UDP bind request is received Exit can reject the request
UDPSEND UDP send request is received Exit can reject the request
UDPRECV UDP datagram is received Exit can reject the datagram
RAWSOCK RAW socket is created Exit can reject the request
RAWSEND RAW send request is received Exit can reject the request
RAWRECV RAW IP datagram is received Exit can reject the datagram
FTPLOGIN FTP login is received Exit can reject the request
FTPRSRCE FTP command has been received which will cause a dataset allocation Exit can reject the request

Parameters

Except where noted in the following discussion, parameter lists and the data areas they point to should be left unchanged by the exit program. Changes to other fields will be ignored and will not be made effective.

Exit Point ID

Each exit will be passed a parameter list pointed to by R1, which will include a fullword identifying the exit point. The first word of the parameter list will be one of the following:

F'0' INIT exit
F'1' TERM exit
F'2' LOG exit
F'3' TCPBIND exit
F'4' SYNRCVD exit
F'5' SENDSYN exit
F'6' TCPESTAB exit
F'7' TCPCLOSE exit
F'8' UDPBIND exit
F'9' UDPSEND exit
F'10' UDPRECV exit
F'11' RAWSOCK exit
F'12' RAWSEND exit
F'13' RAWRECV exit
F'14' FTPLOGIN exit
F'15' FTPRSRCE exit

Issuing Messages From Exits

Each exit except the LOG exit will be passed the address of a routine which can be invoked in order to write a message to the log or to the operator. When calling this routine, the following must be provided:

R00 Must contain the value of R13 on entry to the exit program.
R01 Must point to a one-byte message type, followed by eighty bytes of message text. For a description of the message types, see the Cisco IOS for S/390 Customization Guide.
R13 Must point to a standard 72-byte register save area.
R14 Must contain the return address.

The message will be prefixed by the exit facility with a standard Cisco IOS for S/390 message ID (T00EX004) and the exit program name.

Exit Context

At each exit point except INIT, the program will be passed a fullword of context. This context word is provided by the program at the INIT exit point, and can be used by the exit program to communicate across exit points.

Return Codes

There are two return codes defined for exits. The first, Return Code 1, is returned by the exit in R15 when returning to the exit facility. This return code determines whether the next configured exit program will be called for this exit point, if multiple exits are configured. This return code should normally be set to zero to allow subsequent exit programs to be invoked. A non-zero value will cause the exit facility to bypass calling any subsequent exit programs configured at that exit point. (Return code 1 does not apply to the INIT and TERM exits. Register 15 should be set to zero when returning from these exit points.)

The second return code, Return Code 2, is part of the parameter list provided on entry to the exit. The exit can set this return code, when appropriate, to reject the current request. For instance, the SYNRCVD exit can set a non-zero value in this word to reject the connection request. If multiple exit programs are configured at an exit point, the Return Code 2 value is passed from one exit program to the next. The value in Return Code 2 after the last exit is called is the value that will be returned to the caller of the exit facility (such as TCP). An exit program, therefore, should not change the Return Code 2 value, and, in particular, should not change it from a non-zero to a zero value, unless there is a compelling reason.

Care should be used when setting return codes and when configuring exits. The exit programs will be invoked in the same order in which they are configured. A subsequent program can change the Return Code 2 setting from an earlier exit program. An earlier exit program can prevent a subsequent exit program from being called by using Return Code 1.

Exits

This section describes the individual exits.

There is a sample EXIT program in the HLQ.SAMP data set.

INIT Exit

Exit Point: Cisco IOS for S/390 startup.

Function - The exit is called synchronously at startup, during parsing of the configuration statements in the IJTCFG00 configuration member. It can be used to create an exit context which will be passed to the exit program at subsequent exit points. It can also issue messages.

Addressing Mode: 31

Dispatchable Unit: Task mode (TCB)

Restriction: The exit should not block indefinitely.

Register Contents at Entry:

00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Zero

Table  5-2: INIT Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'0'.
+04 04 -- Exit context. This word will contain zeros on input. The INIT exit can place a word of context in this word. The context will then be passed to the exit program at other exit points.
+08 04 -- Return code 2. Thi0+s should be set to zero.
+12 04 -- Address of the message routine. Note, since the log is not allocated when this exit is called, the message type should be one that will be written by WTO. The LOG exit point can be used to ensure that the message written (T01EX004) is routed to the console.

TERM Exit

Exit Point: Cisco IOS for S/390 shutdown.

Function: The exit is called synchronously at shutdown. It can be used to terminate the exit environment and clean up.

Addressing Mode: 31

Dispatchable Unit: Task mode (TCB)

Restrictions: The exit should not block indefinitely.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Zero

Table 5-3: TERM Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'1'.
+04 04 -- Exit context.
+08 04 -- Return code 2. This should be left unchanged.
+12 04 -- Address of the message routine.
+16 04 04 Address of a word in which the exit may define which exit points will be driven (except the TERM exit, which is always driven). This word can be built by ORing the exit point ID flag values for the exits which are to be driven. Exit point flags are defined as follows:

X'80000000'- LOG exit

X'00800000' - TCPBIND exit

X'00400000' - SYNRCVD exit

X'00200000' - SENDSYN exit

X'00100000' - TCPESTAB exit

X'00080000' - TCPCLOSE exit

X'00040000' - UDPBIND exit

X'00020000' - UDPSEND exit

X'00010000' - UDPRECV exit

X'00008000' - RAWSOCK exit

X'00004000' - RAWSEND exit

X'00002000' - RAWRECV exit

X'00000080' - FTPLOGIN exit

X'00000040' - FTPRSRCE exit

For instance, to drive the TCPESTAB, TCPCLOSE, and FTPLOGIN exits, set the value of this word to X'00180080'. Note that this request may be overridden by the configuration. See the discussion of the EXIT statement in the Cisco IOS for S/390 Customization Guide.

+20 04 Var Address of the PARM string from the EXIT configuration statement. Note that this area will be released following the exit point. If the exit program wishes to save this string, it must obtain storage and make a copy.
+24 04 04 Address of a fullword containing the length of the PARM string from the EXIT configuration statement.

LOG Exit

Exit Point: When a message has been formatted and is ready to be written.

Function: The exit can change the message text, reroute the message, or suppress the message.

Addressing Mode: 31

Dispatchable Unit: Task mode PC routine or SRB

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table 5-4: LOG Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'2'.
+04 04 -- Exit context.
+08 04 -- Return code 2. This should be left unchanged. To suppress the message, set the message routing code to zero (see below).
+12 04 -- Zeroes.
+16 04 var Address of the message text. The text may be changed by the exit.
+20 04 04 Address of a word containing the message buffer length. (This value should not be changed; the message cannot be made any longer than this length. To shorten the message, pad to the right with blanks.)
+24 04 04 Address of a word containing a message routing code:

X'00000000' = Do not issue message

X'00000004' = Write message to log

X'00000008' = Write message to the operator console (WTO)

X'0000000C' = Write to log and console.

This word may be changed by the exit to change the routing for the message. To suppress the message, set this word to zero.

Stack Exits

This section describes the stack exits. These are exit points in TCP, UDP, and RAW IP processing. These exits can be called in SRB mode or in cross-memory PC mode, and must not issue any SVCs. No assumptions should be made about the cross-memory environment. Home, primary, and secondary address spaces may all differ.

In most cases, these exits can reject a request. All can issue a message, and all have access to the exit context.

The parameter list in each case is similar. In each case, the addresses of the local host address and the remote host address is provided. This will be eight bytes, in standard AF_Inet form:

Offset Length Field
00 02 Address Family
02 02 Port number (hexadecimal)
04 04 IP address (hexadecimal)

Not all of these fields will be filled in for every exit point. For instance, at the bind exit point, only the local port number will be filled in.

Each stack exit will also be passed the address of a 24-byte user identification area. This area identifies the cross-memory TLI, OpenEdition (UNIX System Services), or IUCV user. The format will be as follows:

Offset Length Field
00 08 Jobname
08 08 Stepname
16 08 Procstepname

TCPBIND Exit

Exit Point: When a TCP bind request is received.

Function: This exit can accept or reject the request.

Addressing Mode: 31.

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-5: TCPBIND Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'3'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

SYNRCVD Exit

Exit point: When a TCP connection request (syn packet) is received.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-6: SYNRCVD Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'4'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

SENDSYN Exit

Exit Point: When a TCP connection request (syn packet) is about to be sent to a remote host.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-7: SENDSYN Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'5'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

TCPESTAB Exit

Exit Point: When a new TCP connection is fully established.

Function: This exit point is intended for information only. The exit cannot reject the connection at this point.

Addressing Mode: 31

Dispatchable Unit: Task mode or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-8: TCPESTAB Exit Parameters Passed
Offset Parm length Data length Description
+00 04 -- Exit point ID. This word will contain F'6'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

TCPCLOSE Exit.

Exit Point: When a TCP connection is closed. This exit will be called when a partly- or fully-established TCP connection is closed. It is not called when a listening TCP endpoint is closed. If a connection request (syn) has been received, or a connection request has been sent, the TCPCLOSE exit will be called when the connection is closed. Either the SYNRCVD or SENDSYN exit will have been called. The TCPESTAB exit may or may not have been called for the connection.

Function: This exit point is intended for information only. The exit cannot reject the connection at this point.

Addressing Mode: 31

Dispatchable Unit: Task mode or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-9: TCPCLOSE Exit Parameters Passed
Offset Parm length Data length Description
+00 04 -- Exit point ID. This word will contain F'7'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

UDPBIND Exit

Exit Point: When a UDP bind request is received.

Function: This exit can accept or reject the request.

Addressing Mode: 31.

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-10: UDPBIND Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'8'.
+04 04 -- Exit context.
+08 04 -- Return code 2.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

UDPSEND Exit

Exit Point: When a UDP datagram is about to be sent.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-11: UDPSEND Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'9'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to abort the send.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

UDPRECV Exit

Exit Point: When a UDP datagram has been received.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-12: UDPRECV Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'10'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to reject the datagram.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

RAWSOCK Exit

Exit Point: When a RAW socket request has been received.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-13: RAWSOCK Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'11'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to reject the request.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

RAWSEND Exit

Exit Point: When a RAW IP datagram is about to be sent.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-14: RAWSEND Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'12'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to abort the send.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

RAWRECV Exit

Exit Point: When a RAW IP datagram has been received.

Function: This exit can accept or reject the datagram.

Addressing Mode: 31

Dispatchable Unit: Task mode PC or SRB mode.

Restrictions: The exit should not block execution. The exit must not issue any SVC requests.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-15: RAWRECV Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'13'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to reject the datagram.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 24 Address of the User Identification.

FTP Exits

Following are the FTP exit points. These exits are invoked in task mode, but MUST NOT block execution on the TCB.

These exits can be used to issue a message or reject an access request.

FTPLOGIN Exit

Exit Point: When an FTP user is logging in (when the PASS or ACCT command is received). The exit is called before the SAF router is called to log the user on.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode.

Restrictions: The exit must not block execution.

Register Contents at Entry:

R00 Exit point
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table  5-16: FTPLOGIN Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'14'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to reject the login.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 08 Address of the User ID.

FTPRSRCE Exit

Exit Point: When an FTP user has requested an operation which will result in a data set resource allocation. This exit is called before the SAF router is invoked to verify the user's access authority.

Function: This exit can accept or reject the request.

Addressing Mode: 31

Dispatchable Unit: Task mode.

Restrictions: The exit must not block execution.

Register Contents at Entry:

R00 Exit point ID
R01 Parameter list address
R02-R12 Zeros
R13 Save area address
R14 Return address
R15 Entry point address

Register Contents on Return:

R00-R12 Undefined
R13 Restored
R14 Undefined
R15 Return Code 1

Table 5-17: FTPRSRCE Exit Parameters Passed
Offset Parm Length Data Length Description
+00 04 -- Exit point ID. This word will contain F'15'.
+04 04 -- Exit context.
+08 04 -- Return code 2. The exit can set this word to a non-zero value to reject the request.
+12 04 -- Address of the message routine.
+16 04 08 Address of the local host AF_Inet.
+20 04 08 Address of the remote host AF_Inet.
+24 04 52 Address of the 44-byte dataset name, followed by an eight-byte member name (or blanks).
+28 04 06 Address of the volume serial number, or blanks.
+32 04 01 Address of a one-byte field identifying the authorization request type:

X'40' - Read

X'20' - Write

X'10' - Alter

+36 04 02 Address of a two-byte field identifying the FTP operation type:

X'8000' - HELP command

X'4000' - STAT command (Statistics)

X'2000' - STOR command (Store)

X'1000' - APPE command (Append)

X'0800' - RETR command (Retrieve)

X'2400' - STOU command (Store Unique)

X'0200' - LIST command (Directory list)

X'0100' - NLST command (Directory list)

X'0080' - RNTO command (Rename)

X'0040' - DELE command (Delete)

X'0020' - Special PDS directory allocation for LIST/NLST.

X'0010' - MKD command (Make Directory)

+40 04 var Address of the ACEE. The ACEE is mapped by macro IHAACEE. Its length is in the ACEELEN field.

Converting from TCPX0001 and TCPX0002

Users of prior releases of Cisco IOS for S/390 who have coded exits TCPX0001 and TCPX0002 to control inbound and outbound TCP connection requests, can use the SUNRCVD and SENDSYN exit points in this release of Cisco IOS for S/390 to accomplish the same purpose. The exit programs will have to be modified to conform to the new exit facility.

The following is a brief guide to help you modifying exits TCPX0001 and TCPS0002.

Programming Limitations

The SYNRCVD and SENDSYN exits will be called in either SRB mode or cross-memory stacking PC mode, and are subject to the restrictions imposed by those environments. Supervisor calls (SVCs) are not allowed.

Exit Parameter list

The XITDEPL macro is not supported. The exit parameter lists vary among exit points. Use the T00DEXPL macro to map the parameter lists.

Program Entry

The XITMENT macro is not supported. Instead, use standard linkage conventions for saving registers and establishing addressability. General register 13 will contain the address of an 18 fullword register save area on entry to all exit points. Registers 14 and 15 contain the return address and entry point address of the exit program. The exit program may use all registers; it is not necessary to maintain the contents of any register during execution.

Program Exit

The XITMRET macro is not supported. Use standard linkage conventions to return to the exit facility. It is not necessary to restore any registers except register 13 before return to the exit facility. Place the return code in register 15 before returning.

Obtaining Storage

The XITMFUNC GETMEM and FREEMEM services are not supported. Use STORAGE OBTAIN/RELEASE to obtain and release storage. Do not use GETMAIN/FREEMAIN, as these macros generate SVC calls.

Writing Messages

The XITMFUNC WRITELOG function is not supported. Instead, the address of a message service routine is passed to the exit as part of the parameter list. To issue a message, call this routine using standard linkage conventions. Provide in register 1 the address of an 81-byte field in the form:

CL1'message_severity',CL80'message_text'

See the "Overview of Messages" chapter in the Cisco IOS for S/390 Prefixed Messages manual for a list of the message severities.

Tracing

The XITMFUNC TRACE function is not supported. A trace entry is written at entry to and return from each exit program. No facility exists for exit programs to write trace entries to the Cisco IOS for S/390 internal trace table.

Setting Return Values

The XITMSET macro is not supported. Where appropriate, the exit parameter lists can be updated directly by the exit program. It is important to note that, unlike TCPX0001 and TCPX0002, multiple exit programs can be run at each exit point. The value returned in general register 15 (return code 1) determines whether subsequent exit(s) will be called at that entry point. The value returned in the return code field in the parameter list (return code 2) determines whether the request is allowed or rejected. Set this field to a non-zero value to cause the request to be rejected.


Note If the return code 2 value is non-zero on entry to the exit, it indicates that another exit program at that exit point determined to reject the request. Setting the return code 2 field from a non-zero value to a zero will effectively reverse the decision of a previous exit. Use care in setting the return code 2 value.

Exit Naming Conventions

There is no restriction placed on the name of the exit program(s).

Dependencies Between Exits

As with TCPX0001 and TCPX0002, exit programs should not assume that an earlier exit point was called, or that it was successful. The exit context word is provided at each exit point to allow the exit program to communicate across exit points.

hometocprevnextglossaryfeedbacksearchhelp
Copyright 1989-1998 © Cisco Systems Inc.