You must write a primary and secondary exit for each system that is to be controlled by the INMC security exit when connected by an INMC link.
The exits must be assembled and linked to form an executable load module and must be placed in a load library accessible to your product region during execution.
When the exit is called, standard assembler language linkage conventions apply.
When invoked, the exit operates under your product region's main task, and therefore extensive processing, I/O operations, or WAITs issued within the exit can impact the overall performance of the system.
One INMC primary exit is available for any one system and must be identified by using the following command:
SYSPARMS INMCEX01=exitname
where exitname is the load module of the primary exit. This command must be included in the INIT initialization procedure or issued as a command before a link is activated.
When an INMC link is activated, INMC attempts to load a copy of the exit. If the load fails for any reason it is regarded as a security exposure and the link is disabled automatically. The exit should be written to be reentrant if possible since a load is issued for each link that is activated.
One INMC secondary exit is available for any one system and must be identified by the command:
SYSPARMS INMCEX02=exitname
where exitname is the load module of the secondary exit. This command must be included in the INIT initialization procedure or issued as a command before a link is activated.
When an INMC link is activated, INMC attempts to load a copy of the exit. If the load fails for any reason the primary exit of the remote system is notified that no secondary exit exists in this system. In this case the remote primary exit decides whether to allow link activation.
The name of the load module that forms either the primary or secondary INMC exit can be changed dynamically at any time by reissuing the SYSPARMS command to identify the new exit name. Either exit can be disabled at any time by issuing the following commands:
SYSPARMS INMCEX01=NONE
SYSPARMS INMCEX02=NONE
Both primary and secondary exits are called using conventional linkage. The registers on entry to either exit contain values as follows:
|
Register |
Value |
|---|---|
|
0 |
Unpredictable |
|
1 |
Address of parameter list |
|
2 |
Unpredictable |
|
3 |
Unpredictable |
|
4 |
Unpredictable |
|
5 |
Unpredictable |
|
6 |
Unpredictable |
|
7 |
Unpredictable |
|
8 |
Unpredictable |
|
9 |
Unpredictable |
|
10 |
Unpredictable |
|
11 |
Unpredictable |
|
12 |
Unpredictable |
|
13 |
Address of standard save area |
|
14 |
Product region return address |
|
15 |
Entry point of INMC primary or secondary exit |
The exit must save registers on entry and perform standard save area linkage. On return, registers must be restored and control returned to the address held in Register 14 on entry.