Vic

The best list to use for questions concerning the Communications Server IP 
component (even the Communications Server SNA component given that 
Enterprise Extender is so often the subject) is the IBMTCP-L list:

For IBMTCP-L subscribe / signoff / archive access instructions,
send email to lists...@vm.marist.edu with the message: INFO IBMTCP-L

-

Your precise answer is at the end of the post.

If there were such an API, it would be one of the options of either the 
getsockopt() call or the getibmsockopt() call and the equivalent in languages 
other than C.

You may be aware that the matter of TCP keep-alive is not quite as 
straightforward as it might be. To be sure I cover the topic correctly - as 
best 
I can - I'll quote what is said in the CS IP Configuration Reference regarding 
the value in which you are interested, the one that shows up in the NETSTAT 
CONFIG output as DefaultKeepALive specified by the PROFILE TCPCONFIG 
statement INTERVAL parameter:

<quote>

INTERVAL default_keepalive_interval

The default TCP keepalive interval for applications that enable the 
SO_KEEPALIVE socket option and do not override the interval using the 
TCP_KEEPALIVE socket option. The range is 0 - 35 791 minutes, and the 
default is 120. A value of 0 disables the keepalive function, so that sockets 
for which SO_KEEPALIVE is specified do not perform TCP keepalive. In this 
case, sockets specifying a specific interval using TCP_KEEPALIVE continue to 
send keepalive probes.

TCP keepalive probes end TCP connections after a period of inactivity. TCP 
keepalive is disabled by default for a connection, but can be enabled by 
issuing the SO_KEEPALIVE or TCP_KEEPALIVE socket options. The 
TCP_KEEPALIVE socket option enables the application to specify the keepalive 
probe interval, while the SO_KEEPALIVE socket option uses 
default_keepalive_interval as the interval.

After the interval has expired, TCP sends a single keepalive probe to the peer. 
If the TCP_KEEPALIVE socket option is not used to specify the probe interval, 
a total of ten probes are then sent at 75-second intervals if no response is 
received from the peer. If no response has been received 75 seconds after 
the last probe, the connection is reset. If TCP_KEEPALIVE is used to specify 
the keepalive probe interval, the number of probes and the interval between 
the probes might differ depending on the interval specified.

</quote>

It was only after I read the last sentence that I realised the topic was even 
more complicated than I had initially supposed!

OK, INTERVAL sets a node-wide "keepalive" interval for those TCP sockets 
which have decided to call upon the "keepalive" service by requesting it by 
means of the setsockopt() SO_KEEPALIVE option. The default is for the 
service to be disabled. The value of the SO_KEEPALIVE option can be obtained 
by means of the getsockopt() call.

Note that, even if the program requests that the service is enabled, it can 
effectively be disabled on a node-wide basis, by setting "0" as the value for 
the INTERVAL parameter.

But there is also the TCP_KEEPALIVE option of the setsockopt() and 
getsockopt() calls. This requests the service and sets a value for the 
interval. 
Moreover it sets up a regime for conducting the keepalive testing should it be 
called upon - that's the unexpected complication in that last sentence!

<quote>

TCP_KEEPALIVE

Use this option to set or determine whether a socket-specific timeout value 
(in seconds) is to be used in place of a configuration-specific value whenever 
keep alive timing is active for that socket. When activated, the socket-
specified timer value remains in effect until respecified by SETSOCKOPT or 
until the socket is closed. See the z/OS Communications Server: IP 
Programmer's Guide and Reference for more information about the socket 
option parameters.  

</quote>

The "configuration-specific value" is the value of the INTERVAL parameter 
when the service is enabled using the SO_KEEPALIVE option rather than the 
TCP_KEEPALIVE option.

For reasons best known to the manual authors the section you need now to 
consult for the specifics of how the TCP_KEEPALIVE option works is tucked 
away as the last section of the last chapter of the CS IP Programmer's Guide 
and Reference manual!

When you have read this section you may decide that the TCP_KEEPALIVE 
option better satisfies your needs that the mechanism associated with the 
PROFILE TCPCONFIG statement INTERVAL parameter and the SO_KEEPALIVE 
option.

-

Finally, to answer your question, I am not aware of an easy-to-use API which 
yields the value configured on the PROFILE TCPCONFIG statement INTERVAL 
parameter. It is possible to extract the value as an SNMP manager accessing 
the MIB variable ibmMvsTcpKeepAliveTimer, 1.3.6.1.4.1.2.6.19.2.2.2.4. If 
there's an easier way, I hope someone will jump in with the answer. I suspect 
some technique able to extract the value from the output of the NETSTAT 
CONFIG output might be the easiest.

Chris Mason

On Mon, 1 Jun 2009 12:16:28 -0500, Vic Petrone <v...@bell.net> wrote:

>Is there a programming interface to extract the DefaultKeepALive value that 
is
>stored the TCP Configuration Table?
>
>This is the same value that the TSO NETSTAT CONFIG command displays.
>
>Thanks,
>Vic

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to