RFC 2051
Definitions of Managed Objects for APPC using SMIv2
RFC 2051: Definitions of Managed Objects for APPC using SMIv2 💖
Okay bestie, let's get into RFC 2051! 🎀 It came out in October 1996 from the Network Working Group, and it's a Standards Track doc, so this one is an actual Internet standard spec. 🧚 M. Allen from Wall Data Inc. wrote it, along with B. Clouston and Z. Kielczewski from Cisco Systems, W. Kwan from Jupiter Technology Inc., and B. Moore from IBM. The title block doesn't list anything it obsoletes or updates, so it stands on its own. ✨
Status of this Memo 📋
This doc specifies an Internet standards track protocol for the Internet community, and it's asking for discussion and suggestions for improvements. 💅 If you want the current standardization state and status of this protocol, check the latest edition of the "Internet Official Protocol Standards" (STD 1). Also, distribution of this memo is unlimited, so share it with everyone! 🦋
Table of Contents 📚
1. Introduction ........................................... 1
2. The SNMP Network Management Framework .................. 1
3. Overview ............................................... 2
3.1 APPC MIB structure ...................................... 4
4. Definitions ............................................ 10
5. Acknowledgments ........................................ 123
6. References ............................................. 123
7. Security Considerations ................................ 123
8. Authors' Addresses ..................................... 124
1. Introduction 🌸
Okay so this memo defines a piece of the Management Information Base (MIB) for network management protocols in the Internet community. 🫶 Specifically, it defines objects for managing the configuration, monitoring, and controlling of network devices with APPC (Advanced Program-to-Program Communications) capabilities. It's all about the SNA LU6.2 protocols, and that's the vibe. 🔥
2. The SNMP Network Management Framework 🧚
The SNMP Network Management Framework has several components, and for this spec, the ones that matter are the SMI and related documents [2, 3, 4]. 🎀 Those define the mechanisms used for describing and naming objects for management, so they're the foundation everything else builds on. 💜
The Framework lets you define new objects for experimentation and evaluation, which is lowkey so cool. 🌈
3. Overview 🦋
This doc identifies the proposed set of objects for managing the configuration, monitoring, and controlling of devices with APPC capabilities. ✨ APPC is the part of SNA that supports peer-to-peer communication, and it gives applications an interface to talk to each other. In this document, we describe the LU6.2 protocol-specific managed objects. 💖
This document covers both dependent and independent LU 6.2 protocols. 👑
A dependent LU needs help from an SSCP to activate an LU 6.2 session. 🙈 An independent LU can activate an LU 6.2 session all on its own, no SSCP needed. If the agent supports dependent LU 6.2 only, then the SNA NAU MIB, RFC 1666 [7], is used instead to represent those objects. 🍓
Local LUs and partner LUs connect with each other using sessions. 💅 You can set up multiple different sessions between LUs, and each one has characteristics defined by Modes. Session limits within a defined Mode get negotiated between the local and partner LUs using a protocol called CNOS (Change Number of Sessions). It's giving negotiation energy 🤝
Transaction Programs (TPs) are the applications that use sessions to talk to each other. ✨ Multiple TPs can use the same session, but not at the same time. A single usage of a session is called a conversation. A session can stay active for a long time, while a conversation can come up and down based on how the TPs use it. 🌸
Common Programming Interface - Communications (CPI-C) is a standard API (Application Programming Interface) for APPC and OSI TP, and TPs use it to access conversations. 🎀 Lots of the CPI-C objects in this MIB are relevant to both APPC and OSI TP, but the intention is to manage APPC products only. 🫶
SNA names like LU names, CP names, mode names, and COS names can be padded with space characters in SNA formats. 🦋 Those space characters are insignificant. For example, in a BIND RU, a mode name of "#INTER" with a length of 6 is identical to a mode name of "#INTER " with a length of 8. 🍓 But in this MIB, insignificant space characters are not included by the agent. Using the mode name from that example, the agent returns a length of 6 and the string "#INTER" with no space characters for appcModeAdminModeName, no matter how it shows up in the BIND RU or in internal storage. 💜 The lone exception is the all blank mode name. For that one, the agent returns a length of 8 and the string " ", which is 8 space characters. 😭
When an SNA name is functioning as a table index, an agent shall treat trailing space characters as significant. 🔥 So if a Management Station requests the objects from a row with index "#INTER ", the agent won't match it to the row with index "#INTER". 🙈 Since an agent has no insignificant space characters in any of its table indices, the only reason a Management Station would include them is to start GetNext processing at a chosen point in a table. For example, a GetNext request with index "M " would start retrieval from a table at the first row with an 8-character index beginning with M or a letter after M. 👑
The SNA/APPC terms and overall architecture are documented in [1], [5], and [6]. 📚
Here are the highlights of the management functions the APPC MIB module supports: 🌈
- Activating and deactivating statistics keeping and counting.
- Activating and deactivating tracing.
- Issuing CNOS processing verbs/commands for INITIALIZE_SESSION_LIMIT, CHANGE_SESSION_LIMIT, and RESET_SESSION_LIMIT.
- Monitoring of parameters related to local LU, partner LU, modes, TPs, and CPI-C side information.
- Deactivating sessions.
- Monitoring of LU6.2-specific session operational parameters and statistics, historical information about abnormally terminated sessions, and information about APPC sessions that are transported by APPN HPR.
- Monitoring of conversation operational parameters and historical information about abnormally terminated sessions.
And now the not-so-fun part: this MIB module does not support: 💀
- Modifying APPC defaults.
- Creating and deleting partner LUs, modes, TPs, and CPI-C side information tables.
- Modifying parameters related to local LU, partner LU, modes, TPs, and CPI-C side information.
- Activating or deactivating local LUs.
- Activating or deactivating partner LUs.
- Activating or deactivating conversations.
- Activating or deactivating Transaction Programs.
- Activating sessions.
- Traps
3.1. APPC MIB Structure 🧩
The APPC MIB module has six groups of objects, and honestly, the organization is iconic. 👑
- appcGlobal - objects related to global defaults and controls. CNOS processing objects are also part of this group.
- appcLu - objects related to LU6.2-specific local and partner LU, mode definition, monitoring, and control.
- appcTp - objects related to transaction program definition, monitoring, and control.
- appcSession - objects related to LU6.2-specific session monitoring.
- appcConversation - objects related to conversation monitoring.
- appcCPIC - objects related to CPI-C side information.
We'll go through these groups in more detail below. 💖
Most of the LU6.2 objects are organized into two types of tables: the Admin and Oper tables. 🦋
The "Admin" table has read-only objects that hold default or expected configuration values. 🫶 This MIB doesn't create or modify configuration values. The "Oper" table has objects that give current operational values, like state values or negotiated parameters, for dynamic or configured objects. Dynamic objects are created by the APPC system using one of the templates in the "Admin" table. Configured objects usually have a one-to-one relationship between "Admin" and "Oper" entries. 🌸 But some "Admin" values may have changed since the object became operational, so the "Oper" values might no longer be based on the "Admin" values. The "Admin" entry could even be deleted! 😭 For example, some implementations let you delete a mode definition (appcModeAdminEntry) even while an active session is using that mode, and appcModeOperEntry still exists. ✨ Where it makes sense, the "Oper" table may include initial starting values for objects that can be reconfigured while they're running. How the "Admin" values get changed or deleted is outside the scope of this MIB. 🔥
3.1.1. appcGlobal group 🌍
The appcGlobal group has the following tables and objects: 📋
- appcCntrlAdminGroup
This group of objects controls whether certain statistics and counters (like session counters and RSCV collection) should be maintained by the Agent. 💅 It also supports turning tracing on and off through objects in this group. These objects are for Agent implementations that want this level of operational control, and they are optional. 🎀
The objects in this group represent the desired state, and the actual operational values live in appcCntlOperGroup. 🦋
These objects can be generated initially, after SNA service starts up, by the Agent using information from the Node configuration file. 🧚 A Management station can modify object values after that. The modifications can be saved in the Node configuration file for the next startup (that is, restart or next initialization) of SNA service, but this doc doesn't define the mechanism for that function. 🍓
- appcCntrlOperGroup
This group of objects monitors whether certain statistics and counters (like session counters and RSCV collection) are maintained by an Agent. 🌸 It also lets you monitor tracing activity through objects in this group.
This table represents the actual operational state. These states can be modified via objects in the appcCntrlAdminGroup. 💜
- appcGlobalObjects
These objects describe global information like the APPC system start time, the control point name, and default LU 6.2 configuration values. ✨ The default configuration info covers mode name, LU, and maximum logical record size. 🫶
- appcCnosControl
These objects let you issue CNOS commands for a local and partner LU pair and a Mode. 🔥 They support these CNOS commands: INITIALIZE_SESSION_LIMIT, CHANGE_SESSION_LIMIT, and RESET_SESSION_LIMIT. 👑
A Management Station can modify the objects in this group. 💖 This group holds the objects for the CNOS command parameters that a Management Station needs to set. After setting the parameters of a CNOS command, the Management Station sets the control object (appcCnosCommand) to ask the Agent to issue the appropriate CNOS command. 🌈
3.1.2. appcLu group 💖
okay so the appcLu group is where the local LUs and their partners live 🎀 it has six tables, and they're all about who's talking to who and how 🦋
- appcLluAdminTable 📝: this one holds the config for each specific LU6.2 local LU. Think max number of sessions and compression settings ✨
- appcLluOperTable 🏃♀️: the live operational version of the local LU info. It tracks the max sessions, how many sessions are actually active right now, and the compression settings 🔥
- appcLuPairAdminTable 🤝: this one is the config for a local LU and a partner LU as a pair. It covers security info and whether parallel sessions are allowed 💅
Some setups give every local LU its own partner definitions. In that case you can get several rows with the same appcLuPairAdminParLuName, each with a different appcLuPairAdminLocLuName 🌸 If the partner definitions apply to all local LUs instead, then appcLuPairAdminLocLuName gets set to '*ALL' 👑
- appcLuPairOperTable ⚡: the runtime version for each partner/local LU pair. Same vibe as before: security info and parallel session support 🫶
Even though the Admin table entries could be global across every local LU in a Node, an entry in this Oper table is always tied to one local LU 💜
A row shows up here as soon as there's an active session between the local and partner LU 🦋 If both LUs in a pair are local, you get two entries 👯♀️
- appcModeAdminTable 🎀: this holds the config for Modes. The juicy bits are the mode name and the max session limit 🍓
Same deal as the pair table: if Mode definitions are tied to each local and partner LU pair, you can have several rows with the same appcModeAdminModeName, each with its own appcModeAdminLocLuName and appcModeAdminParLuName 🧚 If the Mode definitions apply to all local and/or all partner LUs, then appcModeAdminLocLuName and/or appcModeAdminParLuName are set to '*ALL' ✨
- appcModeOperTable 🔥: the live Mode info for each local/partner LU pair. It covers the mode name and max session limit, just like the admin one 💅
The Admin table entries could be global to all local and partner LUs in a Node, but Oper table entries are always tied to one local and partner LU pair 🌈
A row appears here as soon as there's an active session between the local and partner LU for this Mode. And yep, two entries show up when both LUs in the pair are local 👑
3.1.3. appcTp group ✨
the appcTp group is smaller, just one table 🧚
- appcTpAdminTable 🎀: the config for transaction programs (TPs). You get the TP name and the TP operation, which tells you how the TP gets started 🚀
Same pattern as before: if TP definitions are tied to each local LU, you can have several rows with the same appcTpAdminTpName, each with a different appcTpAdminLocLuName 💖 If the TP definition applies to all local LUs, then appcTpAdminLocLuName is set to '*ALL' 🌸
There's no appcTpOperTable 💀 Runtime info about TPs is usually product-specific (a process Id, for example), and most of what you'd want is already in the conversation tables anyway 🫶
3.1.4. appcSession group 🦋
the appcSession group has four tables, and they're all about the sessions themselves 🌈
- appcActSessTable ⚡: info about LU6.2 sessions. You get the PCID and the pacing counts 💅
- appcSessStatsTable 📊: statistics for LU 6.2 sessions. It has counters for bytes and RUs sent and received 🔥
- appcHistSessTable 🕰️: history for APPC sessions that ended abnormally. The good stuff here is the unbind type and sense data 😭
- appcSessRtpTable 🚄: info about LU 6.2 sessions being carried over High Performance Routing. You'll see the NCEID and TCID here 👑
3.1.5. appcConversation group 💜
the appcConversation group has two tables, and it's all about conversations 🗣️
- appcActiveConvTable 🏃♀️: info about conversations that are currently active. You get the state and the type ✨ An Agent creates an entry when the conversation starts and removes it when the conversation ends 🫶
- appcHistConvTable 🕰️: history for conversations that ended abnormally. How many entries you keep, and for how long, depends on the Agent implementation 🤷♀️ The good stuff here is the sense data and log data 🌸
3.1.6. appcCPIC group 🎀
the appcCPIC group has two tables for CPI-C stuff 🧚
- appcCpicAdminTable 📝: CPI-C side info. You get the symbolic destination name and the partner LU name 💅
If CPI-C definitions are tied to each local LU, you can have several rows with the same appcCpicAdminSymbDestName, each with a different appcCpicAdminLocLuName 🌈 If the CPI-C definition applies to all local LUs, then appcCpicAdminLocLuName is set to '*ALL' 👑
- appcCpicOperTable ⚡: the runtime version of CPI-C info. It has the same symbolic destination name and partner LU name as the admin table 🦋
4. Definitions 💅
Here's the MIB module itself, copied exactly 🫶
APPC-MIB DEFINITIONS ::= BEGIN
IMPORTS
DisplayString, InstancePointer, TEXTUAL-CONVENTION, DateAndTime
FROM SNMPv2-TC
mib-2, Counter32, Gauge32, Integer32, TimeTicks,
OBJECT-TYPE, MODULE-IDENTITY
FROM SNMPv2-SMI
snanauMIB
FROM SNA-NAU-MIB
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF;
appcMIB MODULE-IDENTITY
LAST-UPDATED "9512150000Z"
ORGANIZATION "IETF SNA NAU MIB Working Group"
CONTACT-INFO
"
Michael Allen
Wall Data Inc.
P.O.Box 1120
Duval, WA 98019, USA
Tel: 1 206 844 3505
E-mail: mallen@hq.walldata.com
Bob Clouston
Cisco Systems
7025 Kit Creek Road
P.O. Box 14987
Research Triangle Park, NC 27709, USA
Tel: 1 919 472 2333
E-mail: clouston@cisco.com
Zbigniew Kielczewski
Cisco Systems
3100 Smoketree Court
Raleigh, NC 27604, USA
Tel: 1 919 871 6326
E-mail: zbig@cisco.com
William Kwan
Jupiter Technology Inc.
200 Prospect Street
Waltham, MA 02254, USA
Tel: 1 617 894 9300, x423
E-mail: billk@jti.com
Bob Moore
IBM Corporation
800 Park Offices Drive
CNMA/664
P.O. Box 12195
Research Triangle Park, NC 27709, USA
Tel: 1 919 254 4436
E-mail: remoore@ralvm6.vnet.ibm.com
"
DESCRIPTION
"This is the MIB module for objects used to manage network
devices with APPC capabilities."
::= { snanauMIB 3 }
appcObjects OBJECT IDENTIFIER ::= { appcMIB 1 }
appcGlobal OBJECT IDENTIFIER ::= { appcObjects 1 }
appcLu OBJECT IDENTIFIER ::= { appcObjects 2 }
appcTp OBJECT IDENTIFIER ::= { appcObjects 3 }
appcSession OBJECT IDENTIFIER ::= { appcObjects 4 }
appcConversation OBJECT IDENTIFIER ::= { appcObjects 5 }
appcCPIC OBJECT IDENTIFIER ::= { appcObjects 6 }
-- *********************************************************************
-- Objects in this MIB are used to model an SNA device that supports
-- APPC LUs.
-- Following is the overall organization of the MIB.
--
-- 1. APPC Global Objects - global values, defaults,
-- controls (including CNOS)
-- 2. APPC Defined Lu Tables - Admin and Oper
-- 3. APPC Defined LU Pair Tables - Admin and Oper
-- 4. APPC Mode Tables - Admin and Oper
-- 5. APPC TP Tables - Admin only
-- 6. APPC Session Tables - Active, Stats, History, RTP
-- 7. APPC Conversation Table - Active, History
-- 8. APPC CPIC side info - Admin and Oper
-- *********************************************************************
-- *********************************************************************
-- Textual Convention
-- ---------------------------------------------------------------------
SnaSenseData ::= TEXTUAL-CONVENTION
STATUS current
DESCRIPTION
"To facilitate their display by a Management Station, sense
data objects in the MIB are represented as DisplayStrings of
size 8. Eight '0' characters indicates that no sense data
identifying an SNA error condition is available."
SYNTAX DisplayString (SIZE (8))
-- *********************************************************************
-- APPC Control Objects
-- ---------------------------------------------------------------------
-- The following objects allow:
-- * the collection of APPC Session information counters
-- to be started and stopped
-- * the collection of APPC Session RSCVs
-- to be started and stopped
-- * the collection of APPC tracing information to be started and
-- stopped
--
-- These objects are for implementations that wish to provide
-- this level of operational control. This group is
-- conditionally mandatory in the conformance section of the MIB.
--
-- *********************************************************************
-- *********************************************************************
-- Control Admin
-- These objects contain the desired states for the controls.
-- The actual states are in the Oper objects.
-- *********************************************************************
appcCntrlAdminGroup OBJECT IDENTIFIER ::= { appcGlobal 1 }
appcCntrlAdminStat OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates the desired state of statistics collection:
notActive collection of counters is not active.
active collection of counters is active.
When this object is set to notActive, all of the entries are
removed from the appcSessStatsTable."
::= { appcCntrlAdminGroup 1 }
okay so the admin side is where we get to be the boss 💅 These three objects are all read-write, which means they're the knobs you're allowed to turn. 🎛️
appcCntrlAdminRscv OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates the desired state of RSCV information collection:
notActive collection of route selection control vectors
is not active.
active collection of route selection control vectors
is active."
::= { appcCntrlAdminGroup 2 }
appcCntrlAdminTrace OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Indicates the desired state of tracing:
notActive collection of tracing information is not active
active collection of tracing information is active"
::= { appcCntrlAdminGroup 3 }
appcCntrlAdminTraceParm OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..128))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the parameter to be used in conjunction with
activating tracing. The actual content is implementation
dependent."
::= { appcCntrlAdminGroup 4 }
# -- *********************************************************************
Okay, so appcCntrlAdminRscv and appcCntrlAdminTrace are both on/off switches (notActive or active), and appcCntrlAdminTraceParm is a string of up to 128 characters that goes along with tracing. The content of that string is up to the implementation, so it's not spelled out here. 🧚
Now the Control Oper side. These are the read-only objects that show what the controls are actually doing right now. The admin values are what you asked for, and these are what you've got. 🌸
-- Control Oper
-- These objects contain the actual states of the controls.
-- *********************************************************************
appcCntrlOperGroup OBJECT IDENTIFIER ::= { appcGlobal 2 }
appcCntrlOperStat OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the current collection options in effect:
notActive collection of counters is not active.
active collection of counters is active.
Statistical entries are present in the appcSessStatsTable
only when the value of this object is 'active'."
::= { appcCntrlOperGroup 1 }
appcCntrlOperStatTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Time since the appcCntrlOperStat object last changed.
This time is in hundreds of a second."
::= { appcCntrlOperGroup 2 }
appcCntrlOperRscv OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the current collection options in effect:
notActive collection of route selection control vectors
is not active.
active collection of route selection control vectors
is active."
::= { appcCntrlOperGroup 3 }
appcCntrlOperRscvTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Time since the appcCntrlOperRscv object last changed.
This time is in hundreds of a second."
::= { appcCntrlOperGroup 4 }
appcCntrlOperTrace OBJECT-TYPE
SYNTAX INTEGER {
notActive(1),
active(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the current state of tracing:
notActive collection of tracing information is not active.
active collection of tracing information is active."
::= { appcCntrlOperGroup 5 }
appcCntrlOperTraceTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Time since the appcCntrlOperTrace object last changed.
This time is in hundreds of a second."
::= { appcCntrlOperGroup 6 }
appcCntrlOperTraceParm OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..128))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the parameter used in conjunction with activating
tracing. The actual content is implementation dependent."
::= { appcCntrlOperGroup 7 }
Every "Time" object here is a TimeTicks value that counts how long it's been since its matching object last changed, in hundredths of a second. ⏱️ Super handy for seeing how long a setting has been sitting there. ✨
Next up are the APPC global settings, and this is where it gets juicy. 🍓
-- ******************************************************************
--
-- APPC global settings
--
-- ******************************************************************
appcGlobalObjects OBJECT IDENTIFIER ::= { appcGlobal 3 }
appcUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time, in hundredths of a second, since the
APPC portion of the system was last reinitialized."
::= { appcGlobalObjects 1 }
appcDefaultModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the mode name to be used under the following
conditions:
When an incoming BIND request contains a mode name not
defined at the local node. The parameters defined for
this mode are used for the inbound implicit mode
capability.
When an APPC program issues an [MC_]ALLOCATE,
[MC_]SEND_CONVERSATION, or CNOS verb, or when a CPI-C
program issues an Allocate (CMALLC) call,
specifying a mode name not defined at the local node. The
parameters defined for this mode are used for the outbound
implicit mode capability.
This mode name must match a defined entry in the
appcModeAdminTable."
::= { appcGlobalObjects 2 }
appcDefaultLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the name of the local LU that is to serve as the
default LU. This is the default LU to which are routed inbound
BIND requests that exclude the secondary LU name. This field
is from 1 to 17 characters in length, including a period (.)
which separates the NetId from the NAU name if the NetId is
present. This local LU name must match a defined entry in the
appcLluAdminTable."
::= { appcGlobalObjects 3 }
appcDefaultImplInbndPlu OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether or not inbound implicit partner LU support
is enabled. The following values are defined:
no - Specifies that inbound implicit partner LU support
is disabled, which means that an incoming bind that
specifies a partner LU that is not defined at the
local node will be rejected.
yes - Specifies that inbound implicit partner LU support
is enabled, which provides the capability to accept
an incoming BIND request that contains a partner LU
name that is not defined at the local node."
::= { appcGlobalObjects 4 }
appcDefaultMaxMcLlSndSize OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum size of a logical record to be used for
a mapped conversation when sending data to either the inbound
or outbound implicit partner LU. This size is the maximum
number of bytes in a single logical record, as indicated in the
LL field of the record. The default value is 32767.
Note that this object does not limit the maximum size that an
application program can supply on the Send Data call for a
mapped conversation."
::= { appcGlobalObjects 5 }
appcDefaultFileSpec OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..80))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local file specification that is to be searched by the
APPC attach manager when no DEFINE_TP verb has been issued
for the TP name received on an incoming attach. In this
case, the attach manager will attempt to start a program
whose file name is the same as the incoming TP name. If
found, the program is loaded. If not found, the attach is
rejected.
The value '*' indicates that the normal search path for
executable programs is to be used for locating an undefined
transaction program.
A null string indicates that there is no default file
specification for undefined transaction programs."
::= { appcGlobalObjects 6 }
appcDefaultTpOperation OBJECT-TYPE
SYNTAX INTEGER {
other(1),
queuedOperatorStarted(2),
queuedOperatorPreloaded(3),
queuedAmStarted(4),
nonqueuedAmStarted(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies how the program will be started.
other - Specifies that the default TP operation is none of
the methods specified below. It may be a
product-specific method.
queuedOperatorStarted - Specifies that one version of the
program will be run at a time. If an incoming
attach arrives and the program has not been started
yet, APPC will issue a message to the operator to
start the specified program. Subsequent attaches
that arrive while the program is active will be
queued.
queuedOperatorPreloaded - Specifies that one version
of the program will be run at a time. If an
incoming attach arrives and the program has not
been started yet, the Attach will be rejected. The
APPC attach manager determines that a TP has
started upon reception of an APPC RECEIVE_ALLOCATE
verb, or a CPI-C Accept_Conversation (CMACCP) or
Specify_Local_TP_Name (CMSLTP) call. No message is
sent to the operator. Subsequent attaches that
arrive while the program is active are queued.
queuedAmStarted - Specifies that one version of the
program will be run at a time and will be started
by the APPC attach manager. Subsequent attaches
that arrive while the program is active will be
queued.
nonqueuedAmStarted - Specifies that multiple copies of
the program will be run at a time and will be
started by the APPC attach manager. "
::= { appcGlobalObjects 7 }
appcDefaultTpConvSecRqd OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether or not conversation security will be used
for default TPs.
no - Specifies that the incoming attach does not have to
contain security information.
yes - Specifies that the incoming attach must contain
valid authentication information (e.g., user ID and
password)."
::= { appcGlobalObjects 8 }
okay bestie, the local LU stuff is about to get 💅✨
appcLocalCpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the name of the local control point. This field is
from 0 to 17 characters in length, including a period (.) which
separates the NetId from the NAU name if the NetId is present.
A null string indicates that the value is unknown."
::= { appcGlobalObjects 9 }
appcActiveSessions OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the total number of active APPC sessions supported
by this implementation. Sessions for which both LUs are local
are counted twice."
::= { appcGlobalObjects 10 }
appcActiveHprSessions OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the total number of active HPR APPC sessions."
::= { appcGlobalObjects 11 }
okay the CNOS control section is literally iconic 🎀
-- ******************************************************************
-- APPC CNOS control
--
-- This group contains objects for issuing APPC Change-Number-of-Session
-- (CNOS) commands to a specific mode. Specifically, the commands
-- supported are:
-- INITIALIZE_SESSION_LIMIT
-- CHANGE_SESSION_LIMIT
-- RESET_SESSION_LIMIT
--
--
-- ******************************************************************
appcCnosControl OBJECT IDENTIFIER ::= { appcGlobal 4 }
appcCnosCommand OBJECT-TYPE
SYNTAX INTEGER {
initSesslimit(1),
changeSesslimit(2),
resetSesslimit(3)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the CNOS command or verb to issue. First set the
values of the particular CNOS parameter objects (from the range
{ appcCnosControl 2 } through { appcCnosControl 8 }) that apply
to the CNOS command to be executed, set the three CNOS target
objects ({ appcCnosControl 9 } through { appcCnosControl 11 }),
then set this object to the command to be executed.
Here is the list of parameter objects that must be set for each
of the CNOS commands:
INIT_SESSION_LIMIT -
appcCnosMaxSessLimit
appcCnosMinCwinLimit
appcCnosMinClosLimit
appcCnosTargetLocLuName
appcCnosTargetParLuName
appcCnosTargetModeName
CHANGE_SESSION_LIMIT -
appcCnosMaxSessLimit
appcCnosMinCwinLimit
appcCnosMinClosLimit
appcCnosResponsible
appcCnosTargetLocLuName
appcCnosTargetParLuName
appcCnosTargetModeName
RESET_SESSION_LIMIT -
appcCnosResponsible
appcCnosDrainPart
appcCnosForce
appcCnosTargetLocLuName
appcCnosTargetParLuName
appcCnosTargetModeName
"
::= { appcCnosControl 1 }
appcCnosMaxSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the maximum value that the local LU is to use,
during CNOS processing, for the session limit. The local LU,
as a target LU, will negotiate a higher session limit it
receives in the CNOS request down to this maximum value. The
local LU, as a source LU, will restrict the session limit it
sends in a CNOS request to a value less than or equal to this
maximum value.
If set (i.e., greater than 0), this overrides the maximum
session limit defined in the appcModeAdminTable.
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies to the INITIALIZE_SESSION_LIMIT and
CHANGE_SESSION_LIMIT verbs."
DEFVAL { 0 }
::= { appcCnosControl 2 }
appcCnosMinCwinLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the default minimum contention winner sessions
limit.
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies to the INITIALIZE_SESSION_LIMIT and
CHANGE_SESSION_LIMIT verbs."
DEFVAL { 0 }
::= { appcCnosControl 3 }
appcCnosMinClosLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the default minimum contention loser sessions limit.
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies to the INITIALIZE_SESSION_LIMIT and
CHANGE_SESSION_LIMIT verbs."
DEFVAL { 0 }
::= { appcCnosControl 4 }
appcCnosDrainSelf OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies whether the local LU is draining its conversations
for this mode. When a mode session limit is reset (via a CNOS
RESET_SESSION_LIMIT request), the local LU could be set to
process all queued conversations before deactivating all of the
sessions (using the SNA Bracket Initiation Stopped or BIS
protocol).
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies only to the RESET_SESSION_LIMIT verb."
DEFVAL { no }
::= { appcCnosControl 5 }
appcCnosDrainPart OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies whether the partner LU is draining its conversations
for this mode. When a mode session limit is reset (via a CNOS
RESET_SESSION_LIMIT request), the partner LU could be set to
process all queued conversations before deactivating all of the
sessions (using the SNA Bracket Initiation Stop or BIS
protocol).
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies only to the RESET_SESSION_LIMIT verb."
DEFVAL { yes }
::= { appcCnosControl 6 }
appcCnosResponsible OBJECT-TYPE
SYNTAX INTEGER {
source(1),
target(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies which LU is responsible for selecting and
deactivating sessions as a result of a change that decreases
the session limit or the maximum number of contention winner
sessions for the source or target LU. If no session need to be
deactivated, this parameter is ignored.
source - specifies that the source (local) LU is
responsible. The target (partner) LU
cannot negotiate this value.
target - specifies that the target (partner) LU is
responsible. The target LU can negotiate
this value to source.
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies to the RESET_SESSION_LIMIT and
CHANGE_SESSION_LIMIT verbs."
DEFVAL { source }
::= { appcCnosControl 7 }
appcCnosForce OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies whether the local LU should force the resetting of
the session limit when certain error conditions occur that
prevent the successful exchange of CNOS request and reply.
This parameter should be set to the desired value before
setting the command (appcCnosCommand).
This parameter applies only to the RESET_SESSION_LIMIT verb."
DEFVAL { no }
::= { appcCnosControl 8 }
appcCnosTargetLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The SNA name of the local LU to which the CNOS command is
to be applied. This field is from 1 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name if the NetId is present.
This object should be set to the desired value before setting
the command (appcCnosCommand).
This parameter applies to all CNOS verbs."
::= { appcCnosControl 9 }
appcCnosTargetParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The SNA name of the partner LU to which the CNOS command is
to be applied. This field is from 1 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name if the NetId is present.
This object should be set to the desired value before setting
the command (appcCnosCommand).
This parameter applies to all CNOS verbs."
::= { appcCnosControl 10 }
appcCnosTargetModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Specifies the mode name to which the CNOS command is to be
applied.
This object should be set to the desired value before setting
the command (appcCnosCommand).
This parameter applies to all CNOS verbs."
::= { appcCnosControl 11 }
next up is the LU information zone, and the tables are about to be SO organised 🦋
-- *********************************************************************
-- APPC LU information
-- ---------------------------------------------------------------------
-- Local LU
-- Partner LU
-- Mode
-- *********************************************************************
-- *********************************************************************
-- APPC Local LU
--
-- The entries in the following tables provide information for
-- independent and dependent LU 6.2.
--
-- *********************************************************************
-- *********************************************************************
-- APPC Local LU Admin Table
-- Objects in this table contain default or expected configuration
-- values for local 6.2 LUs.
-- *********************************************************************
appcLluAdminTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcLluAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC Local LU Admin Table."
::= { appcLu 1 }
okay bestie, this part is the local LU admin table going full main character 🎀 we get the entry, the ten columns, and then the start of the oper table (the one for live operational values) 💅
appcLluAdminEntry OBJECT-TYPE
SYNTAX AppcLluAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about local APPC LUs. "
INDEX { appcLluAdminName }
::= { appcLluAdminTable 1 }
AppcLluAdminEntry ::= SEQUENCE {
appcLluAdminName DisplayString,
appcLluAdminDepType INTEGER,
appcLluAdminLocalAddress OCTET STRING,
appcLluAdminSessLimit Integer32,
appcLluAdminBindRspMayQ INTEGER,
appcLluAdminCompression INTEGER,
appcLluAdminInBoundCompLevel INTEGER,
appcLluAdminOutBoundCompLevel INTEGER,
appcLluAdminCompRleBeforeLZ INTEGER,
appcLluAdminAlias DisplayString
}
appcLluAdminName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the local LU. This field is from 1 to
17 characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present."
::= { appcLluAdminEntry 1 }
appcLluAdminDepType OBJECT-TYPE
SYNTAX INTEGER {
dependent(1),
independent(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value identifies whether the LU is dependent or
independent."
::= { appcLluAdminEntry 2 }
appcLluAdminLocalAddress OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (1))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local address for this LU is a byte with a value ranging
from 0 to 254. For dependent LUs, this value ranges from 1 to
254; for independent LUs this value is always 0."
::= { appcLluAdminEntry 3 }
appcLluAdminSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of sessions supported by this LU."
::= { appcLluAdminEntry 4 }
appcLluAdminBindRspMayQ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether or not the local LU, as the sender of a BIND
request, allows a partner partner LU to delay sending the BIND
response if the partner LU cannot process the BIND request
immediately."
::= { appcLluAdminEntry 5 }
appcLluAdminCompression OBJECT-TYPE
SYNTAX INTEGER {
prohibited(1),
required(2),
negotiable(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether compression is supported. The local LU uses
this value for negotiation during session activation
(SNA BIND).
prohibited - specifies that no compression is to be used.
required - specifies that compression is required.
negotiable - specifies that the usage of compression
is to be negotiated between the LUs. The
level of compression is also negotiated."
::= { appcLluAdminEntry 6 }
appcLluAdminInBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
inbound data. The local LU uses this value in conjunction with
appcLluAdminCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger number bits used for the code, the more
storage space is required for the dictionary, but
the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcLluAdminEntry 7 }
appcLluAdminOutBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
outbound data. The local LU uses this value in conjunction
with appcLluAdminCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcLluAdminEntry 8 }
appcLluAdminCompRleBeforeLZ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether run-length encoding is to be applied to the
data before applying Lempel-Ziv-like compression. The local LU
uses this value for negotiation during session activation (SNA
BIND). This parameter is only supported if LZ compression is
used."
::= { appcLluAdminEntry 9 }
appcLluAdminAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the local LU. If not known or
not applicable, this object contains a zero-length
string."
::= { appcLluAdminEntry 10 }
now we're on to the oper table 🦋 it's the one that holds the current operational stuff (state values, negotiated params, the whole vibe of what's happening right now for those local 6.2 LUs) 💜
-- *********************************************************************
-- APPC Local LU Oper Table
-- Objects in this table contain current operational values, such
-- as state values or negotiated parameters, for local 6.2 LUs.
-- *********************************************************************
appcLluOperTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcLluOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC Local LU Operational Table."
::= { appcLu 2 }
appcLluOperEntry OBJECT-TYPE
SYNTAX AppcLluOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Information about local APPC LUs."
INDEX { appcLluOperName }
::= { appcLluOperTable 1 }
AppcLluOperEntry ::= SEQUENCE {
appcLluOperName DisplayString,
appcLluOperDepType INTEGER,
appcLluOperLocalAddress OCTET STRING,
appcLluOperSessLimit Integer32,
appcLluOperBindRspMayQ INTEGER,
appcLluOperCompression INTEGER,
appcLluOperInBoundCompLevel INTEGER,
appcLluOperOutBoundCompLevel INTEGER,
appcLluOperCompRleBeforeLZ INTEGER,
appcLluOperAlias DisplayString,
appcLluOperActiveSessions Gauge32
}
appcLluOperName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the local LU. This field is from 1 to
17 characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present."
::= { appcLluOperEntry 1 }
appcLluOperDepType OBJECT-TYPE
SYNTAX INTEGER {
dependent(1),
independent(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value identifies whether the LU is dependent or
independent."
::= { appcLluOperEntry 2 }
appcLluOperLocalAddress OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (1))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local address for this LU is a byte with a value ranging
from 0 to 254. For dependent LUs, this value ranges from 1 to
254; for independent LUs this value is always 0."
::= { appcLluOperEntry 3 }
appcLluOperSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of sessions supported by this LU."
::= { appcLluOperEntry 4 }
appcLluOperBindRspMayQ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether or not the local LU, as the sender of a BIND
request, allows a partner LU to delay sending the BIND
response if the partner LU cannot process the BIND request
immediately."
::= { appcLluOperEntry 5 }
appcLluOperCompression OBJECT-TYPE
SYNTAX INTEGER {
prohibited(1),
required(2),
negotiable(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether compression is supported. The local LU uses
this value for negotiation during session activation (SNA
BIND).
prohibited - specifies that no compression is to be used.
required - specifies that compression is required.
negotiable - specifies that the usage of compression
is to be negotiated between the LUs. The
level of compression is also negotiated."
::= { appcLluOperEntry 6 }
okay bestie, the compression knobs are up next 🎀✨ here's the MIB, copied exactly so nothing gets lost 💅
appcLluOperInBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
inbound data. The local LU uses this value in conjunction with
appcLluOperCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcLluOperEntry 7 }
appcLluOperOutBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
outbound data. The local LU uses this value in conjunction
with appcLluAdminCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcLluOperEntry 8 }
appcLluOperCompRleBeforeLZ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether run-length encoding is to be applied to the
data before applying Lempel-Ziv-like compression. The local LU
uses this value for negotiation during session activation (SNA
BIND). This parameter is only supported if LZ compression is
used."
::= { appcLluOperEntry 9 }
appcLluOperAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the local LU. If not known or
not applicable, this object contains a zero-length
string."
::= { appcLluOperEntry 10 }
appcLluOperActiveSessions OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the total number of active APPC sessions for this
LU."
::= { appcLluOperEntry 11 }
-- *********************************************************************
-- APPC LU Pair Admin Table
-- Objects in this table contain default or expected configuration
-- values for 6.2 LU pairs. An LU pair consists of a local LU and
-- a partner LU, which may or may not be local.
-- *********************************************************************
appcLuPairAdminTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcLuPairAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC Partner LU administrative Table"
::= { appcLu 3 }
appcLuPairAdminEntry OBJECT-TYPE
SYNTAX AppcLuPairAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC Partner LU Information Table.
It is indexed by the local and partner LU Names."
INDEX { appcLuPairAdminLocLuName,
appcLuPairAdminParLuName }
::= { appcLuPairAdminTable 1 }
AppcLuPairAdminEntry ::= SEQUENCE {
appcLuPairAdminLocLuName DisplayString,
appcLuPairAdminParLuName DisplayString,
appcLuPairAdminParLuAlias DisplayString,
appcLuPairAdminSessLimit Integer32,
appcLuPairAdminSessSec INTEGER,
appcLuPairAdminSecAccept INTEGER,
appcLuPairAdminLinkObjId InstancePointer,
appcLuPairAdminParaSessSup INTEGER
}
appcLuPairAdminLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU to which this partner LU
definition applies. This field is from 1 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name if the NetId is present.
The reserved value '*ALL' indicates that the partner LU
definition applies to all local LUs, and not just to a single
local LU."
::= { appcLuPairAdminEntry 1 }
appcLuPairAdminParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the partner LU.
This field is from 1 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name if the NetId is present."
::= { appcLuPairAdminEntry 2 }
appcLuPairAdminParLuAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the partner LU. If not known or
not applicable, this object contains a zero-length
string."
::= { appcLuPairAdminEntry 3 }
appcLuPairAdminSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of sessions supported by this partner LU."
::= { appcLuPairAdminEntry 4 }
appcLuPairAdminSessSec OBJECT-TYPE
SYNTAX INTEGER {
required(1),
accepted(2),
notAllowed(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the type of session-level security information that
a local LU will accept on BIND requests it receives from the
partner LU.
required - Specifies that the BIND request must carry
session level verification information that
will be verified upon receipt.
accepted - Specifies that the BIND request may carry
session level verification information that
will be verified upon receipt.
notAllowed - Specifies that the BIND request must not carry
session level verification information."
::= { appcLuPairAdminEntry 5 }
appcLuPairAdminSecAccept OBJECT-TYPE
SYNTAX INTEGER {
none(1),
conversation(2),
alreadyVerified(3),
persistentVerification(4),
aVandpV(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies support for different levels of access security
information in ATTACH requests received from this partner LU.
Possible values are:
none - No access security information will be
accepted on allocation requests (ATTACH) from
this LU.
conversation
- Allocation requests will not be accepted that
include already verified or persistent
verification indicators. Accept
conversation-level access security
information, which must include both a user
Id and password, and may also include a
profile.
alreadyVerified
- Allocation requests will be accepted that
include already verified indicators.
Persistent verification indicators will not
be accepted.
persistentVerification
- Allocation requests will be accepted that
include persistent verification indicators.
Already verified indicators will not be
accepted.
aVandpV - Allocation requests will be accepted that
include already verified or persistent
verification indicators."
::= { appcLuPairAdminEntry 6 }
appcLuPairAdminLinkObjId OBJECT-TYPE
SYNTAX InstancePointer
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the link associated with this partner LU. This
value points to the row in the table containing information on
the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC
MIB module). This object may be NULL if the link is not
specified or if a link is not applicable (as for APPN-level
nodes)."
::= { appcLuPairAdminEntry 7 }
appcLuPairAdminParaSessSup OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Defined Parallel Sessions Supported.
Indicates whether or not multiple sessions between the partner
LU and its associated local LU are permitted. Parallel session
support also indicates that Change Number of Sessions (CNOS)
will be used to negotiate session limits between the LUs."
::= { appcLuPairAdminEntry 8 }
-- *********************************************************************
-- APPC LU Pair Oper Table
-- Objects in this table contain current operational values, such
-- as state values or negotiated parameters, for 6.2 LU pairs.
-- *********************************************************************
appcLuPairOperTable OBJECT-TYPE ✨
okay bestie, this is the live LU pair table 🦋 the admin one was the plan, this one is what's actually happening right now. it only has rows for pairs with an active or pending session, and if both LUs in a pair are local you get TWO rows, which is so iconic 💅
appcLuPairOperTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcLuPairOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of active partner/local LU pairs. Two entries are
present in the table when both LUs in a pair are local."
::= { appcLu 4 }
appcLuPairOperEntry OBJECT-TYPE
SYNTAX AppcLuPairOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry representing one partner/local LU pair."
INDEX { appcLuPairOperLocLuName,
appcLuPairOperParLuName }
::= { appcLuPairOperTable 1 }
AppcLuPairOperEntry ::= SEQUENCE {
appcLuPairOperLocLuName DisplayString,
appcLuPairOperParLuName DisplayString,
appcLuPairOperParLuAlias DisplayString,
appcLuPairOperSessLimit Integer32,
appcLuPairOperSessSec INTEGER,
appcLuPairOperSecAccept INTEGER,
appcLuPairOperLinkObjId InstancePointer,
appcLuPairOperParaSessSup INTEGER,
appcLuPairOperParaSessSupLS INTEGER,
appcLuPairOperState INTEGER
}
appcLuPairOperLocLuName OBJECT-TYPE 🌸
this one is the local LU's SNA name, 1 to 17 characters, and the period counts when there's a NetId in front. bonus tea: if it matches appcLluOperName, those two rows are talking about the same local LU 🫶
appcLuPairOperLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present.
If this object has the same value as appcLluOperName,
then the two entries being indexed apply to the same
resource (specifically, to the same local LU)."
::= { appcLuPairOperEntry 1 }
appcLuPairOperParLuName OBJECT-TYPE 🧚
same vibe as the local one, but for the partner LU. also 1 to 17 characters with that optional NetId period 💜
appcLuPairOperParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the partner LU.
This field is from 1 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name if the NetId is present."
::= { appcLuPairOperEntry 2 }
appcLuPairOperParLuAlias OBJECT-TYPE 🎀
this is the local nickname for the partner. if nobody knows it or it doesn't apply, it's just an empty string, zero characters, no drama 🙈
appcLuPairOperParLuAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the partner LU. If not known or
not applicable, this object contains a zero-length
string."
::= { appcLuPairOperEntry 3 }
appcLuPairOperSessLimit OBJECT-TYPE 🔥
the max number of sessions this partner LU can handle. simple, but it's the ceiling for the whole pair 👑
appcLuPairOperSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of sessions supported by this partner LU."
::= { appcLuPairOperEntry 4 }
appcLuPairOperSessSec OBJECT-TYPE 🔐
okay, security at the BIND stage, and this one is about what the local LU will accept from the partner. there are three moods: required (the BIND has to bring verification info and it gets checked), accepted (it can bring it, and if it does, it gets checked), and notAllowed (no verification info allowed at all, period) 💀
appcLuPairOperSessSec OBJECT-TYPE
SYNTAX INTEGER {
required(1),
accepted(2),
notAllowed(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the type of security information that a local LU
will accept on BIND requests it receives from the partner LU.
required - Specifies that the BIND request must carry
session level verification information that
will be verified upon receipt.
accepted - Specifies that the BIND request may carry
session level verification information that
will be verified upon receipt.
notAllowed - Specifies that the BIND request must not carry
session level verification information."
::= { appcLuPairOperEntry 5 }
appcLuPairOperSecAccept OBJECT-TYPE 🦋
this is the ATTACH side of security, and it's giving layers. the local LU can flat out refuse everything (none), take only plain conversation-level credentials (a user Id and password, maybe a profile too) (conversation), accept already-verified stuff (alreadyVerified), accept persistent verification (persistentVerification), or take both the already-verified and persistent kinds (aVandpV). the rules are exact, so read them carefully bestie 🫶
appcLuPairOperSecAccept OBJECT-TYPE
SYNTAX INTEGER {
none(1),
conversation(2),
alreadyVerified(3),
persistentVerification(4),
aVandpV(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies support for different levels of security acceptance
information in ATTACH requests received from this partner LU.
Possible values are:
none - No access security information will be
accepted on allocation requests (ATTACH) from
this LU.
conversation
- Allocation requests will not be accepted that
include already verified or persistent
verification indicators. Accept
conversation-level access security
information, which must include both a user
Id and password, and may also include a
profile.
alreadyVerified
- Allocation requests will be accepted that
include already verified indicators.
Persistent verification indicators will not
be accepted.
persistentVerification
- Allocation requests will be accepted that
include persistent verification indicators.
Already verified indicators will not be
accepted.
aVandpV - Allocation requests will be accepted that
include already verified or persistent
verification indicators."
::= { appcLuPairOperEntry 6 }
appcLuPairOperLinkObjId OBJECT-TYPE 🔗
this points at the link row this partner is hanging off of, like a row in the sdlcLSAdminTable from the SNA DLC MIB module. it's allowed to be NULL when there's no link specified, or when a link just doesn't apply, which is the case for APPN-level nodes 🌈
appcLuPairOperLinkObjId OBJECT-TYPE
SYNTAX InstancePointer
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the link associated with this partner LU. This
value points to the row in the table containing information on
the link instance. (e.g., the sdlcLSAdminTable of the SNA DLC
MIB module). This object may be NULL if the link is not
specified or if a link is not applicable (as for APPN-level
nodes)."
::= { appcLuPairOperEntry 7 }
appcLuPairOperParaSessSup OBJECT-TYPE ⭐
parallel sessions, yes or no. if it's yes, the pair can run multiple sessions at once between the partner and its local LU, and CNOS is the thing that negotiates the session limits between them. main character energy 👑
appcLuPairOperParaSessSup OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Active Parallel Sessions Supported.
Indicates whether or not multiple session between the partner
LU and its associated local LU are permitted. Parallel
session support also indicates that Change Number of Sessions
(CNOS) will be used to negotiate session limits between the
LUs."
::= { appcLuPairOperEntry 8 }
appcLuPairOperParaSessSupLS OBJECT-TYPE 🍓
this is the "last starting value" version of the parallel sessions flag. it's the initial value the local LU proposed the last time that capability got negotiated, which happens when the very first session gets bound between the local LU and its partner 🧚
appcLuPairOperParaSessSupLS OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Active Parallel Sessions Supported - last starting value.
This object represents the initial value proposed by the local
LU the last time this capability was negotiated, i.e., when
the first session was bound between the local LU and its
partner."
::= { appcLuPairOperEntry 9 }
appcLuPairOperState OBJECT-TYPE 💜
last but not least, the current vibe of the pair. it's inactive if there's no active or pending session between the LUs, and active if there is one 🌸
appcLuPairOperState OBJECT-TYPE
SYNTAX INTEGER {
inactive (1),
active (2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The value identifies the current operational state of this LU
pair:
inactive (1) - no active or pending session exists
between the LUs.
active (2) - an active or pending session exists
between the LUs."
::= { appcLuPairOperEntry 10 }
appcModeAdminTable OBJECT-TYPE 🌈
now we're on to modes, and this section is all about the default or expected config values for session modes. quick heads up: any mode that actually has live sessions shows up in the appcModeOperTable instead, so the admin table is more like the plan than the reality 🎀
-- *********************************************************************
-- APPC Mode Admin Table
-- Objects in this table contain default or expected configuration
-- values for session modes.
-- Modes that have active sessions appear in the appcModeOperTable.
-- *********************************************************************
appcModeAdminTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcModeAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC Mode Table"
::= { appcLu 5 }
appcModeAdminEntry OBJECT-TYPE
SYNTAX AppcModeAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC Mode Information Table."
INDEX { appcModeAdminLocLuName,
appcModeAdminParLuName,
appcModeAdminModeName }
::= { appcModeAdminTable 1 }
AppcModeAdminEntry ::= SEQUENCE {
appcModeAdminLocLuName DisplayString,
appcModeAdminParLuName DisplayString,
appcModeAdminModeName DisplayString,
appcModeAdminCosName DisplayString,
appcModeAdminSessEndTpName DisplayString,
appcModeAdminMaxSessLimit Integer32,
appcModeAdminMinCwinLimit Integer32,
appcModeAdminMinClosLimit Integer32,
appcModeAdminConWinAutoActLmt Integer32,
appcModeAdminRecvPacWinSz Integer32,
appcModeAdminSendPacWinSz Integer32,
appcModeAdminPrefRecvRuSz Integer32,
appcModeAdminPrefSendRuSz Integer32,
appcModeAdminRecvRuSzUpBnd Integer32,
appcModeAdminSendRuSzUpBnd Integer32,
appcModeAdminRecvRuSzLoBnd Integer32,
appcModeAdminSendRuSzLoBnd Integer32,
appcModeAdminSingSessReinit INTEGER,
appcModeAdminCompression INTEGER,
appcModeAdminInBoundCompLevel INTEGER,
appcModeAdminOutBoundCompLevel INTEGER,
appcModeAdminCompRleBeforeLZ INTEGER,
appcModeAdminSyncLvl INTEGER,
appcModeAdminCrypto INTEGER
}
appcModeAdminLocLuName OBJECT-TYPE 🦋
this is the local LU that the mode definition applies to. same 1 to 17 character deal with the optional NetId period. the magic word here is '*ALL', which means the mode applies to every local LU on the SNA node named by appcLocalCpName, not just one of them 💅
appcModeAdminLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU to which this mode definition
applies. This field is from 1 to 17 characters in length,
including a period (.) which separates the NetId from the
NAU name if the NetId is present.
The reserved value '*ALL' indicates that the mode definition
applies to all local LUs for the SNA node identified by
appcLocalCpName, and not just to a single local LU."
::= { appcModeAdminEntry 1 }
appcModeAdminParLuName OBJECT-TYPE 🌸
the partner-side twin of the last one. same length rules, and '*ALL' shows up here too, meaning the mode covers every partner LU on the node named by appcModeAdminLocLuName, not only a single partner 🫶
appcModeAdminParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the partner LU to which this mode definition
applies. This field is from 1 to 17 characters in length,
including a period (.) which separates the NetId from the
NAU name if the NetId is present.
The reserved value '*ALL' indicates that the mode definition
applies to all partner LUs for the SNA node identified by
appcModeAdminLocLuName, and not just to a single partner LU."
::= { appcModeAdminEntry 2 }
appcModeAdminModeName OBJECT-TYPE 🧚
the mode name is the one that defines the characteristics for a group of sessions, so think of it as the vibe card for a batch of sessions. it's 1 to 8 characters, and it's allowed to be blank, which means 8 space characters 🎀
appcModeAdminModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the mode name. A mode defines the characteristics
for a group of sessions. The mode name can be blank (8
space characters). "
::= { appcModeAdminEntry 3 }
appcModeAdminCosName OBJECT-TYPE
Okay bestie, picking up right where we left off, so this is the COS name bit 💅. This object is read-only and current, and it tells you the class of service name tied to this mode. If the implementation doesn't do COS names at all, you just get back an empty string 🫶.
appcModeAdminSessEndTpName OBJECT-TYPE
Next up is the TP that gets invoked when a session using this mode goes down or ends ✨. It's a DisplayString, 0 to 64 characters, and if there's no TP defined it's just a null string 🌸. Now the fun part: if the TP name is all displayable EBCDIC characters, it maps straight over to ASCII. BUT registered TP names always start with a non-displayable EBCDIC code point (x'3F' or lower), so they can't map directly 😭. Instead they get turned into a hex-style display string. For example, the 2-byte TP name x'06F1' (that's CNOS) becomes the 6-byte ASCII string '06F1', quotes and all 🦋. Iconic, honestly.
appcModeAdminMaxSessLimit OBJECT-TYPE
This one is the max session limit the local LU uses during CNOS processing 🎀. As a target LU, it'll negotiate a higher session limit down to this max value. As a source LU, it restricts whatever it sends in a CNOS request to be less than or equal to this max. Main character energy for limits, periodt 👑.
appcModeAdminMinCwinLimit OBJECT-TYPE
Here we've got the default minimum contention winner sessions limit 🍓. Some implementations quietly issue an INITIALIZE_SESSION_LIMIT verb when a Mode gets created, and this is the value they use for CNOS processing of that verb 🧚. It doesn't apply when someone issues an explicit INITIALIZE_SESSION_LIMIT verb, and in that case the equivalent object in appcCnosCommandTable is the one that counts 💜.
appcModeAdminMinClosLimit OBJECT-TYPE
This is the default minimum contention loser sessions limit 🌈. Same deal as the winner one: some implementations issue INITIALIZE_SESSION_LIMIT when a Mode is created and use this value for CNOS processing. It's the same as the target minimum contention winner sessions, and it's skipped for explicit INITIALIZE_SESSION_LIMIT verbs, which go to the appcCnosCommandTable instead 🙈.
appcModeAdminConWinAutoActLmt OBJECT-TYPE
This limits how many contention winner sessions get automatically activated when the minimum number of contention winner sessions goes up because of CNOS processing ⭐. The actual number activated is whichever is smaller: this limit, or the new minimum 🔥.
appcModeAdminRecvPacWinSz OBJECT-TYPE
This is the size of the receive pacing window, and it gets used for negotiation when sessions activate (SNA BIND) 🦋. What a 0 means depends on whether adaptive pacing is supported. With adaptive pacing, 0 means no limit on the window size. With fixed pacing, 0 means no pacing is supported at all 💀.
appcModeAdminSendPacWinSz OBJECT-TYPE
Same vibe as the receive side, but this is the send pacing window 🌸. It's also used for negotiation during session activations (SNA BIND). A 0 works exactly like the receive one: adaptive pacing means no limit on window size, and fixed pacing means no pacing is supported 💖.
appcModeAdminPrefRecvRuSz OBJECT-TYPE
Now we're talking preferred receive RU (Request Unit) size for normal-flow requests on the sessions ✨. This value has to be less than or equal to appcModeAdminRecvRuSzUpBnd, and greater than or equal to appcModeAdminRecvRuSzLoBnd 🎀. The local LU puts this value in the receive maximum RU size during session activation (SNA BIND) requests and responses. It can negotiate up to the upper bound or down to the lower bound 👑.
appcModeAdminPrefSendRuSz OBJECT-TYPE
This is the send side of that same story: the preferred send RU (Request Unit) size of normal-flow requests 🫶. It must be less than or equal to appcModeAdminSendRuSzUpBnd and greater than or equal to appcModeAdminSendRuSzLoBnd 💅. The local LU sends this as the send maximum RU size in SNA BIND requests and responses, and it negotiates up to the upper bound or down to the lower bound 🌈.
appcModeAdminRecvRuSzUpBnd OBJECT-TYPE
This is the upper bound for the maximum receive RU (Request Unit) size of normal-flow requests 🍓. It's used for negotiation during session activations (SNA BIND) 🧚.
appcModeAdminSendRuSzUpBnd OBJECT-TYPE
Same idea but for sending: this is the upper bound for the maximum send RU (Request Unit) size of normal-flow requests 💜. It's also used for negotiation during session activations (SNA BIND) 🙈.
appcModeAdminRecvRuSzLoBnd OBJECT-TYPE
Now the lower bound for the maximum receive RU (Request Unit) size of normal-flow requests ⭐. Yep, you guessed it, it's used for negotiation during session activations (SNA BIND) 🔥.
appcModeAdminSendRuSzLoBnd OBJECT-TYPE
And the send version of the lower bound 🦋. It's the lower bound for the maximum send RU (Request Unit) size of normal-flow requests, used in negotiation during session activations (SNA BIND) 💀.
appcModeAdminSingSessReinit OBJECT-TYPE
Okay this one is giving drama 🎭 because it's all about who reinitiates a single session with the partner LU when it goes down 🌸. The local LU uses it in SNA BIND requests and responses to set that responsibility 💖. There are five options, and they're all a whole vibe ✨:
- notApplicable(1): this one's a no-op because appcLuPairAdminParaSessSup is yes. The SNA BIND field is reserved and set to zero 🎀.
- operatorControlled(2): neither LU automatically tries to reinitiate. The operator on either side reactivates the session manually 👑. If both sides try at the same time, the contention race is won by the LU with the lexicographically greater fully-qualified LU name 🫶.
- primaryOnly(3): the primary LU automatically attempts to reinitiate the session 💅.
- secondaryOnly(4): the secondary LU automatically attempts to reinitiate the session 🌈.
- primaryOrSecondary(5): either the primary or the secondary may automatically attempt to reinitiate 🍓. A contention race here gets handled the same way as operatorControlled 🧚.
appcModeAdminCompression OBJECT-TYPE
Last one in this part, and it's about compression 💜. It says whether compression is supported, and the local LU uses it for negotiation during session activation (SNA BIND) 🙈. There are three choices: prohibited means no compression at all ⭐, required means compression is mandatory 🔥, and negotiable means the LUs negotiate whether to use compression and also negotiate the level of compression 🦋.
okay bestie, we're still in the compression and sync knobs, so let's keep going 🗜️💅
appcModeAdminInBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
inbound data. The local LU uses this value in conjunction with
appcModeAdminCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcModeAdminEntry 20 }
appcModeAdminOutBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
outbound data. The local LU uses this value in conjunction
with appcModeAdminCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcModeAdminEntry 21 }
appcModeAdminCompRleBeforeLZ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether run-length encoding is to be applied to the
data before applying Lempel-Ziv-like compression. The local LU
uses this value for negotiation during session activation (SNA
BIND). This parameter is only supported if LZ compression is
used."
::= { appcModeAdminEntry 22 }
appcModeAdminSyncLvl OBJECT-TYPE
SYNTAX INTEGER {
none(1),
noneConfirm(2),
noneConfirmSyncPoint(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the sync level support. This value is used for
negotiation during session activations (SNA BIND).
none - No sync level is supported.
noneConfirm - None and Confirm levels supported.
noneConfirmSyncPoint - None, Confirm, and Sync Point is
supported.
"
::= { appcModeAdminEntry 23 }
appcModeAdminCrypto OBJECT-TYPE
SYNTAX INTEGER {
notSupported(1),
mandatory(2),
selective(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether session-level cryptography is supported.
This value is used for negotiation during session activations
(SNA BIND).
notSupported - Specifies session-level cryptography
is not to be used.
mandatory - Specifies session-level cryptography
must be used.
selective - Specifies session-level cryptography
is required just on selected requests
flowing on the sessions."
::= { appcModeAdminEntry 24 }
-- *********************************************************************
-- APPC Mode Oper Table
-- Objects in this table contain current operational values, such
-- as state values or negotiated parameters, for session modes.
--
-- *********************************************************************
appcModeOperTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcModeOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Operational APPC Mode Information. Two entries are present in
the table when both LUs in a pair are local."
::= { appcLu 6 }
appcModeOperEntry OBJECT-TYPE
SYNTAX AppcModeOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC mode operational information table. This entry
does not augment the appcModeAdminEntry, but reflects an actual
operational mode for a given local LU - partner LU pair."
INDEX { appcModeOperLocLuName,
appcModeOperParLuName,
appcModeOperModeName }
::= { appcModeOperTable 1 }
AppcModeOperEntry ::= SEQUENCE {
appcModeOperLocLuName DisplayString,
appcModeOperParLuName DisplayString,
appcModeOperModeName DisplayString,
appcModeOperCosName DisplayString,
appcModeOperSessEndTpName DisplayString,
appcModeOperSessLimit Integer32,
appcModeOperMaxSessLimit Integer32,
appcModeOperMinCwinLimit Integer32,
appcModeOperMinClosLimit Integer32,
appcModeOperConWinAutoActLmt Integer32,
appcModeOperRecvPacWinSz Integer32,
appcModeOperSendPacWinSz Integer32,
appcModeOperPrefRecvRuSz Integer32,
appcModeOperPrefSendRuSz Integer32,
appcModeOperRecvRuSzUpBnd Integer32,
appcModeOperSendRuSzUpBnd Integer32,
appcModeOperRecvRuSzLoBnd Integer32,
appcModeOperSendRuSzLoBnd Integer32,
appcModeOperSingSessReinit INTEGER,
appcModeOperCompression INTEGER,
appcModeOperInBoundCompLevel INTEGER,
appcModeOperOutBoundCompLevel INTEGER,
appcModeOperCompRleBeforeLZ INTEGER,
appcModeOperSyncLvl INTEGER,
appcModeOperCrypto INTEGER,
appcModeOperSyncLvlLastStart INTEGER,
appcModeOperCryptoLastStart INTEGER,
appcModeOperCNOSNeg INTEGER,
appcModeOperActCwin Gauge32,
appcModeOperActClos Gauge32,
appcModeOperPndCwin Gauge32,
appcModeOperPndClos Gauge32,
appcModeOperPtmCwin Gauge32,
appcModeOperPtmClos Gauge32,
appcModeOperDrainSelf INTEGER,
appcModeOperDrainPart INTEGER
}
appcModeOperLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present.
If this object has the same value as appcLluOperName,
then the two entries being indexed apply to the same
resource (specifically, to the same local LU)."
::= { appcModeOperEntry 1 }
appcModeOperParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the partner LU. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present.
If this object has the same value as appcLuPairOperParLuName,
then the two entries being indexed apply to the same
resource (specifically, to the same partner LU)."
::= { appcModeOperEntry 2 }
appcModeOperModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the mode name. A mode defines the characteristics
for a group of sessions. The mode name can be blank (8
space characters). "
::= { appcModeOperEntry 3 }
appcModeOperCosName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the class of service (COS) name associated with
this mode. If the implementation does not support COS names,
a zero-length string is returned."
::= { appcModeOperEntry 4 }
appcModeOperSessEndTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the name of the transaction program (TP) to be
invoked when a session using this mode is deactivated or ended.
If the name is NULL, no transaction program is invoked. When
the TP name consists entirely of displayable EBCDIC code
points, it is mapped directly to the equivalent ASCII display
string. However, registered TP names always have a non-
displayable EBCDIC code point (value less than or equal to
x'3F') as the first character, so they cannot be directly
mapped to an ASCII display string. These TP names are
converted to a display string that is equivalent to a
hexadecimal display of the EBCDIC code points. For example,
the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte
ASCII display string '06F1' (including the two single quotes)."
::= { appcModeOperEntry 5 }
appcModeOperSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the current session limit of this mode as negotiated
through APPC CNOS (Change Number of Sessions) processing.
Identifies the total number of sessions that can be established
between the local and partner LU using this mode."
::= { appcModeOperEntry 6 }
Okay, the RU size knobs are next 💅
appcModeOperMaxSessLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum value that the local LU is to use,
during CNOS processing, for the session limit. The local LU,
as a target LU, will negotiate a higher session limit it
receives in the CNOS request down to this maximum value. The
local LU, as a source LU, will restrict the session limit it
sends in a CNOS request to a value less than or equal to this
maximum value."
::= { appcModeOperEntry 7 }
appcModeOperMinCwinLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the minimum contention winner sessions limit that
was negotiated via CNOS processing."
::= { appcModeOperEntry 8 }
appcModeOperMinClosLimit OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the minimum contention loser sessions limit that
was negotiated via CNOS processing. This is the same as
target minimum contention winner sessions."
::= { appcModeOperEntry 9 }
appcModeOperConWinAutoActLmt OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the limit on the number of contention winner sessions
to be automatically activated when the minimum number of
contention winner sessions increases (as a result of CNOS
processing). The actual number of sessions activated is the
lesser of this value and the new minimum number of contention
winner sessions. "
::= { appcModeOperEntry 10 }
appcModeOperRecvPacWinSz OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the size of the receive pacing window. This value is
used for negotiation during session activations (SNA BIND).
The meaning of this value when set to 0 depends on whether
adaptive pacing is supported:
adaptive pacing - No limit on window size
fixed pacing - No pacing is supported"
::= { appcModeOperEntry 11 }
appcModeOperSendPacWinSz OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the size of the send pacing window. This value is
used for negotiation during session activations (SNA BIND).
The meaning of this value when set to 0 depends on whether
adaptive pacing is supported:
adaptive pacing No limit on window size
fixed pacing No pacing is supported"
::= { appcModeOperEntry 12 }
appcModeOperPrefRecvRuSz OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the preferred receive RU (Request Unit) size of
normal-flow requests on the sessions. This value must be less
than or equal to the value specified in
appcModeOperRecvRuSzUpBnd and greater than or equal to the
value specified in appcModeOperRecvRuSzLoBnd.
The local LU specifies this value for the receive maximum RU
size in session activation (SNA BIND) requests and responses.
It will allow negotiation up to the appcModeOperRecvRuSzUpBnd
value or down to the appcModeOperRecvRuSzLoBnd value."
::= { appcModeOperEntry 13 }
appcModeOperPrefSendRuSz OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the preferred send RU (Request Unit) size of normal-
flow requests on the sessions. This value must be less than or
equal to the value specified in appcModeOperSendRuSzUpBnd and
greater than or equal to the value specified in
appcModeOperSendRuSzLoBnd.
The local LU specifies this value for the send maximum RU
size in session activation (SNA BIND) requests and responses.
It will allow negotiation up to the appcModeOperSendRuSzUpBnd
value or down to the appcModeOperSendRuSzLoBnd value."
::= { appcModeOperEntry 14 }
appcModeOperRecvRuSzUpBnd OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the upper bound for the maximum receive RU
(Request Unit) size of normal-flow requests. This is used
for negotiation during session activations (SNA BIND). "
::= { appcModeOperEntry 15 }
appcModeOperSendRuSzUpBnd OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the upper bound for the maximum send RU (Request
Unit) size of normal-flow requests. This is used for
negotiation during session activations (SNA BIND). "
::= { appcModeOperEntry 16 }
appcModeOperRecvRuSzLoBnd OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the lower bound for the maximum receive RU
(Request Unit) size of normal-flow requests. This is used
for negotiation during session activations (SNA BIND). "
::= { appcModeOperEntry 17 }
appcModeOperSendRuSzLoBnd OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the lower bound for the maximum send RU
(Request Unit) size of normal-flow requests. This is used
for negotiation during session activations (SNA BIND). "
::= { appcModeOperEntry 18 }
appcModeOperSingSessReinit OBJECT-TYPE
SYNTAX INTEGER {
notApplicable(1),
operatorControlled(2),
primaryOnly(3),
secondaryOnly(4),
primaryOrSecondary(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the responsibility for session reinitiation of a
single session with the partner LU (when the session goes
down). The local LU uses this parameter to specify the session
reinitiation responsibility in session activation (SNA BIND)
requests and responses.
notApplicable - specifies that this parameter has
no meaning since the value of
appcLuPairOperParaSessSup is yes.
The field in the SNA BIND is
reserved (set to zero).
operatorControlled - specifies that neither LU will
automatically attempt to reinitiate
the session. The operator on either
side will manually reactivate the
session. A contention race (both
side reinitiating at the same time)
is won by the LU with the
lexicographically greater fully-
qualified LU name.
primaryOnly - specifies that the primary LU will
automatically attempt to reinitiate
the session.
secondaryOnly - specifies that the secondary LU will
automatically attempt to reinitiate
the session.
primaryOrSecondary - specifies that either the primary or
the secondary may automatically
attempt to reinitiate the session.
A contention race is handled the
same way as with operatorControlled.
"
::= { appcModeOperEntry 19 }
appcModeOperCompression OBJECT-TYPE
SYNTAX INTEGER {
prohibited(1),
required(2),
negotiable(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether compression is supported. The local LU uses
this value for negotiation during session activation (SNA
BIND).
prohibited - specifies that no compression is to be used.
required - specifies that compression is required.
negotiable - specifies that the usage of compression
is to be negotiated between the LUs. The
level of compression is also negotiated."
::= { appcModeOperEntry 20 }
appcModeOperInBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
inbound data. The local LU uses this value in conjunction with
appcModeOperCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcModeOperEntry 21 }
The pacing windows, RU sizes and compression levels are all just knobs the two LUs twist during BIND to agree on how much stuff flows at once 🫶✨
okay so the outbound side of compression is next 🎀 same deal as the inbound one, just pointed the other way 💅
appcModeOperOutBoundCompLevel OBJECT-TYPE
SYNTAX INTEGER {
none(1),
rle(2),
lz9(3),
lz10(4),
lz12(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the maximum level of compression supported for
outbound data. The local LU uses this value in conjunction
with appcModeOperCompression for negotiation during session
activation (SNA BIND).
none - specifies that no compression is to be used.
rle - specifies run-length encoding compression
in which a 1 or 2 byte sequence substitution is
used for each repeated run of the same character.
lz9 - specifies Lempel-Ziv-like compression in which
9 bit codes are used to substitute repeated
substrings in the data stream. These codes are
indices that refer to entries in a common
dictionary generated adaptively at both sender and
receiver as the data flows and compression occurs.
The larger of number bits used for the code, the
more storage space is required for the dictionary,
but the larger the compression ratio.
lz10 - specifies a 10 bit code Lempel-Ziv-like compression.
lz12 - specifies a 12 bit code Lempel-Ziv-like compression."
::= { appcModeOperEntry 22 }
the big LZ bit is lowkey the best part: the bigger the code, the more dictionary storage you need, but the compression ratio gets better 🧚 it's a whole trade-off, bestie 🫶
appcModeOperCompRleBeforeLZ OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether run-length encoding is to be applied to the
data before applying Lempel-Ziv-like compression. The local LU
uses this value for negotiation during session activation (SNA
BIND). This parameter is only supported if LZ compression is
used."
::= { appcModeOperEntry 23 }
appcModeOperSyncLvl OBJECT-TYPE
SYNTAX INTEGER {
none(1),
noneConfirm(2),
noneConfirmSyncPoint(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the sync level support for sessions involving this
LU pair and mode name.
none - No sync level is supported.
noneConfirm - None and Confirm level supported.
noneConfirmSyncPoint - None, Confirm and Sync Point is
supported.
"
::= { appcModeOperEntry 24 }
appcModeOperCrypto OBJECT-TYPE
SYNTAX INTEGER {
notSupported(1),
mandatory(2),
selective(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether session-level cryptography is supported for
sessions involving this LU pair and mode name.
notSupported - Specifies session-level cryptography
is not being used.
mandatory - Specifies session-level cryptography
in being used on all requests
flowing on the sessions.
selective - Specifies session-level cryptography
is required just on selected
requests flowing on the sessions."
::= { appcModeOperEntry 25 }
appcModeOperSyncLvlLastStart OBJECT-TYPE
SYNTAX INTEGER {
none(1),
noneConfirm(2),
noneConfirmSyncPoint(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the sync level support. This value represents the
initial value proposed by the local LU the last time this
capability was negotiated, i.e., when the first session was
bound between the local LU and its partner.
none - No sync level is supported.
noneConfirm - None and Confirm level supported.
noneConfirmSyncPoint - None, Confirm and Sync Point is
supported.
"
::= { appcModeOperEntry 26 }
appcModeOperCryptoLastStart OBJECT-TYPE
SYNTAX INTEGER {
notSupported(1),
mandatory(2),
selective(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether session-level cryptography is supported.
This value represents the initial value proposed by the local
LU the last time this capability was negotiated, i.e., when
the first session was bound between the local LU and its
partner.
notSupported - Specifies session-level cryptography
is not to be used.
mandatory - Specifies session-level cryptography
must be used.
selective - Specifies session-level cryptography
is required just on selected
requests flowing on the sessions."
::= { appcModeOperEntry 27 }
appcModeOperCNOSNeg OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether CNOS negotiation is in process. CNOS
negotiation is used to set or change the various session limits
for a mode."
::= { appcModeOperEntry 28 }
appcModeOperActCwin OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of active contention winner sessions."
::= { appcModeOperEntry 29 }
appcModeOperActClos OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of active contention loser sessions."
::= { appcModeOperEntry 30 }
appcModeOperPndCwin OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of contention winner sessions that are
pending activation."
::= { appcModeOperEntry 31 }
appcModeOperPndClos OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of contention loser sessions that are
pending activation."
::= { appcModeOperEntry 32 }
appcModeOperPtmCwin OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of contention winner sessions that are
pending termination."
::= { appcModeOperEntry 33 }
appcModeOperPtmClos OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of contention loser sessions that are
pending termination."
::= { appcModeOperEntry 34 }
appcModeOperDrainSelf OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the local LU is draining its conversations
for this mode. When a mode session limit is reset (via a CNOS
RESET_SESSION_LIMIT request), the local LU could be set to
process all queued conversations before deactivating all of the
sessions (using the SNA Bracket Initiation Stopped or BIS
protocol). "
::= { appcModeOperEntry 35 }
appcModeOperDrainPart OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the partner LU is draining its conversations
for this mode. When a mode session limit is reset (via a CNOS
RESET_SESSION_LIMIT request), the partner LU could be set to
process all queued conversations before deactivating all of the
sessions (using the SNA Bracket Initiation Stop or BIS
protocol). "
::= { appcModeOperEntry 36 }
-- *********************************************************************
-- APPC TP Admin Table
-- Objects in this table contain default or expected configuration
-- values for remotely attachable transaction programs.
-- *********************************************************************
appcTpAdminTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcTpAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC Local TP Table"
::= { appcTp 1 }
appcTpAdminEntry OBJECT-TYPE
SYNTAX AppcTpAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC Local TP Information Table."
INDEX { appcTpAdminLocLuName,
appcTpAdminTpName }
::= { appcTpAdminTable 1 }
AppcTpAdminEntry ::= SEQUENCE {
appcTpAdminLocLuName DisplayString,
appcTpAdminTpName DisplayString,
appcTpAdminFileSpec DisplayString,
appcTpAdminStartParm DisplayString,
appcTpAdminTpOperation INTEGER,
appcTpAdminInAttachTimeout Integer32,
appcTpAdminRcvAllocTimeout Integer32,
appcTpAdminSyncLvl INTEGER,
appcTpAdminInstLmt Integer32,
appcTpAdminStatus INTEGER,
appcTpAdminLongRun INTEGER,
appcTpAdminConvType INTEGER,
appcTpAdminConvDuplex INTEGER,
appcTpAdminConvSecReq INTEGER,
appcTpAdminVerPip INTEGER,
appcTpAdminPipSubNum Integer32
}
appcTpAdminLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU to which this TP definition
applies. This field is from 1 to 17 characters in length,
including a period (.) which separates the NetId from the NAU
name if the NetId is present.
The reserved value '*ALL' indicates that the TP definition
applies to all local LUs, and not just to a single local LU."
::= { appcTpAdminEntry 1 }
the TP admin table is where the default and expected config values for remotely attachable transaction programs live, and '*ALL' is the special reserved value that means "this applies to every local LU" 👑
okay bestie, this part is all about the TP admin knobs 💅✨ how a transaction program gets started, who's allowed to knock, and how long incoming attaches wait in line 🎀
appcTpAdminTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..64))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The local transaction program name. This name is sent on an
ATTACH remote allocation request.
When the TP name consists entirely of displayable EBCDIC
code points, it is mapped directly to the equivalent ASCII
display string. However, registered TP names always have a
non-displayable EBCDIC code point (value less than or equal to
x'3F') as the first character, so they cannot be directly
mapped to an ASCII display string. These TP names are
converted to a display string that is equivalent to a
hexadecimal display of the EBCDIC code points. For example,
the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte
ASCII display string '06F1' (including the two single quotes)."
::= { appcTpAdminEntry 2 }
appcTpAdminFileSpec OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..80))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local file specification of the transaction program.
May be a zero-length string if not applicable."
::= { appcTpAdminEntry 3 }
appcTpAdminStartParm OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..128))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A parameter string passed to the transaction program when it
is started. May be a zero-length string if not supported. "
::= { appcTpAdminEntry 4 }
appcTpAdminTpOperation OBJECT-TYPE
SYNTAX INTEGER {
other(1),
queuedOperatorStarted(2),
queuedOperatorPreloaded(3),
queuedAmStarted(4),
nonqueuedAmStarted(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies how the program will be started.
other - Specifies that the program operation is none of
the methods specified. It may be a
product-specific method.
queuedOperatorStarted - Specifies that one version of the
program will be run at a time. If an incoming
attach arrives and the program has not been started
yet, APPC will issue a message to the operator to
start the specified program. Subsequent attaches
that arrive while the program is active will be
queued.
queuedOperatorPreloaded - Specifies that one version of the
program will be run at a time. If an incoming
attach arrives and the program has not been started
yet, the Attach will be rejected. The APPC attach
manager determines that a TP has started upon
reception of an APPC RECEIVE_ALLOCATE verb, or a
CPI-C Accept_Conversation (CMACCP) or
Specify_Local_TP_Name (CMSLTP) call. No message is
sent to the operator. Subsequent attaches that
arrive while the program is active are queued.
queuedAmStarted - Specifies that one version of the
program will be run at a time and will be started
by the APPC attach manager. Subsequent attaches
that arrive while the program is active will be
queued.
nonqueuedAmStarted - Specifies that multiple copies of the
program will be run at a time and will be started
by the APPC attach manager."
::= { appcTpAdminEntry 5 }
appcTpAdminInAttachTimeout OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object specifies the number of seconds incoming attaches
will be queued waiting for an APPC program to issue a
RECEIVE_ALLOCATE verb or for a CPI-C program to issue an
Accept_Conversation (CMACCP) call. This parameter is
meaningful only when appcTpAdminTpOperation has one of the
following values:
queuedOperatorStarted
queuedOperatorPreloaded
queuedAmStarted
A value of zero indicates that there is no timeout."
::= { appcTpAdminEntry 6 }
appcTpAdminRcvAllocTimeout OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object specifies the number of seconds an APPC program's
RECEIVE_ALLOCATE verb or a CPI-C program's Accept_Conversation
(CMACCP) call will wait for an incoming attach to arrive.
A value of zero indicates that there is no timeout."
::= { appcTpAdminEntry 7 }
appcTpAdminSyncLvl OBJECT-TYPE
SYNTAX INTEGER {
none(1),
confirm(2),
noneAndConfirm(3),
syncpoint(4),
noneAndSyncpoint(5),
confirmAndSyncpoint(6),
all(7)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the synchronization level or levels that the
transaction program supports. The levels are defined as
follows:
none - allocation requests indicating a
synchronization level of none are allowed to
start the program.
confirm - allocation requests indicating a
synchronization level of confirm are allowed
to start the program.
syncpoint - allocation requests indicating a
synchronization level of sync point are
allowed to start the program."
::= { appcTpAdminEntry 8 }
appcTpAdminInstLmt OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum number of concurrent instances of this transaction
program that will be supported for a local LU. A value of
zero indicates that there is no limit."
::= { appcTpAdminEntry 9 }
appcTpAdminStatus OBJECT-TYPE
SYNTAX INTEGER {
enabled(1),
tempDisabled(2),
permDisabled(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the status of the TP relative to starting execution
when the local LU receives an allocation (ATTACH) request
naming this program.
enabled - the local LU can start the program.
tempDisabled - the local LU cannot start the
program. The local LU rejects the
request with an indication that the
TP is not available but retry is
possible.
permDisabled - the local LU cannot start the
program. The local LU rejects the
request with an indication that the
TP is not available and retry is
not possible."
::= { appcTpAdminEntry 10 }
appcTpAdminLongRun OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether this is a long-running transaction program
(i.e., one that stays around even after the conversation goes
away)."
::= { appcTpAdminEntry 11 }
appcTpAdminConvType OBJECT-TYPE
SYNTAX INTEGER {
basic(1),
mapped(2),
basicOrMapped(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the conversation type (basic or mapped) that will be
used by the TP. This value is verified upon receipt of an
incoming attach. The acceptable values are:
basic - Indicates that this transaction program
supports basic conversations.
mapped - Indicates that this transaction program
supports mapped conversations.
basicOrMapped - Indicates that this transaction program
supports both basic and mapped
conversations."
::= { appcTpAdminEntry 12 }
appcTpAdminConvDuplex OBJECT-TYPE
SYNTAX INTEGER {
half(1),
full(2),
halfOrFull(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the conversation duplex type (half or full) that
will be used by the TP. This value is verified upon receipt of
an incoming attach. The acceptable values are:
half - Indicates that this transaction program
supports half duplex conversations.
full - Indicates that this transaction program
supports full duplex conversations.
halfOrFull - Indicates that this transaction program
supports either half or full duplex
conversations."
::= { appcTpAdminEntry 13 }
appcTpAdminConvSecReq OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether conversation-level security information is
required on incoming attaches designating this TP name.
Conversation-level security verification is always performed on
those requests that include security information.
yes - Indicates that conversation-level security
information is required. ATTACHs designating the
transaction program must carry a user_id and
either a password or an already verified
indicator.
no - Indicates that no security information is
required. ATTACHs designating the transaction
program can omit or include security information."
::= { appcTpAdminEntry 14 }
appcTpAdminVerPip OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the number of PIP (Program Initialization
Parameters) subfields should be verified against the number
expected (appcTpAdminPipSubNum)."
::= { appcTpAdminEntry 15 }
appcTpAdminPipSubNum OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the number of PIP subfields expected by the TP."
::= { appcTpAdminEntry 16 }
-- *********************************************************************
-- APPC Active Session Table
-- ---------------------------------------------------------------------
-- This table contains information about active APPC sessions.
appcActSessTable 💖
okay so this is the big session table, bestie 🧚 it lists every active APPC session
appcActSessTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcActSessEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of active APPC sessions. Two entries are present in the
table when both session partners are local."
::= { appcSession 1 }
appcActSessEntry 🦋
each row is one session, and it's keyed by the LU pair plus a session index 🫶
appcActSessEntry OBJECT-TYPE
SYNTAX AppcActSessEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC Session Information Table. Indexed by LU pair
and integer-valued session index."
INDEX { appcActSessLocLuName,
appcActSessParLuName,
appcActSessIndex }
::= { appcActSessTable 1 }
AppcActSessEntry ::= SEQUENCE {
appcActSessLocLuName DisplayString,
appcActSessParLuName DisplayString,
appcActSessIndex Integer32,
appcActSessPcidCpName DisplayString,
appcActSessPcid OCTET STRING,
appcActSessPluIndicator INTEGER,
appcActSessModeName DisplayString,
appcActSessCosName DisplayString,
appcActSessTransPriority INTEGER,
appcActSessEnhanceSecSup INTEGER,
appcActSessSendPacingType INTEGER,
appcActSessSendRpc Gauge32,
appcActSessSendNxWndwSize Gauge32,
appcActSessRecvPacingType INTEGER,
appcActSessRecvRpc Gauge32,
appcActSessRecvNxWndwSize Gauge32,
appcActSessRscv OCTET STRING,
appcActSessInUse INTEGER,
appcActSessMaxSndRuSize INTEGER,
appcActSessMaxRcvRuSize INTEGER,
appcActSessSndPacingSize INTEGER,
appcActSessRcvPacingSize INTEGER,
appcActSessOperState INTEGER,
appcActSessUpTime TimeTicks,
appcActSessRtpNceId OCTET STRING,
appcActSessRtpTcid OCTET STRING,
appcActSessLinkIndex InstancePointer
}
appcActSessLocLuName 🌸
this one is the local LU name, and it's one of the index bits ✨
appcActSessLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the local LU for the session. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLluOperName, then the
two entries being indexed apply to the same resource
(specifically, to the same local LU)."
::= { appcActSessEntry 1 }
appcActSessParLuName 💜
same energy but for the partner LU 💅
appcActSessParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the partner LU for the session. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLuPairOperParLuName,
then the two entries being indexed apply to the same resource
(specifically, to the same partner LU)."
::= { appcActSessEntry 2 }
appcActSessIndex 🎀
the session index, and yes the agent is recommended to hold off on reusing it for a while 🙈
appcActSessIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This value identifies the index of the session, which is
unique for this LU pair. It is recommended that an Agent not
reuse the index of a deactivated session for a significant
period of time (e.g., one week)."
::= { appcActSessEntry 3 }
appcActSessPcidCpName 🧚
the network-qualified CP name of where the session and PCID started
appcActSessPcidCpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0 | 3..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network-qualified CP name of the node at which the session
and PCID originated. For APPN and LEN nodes, this is either CP
name of the APPN node at which the origin LU is located or the
CP name of the NN serving the LEN node at which the origin LU
is located. This field is from 3 to 17 characters in length,
including a period (.) which separates the NetId from the NAU
name. A null string indicates that the value is unknown."
::= { appcActSessEntry 4 }
appcActSessPcid 🌈
the PCID is an 8-octet value, and an empty string means unknown 🦋
appcActSessPcid OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0|8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The procedure correlation identifier (PCID) of a session. It
is an 8-octet value assigned by the control point providing
session services for the primary LU. A null string indicates
that the value is unknown."
::= { appcActSessEntry 5 }
appcActSessPluIndicator 👑
this tells you which LU is the PLU. the one that sent the BIND is the PLU, and the one that received it is the SLU 💖
appcActSessPluIndicator OBJECT-TYPE
SYNTAX INTEGER {
localLuIsPlu(1),
partnerLuIsPlu(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates which LU is the PLU for this session. For
independent LUs, the PLU (primary LU) is the one that initiated
the session (sent BIND), while the SLU (secondary LU) is the
one that accepted the session initiation (received BIND).
The 'local' LU is the one identified by appcLluOperName.
The 'partner' LU is the one identified by
appcLuPairOperParLuName."
::= { appcActSessEntry 6 }
appcActSessModeName ✨
the mode name for this session, nothing fancy, just the name 🫶
appcActSessModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The mode name used for this session."
::= { appcActSessEntry 7 }
appcActSessCosName 🍓
the Class of Service name, and an empty string means it's unknown 🙈
appcActSessCosName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Class of Service (COS) name used for this session.
A null string indicates that the value is unknown."
::= { appcActSessEntry 8 }
appcActSessTransPriority 🔥
the transmission priority, from unknown up to network priority 💅
appcActSessTransPriority OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
low(2),
medium(3),
high(4),
network(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The transmission priority of this session.
1 = unknown priority
2 = low priority
3 = medium priority
4 = high priority
5 = network priority
"
::= { appcActSessEntry 9 }
appcActSessEnhanceSecSup 🛡️
enhanced security support, with three levels to pick from 🔐
appcActSessEnhanceSecSup OBJECT-TYPE
SYNTAX INTEGER {
none(1),
level1(2),
level2(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Enhanced security supported. Indicates the level of enhanced
security support:
1 = none
2 = level 1
3 = level 2
"
::= { appcActSessEntry 10 }
appcActSessSendPacingType 🌸
the pacing type used for sending data 🦋
appcActSessSendPacingType OBJECT-TYPE
SYNTAX INTEGER {
none(1),
fixed(2),
adaptive(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of pacing being used for sending data."
::= { appcActSessEntry 11 }
appcActSessSendRpc 💜
the send residual pace count, which is how many MUs can still go out in the current window 🧚
appcActSessSendRpc OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The send residual pace count. This represents the number of
MUs that can still be sent in the current session window."
::= { appcActSessEntry 12 }
appcActSessSendNxWndwSize 🎀
the size of the next window that'll be used for sending ✨
appcActSessSendNxWndwSize OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the next window which will be used to send data."
::= { appcActSessEntry 13 }
appcActSessRecvPacingType 🌈
same as the send side, but for receiving data 🫶
appcActSessRecvPacingType OBJECT-TYPE
SYNTAX INTEGER {
none(1),
fixed(2),
adaptive(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of pacing being used for receiving data."
::= { appcActSessEntry 14 }
appcActSessRecvRpc 🦋
the receive residual pace count, meaning how many MUs can still come in during the current session window 💖
appcActSessRecvRpc OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The receive residual pace count. This represents the number
of MUs that can still be received in the current session
window."
::= { appcActSessEntry 15 }
appcActSessRecvNxWndwSize 🌸
the size of the next window for receiving data 🍓
appcActSessRecvNxWndwSize OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the next window which will be used to receive
data."
::= { appcActSessEntry 16 }
appcActSessRscv 👑
the route selection control vector, which is only present for APPN implementations. LEN ones give back an empty string 💅
appcActSessRscv OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..255))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The route selection control vector (RSCV CV2B) used for this
session. It is present for APPN-level implementations.
LEN-level implementations will return a null string. The
internal format of this vector is described in SNA Formats.
This object contains an uninterpreted copy of the control
vector (including the length and key fields)."
::= { appcActSessEntry 17 }
appcActSessInUse 🔥
whether the session is in use right now, meaning it's in bracket with a conversation 🧚
appcActSessInUse OBJECT-TYPE
SYNTAX INTEGER {
no(1),
yes(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the session is currently in use (i.e., in
bracket with a conversation)."
::= { appcActSessEntry 18 }
appcActSessMaxSndRuSize ✨
the max RU size used for sending, between 1 and 8192 🎀
appcActSessMaxSndRuSize OBJECT-TYPE
SYNTAX INTEGER (1..8192)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum RU size used on this session for sending RUs."
::= { appcActSessEntry 19 }
appcActSessMaxRcvRuSize 🌈
the max RU size used for receiving, same range as the send side 🦋
appcActSessMaxRcvRuSize OBJECT-TYPE
SYNTAX INTEGER (1..8192)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The maximum RU size used on this session for receiving RUs."
::= { appcActSessEntry 20 }
appcActSessSndPacingSize 💜
the size of the send pacing window, from 1 to 63 🫶
appcActSessSndPacingSize OBJECT-TYPE
SYNTAX INTEGER (1..63)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the send pacing window on this session."
::= { appcActSessEntry 21 }
appcActSessRcvPacingSize 💖
and the receive pacing window size, also 1 to 63 🌸
appcActSessRcvPacingSize OBJECT-TYPE
SYNTAX INTEGER (1..63)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The size of the receive pacing window on this session."
::= { appcActSessEntry 22 }
Okay so this is where the session's operational state lives, and honestly it's giving state-machine drama 💅 Four states, and the Agent is watching every single one 👀
appcActSessOperState OBJECT-TYPE
SYNTAX INTEGER {
unbound (1),
pendingBind (2),
bound (3),
pendingUnbind (4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The value indicates the current operational state of the
session.
'unbound (1)' - session has been unbound;
in this state it will be removed from the
session table by the Agent.
'pendingBind (2)' - this state has different
meanings for dependent and independent LUs;
for dependent LU - waiting for BIND from
the host, for independent LU - waiting for
BIND response. When a session enters this
state, the corresponding entry in the
session table is created by the Agent.
'bound (3)' - session has been successfully bound.
'pendingUnbind (4)' - session enters this state
when an UNBIND is sent and before the
rsp(UNBIND) is received.
Session deactivation:
If a session is in the operational state
'bound (3)' then setting the value of this
object to 'unbound (1)' will initiate the
session shutdown.
If a session is in the operational state
'pendingBind (2)' then setting the value of this
object to 'unbound (1)' will initiate the session
shutdown.
If a session is in the operational state
'pendingUnbind (4)' for an abnormally long period
of time (e.g., three minutes) then setting the value
of this object to 'unbound (1)' will change the
session operational state to 'unbound (1)'. "
::= { appcActSessEntry 23 }
So unbound (1) means the session is gone, and the Agent takes it out of the session table 🫠 pendingBind (2) is the waiting room. For a dependent LU that means waiting for a BIND from the host, and for an independent LU it means waiting for the BIND response. Either way, the entry shows up in the session table as soon as the session hits this state ✨ Then bound (3) is the glow-up, meaning the bind worked 🎀 And pendingUnbind (4) is the moment after an UNBIND goes out and before the UNBIND response comes back 🥺
Deactivation is where it gets spicy. Writing unbound (1) into this object starts the shutdown if the session is bound (3) or pendingBind (2). If it's stuck in pendingUnbind (4) for an abnormally long time (the doc's example is about three minutes), writing unbound (1) flips it straight to unbound (1). Bestie, that's a whole reset button 💀
appcActSessUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The length of time the session has been active, measured in
hundredths of a second."
::= { appcActSessEntry 24 }
This one is the session's little stopwatch ⏱️ It's read-only, and it counts how long the session has been active, in hundredths of a second. Tiny units, big vibes 🦋
appcActSessRtpNceId OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local HPR Network Connection Endpoint of the session."
::= { appcActSessEntry 25 }
Now we're in HPR territory 🌸 This is the local HPR Network Connection Endpoint for the session. It's a read-only OCTET STRING that can be anywhere from 0 to 8 octets long, so the size can really vary 🧚
appcActSessRtpTcid OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0|8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The local RTP connection TCID of the session."
::= { appcActSessEntry 26 }
Here's the local RTP connection TCID for the session 💜 Unlike the one above, this OCTET STRING is only ever 0 octets or 8 octets, which is very particular of it, and I respect that 💅
appcActSessLinkIndex OBJECT-TYPE
SYNTAX InstancePointer
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This value identifies the link over which the session passes.
This value points to the row in the table containing
information on the link instance. (e.g., the sdlcLSAdminTable
of the SNA DLC MIB module). This object may be NULL if the
link is not specified or if a link is not applicable (as for
APPN-level nodes)."
::= { appcActSessEntry 27 }
So this is the pointer to whichever link the session goes over 🔗 It points at a row in another table, and the doc's example is the sdlcLSAdminTable in the SNA DLC MIB module. It's allowed to be NULL when there's no link specified, or when a link just doesn't apply, like for APPN-level nodes 🙈
-- ***************************************************************
-- The following table contains session statistics for APPC sessions.
-- ***************************************************************
appcSessStatsTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcSessStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table contains dynamic statistical information relating
to active APPC sessions. The entries in this table cannot be
created by a Management Station. Two entries are present in
the table when both session partners are local. This table is
populated only when the value of appcCntrlOperStat is
'active'."
::= { appcSession 2 }
appcSessStatsEntry OBJECT-TYPE
SYNTAX AppcSessStatsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Contains statistics information for an APPC session. Each
entry is created by the Agent. Objects in this table have
read-only access. Each session from appcActSessTable has one
entry in this table."
INDEX { appcSessStatsLocLuName,
appcSessStatsParLuName,
appcSessStatsSessIndex }
::= { appcSessStatsTable 1 }
AppcSessStatsEntry ::= SEQUENCE {
appcSessStatsLocLuName DisplayString,
appcSessStatsParLuName DisplayString,
appcSessStatsSessIndex Integer32,
appcSessStatsSentFmdBytes Counter32,
appcSessStatsSentNonFmdBytes Counter32,
appcSessStatsRcvdFmdBytes Counter32,
appcSessStatsRcvdNonFmdBytes Counter32,
appcSessStatsSentFmdRus Counter32,
appcSessStatsSentNonFmdRus Counter32,
appcSessStatsRcvdFmdRus Counter32,
appcSessStatsRcvdNonFmdRus Counter32,
appcSessStatsCtrUpTime TimeTicks
}
Okay, the stats era has arrived 📊 appcSessStatsTable holds the dynamic numbers for active APPC sessions. Nobody can create these rows from a Management Station 🙅♀️ When both session partners are local, you get two entries. And it only gets filled in while appcCntrlOperStat is 'active'. No cap, it's very gatekept 🔐
Each row in appcSessStatsEntry comes from one session in the active session table, and the Agent creates it. The columns are read-only, and each row is indexed by the local LU name, the partner LU name, and the session index 🦋
appcSessStatsLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the local LU for the session. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLluOperName, then the
two entries being indexed apply to the same resource
(specifically, to the same local LU)."
::= { appcSessStatsEntry 1 }
This is the local LU name, 1 to 17 characters long 💖 That count includes the period that separates the NetId from the NAU name, if there's a NetId. If it matches appcLluOperName, the two entries are about the same local LU, so they're basically besties 👯♀️
appcSessStatsParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the name of the partner LU for the session. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLuPairOperParLuName,
then the two entries being indexed apply to the same resource
(specifically, to the same partner LU)."
::= { appcSessStatsEntry 2 }
Same vibe, but for the partner LU 🤝 It's also 1 to 17 characters with that NetId period thing. If it matches appcLuPairOperParLuName, the two entries are about the same partner LU 🫶
appcSessStatsSessIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This value identifies the index of the session, which is
unique for this LU pair. It is recommended that an Agent not
reuse the index of a deactivated session for a significant
period of time (e.g., one week).
If this object has the same value as appcActSessIndex for the
same LU pair, then the two entries being indexed apply to the
same resource (specifically, to the same session)."
::= { appcSessStatsEntry 3 }
The session index is unique for each LU pair, so it's basically the session's ID card 🪪 The doc recommends that an Agent doesn't reuse the index of a deactivated session for a significant period, the example being one week. That's the kind of patience I can get behind 🌈 If it matches appcActSessIndex for the same LU pair, the two entries are about the same session ✨
appcSessStatsSentFmdBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of function management data (FMD) bytes sent by the
local LU."
::= { appcSessStatsEntry 4 }
Counting the FMD bytes the local LU has sent 📤 It's a read-only Counter32 💅
appcSessStatsSentNonFmdBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of non-function management data (non-FMD) bytes
sent by the local LU."
::= { appcSessStatsEntry 5 }
Same energy, but for the non-FMD bytes the local LU sent 📦
appcSessStatsRcvdFmdBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of function management data (FMD) bytes received by
the local LU."
::= { appcSessStatsEntry 6 }
Now the incoming side: FMD bytes received by the local LU 📥 (The doc has a little blank line in here, and I'm keeping it because it's part of the original vibe 🙈)
appcSessStatsRcvdNonFmdBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of non-function management data (non-FMD) bytes
received by the local LU."
::= { appcSessStatsEntry 7 }
And the non-FMD bytes received by the local LU 🌷
appcSessStatsSentFmdRus OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of function management data (FMD) RUs sent by the
local LU."
::= { appcSessStatsEntry 8 }
Now we're counting RUs instead of bytes 🧮 This one is the FMD RUs the local LU sent.
appcSessStatsSentNonFmdRus OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of non-function management data (non-FMD) RUs sent
by the local LU."
::= { appcSessStatsEntry 9 }
And the non-FMD RUs sent by the local LU 📨
appcSessStatsRcvdFmdRus OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of function management data (FMD) RUs received by
the local LU."
::= { appcSessStatsEntry 10 }
FMD RUs received by the local LU 📬
appcSessStatsRcvdNonFmdRus OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of non-function management data (non-FMD) RUs
received by the local LU."
::= { appcSessStatsEntry 11 }
And the last of the RU counters: non-FMD RUs received by the local LU 🎉
appcSessStatsCtrUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The length of time the counters for this session have been
active, measured in hundredths of a second."
::= { appcSessStatsEntry 12 }
This is the stopwatch for the counters themselves ⏰ It's the length of time the counters for this session have been active, in hundredths of a second, which is kind of the same vibe as appcActSessUpTime but for the stats.
-- *********************************************************************
-- APPC Historical Session Table
-- ---------------------------------------------------------------------
-- This table contains historical information about APPC sessions that
-- terminated abnormally. It is an implementation choice how long to
-- retain information on a given session.
-- *********************************************************************
appcHistSessTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcHistSessEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of historical information about APPC sessions that
terminated abnormally. Two entries may be present in the table
when both session partners are local. It is an implementation
choice how long to retain information about a given session."
::= { appcSession 3 }
appcHistSessEntry OBJECT-TYPE
SYNTAX AppcHistSessEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC Session History Table. This table is indexed by
an integer which is continuously incremented until it
eventually wraps."
INDEX
{ appcHistSessIndex }
::= { appcHistSessTable 1 }
AppcHistSessEntry ::= SEQUENCE {
appcHistSessIndex INTEGER,
appcHistSessTime DateAndTime,
appcHistSessType INTEGER,
appcHistSessLocLuName DisplayString,
appcHistSessParLuName DisplayString,
appcHistSessModeName DisplayString,
appcHistSessUnbindType OCTET STRING,
appcHistSessSenseData SnaSenseData,
appcHistSessComponentId DisplayString,
appcHistSessDetectModule DisplayString
}
appcHistSessIndex OBJECT-TYPE
SYNTAX INTEGER (0..2147483647)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table index. The value of the index begins at zero
and is incremented up to a maximum value of 2**31-1
(2,147,483,647) before wrapping."
::= { appcHistSessEntry 1 }
Last stop of this chunk: the history table 📚 This is where sessions that ended abnormally get remembered. The doc says it's an implementation choice how long to keep that info, so the Agent gets to decide how long the memories stick around 🧚 Two entries can show up here too when both partners are local, same as the stats table. The index starts at zero, ticks up, and wraps after 2**31-1 (that's 2,147,483,647, bestie) 💜
okay bestie, we're picking up right where the history table left off 💖 the rest of it is all MIB code, so i'm keeping every single line exact 🎀
appcHistSessTime OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time at which the session was either terminated or
failed to be established."
::= { appcHistSessEntry 2 }
appcHistSessType OBJECT-TYPE
SYNTAX INTEGER {
recvNegBindRsp(1),
sendNegBindRsp(2),
sessActRejected(3),
unbindSent(4),
unbindReceived(5)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the type of event that caused the entry to be made:
recvNegBindRsp - Received a negative bind response from
the partner LU.
sendNegBindRsp - Sent a negative bind response to the
partner LU.
sessActRejected - Session activation rejected by the
partner LU.
unbindSent - Unbind sent to the partner LU.
unbindReceived - Unbind received from the partner LU.
These event types correspond to the five SNA/MS Alerts
LU62001 through LU62005, documented in the SNA Management
Services Reference."
::= { appcHistSessEntry 3 }
appcHistSessLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network-qualified local LU name. This field is from 3 to
17 characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present."
::= { appcHistSessEntry 4 }
appcHistSessParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (3..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network-qualified partner LU name. This field is from 3
to 17 characters in length, including a period (.) which
separates the NetId from the NAU name if the NetId is present."
::= { appcHistSessEntry 5 }
appcHistSessModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The mode name of the session."
::= { appcHistSessEntry 6 }
appcHistSessUnbindType OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (1))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The type of unbind which terminated the session. This
value is consists of one (1) octet; and its meaning
is defined in SNA Formats."
::= { appcHistSessEntry 7 }
appcHistSessSenseData OBJECT-TYPE
SYNTAX SnaSenseData
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The sense data associated with the termination of the
session, taken from the negative BIND response or UNBIND
request."
::= { appcHistSessEntry 8 }
appcHistSessComponentId OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The implementation-specific name of the component which
detected the problem."
::= { appcHistSessEntry 9 }
appcHistSessDetectModule OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The implementation-specific name of the module which
detected the problem."
::= { appcHistSessEntry 10 }
APPC Session RTP Connection Table 🦋
the RTP table is next, and it's giving tidy little tracker energy ✨ here's the whole thing, verbatim 🌸
-- *********************************************************************
-- APPC Session RTP Connection Table
-- ---------------------------------------------------------------------
-- This table contains information on APPC sessions that are being
-- transported on RTP connections by High Performance Routing (HPR).
-- *********************************************************************
appcSessRtpTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcSessRtpEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table indicating how many APPC sessions terminating in this
node are transported by each RTP connection."
::= { appcSession 4 }
appcSessRtpEntry OBJECT-TYPE
SYNTAX AppcSessRtpEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC session RTP table."
INDEX { appcSessRtpNceId,
appcSessRtpTcid }
::= { appcSessRtpTable 1 }
AppcSessRtpEntry ::= SEQUENCE {
appcSessRtpNceId OCTET STRING,
appcSessRtpTcid OCTET STRING,
appcSessRtpSessions Gauge32
}
appcSessRtpNceId OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (1..8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The local Network Connection Endpoint of the RTP connection."
::= { appcSessRtpEntry 1 }
appcSessRtpTcid OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The local TCID of the RTP connection."
::= { appcSessRtpEntry 2 }
appcSessRtpSessions OBJECT-TYPE
SYNTAX Gauge32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The number of APPC sessions terminating in this node
that are using this RTP connection."
::= { appcSessRtpEntry 3 }
APPC Active Conversation Table 💅
last stretch for this part, and it's the active conversation table 💜 the banner and the first few objects are right here, kept exact 🫶
-- *********************************************************************
-- APPC Active Conversation Table
-- This table contains information about active APPC conversations.
-- *********************************************************************
appcActiveConvTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcActiveConvEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of information about active APPC Conversations. In this
context 'active' means that a conversation is currently
associated with a particular session. Two entries are present
in the table when both LUs for the session are local."
::= { appcConversation 1 }
appcActiveConvEntry OBJECT-TYPE
SYNTAX AppcActiveConvEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry representing one active APPC Conversation."
INDEX { appcActiveConvLocLuName,
appcActiveConvParLuName,
appcActiveConvSessIndex }
::= { appcActiveConvTable 1}
AppcActiveConvEntry ::= SEQUENCE {
appcActiveConvLocLuName DisplayString,
appcActiveConvParLuName DisplayString,
appcActiveConvSessIndex Integer32,
appcActiveConvId OCTET STRING,
appcActiveConvState INTEGER,
appcActiveConvType INTEGER,
appcActiveConvCorrelator OCTET STRING,
appcActiveConvSyncLvl INTEGER,
appcActiveConvSource INTEGER,
appcActiveConvDuplex INTEGER,
appcActiveConvUpTime TimeTicks,
appcActiveConvSendBytes Counter32,
appcActiveConvRcvBytes Counter32,
appcActiveConvUserid DisplayString,
appcActiveConvPcidNauName DisplayString,
appcActiveConvPcid OCTET STRING,
appcActiveConvModeName DisplayString,
appcActiveConvLuwIdName DisplayString,
appcActiveConvLuwIdInstance OCTET STRING,
appcActiveConvLuwIdSequence OCTET STRING,
appcActiveConvTpName DisplayString
}
appcActiveConvLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU for the conversation. This field
is from 1 to 17 characters in length, including a period (.)
which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLluOperName,
then the two entries being indexed apply to the same
resource (specifically, to the same local LU)."
::= { appcActiveConvEntry 1 }
appcActiveConvParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the partner LU for the conversation. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present.
If this object has the same value as appcLuPairOperParLuName,
then the two entries being indexed apply to the same
resource (specifically, to the same partner LU)."
::= { appcActiveConvEntry 2 }
appcActiveConvSessIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Index of entry in appcActSessTable that is associated with
this conversation. If this object has the same value as
appcActSessIndex for the same LU pair, then the two entries
being indexed apply to the same resource (specifically, to the
same session)."
::= { appcActiveConvEntry 3 }
appcActiveConvId OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (4))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The 4-byte ID of the conversation."
::= { appcActiveConvEntry 4 }
okay so this is where the conversation's whole life story gets tracked 💅
appcActiveConvState OBJECT-TYPE
SYNTAX INTEGER {
reset(1),
send(2),
receive(3),
confirm(4),
confirmSend(5),
confirmDealloc(6),
pendingDeallocate(7),
pendingPost(8),
sendReceive(9),
sendOnly(10),
receiveOnly(11),
deferReceive(12),
deferDeallocate(13),
syncpoint(14),
syncpointSend(15),
syncpointDeallocate(16),
backoutRequired(17)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the state of the conversation at the instant when
the information was retrieved. The values are:
reset
The conversation is reset (i.e., deallocated).
send
The conversation can send data. This value also
is returned if the conversation is in
Send-Pending state.
receive
The conversation can receive data.
confirm
The conversation has received a confirm
indicator. It can issue an [MC_]CONFIRMED or
[MC_]SEND_ERROR verb to change state. It will
continue in Receive state if an [MC_]CONFIRMED
verb is issued.
confirmSend
The conversation is in Confirm state and changes
to Send state when an [MC_]CONFIRMED verb is
issued.
confirmDealloc
The conversation is in Confirm state and becomes
inactive when an [MC_]CONFIRMED verb is issued.
pendingDeallocate
The conversation is in Pending-Deallocate state
while it waits for (MC_)DEALLOCATE TYPE
(sync_level) to complete.
pendingPost
The conversation is in Pending-Post state while
it waits for the [MC_]RECEIVE_AND_POST verb to
complete its receive function.
sendReceive
The full-duplex conversation can send or receive
data.
sendOnly
The full-duplex conversation can send data, but
it does not have permission to receive data,
because the partner TP has already deallocated
its side of the conversation.
receiveOnly
The full-duplex conversation can receive data,
but it does not have permission to send data,
because it has already deallocated its side of
the conversation.
deferReceive
Waiting for a successful SYNCPT verb operation to
go into the receive state.
deferDeallocate
Waiting for a successful SYNCPT verb operation to
go into the reset state.
syncpoint
Need to response to a SYNCPT verb issued. After
successful operation, the next state will be
receive.
syncpointSend
Need to response to a SYNCPT verb issued. After
successful operation, the next state will be
send.
syncpointDeallocate
Need to response to a SYNCPT verb issued. After
successful operation, the next state will be
reset.
backoutRequired
TP must execute a BACKOUT verb to backout the
transaction."
::= { appcActiveConvEntry 5 }
appcActiveConvType OBJECT-TYPE
SYNTAX INTEGER {
basic(1),
mapped(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the type of conversation. The values are:
basic
Indicates that this conversation supports
basic verbs.
mapped
Indicates that this conversation supports
mapped verbs."
::= { appcActiveConvEntry 6 }
appcActiveConvCorrelator OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This is an 8-byte identifier that the source LU assigns to the
conversation; the source LU is the one that sent the allocation
request. The conversation correlator is included on the
allocation request. The conversation correlator uniquely
identifies a conversation, from among all conversations,
between the local and partner LUs. It may be used, for
example, during problem determination associated with a
conversation. A length of 0 indicates that no conversation
correlator is defined."
::= { appcActiveConvEntry 7 }
appcActiveConvSyncLvl OBJECT-TYPE
SYNTAX INTEGER {
none(1),
confirm(2),
syncpt(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the highest sync level support for the conversation.
The values are:
none
Indicates that no sync-level processing can be
performed on this conversation. The
transaction program does not issue verbs or
recognize any returned parameters
relating to any sync-level function.
confirm
Indicates that confirmation processing can be
performed on this conversation. The
transaction program can issue verbs and
recognize returned parameters relating to
confirmation.
syncpt
Indicates that syncpt and confirmation processing
can be performed on this conversation. The
transaction program can issue verbs and recognize
returned parameters relating to syncpt and
confirmation."
::= { appcActiveConvEntry 8 }
appcActiveConvSource OBJECT-TYPE
SYNTAX INTEGER {
localLu(1),
partnerLu(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates whether the local or partner LU is the source of the
conversation, that is, which LU started the conversation by
sending the allocation request.
localLu
The local LU is the source of the conversation,
and the partner LU is the target of the
conversation.
partnerLu
The partner LU is the source of the
conversation, and the local LU is the target of
the conversation."
::= { appcActiveConvEntry 9 }
appcActiveConvDuplex OBJECT-TYPE
SYNTAX INTEGER {
half(1),
full(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the conversation duplex style in effect for the
conversation.
half Indicates that information can be transferred in
both directions, but only in one direction at a
time.
full Indicates that information can be transferred in
both directions at the same time."
::= { appcActiveConvEntry 10 }
appcActiveConvUpTime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The length of time since the conversation started, measured in
hundredths of a second."
::= { appcActiveConvEntry 11 }
appcActiveConvSendBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of bytes that was sent on the
conversation. The count includes all SNA RU bytes sent,
including those in the FMH-5 (Attach), FMH-7 (Error
Description), SIGNAL, LUSTAT, and SNA responses; it does not
include SNA TH and RH bytes."
::= { appcActiveConvEntry 12 }
appcActiveConvRcvBytes OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates the number of bytes that was received on the
conversation. The count includes all SNA RU bytes sent,
including those in the FMH-5 (Attach), FMH-7 (Error
Description), SIGNAL, LUSTAT, and SNA responses; it does not
include SNA TH and RH bytes."
::= { appcActiveConvEntry 13 }
appcActiveConvUserid OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..10))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The user ID that the initiating program provided in the
incoming attach."
::= { appcActiveConvEntry 14 }
appcActiveConvPcidNauName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0 | 3..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network-qualified NAU name of the
node at which the session and PCID originated. For APPN
and LEN nodes, this is either CP name of the APPN node at
which the origin LU is located or the CP name of the
NN serving the LEN node at which the origin LU is
located. This field is from 3 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name. A null string indicates
that the value is unknown."
::= { appcActiveConvEntry 15 }
appcActiveConvPcid OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0|8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The procedure correlation identifier (PCID) of the session.
It is an 8-octet value assigned by the control point providing
session services for the primary LU. A null string indicates
that the value is unknown."
::= { appcActiveConvEntry 16 }
appcActiveConvModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The Mode Name used for this conversation.
This is a 1-8 character name."
::= { appcActiveConvEntry 17 }
appcActiveConvLuwIdName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The SNA name of the LU that initiated the logical unit of work
that is associated with this active TP. This field is from
1 to 17 characters in length, including a period (.) which
separates the NetId from the LU name if the NetId is present."
::= { appcActiveConvEntry 18 }
the state, type, correlator and sync-level objects are all pretty much the conversation's vibe check 🫶
and the byte counters, userid, PCID, mode name and LUW ID are the receipts, bestie 🧾✨
appcActiveConvLuwIdInstance OBJECT-TYPE ✨
appcActiveConvLuwIdInstance OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..6))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The instance identifier for the logical unit of work."
::= { appcActiveConvEntry 19 }
okay bestie, this one is the instance identifier for the logical unit of work (LUW) 🧚. It's an OCTET STRING that can be anywhere from 0 to 6 octets long, it's read-only, and it lives at index 19 of the active conversation entry 💜.
appcActiveConvLuwIdSequence OBJECT-TYPE 🌸
appcActiveConvLuwIdSequence OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..2))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The sequence identifier for the logical unit of work."
::= { appcActiveConvEntry 20 }
this is the sequence identifier for the same LUW, the sibling of the instance one 👯♀️. It's an OCTET STRING of 0 to 2 octets, read-only, and it sits at index 20. Instance plus sequence, together they're giving LUW identity, no cap 💅.
appcActiveConvTpName OBJECT-TYPE 🦋
appcActiveConvTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The transaction program name which started this conversation.
This name could either be from a FMH5 ATTACH for a remotely
started conversation, otherwise it could the name of the local
TP if available.
When the TP name consists entirely of displayable EBCDIC code
points, it is mapped directly to the equivalent ASCII display
string. However, registered TP names always have a non-
displayable EBCDIC code point (value less than or equal to
x'3F') as the first character, so they cannot be directly
mapped to an ASCII display string. These TP names are
converted to a display string that is equivalent to a
hexadecimal display of the EBCDIC code points. For example,
the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte
ASCII display string '06F1' (including the two single quotes).
This name is NULL if the conversation is started locally
(i.e., not with a FMH5 ATTACH)."
::= { appcActiveConvEntry 21 }
okay so this is the TP name that started the conversation, and the drama here is real 😭🔥. It's a DisplayString that can be 0 to 64 characters. If the conversation was started remotely, the name comes from a FMH5 ATTACH. Otherwise it can be the name of the local TP, if that's available.
Here's where it gets iconic. If the TP name is made entirely of displayable EBCDIC code points, it maps straight over to the matching ASCII display string, easy. BUT registered TP names always start with a non-displayable EBCDIC code point (anything less than or equal to x'3F'), so they can't map directly. Instead, they get converted into a display string that's a hexadecimal view of the EBCDIC code points. Example: the 2-byte TP name x'06F1' (CNOS) becomes the 6-character ASCII display string '06F1', quotes included 🎀. And if the conversation was started locally, meaning not with a FMH5 ATTACH, this name is null 🙈.
appcHistConvTable 🍓
Before the table itself, the spec has a little banner for the historical conversation table. Here it is, verbatim:
-- *********************************************************************
-- APPC Historical Conversation Table
-- This table contains historical information about APPC
-- conversations that ended abnormally. It is an implementation
-- choice how long to retain information on a given conversation.
-- *********************************************************************
and then the actual table:
appcHistConvTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcHistConvEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Table of historical information about APPC Conversations that
ended in error. Possible categories of error conditions that
could be saved in this table are:
- allocation errors,
- deallocate abend,
- program errors, and
- service errors."
::= { appcConversation 2 }
so the banner tells us this table holds info on conversations that ended abnormally, and how long you keep each one is an implementation choice 🧠. This is the table for conversations that ended in error. The four error categories it can save are: allocation errors, deallocate abend, program errors, and service errors 💀. It's not-accessible, it's a SEQUENCE OF AppcHistConvEntry, and it lives under appcConversation 2 🌈.
appcHistConvEntry OBJECT-TYPE ✨
appcHistConvEntry OBJECT-TYPE
SYNTAX AppcHistConvEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry representing one APPC Conversation."
INDEX
{ appcHistConvIndex }
::= { appcHistConvTable 1}
each row is one APPC conversation, and it's indexed by appcHistConvIndex 👑. Same deal as the others: not-accessible, and it sits at index 1 of the historical table.
AppcHistConvEntry 🎀
AppcHistConvEntry ::= SEQUENCE {
appcHistConvIndex Integer32,
appcHistConvEndTime DateAndTime,
appcHistConvLocLuName DisplayString,
appcHistConvParLuName DisplayString,
appcHistConvTpName DisplayString,
appcHistConvPcidNauName DisplayString,
appcHistConvPcid OCTET STRING,
appcHistConvSenseData SnaSenseData,
appcHistConvLogData OCTET STRING,
appcHistConvEndedBy INTEGER
}
this is the row layout, the whole outfit 💅. It's got ten columns: index, end time, local LU name, partner LU name, TP name, PCID NAU name, PCID, sense data, log data, and ended-by.
appcHistConvIndex OBJECT-TYPE 🔥
appcHistConvIndex OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Index for entry in Conversation table. This value identifies
the unique index of the conversation. It is recommended that
an Agent not reuse the index of a deactivated conversation for
a significant period of time (e.g. one week)."
::= { appcHistConvEntry 1 }
this is the unique index for each conversation. It's an Integer32 and it's not-accessible 🙈. The spec recommends that an Agent doesn't reuse the index of a deactivated conversation for a significant period of time, like one week, so the index doesn't get recycled too fast 🦋.
appcHistConvEndTime OBJECT-TYPE 🌸
appcHistConvEndTime OBJECT-TYPE
SYNTAX DateAndTime
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The time at which the conversation ended."
::= { appcHistConvEntry 2 }
simple and sweet: a DateAndTime that's read-only and records when the conversation ended ⏰✨.
appcHistConvLocLuName OBJECT-TYPE 💜
appcHistConvLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The name of the local LU for this conversation. This field is
from 1 to 17 characters in length, including a period (.) which
separates the NetId from the NAU name if the NetId is present."
::= { appcHistConvEntry 3 }
this is the local LU name for the conversation. It's a DisplayString that's 1 to 17 characters long, and that count includes the period . separating the NetId from the NAU name, if there's a NetId 🌈. It's read-only.
appcHistConvParLuName OBJECT-TYPE 🧚
appcHistConvParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The SNA name of the partner LU for the conversation. This
field is from 1 to 17 characters in length, including a period
(.) which separates the NetId from the NAU name if the NetId is
present."
::= { appcHistConvEntry 4 }
this one's the SNA name of the partner LU, same vibe as the local one 👯♀️. It's a read-only DisplayString of 1 to 17 characters, with that same period separating the NetId from the NAU name when a NetId is there.
appcHistConvTpName OBJECT-TYPE 🍓
appcHistConvTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The transaction program name which started this conversation.
This name could either be from a FMH5 ATTACH for a remotely
started conversation, otherwise it could the name of the local
TP if available.
When the TP name consists entirely of displayable EBCDIC code
points, it is mapped directly to the equivalent ASCII display
string. However, registered TP names always have a non-
displayable EBCDIC code point (value less than or equal to
x'3F') as the first character, so they cannot be directly
mapped to an ASCII display string. These TP names are
converted to a display string that is equivalent to a
hexadecimal display of the EBCDIC code points. For example,
the 2-byte TP name x'06F1' (CNOS) is converted to the 6-byte
ASCII display string '06F1' (including the two single quotes).
This name is NULL if the conversation is started locally
(i.e., not with a FMH5 ATTACH)."
::= { appcHistConvEntry 5 }
this is the TP name again, but for the historical table 🔁. It's the exact same story as the active one: 0 to 64 characters, comes from the FMH5 ATTACH for remote starts or the local TP name if known, and EBCDIC names that aren't directly displayable get the hex treatment, so x'06F1' (CNOS) becomes '06F1' with the quotes. Locally started conversations have a null name 💅.
appcHistConvPcidNauName OBJECT-TYPE 🦋
appcHistConvPcidNauName OBJECT-TYPE
SYNTAX DisplayString (SIZE (0 | 3..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The network-qualified NAU name of the
node at which the session and PCID originated. For APPN
and LEN nodes, this is either CP name of the APPN node at
which the origin LU is located or the CP name of the
NN serving the LEN node at which the origin LU is
located. This field is from 3 to 17 characters in
length, including a period (.) which separates the
NetId from the NAU name. A null string indicates that the
value is unknown."
::= { appcHistConvEntry 6 }
okay this one is a bit of a mouthful 😭, but here's the tea. It's the network-qualified NAU name of the node where the session and PCID started. For APPN and LEN nodes, it's either the CP name of the APPN node where the origin LU lives, or the CP name of the NN serving the LEN node where the origin LU lives 🧠. The length is 0 or 3 to 17 characters, counting that period between the NetId and the NAU name. An empty string means the value is unknown 🙈.
appcHistConvPcid OBJECT-TYPE 💖
appcHistConvPcid OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0|8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The procedure correlation identifier (PCID) of the session.
It is an 8-octet value assigned by the control point providing
session services for the primary LU. A null string indicates
that the value is unknown."
::= { appcHistConvEntry 7 }
the PCID (procedure correlation identifier) is the session's ID card 🪪. It's an 8-octet value, and it gets assigned by the control point that's giving session services to the primary LU. The size can be 0 or 8, and a null string means it's unknown ✨.
appcHistConvSenseData OBJECT-TYPE 💀
appcHistConvSenseData OBJECT-TYPE
SYNTAX SnaSenseData
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The sense data associated with the action that ended this
conversation, e.g., FMH-7 or UNBIND."
::= { appcHistConvEntry 8 }
this is the sense data tied to whatever action ended the conversation. The example they give is FMH-7 or UNBIND 🔥. It's read-only, and it's an SnaSenseData.
appcHistConvLogData OBJECT-TYPE 🌈
appcHistConvLogData OBJECT-TYPE
SYNTAX OCTET STRING (SIZE (0..32))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The first 32 bytes of the data portion of the Log Data GDS
Variable that is associated with the last FMH-7 that occurred
on this conversation. If there was no Log Data GDS Variable
associated with the FMH-7, this object is null.
This object reflects only the data portion of the Log Data
GDS Variable (i.e. not the LL or GDS Id)."
::= { appcHistConvEntry 9 }
this is the log data, and it's giving very specific 🧐. It holds the first 32 bytes of the data portion of the Log Data GDS Variable tied to the last FMH-7 on the conversation. No Log Data GDS Variable with that FMH-7? Then this object is null. And it only covers the data portion, so the LL and GDS Id are not included 🙈.
appcHistConvEndedBy OBJECT-TYPE 👑
appcHistConvEndedBy OBJECT-TYPE
SYNTAX INTEGER {
localLu(1),
partnerLu(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Indicates which LU ended the conversation."
::= { appcHistConvEntry 10 }
last column, and it's the who ended it question 👀. The values are localLu(1) and partnerLu(2), and it's read-only. Your local LU or the partner LU, one of them made the exit 🚪💅.
appcCPIC Admin Section 🌸
Next up is the CPI-C admin table, which holds default or expected config values for CPI-C side information. The banner, verbatim:
-- *********************************************************************
-- APPC CPIC Admin Table
-- Objects in this table contain default or expected configuration
-- values for CPI-C side information.
-- *********************************************************************
and the table itself:
appcCpicAdminTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcCpicAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC CPI-C side information table."
::= { appcCPIC 1 }
okay so the banner says this table is all about default or expected config values for CPI-C side info ⚙️. It's a SEQUENCE OF AppcCpicAdminEntry, it's not-accessible, and it lives under appcCPIC 1 🧚.
appcCpicAdminEntry OBJECT-TYPE 🫶
appcCpicAdminEntry OBJECT-TYPE
SYNTAX AppcCpicAdminEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC CPI-C side information Table."
INDEX { appcCpicAdminLocLuName,
appcCpicAdminSymbDestName }
::= { appcCpicAdminTable 1 }
each row is an entry of that CPI-C side info table, and it's indexed by two things: the local LU name and the symbolic destination name 🍓. It's not-accessible, and it sits at index 1 of the table.
AppcCpicAdminEntry 💜
AppcCpicAdminEntry ::= SEQUENCE {
appcCpicAdminLocLuName DisplayString,
appcCpicAdminSymbDestName DisplayString,
appcCpicAdminParLuAlias DisplayString,
appcCpicAdminParLuName DisplayString,
appcCpicAdminModeName DisplayString,
appcCpicAdminTpNameType INTEGER,
appcCpicAdminTpName DisplayString,
appcCpicAdminUserid DisplayString,
appcCpicAdminSecurity INTEGER
}
the row layout for the CPI-C admin entry has nine columns 🌈. They are: local LU name, symbolic destination name, partner LU alias, partner LU name, mode name, TP name type, TP name, userid, and security.
appcCpicAdminLocLuName OBJECT-TYPE 🦋
appcCpicAdminLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU to which this CPI-C side
information definition applies. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present.
The reserved value '*ALL' indicates that the definition applies
to all local LUs, and not just to a single local LU."
::= { appcCpicAdminEntry 1 }
this is the SNA name of the local LU that this CPI-C side info definition applies to 🧠. It's a DisplayString of 1 to 17 characters, with the period between NetId and NAU name included when a NetId is there. There's a reserved value, '*ALL', and it means the definition applies to all local LUs, not just one 👑. It's not-accessible.
appcCpicAdminSymbDestName OBJECT-TYPE 💖
appcCpicAdminSymbDestName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the symbolic destination name used by CPI-C
applications to identify this definition."
::= { appcCpicAdminEntry 2 }
this is the symbolic destination name that CPI-C applications use to find this definition 🔑. It's a DisplayString of 1 to 8 characters, and it's not-accessible because it's part of the index.
appcCpicAdminParLuAlias OBJECT-TYPE 🧚
appcCpicAdminParLuAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the partner LU. If not known or
not applicable, this object contains a zero-length
string."
::= { appcCpicAdminEntry 3 }
this is a local alias for the partner LU 🌸. It's read-only, it's 0 to 8 characters, and if the alias is unknown or doesn't apply, you get a zero-length string 🫧.
appcCpicAdminParLuName OBJECT-TYPE 🍓
appcCpicAdminParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The SNA name of the partner LU. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present."
::= { appcCpicAdminEntry 4 }
this is the SNA name of the partner LU 👯♀️. It's read-only, it's 1 to 17 characters, and the period between the NetId and NAU name counts toward that length when a NetId is present.
appcCpicAdminModeName OBJECT-TYPE 🌈
appcCpicAdminModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the mode name. A mode defines the characteristics
for a group of sessions. The mode name can be blank (8 space
characters)."
::= { appcCpicAdminEntry 5 }
this is the mode name, and a mode is what defines the characteristics for a whole group of sessions 🦋. It's read-only, it's 1 to 8 characters, and the mode name can be blank, which means 8 space characters ✨.
okay so we're back in the admin table and it's giving TP names 💅 each entry gets a type tag that says whether the name is a normal one or an SNA service TP ✨
appcCpicAdminTpNameType OBJECT-TYPE
SYNTAX INTEGER {
normal(1),
snaServiceTp(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the TP name in appcCpicAdminTpName
identifies a normal TP or an SNA service TP. In this context,
a normal TP is one with a name consisting only of displayable
characters, while an SNA service TP has a name containing
octets that do not map to displayable characters."
::= { appcCpicAdminEntry 6 }
next up is the TP name itself 🎀 and this one has a whole display convention moment, so pay attention bestie 🫶
appcCpicAdminTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the name of the partner TP to be used when a CPI-C
application initiates a conversation specifying this side
information entry.
Display convention
When the TP name consists entirely of displayable EBCDIC
code points, it is mapped directly to the equivalent ASCII
display string. However, registered TP names always have a
non-displayable EBCDIC code point (value less than or equal
to x'3F') as the first character, so they cannot be
directly mapped to an ASCII display string. These TP names
are converted to a display string that is equivalent to a
hexadecimal display of the EBCDIC code points. For
example, the 2-byte TP name x'06F1' (CNOS) is converted to
the 6-byte ASCII display string '06F1' (including the two
single quotes)."
::= { appcCpicAdminEntry 7 }
appcCpicAdminUserid OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..10))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The security userid, if any, associated with the side
information definition."
::= { appcCpicAdminEntry 8 }
and now security 🔐 this part has six different flavours and honestly each one has main character energy 👑
appcCpicAdminSecurity OBJECT-TYPE
SYNTAX INTEGER {
none(1),
same(2),
pgm(3),
pgmStrong(4),
distributed(5),
mutual(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the security information to be used for allocating
the conversation.
none - No security information.
same - Use the security environment currently
associated with this TP.
pgm - Use the program-supplied user_id and password.
pgmStrong - Use the program-supplied user_id and password.
The local LU will insure that the password is
not exposed in clear-text form on the physical
network.
distributed - Use the security environment and a distributed
security system to generate the authentication
information for this request. If distributed
security tokens cannot be generated, then fail
the conversation.
mutual - Authenticate both the user to the destination
system and the destination system to the user."
::= { appcCpicAdminEntry 9 }
-- *********************************************************************
-- APPC CPIC Oper Table
-- Objects in this table contain current operational values, such
-- as state values or negotiated parameters, for CPI-C side
-- information.
-- *********************************************************************
okay the operational table is next 🦋 it's basically the live version of the side info, so the states and negotiated stuff live here ✨
appcCpicOperTable OBJECT-TYPE
SYNTAX SEQUENCE OF AppcCpicOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"APPC CPI-C side information operational table."
::= { appcCPIC 2 }
appcCpicOperEntry OBJECT-TYPE
SYNTAX AppcCpicOperEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Entry of APPC CPI-C side information Table."
INDEX { appcCpicOperLocLuName,
appcCpicOperSymbDestName }
::= { appcCpicOperTable 1 }
AppcCpicOperEntry ::= SEQUENCE {
appcCpicOperLocLuName DisplayString,
appcCpicOperSymbDestName DisplayString,
appcCpicOperParLuAlias DisplayString,
appcCpicOperParLuName DisplayString,
appcCpicOperModeName DisplayString,
appcCpicOperTpNameType INTEGER,
appcCpicOperTpName DisplayString,
appcCpicOperUserid DisplayString,
appcCpicOperSecurity INTEGER
}
appcCpicOperLocLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"The SNA name of the local LU to which this CPI-C side
information definition applies. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present.
The reserved value '*ALL' indicates that the definition applies
to all local LUs, and not just to a single local LU."
::= { appcCpicOperEntry 1 }
appcCpicOperSymbDestName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"Specifies the symbolic destination name used by CPI-C
applications to identify this definition."
::= { appcCpicOperEntry 2 }
appcCpicOperParLuAlias OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A local alias for the partner LU. If not known or not
applicable, this object contains a zero-length string."
::= { appcCpicOperEntry 3 }
appcCpicOperParLuName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..17))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The SNA name of the partner LU. This field is from 1 to 17
characters in length, including a period (.) which separates
the NetId from the NAU name if the NetId is present."
::= { appcCpicOperEntry 4 }
appcCpicOperModeName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..8))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the mode name. A mode defines the characteristics
for a group of sessions. The mode name can be blank (8 space
characters)."
::= { appcCpicOperEntry 5 }
appcCpicOperTpNameType OBJECT-TYPE
SYNTAX INTEGER {
normal(1),
snaServiceTp(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies whether the TP name in appcCpicOperTpName identifies
a normal TP or an SNA service TP. In this context, a normal TP
is one with a name consisting only of displayable characters,
while an SNA service TP has a name containing octets that do
not map to displayable characters."
::= { appcCpicOperEntry 6 }
appcCpicOperTpName OBJECT-TYPE
SYNTAX DisplayString (SIZE (1..64))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the name of the partner TP to be used when a CPI-C
application initiates a conversation specifying this side
information entry.
Display convention
When the TP name consists entirely of displayable EBCDIC
code points, it is mapped directly to the equivalent ASCII
display string. However, registered TP names always have
a non-displayable EBCDIC code point (value less than or
equal to x'3F') as the first character, so they cannot be
directly mapped to an ASCII display string. These TP
names are converted to a display string that is equivalent
to a hexadecimal display of the EBCDIC code points. For
example, the 2-byte TP name x'06F1' (CNOS) is converted to
the 6-byte ASCII display string '06F1' (including the two
single quotes)."
::= { appcCpicOperEntry 7 }
appcCpicOperUserid OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..10))
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The security userid, if any, associated with the active side
information definition."
::= { appcCpicOperEntry 8 }
appcCpicOperSecurity OBJECT-TYPE
SYNTAX INTEGER {
none(1),
same(2),
pgm(3),
pgmStrong(4),
distributed(5),
mutual(6)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Specifies the security information to be used for allocating
the conversation.
none - No security information.
same - Use the security environment currently
associated with this TP.
pgm - Use the program-supplied user_id and password.
pgmStrong - Use the program-supplied user_id and password.
The local LU will insure that the password is
not exposed in clear-text form on the physical
network.
distributed - Use the security environment and a distributed
security system to generate the authentication
information for this request. If distributed
security tokens cannot be generated, then fail
the conversation.
mutual - Authenticate both the user to the destination
system and the destination system to the user."
::= { appcCpicOperEntry 9 }
-- ***************************************************************
-- Conformance information
-- ***************************************************************
appcConformance OBJECT IDENTIFIER ::= {appcMIB 2 }
appcCompliances OBJECT IDENTIFIER ::= {appcConformance 1 }
appcGroups OBJECT IDENTIFIER ::= {appcConformance 2 }
-- Compliance statements
okay bestie, we're officially in the compliance zone now 💅✨ This bit tells the SNMPv2 entities that implement the APPC MIB what they have to check off to be compliant. Think of it as the guest list for the MIB party 🎀
appcCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION
"The compliance statement for the SNMPv2 entities which
implement the APPC MIB."
MODULE -- this module
-- Unconditionally mandatory groups
MANDATORY-GROUPS {
appcGlobalConfGroup,
appcLluConfGroup,
appcParLuConfGroup,
appcModeConfGroup,
appcTpConfGroup,
appcSessionConfGroup
}
-- Conditionally mandatory groups
GROUP appcControlConfGroup
DESCRIPTION
"The appcControlConfGroup is mandatory only for those
entities which implement activation and deactivation of
specific controls such as statistics collecting and
counting."
GROUP appcCnosConfGroup
DESCRIPTION
"The appcCnosConfGroup is mandatory only for those entities
which implement CNOS. "
GROUP appcCpicConfGroup
DESCRIPTION
"The appcCpicConfGroup is mandatory only for those entities
which implement CPI-C. "
GROUP appcConversationConfGroup
DESCRIPTION
"The appcConversationConfGroup is mandatory only for those
entities which implement session endpoints for non-control
APPC sessions."
-- MIN-ACCESS for objects
OBJECT appcActSessOperState
MIN-ACCESS read-only
DESCRIPTION
"An implementation is not required to support session
deactivation via this object."
::= {appcCompliances 1 }
So the compliance statement splits the groups into three buckets 🦋 First up is the unconditionally mandatory crew, the six groups that every single entity has to bring: global, LLU, partner LU, mode, TP and session 🌸 Then there's the conditionally mandatory crew, where you only need the group if your entity actually does the thing it's about. Control is for activating and deactivating controls like statistics, CNOS and CPI-C get their own groups if you implement them, and the conversation group is for entities that run session endpoints for non-control APPC sessions 💜
There's also a little MIN-ACCESS moment for appcActSessOperState, and it's giving "you don't have to let people turn sessions off through this one" 🙈 The original says an implementation is not required to support session deactivation via this object, so that's the whole deal.
-- Units of conformance
appcGlobalConfGroup OBJECT-GROUP
OBJECTS {
appcUpTime,
appcDefaultModeName,
appcDefaultLuName,
appcDefaultImplInbndPlu,
appcDefaultMaxMcLlSndSize,
appcDefaultFileSpec,
appcDefaultTpOperation,
appcDefaultTpConvSecRqd,
appcLocalCpName,
appcActiveSessions,
appcActiveHprSessions
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
global information and defaults."
::= { appcGroups 1 }
appcLluConfGroup OBJECT-GROUP
OBJECTS {
appcLluAdminDepType,
appcLluAdminLocalAddress,
appcLluAdminSessLimit,
appcLluAdminBindRspMayQ,
appcLluAdminCompression,
appcLluAdminInBoundCompLevel,
appcLluAdminOutBoundCompLevel,
appcLluAdminCompRleBeforeLZ,
appcLluAdminAlias,
appcLluOperDepType,
appcLluOperLocalAddress,
appcLluOperSessLimit,
appcLluOperBindRspMayQ,
appcLluOperCompression,
appcLluOperInBoundCompLevel,
appcLluOperOutBoundCompLevel,
appcLluOperCompRleBeforeLZ,
appcLluOperAlias,
appcLluOperActiveSessions
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
local LU6.2s."
::= { appcGroups 2 }
appcParLuConfGroup OBJECT-GROUP
OBJECTS {
appcLuPairAdminParLuAlias,
appcLuPairAdminSessLimit,
appcLuPairAdminSessSec,
appcLuPairAdminSecAccept,
appcLuPairAdminLinkObjId,
appcLuPairAdminParaSessSup,
appcLuPairOperParLuAlias,
appcLuPairOperSessLimit,
appcLuPairOperSessSec,
appcLuPairOperSecAccept,
appcLuPairOperLinkObjId,
appcLuPairOperParaSessSup,
appcLuPairOperParaSessSupLS,
appcLuPairOperState
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
partner LUs."
::= { appcGroups 3 }
Now the units of conformance 🎀 These are the object groups themselves, and they're all grouped under appcGroups. The first three are the global defaults, the local LU6.2s and the partner LUs. Each one is just a neat little bundle of objects, all marked STATUS current ✨
appcModeConfGroup OBJECT-GROUP
OBJECTS {
appcModeAdminCosName,
appcModeAdminSessEndTpName,
appcModeAdminMaxSessLimit,
appcModeAdminMinCwinLimit,
appcModeAdminMinClosLimit,
appcModeAdminConWinAutoActLmt,
appcModeAdminRecvPacWinSz,
appcModeAdminSendPacWinSz,
appcModeAdminPrefRecvRuSz,
appcModeAdminPrefSendRuSz,
appcModeAdminRecvRuSzUpBnd,
appcModeAdminSendRuSzUpBnd,
appcModeAdminRecvRuSzLoBnd,
appcModeAdminSendRuSzLoBnd,
appcModeAdminSingSessReinit,
appcModeAdminCompression,
appcModeAdminInBoundCompLevel,
appcModeAdminOutBoundCompLevel,
appcModeAdminCompRleBeforeLZ,
appcModeAdminSyncLvl,
appcModeAdminCrypto,
appcModeOperCosName,
appcModeOperSessEndTpName,
appcModeOperSessLimit,
appcModeOperMaxSessLimit,
appcModeOperMinCwinLimit,
appcModeOperMinClosLimit,
appcModeOperConWinAutoActLmt,
appcModeOperRecvPacWinSz,
appcModeOperSendPacWinSz,
appcModeOperPrefRecvRuSz,
appcModeOperPrefSendRuSz,
appcModeOperRecvRuSzUpBnd,
appcModeOperSendRuSzUpBnd,
appcModeOperRecvRuSzLoBnd,
appcModeOperSendRuSzLoBnd,
appcModeOperSingSessReinit,
appcModeOperCompression,
appcModeOperInBoundCompLevel,
appcModeOperOutBoundCompLevel,
appcModeOperCompRleBeforeLZ,
appcModeOperSyncLvl,
appcModeOperCrypto,
appcModeOperSyncLvlLastStart,
appcModeOperCryptoLastStart,
appcModeOperCNOSNeg,
appcModeOperActCwin,
appcModeOperActClos,
appcModeOperPndCwin,
appcModeOperPndClos,
appcModeOperPtmCwin,
appcModeOperPtmClos,
appcModeOperDrainSelf,
appcModeOperDrainPart
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
modes."
::= { appcGroups 4 }
appcTpConfGroup OBJECT-GROUP
OBJECTS {
appcTpAdminFileSpec,
appcTpAdminStartParm,
appcTpAdminTpOperation,
appcTpAdminInAttachTimeout,
appcTpAdminRcvAllocTimeout,
appcTpAdminSyncLvl,
appcTpAdminInstLmt,
appcTpAdminStatus,
appcTpAdminLongRun,
appcTpAdminConvType,
appcTpAdminConvDuplex,
appcTpAdminConvSecReq,
appcTpAdminVerPip,
appcTpAdminPipSubNum
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
Transaction Programs."
::= { appcGroups 5 }
The mode group is the biggest one in the whole bunch 🔥 It's got admin and oper objects side by side, plus all the window, RU size, compression and drain stuff, so it's literally a whole mode-lifestyle moment 💅 The TP group is smaller but still iconic, covering admin settings for Transaction Programs and their PIP and convo details 🧚
appcSessionConfGroup OBJECT-GROUP
OBJECTS {
appcActSessPcidCpName,
appcActSessPcid,
appcActSessPluIndicator,
appcActSessModeName,
appcActSessCosName,
appcActSessTransPriority,
appcActSessEnhanceSecSup,
appcActSessSendPacingType,
appcActSessSendRpc,
appcActSessSendNxWndwSize,
appcActSessRecvPacingType,
appcActSessRecvRpc,
appcActSessRecvNxWndwSize,
appcActSessRscv,
appcActSessInUse,
appcActSessMaxSndRuSize,
appcActSessMaxRcvRuSize,
appcActSessSndPacingSize,
appcActSessRcvPacingSize,
appcActSessOperState,
appcActSessUpTime,
appcActSessRtpNceId,
appcActSessRtpTcid,
appcActSessLinkIndex,
appcSessStatsSentFmdBytes,
appcSessStatsSentNonFmdBytes,
appcSessStatsRcvdFmdBytes,
appcSessStatsRcvdNonFmdBytes,
appcSessStatsSentFmdRus,
appcSessStatsSentNonFmdRus,
appcSessStatsRcvdFmdRus,
appcSessStatsRcvdNonFmdRus,
appcSessStatsCtrUpTime,
appcHistSessTime,
appcHistSessType,
appcHistSessLocLuName,
appcHistSessParLuName,
appcHistSessModeName,
appcHistSessUnbindType,
appcHistSessSenseData,
appcHistSessComponentId,
appcHistSessDetectModule,
appcSessRtpSessions
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
LU6.2 sessions."
::= { appcGroups 6 }
appcControlConfGroup OBJECT-GROUP
OBJECTS {
appcCntrlAdminStat,
appcCntrlAdminRscv,
appcCntrlAdminTrace,
appcCntrlAdminTraceParm,
appcCntrlOperStat,
appcCntrlOperStatTime,
appcCntrlOperRscv,
appcCntrlOperRscvTime,
appcCntrlOperTrace,
appcCntrlOperTraceTime,
appcCntrlOperTraceParm
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
control."
::= { appcGroups 7 }
appcCnosConfGroup OBJECT-GROUP
OBJECTS {
appcCnosCommand,
appcCnosMaxSessLimit,
appcCnosMinCwinLimit,
appcCnosMinClosLimit,
appcCnosDrainSelf,
appcCnosDrainPart,
appcCnosResponsible,
appcCnosForce,
appcCnosTargetLocLuName,
appcCnosTargetParLuName,
appcCnosTargetModeName
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
CNOS processing."
::= { appcGroups 8 }
appcCpicConfGroup OBJECT-GROUP
OBJECTS {
appcCpicAdminParLuAlias,
appcCpicAdminParLuName,
appcCpicAdminModeName,
appcCpicAdminTpNameType,
appcCpicAdminTpName,
appcCpicAdminUserid,
appcCpicAdminSecurity,
appcCpicOperParLuAlias,
appcCpicOperParLuName,
appcCpicOperModeName,
appcCpicOperTpNameType,
appcCpicOperTpName,
appcCpicOperUserid,
appcCpicOperSecurity
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
CPI-C side information."
::= { appcGroups 9 }
The session group is the big one for live LU6.2 sessions, with the activity, statistics and history objects all bundled together ✨ Then there are the control, CNOS and CPI-C groups, which are the ones that only show up if your entity actually does control, CNOS or CPI-C things 🦋 Honestly, the amount of stuff in here is giving main character energy 👑
appcConversationConfGroup OBJECT-GROUP
OBJECTS {
appcActiveConvId,
appcActiveConvState,
appcActiveConvType,
appcActiveConvCorrelator,
appcActiveConvSyncLvl,
appcActiveConvSource,
appcActiveConvDuplex,
appcActiveConvUpTime,
appcActiveConvSendBytes,
appcActiveConvRcvBytes,
appcActiveConvUserid,
appcActiveConvPcidNauName,
appcActiveConvPcid,
appcActiveConvModeName,
appcActiveConvLuwIdName,
appcActiveConvLuwIdInstance,
appcActiveConvLuwIdSequence,
appcActiveConvTpName,
appcHistConvEndTime,
appcHistConvLocLuName,
appcHistConvParLuName,
appcHistConvTpName,
appcHistConvPcidNauName,
appcHistConvPcid,
appcHistConvSenseData,
appcHistConvLogData,
appcHistConvEndedBy
}
STATUS current
DESCRIPTION
"A collection of objects providing the instrumentation of APPC
conversations."
::= { appcGroups 10 }
-- end of conformance statement
END
5. Acknowledgments ✨
okay bestie, this MIB module came from the SNA NAU MIB Working Group 🫶 big thanks to Wayne Clark (Cisco Systems), Rich Daugherty (IBM Corporation), and Leo Temoshenko (IBM Corporation) for helping build it and reviewing it. they really made it shine 💖
6. References 📚
[1] IBM, Systems Network Architecture Technical Overview, GC30-3073-4, January, 1994.
[2] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Structure of Management Information for version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1902, January 1996.
[3] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Textual Conventions for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1903, January 1996.
[4] SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Conformance Statements for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1904, January 1996.
[5] IBM, Systems Network Architecture Transaction Programmer's Reference for LU Type 6.2, GC30-3084-05, June, 1993.
[6] IBM, Common Programming Interface Communications Specification 2.0, SC31-6180-01, June, 1994.
[7] Kielczewski, Z., Kostick D., and K. Shih, "Definition of Managed Objects for SNA NAUs using SMIv2", RFC 1666, Eicon Technology Corporation, Bell Communications Research, Novell, August 1994.
7. Security Considerations 🔐
plot twist 😭 this memo does not discuss security issues at all. nothing about them is covered here, so there's nothing more to say on that front 💀
8. Authors' Addresses 🦋
Michael Allen Wall Data Inc. P.O.Box 1120, WA 98019, USA
Phone: +1 206 844 3505 EMail: mallen@hq.walldata.com
Bob Clouston Cisco Systems 7025 Kit Creek Road PO Box 14987 Research Triangle Park, NC 27709, USA
Phone: +1 919 472 2333 EMail: clouston@cisco.com
Zbigniew Kielczewski Cisco Systems 7025 Kit Creek Road PO Box 14987 Research Triangle Park, NC 27709, USA
Phone: +1 919 472 2326 EMail: zbig@cisco.com
William Kwan Jupiter Technology Inc. 200 Prospect St. Waltham, MA 02254
Phone: 1 617 894-9300 x423 EMail: billk@jti.com
Bob Moore IBM Corporation 800 Park Offices Drive E87/664 P.O. Box 12195 Research Triangle Park, NC 27709, USA
Phone: 1 919 254 4436 EMail: remoore@ralvm6.vnet.ibm.com
📦 where this page comes from
- ietf: rfc2051 1996-10
- 💖 girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms