WS_MIB - BEA TUXEDO System Management Information Base for Workstations
#include <fml32.h> #include <tpadm.h>
The System/T MIB defines the set of classes through which a /WS group (one WSL and its associated WSH processes) may be managed.
WS_MIB(5) should be used in combination with the generic MIB manual page MIB(5) to format administrative requests and interpret administrative replies. Requests formatted as described in MIB(5) using classes and attributes described in this manual page may be used to request an administrative service using any one of a number of existing ATMI interfaces in an active application. WS_MIB(5) consists of the following classes:| WS_MIB Classes | |
|---|---|
| Class Name | Attributes |
| T_WSH | /WS Handler |
| T_WSL | /WS Listener |
Each class description section has four subsections:
As described above, each class that is a part of this MIB is
defined below in four parts. One of these parts is the attribute
table. The attribute table is a one-page reference guide to the
attributes within a class and how they may used by
administrator's, operator's and general user's to interface with
an application. There are five components to each attribute
description in the attribute tables; name, type, permissions,
values and default. Each of these components is discussed in MIB(5).
MIB(5) defines the
generic TA_FLAGS attribute which is a long valued
field containing both generic and component MIB specific flag
values. At this time, there are no
WS_MIB(5)
specific flag values defined.
The field tables for the attributes described in this manual
page are found in the file udataobj/tpadm relative to
the root directory of the TUXEDO System software installed on the
system. The directory ${TUXDIR}/udataobj should be
included by the application in the colon separated list specified
by the FLDTBLDIR environment variable and the field
table name tpadm should be included in the comma
separated list specified by the FIELDTBLS environment
variable.
Access to the header files and field tables for this MIB is being provided only on TUXEDO System/T 6.0 sites and later, both native and /WS.
The T_WSH class represents runtime attributes of
WSH client processes. These attribute values characterize /WS
statistics specific to a particular WSH client process. This
class is linked to the T_WSL class by the common key fields, TA_SRVGRP
and TA_SRVID. It is also linked to the T_CLIENT class
(see TM_MIB(5)) by the
common key field TA_WSHCLIENTID.
| WS_MIB(5): T_WSH Class Definition Attribute Table | ||||
|---|---|---|---|---|
| Attribute (See Note 1) | Type | Permissions | Values | Default |
| TA_CLIENTID( * ) | string | R--R--R-- | string[1..78] | N/A |
| TA_WSHCLIENTID( * ) | string | R--R--R-- | string[1..78] | N/A |
| TA_SRVGRP( * ) | string | R--R--R-- | string[1..30] | N/A |
| TA_SRVID( * ) | long | R--R--R-- | 1 <= num < 30,001 | N/A |
| TA_GRPNO( * ) | long | R--R--R-- | 1 <= num < 30,000 | N/A |
| TA_STATE( k ) | string | R-XR-XR-- | See T_CLIENT Class in TM_MIB(5) | |
| TA_LMID( * ) | string | R--R--R-- | LMID | N/A |
| TA_PID( * ) | long | R--R--R-- | 1 <= num | N/A |
| TA_NADDR | string | R--R--R-- | string[1..78] | N/A |
| TA_HWCLIENTS | long | R--R--R-- | 1 <= num < 32,767 | N/A |
| TA_MULTIPLEX | long | R--R--R-- | 1 <= num < 32,767 | N/A |
| TA_CURCLIENTS | long | R--R--R-- | 1 <= num < 32,767 | N/A |
| TA_TIMELEFT | long | R--R--R-- | 0 <= num | N/A |
| TA_ACTIVE | string | R--R--R-- | "{Y|N}" | N/A |
| TA_TOTACTTIME | long | R--R--R-- | 0 <= num | N/A |
| TA_TOTIDLTIME | long | R--R--R-- | 0 <= num | N/A |
| TA_CURWORK | long | R--R--R-- | 0 <= num | N/A |
| TA_FLOWCNT | long | R--R--R-- | 0 <= num | N/A |
| TA_NUMBLOCKQ | long | R--R--R-- | 0 <= num | N/A |
| TA_RCVDBYT | long | R--R--R-- | 0 <= num | N/A |
| TA_RCVDNUM | long | R--R--R-- | 0 <= num | N/A |
| TA_SENTBYT | long | R--R--R-- | 0 <= num | N/A |
| TA_SENTNUM | long | R--R--R-- | 0 <= num | N/A |
( k ) - GET key field
( * ) - GET/SET key, one or more required for SET operations
This class represents a specialization of the T_CLIENT class and as such represents certain attributes that are duplicated in the corresponding T_CLIENT objects. Attributes not listed that are included in the T_CLIENT class must be accessed via that class and are not available through the T_WSH class.
The T_WSL class represents configuration and
runtime attributes of WSL server processes configured to manage
/WS groups. These attribute values identify and characterize /WS
specific configuration attributes for WSL T_SERVER objects within
the application. This class is linked to the T_WSH class by the
common key fields, TA_SRVGRP and TA_SRVID.
| WS_MIB(5): T_WSL Class Definition Attribute Table | ||||
|---|---|---|---|---|
| Attribute | Type | Permissions | Values | Default |
| TA_SRVGRP( r )( * ) | string | ru-r--r-- | string[1..30] | N/A |
| TA_SRVID( r )( * ) | long | ru-r--r-- | 1 <= num < 30,001 | N/A |
| TA_GRPNO( k ) | long | r--r--r-- | 1 <= num < 30,001 | N/A |
| TA_STATE( k ) | string | rwxr-xr-- | See T_SERVER Class in TM_MIB(5) | |
| TA_LMID( k ) | string | R--R--R-- | LMID | N/A |
| TA_PID( k ) | long | R--R--R-- | 1 <= num | N/A |
| TA_DEVICE | string | rw-r--r-- | string[0..78] | N/A |
| TA_NADDR( r ) | string | rw-r--r-- | string[1..78] | N/A |
| TA_EXT_NADDR | string | rw-r--r-- | string[0..78] | "" |
| TA_KEEPALIVE | string | rwxr-xr-- | "{client|handler|both|none}" | "none" |
| TA_NETTIMEOUT | long | rwxr-xr-- | 0 <= num <= MAXLONG | 0 |
| TA_WSHNAME | string | rw-r--r-- | string[1..78] | "WSH" |
| TA_MINHANDLERS | long | rwxr-xr-- | 0 <= num < 256 | 0 |
| TA_MAXHANDLERS | long | rw-r--r-- | 0 <= num < 32,767 | See note 1. |
| TA_MULTIPLEX | long | rw-r--r-- | 1 <= num < 32,767 | 10 |
| TA_MINENCRYPTBIT | string | rwxrwx--- | { 0 | 40 | 128 } | 0 |
| TA_MAXENCRYPTBIT | string | rwxrwx--- | { 0 | 40 | 128 } | 128 |
| TA_MINWSHPORT | long | rwxr-xr-- | 0 <= num < 65,535 | 2048 |
| TA_MAXWSHPORT | long | rw-r--r-- | 0 <= num < 65,535 | 65,535. |
| TA_MAXIDLETIME | long | rwxr-xr-- | 0 <= num < 35,204,650 | 35,204,649 |
| TA_MAXINITTIME | long | rwxr-xr-- | 1 <= num < 32,767 | 60 |
| TA_CMPLIMIT | string | rwxr-xr-- | threshold | MAXLONG |
| TA_CLOPT | string | rwxr--r-- | string[0..128] | "-A" |
| TA_ENVFILE | string | rwxr--r-- | string[0..78] | "" |
| TA_GRACE | long | rwxr--r-- | 0 <= num | 0 |
| TA_MAXGEN | long | rwxr--r-- | 0 <= num < 256 | 1 |
| TA_RCMD | string | rwxr--r-- | string[0..78] | "" |
| TA_RESTART | string | rwxr--r-- | "{Y|N}" | "Y" |
| TA_SEQUENCE( k ) | long | rwxr--r-- | 1 <= num < 10,000 | >= 10,000 |
| T_WSL Class: LOCAL Attributes | ||||
|---|---|---|---|---|
| Attribute | Type | Permissions | Values | Default |
| TA_CURHANDLERS | long | R--R--R-- | 0 <= num | N/A |
| TA_HWHANDLERS | long | R--R--R-- | 0 <= num | N/A |
| TA_WSPROTO | long | R--R--R-- | 0 <= num | N/A |
| TA_SUSPENDED | string | R-XR-XR-- | "{NEW|ALL|NONE}" | N/A |
| TA_VIEWREFRESH | string | --X--X--- | "Y" | N/A |
( k ) - GET key field
( r ) - Required field for object creation (SET TA_STATE NEW)
( * ) - GET/SET key, one or more required for SET operations
"//host.name:port_number" "//#.#.#.#:port_number"
In the first of these formats, hostname is resolved to a TCP/IP host address at the time the address is bound using the locally configured name resolution facilities accessed via gethostbyname(3c). The "#.#.#.#" is the dotted decimal format where each # represents a decimal number in the range 0 to 255. Port_number is a decimal number in the range 0 to 65535. the hexadecimal representations of the string specified.
Note that the KEEPALIVE interval is an operating system parameter, so changing the value will affect any other applications that enable KEEPALIVE. Many platforms have a two hour default value that may be longer than desired.
This option is not available on all platforms. A userlog warning message will be generated if the KEEPALIVE option is specified but not available on the WSH's machine. If KEEPALIVE is requested but not available on a /WS client's machine, the setting will be silently ignored.
Limitation: This attribute value is not used for workstation clients running TUXEDO System /WS Release 6.1 or earlier.
Limitations: Runtime modifications to this attribute will not affect a running WSL server. Server specific options (i.e., those after a double-dash "--") may not be set and will not be returned.
Limitation: Runtime modifications to this attribute will not affect a running WSL server.
This class represents a specialization of the T_SERVER class and as such represents certain attributes that are duplicated in the corresponding T_SERVER objects. Attributes not listed that are included in the T_SERVER class must be accessed via that class and are not available through the T_WSL class.
There are two general types of errors that may be returned to the user when interfacing with WS_MIB(5). First, any of the three ATMI verbs ( tpcall(3c), tpgetrply(3c) and tpdequeue(3c)) used to retrieve responses to administrative requests may return any error defined for them. These errors should be interpreted as described on the appropriate manual pages.
If, however, the request is successfully routed to a system service capable of satisfying the request and that service determines that there is a problem handling the request, then failure may be returned in the form of an application level service failure. In these cases, tpcall(3c) and tpgetrply(3c) will return an error with tperrno set to TPESVCFAIL and return a reply message containing the original request along with TA_ERROR, TA_STATUS and TA_BADFLD fields further qualifying the error as described below. When a service failure occurs for a request forwarded to the system through the TMQFORWARD(5) server, the failure reply message will be enqueued to the failure queue identified on the original request (assuming the -d option was specified for TMQFORWARD).
When a service failure occurs during processing of an administrative request, the FML32 field TA_STATUS is set to a textual description of the failure, the FML32 field TA_ERROR is set to indicate the cause of the failure as indicated below. All error codes specified below are guaranteed to be negative.
The following diagnostic codes are returned in TA_ERROR to indicate successful completion of an administrative request. These codes are guaranteed to be non-negative.
The header files and field tables defined in this manual page are available on TUXEDO System/T release 5.0 and later. Fields defined in these headers and tables will not be changed from release to release. New fields may be added which are not defined on the older release site. Access to the /AdminAPI is available from any site with the header files and field tables necessary to build a request. The T_WSL and T_WSH classes are new with TUXEDO System/T release 6.0; therefore, local administration of WSL and WSH processes on earlier release sites via the /AdminAPI is not available. However, many of the administrative actions defined in this manual page are available for pre-release 6.0 sites if they are interoperating with a release 6.0 site. If sites of differing releases, both greater than or equal to release 6.0, are interoperating, then information on the older site is available for access and update as defined in the MIB manual page for that release and may be a subset of the information available in the later release.
The existing FML32 and ATMI functions necessary to support administrative interaction with TUXEDO System MIBs, as well as the header file and field table defined in this manual page, are available on all supported native and workstation platforms.
Following is a sequence of code fragments that deactivate a
/WS group in an orderly fashion using a combination of TM_MIB(5) and WS_MIB(5).
The field table tpadm must be available in the environment to have access to attribute field identifiers. This can be done at the shell level as follows:
$ FIELDTBLS=tpadm
$ FLDTBLDIR=${TUXDIR}/udataobj
$ export FIELDTBLS FLDTBLDIR
The following header files are included.
#include <atmi.h> #include <fml32.h> #include <tpadm.h>
The following code fragment sets the state of the /WS group to SUSpended. This disables the /WS group from accepting new connections from workstation clients and suspends all workstation clients that are currently part of the group. This code fragment and those that follow assume that the local variables ta_srvgrp and ta_srvid are already set to identify the /WS group with which we are working.
/* Allocate input and output buffers */
ibuf = tpalloc("FML32", NULL, 1000);
obuf = tpalloc("FML32", NULL, 1000);
/* Set MIB(5) attributes defining request type */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_WSL", 0);
/* Set WS_MIB(5) attributes */
Fchg32(ibuf, TA_SRVGRP, 0, ta_srvgrp, 0);
Fchg32(ibuf, TA_SRVID, 0, (char *)&ta_srvid, 0);
Fchg32(ibuf, TA_SUSPENDED, 0, "ALL", 0);
/* Make the request */
if (tpcall(".TMIB", (char *)ibuf, 0, (char **)&obuf, &olen, 0) 0) {
fprintf(stderr, "tpcall failed: %s\n", tpstrerror(tperrno));
if (tperrno == TPESVCFAIL) {
Fget32(obuf, TA_ERROR, 0,(char *)&ta_error, NULL);
ta_status = Ffind32(obuf, TA_STATUS, 0, NULL);
fprintf(stderr, "Failure: %ld, %s\n",
ta_error, ta_status);
}
/* Additional error case processing */
}
/* Copy the logical machine identifier for later use */
strcpy(ta_lmid, Ffind32(obuf, TA_LMID, 0, NULL));
Using the existing input buffer, simply change the class and operation and make a new request. We'll retrieve all T_WSH objects associated with the given T_WSL object key fields, ta_srvgrp and ta_srvid. Set the TA_FILTER attribute to limit the retrieval for efficiency.
/* Set MIB(5) attributes defining request type */
Fchg32(ibuf, TA_CLASS, 0, "T_WSH", 0);
Fchg32(ibuf, TA_OPERATION, 0, "GET", 0);
longval = TA_WSHCLIENTID;
Fchg32(ibuf, TA_FILTER, 0, (char *)&longval, 0);
/* Set WS_MIB(5) attributes */
Fchg32(ibuf, TA_LMID, 0, ta_lmid, 0);
/* Allocate a separate output buffer to save the TA_WSHCLIENTID values */
wshcltids = tpalloc("FML32", NULL, 1000);
/* Make the request */
tpcall(".TMIB", (char *)ibuf, 0, (char **)&wshcltids, &olen, 0);
/* See how many we got */
Fget32(wshcltids, TA_OCCURS, 0,(char *)&wshcltcnt, NULL);
Use the retrieved TA_WSHCLIENTID values to get a list of associated TA_CLIENTID values for workstation clients in this /WS group.
/* Initialize request buffer */
Finit32(ibuf, Fsizeof32(ibuf));
/* Set MIB(5) attributes defining request type */
Fchg32(ibuf, TA_OPERATION, 0, "GET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_CLIENT", 0);
longval = TA_CLIENTID;
Fchg32(ibuf, TA_FILTER, 0, (char *)&longval, 0);
longval = TA_WSHCLIENTID;
Fchg32(ibuf, TA_FILTER, 1, (char *)&longval, 0);
/* Set WS_MIB(5) attributes */
Fchg32(ibuf, TA_LMID, 0, ta_lmid, 0);
Fchg32(ibuf, TA_WSC, 0, "Y", 0);
if (wshcltcnt == 1) {
/* Since only 1, use it as key field. */
Fchg32(ibuf, TA_WSHCLIENTID, 0,
Ffind32(wshcltids, TA_WSHCLIENTID, 0, NULL));
}
/* Allocate output buffer to save TA_CLIENTID/TA_WSHCLIENTID values */
cltids = tpalloc("FML32", NULL, 1000);
/* Make the request */
tpcall(".TMIB", (char *)ibuf, 0, (char **)&cltids, &olen, 0);
/* See how many we got */
Fget32(cltids, TA_OCCURS, 0,(char *)&cltcnt, NULL);
/* Eliminate unassociated clients if necessary */
if (wshcltcnt > 1) {
for (i=(cltcnt-1); i >= 0 ;i--) {
p = Ffind32(cltids, TA_WSHCLIENTID, i, NULL);
for (j=0; j < wshcltcnt ;j++) {
q = Ffind32(wshcltids, TA_WSHCLIENTID, j, NULL);
if (strcmp(p, q) == 0) {
break; /* This client is in our group */
}
}
if (j >= wshcltcnt) {
/* Client not found, delete it from list */
Fdel32(cltids, TA_CLIENTID, i);
Fdel32(cltids, TA_WSHCLIENTID, i);
cltcnt--;
}
}
}
Use the retrieved TA_CLIENTID values to notify workstation clients in this /WS group that they should logoff.
notstr = tpalloc("STRING", NULL, 100);
(void)strcpy(notstr, "Please logoff now!");
/* Now loop through affected
clients and suspend/notify them */
for (i=0; i < cltcnt ;i++) { p = Ffind32(cltids, TA_CLIENTID, i, NULL);
/* Notify the client to logoff */
tpconvert(p, (char *)&ci, TPCONVCLTID);
tpnotify(&ci, notptr, 0, 0); }
Use the retrieved TA_CLIENTID values to deactivate any remaining workstation clients in this /WS group. Note that those that are already gone will return an error on the SET that we will ignore.
/* Initialize request buffer */
Finit32(ibuf, Fsizeof32(ibuf));
/* Set MIB(5) attributes defining request type */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_CLIENT", 0);
Fchg32(ibuf, TA_STATE, 0, "DEAd", 0);
/* Now loop through affected clients and deactivate them */
for (i=0; i < cltcnt ;i++)
{ p = Ffind32(cltids, TA_CLIENTID, i, NULL);
Fchg32(ibuf,TA_CLIENTID, 0, p);
}
/* Make the request */
tpcall(".TMIB", (char *)ibuf, 0, (char **)&obuf, &olen, 0); }
Now deactivate the T_WSL object. This will automatically deactivate any associated active T_WSH objects.
/* Set MIB(5) attributes defining request type */
Fchg32(ibuf, TA_OPERATION, 0, "SET", 0);
Fchg32(ibuf, TA_CLASS, 0, "T_WSL", 0);
Fchg32(ibuf, TA_STATE, 0, "INActive", 0);
/* Set WS_MIB(5) attributes */
Fchg32(ibuf, TA_SRVGRP, 0, ta_srvgrp, 0);
Fchg32(ibuf, TA_SRVID, 0, (char *)&ta_srvid, 0);
/* Make the request */
tpcall(".TMIB", (char *)ibuf, 0, (char**)&obuf, &olen, 0);
${TUXDIR}/include/tpadm.h, ${TUXDIR}/udataobj/tpadm,
Fintro(3fml),
Fadd32(3fml),
Fchg32(3fml),
Ffind32(3fml),
tpalloc(3c),
tprealloc(3c),
tpcall(3c),
tpacall(3c),
tpgetrply(3c),
tpenqueue(3c),
tpdequeue(3c),
MIB(5),
TM_MIB(5)
BEA TUXEDO
Administrator's Guide
BEA TUXEDO Programmer's
Guide