On Thursday, 09/21/2006 at 10:49 AST, Peter Rothman 
<[EMAIL PROTECTED]> wrote:
> We have an application (no source) that uses IUCV to communicate with
> TCPIP.
> I want to trace the data that gets sent back and forth so I can 
potentially
> change this to use Rexx sockets which we will be able to support.
> 
> I opened a Q&A ETR - they pointed me to ETRACE, TRSOURCE and CPTRACE.
> 
> I looked at these but am having difficulty figuring out how they 'fit
> together' so I can get what I want.
> I also used the TCPIP IUCV trace option but in this case I did not get
> anything displayed to the console.

Try:
   NETSTAT TRACEONLY userid ENDTRACEONLY
   NETSTAT OBEY MORETRACE IUCV SOCKET

The TRACEONLY is needed to avoid tracing all the apps.

But from an application server perspective CP TRACE IUCV CMD D G0 will 
tell you what function call was issued.
 00 - Query             0A - Accept 
 01 - Test Message      0B - Connect 
 02 - Retrieve Buffer           0C - Declare Buffer 
 03 - Describe                  0D - Quiesce 
 04 - Send                      0E - Resume 
 05 - Receive                   0F - Sever 
 06 - Reply                     10 - Set Mask 
 07 - Test Completion           11 - Set Control Mask 
 08 - Reject                    12 - IPOLL 
 09 - Purge 

The base register+offset points to the IPARML.  Trace trace will hit AFTER 
the instruction runs, so the IPARML shows the *output* of the IUCV. While 
I'm at it, output IPRCODEs are as follows:

hex      decimal
00           00            OK
01      01      Invalid path id
02      02      Path quisced - SEND not allowed
03      03      Function pending / Msglimit exceeded
04      04      Priority msg not allowed on this path
05      05      Receive buffer too short to contain msg
06      06      Fetch protection exception on SEND buffer
07      07      Addresion exception on SEND buffer
08      08      Message id found, but msg class or path id invalid
09      09      Message has been purged
0A      10      Buffer length is negative / Invalid buffer length
0B      11      Resource or gateway not found
0C      12      Partner not enabled for IUCV 
0D      13      Your MAXCONN exceeded
0E      14      Partner MAXCONN exceeded
0F      15      Not authorized to connect
10      16      Invalid IUCV system service name
11      17      Invalid function code
12      18      Invalid Msglimit
13      19      Previously declared buffer is still in use
14      20      Originator severed path
15      21      Parameter list data not allowed on this path
16      22      Send/Answer buffer list invalid
17      23      Buffer list element length is negative
18      24      Total length .NE. sum of buffer element lengths
19      25      PRMMSG option invalid with ANSLIST option
1A      26      Buffer list not on doubleword boundary
1B      27      Answer list not on doubleword boundary
1C      28      No control buffer
1D      29      Not authorized for another user
1E      30      APPC/VM function specified on IUCV path
1F      31      IUCV function specified on APPC/VM path
20      32      Not valid from CONNECT state
21      33      Not valid from SEND state
22      34      Not valid from RECEIVE state
23      35      Not valid from CONFIRM state
24      36      Not valid from SEVER state
25      37      Connection established with SYNCLVL=NONE
26      38      Invalid IPSENDOP field
27      39      Invalid connection extension plist length
28      40      Invalid locally known LU name
29      41      Invalid mode name
2F      47      Invalid security subfields in FMH-5
30      48      Partner system service does not support this function
31      49      Partner does not allow SECURITY=NONE
32      50      Invalid allocation data
34      52      No APPCPASS directory statement
35      53      Invalid tpname length
36      54      Invalid tpname
38      56      WAIT=YES specified on function for this machine
39      57      Invalid PIP length
3A      58      Invalid communications server area length
3D      61      Not authorized to specify an alternate user ID
3E      62      Buffers overlap: Control, EIB, IB extension
3F      63      Invalid LUWID length
40      64      Invalid FQ LU name in LUWID
43      67      Both CONFIRM and SYNCPT specified
56      86      Control buffer needed for SYNCPT
59      89      For SYNCPT, resource not found or cannot be reached
5B      91      Paging or storage error on SEND area
5C      92      Paging or storage error on RECEIVE area or buffer
5D      93      Paging or storage error on ANSWER area
5E      94      Paging or storage error on REPLY area
60      96      SEND too large for routing via ISFC
61      97      ANSWER too large for routing via ISFC

All of this information is distilled from the CP Programming Reference. 
The actual data in the buffers is documented in the TCP/IP Programming 
Reference.

My IUCV apps use R10 with offset 0 to point to the IPARML, so my trace 
looks like CP TRACE IUCV CMD D G0 T0.40;baseA

If you need to stop the trace BEFORE the IUCV, then you have to figure out 
the instruction ahead of the IUCV instruction and stop there.

BTW, it is possible to create a data-neutral IUCV passthru "sniffer" that 
just relays the data and logs it.

Alan Altmark
z/VM Development
IBM Endicott

Reply via email to