Definitions of Managed Objects for Character Stream Devices using SMIv2
obsoletes
- rfc-1316 — Definitions of Managed Objects for Character Stream Devices
Extracted elements (28)
The ctsRts and dsrDtr flow-control values are included in the (now deprecated) charPortInFlowType and charPortOutFlowType despite being RS-232-specific, because including them here simplified the model even if it was not architecturally pure.
The MIB intentionally contains no distinction between permanent (non-volatile) and operational (volatile) databases; handling of such distinctions is left as implementation-specific, avoiding over-specification of storage semantics.
The PortIndex for a character port is conventionally (but not required to be) set equal to the corresponding ifIndex when the port is backed by a hardware interface in ifTable, providing a convenient cross-reference without mandating it.
charPortInFlowType and charPortOutFlowType (INTEGER: none/xonXoff/hardware/ctsRts/dsrDtr) are deprecated in this revision in favor of the bitmask objects charPortInFlowTypes and charPortOutFlowTypes, which allow combinations of flow-control methods.
The Character MIB does not relate directly to the Interface MIB but in most implementations sits above a physical sublayer such as RS-232-like or Parallel-printer-like MIBs, which are represented by rows in ifTable identified by ifIndex.
Conforming SNMPv2 entities with character hardware interfaces MUST implement all objects in charGroup, as specified by the charCompliance MODULE-COMPLIANCE statement.
The Character MIB is mandatory for all systems that offer character stream ports, including terminal servers, general-purpose time-sharing hosts, and systems such as a bridge with a console port.
charNumber (mib-2.19.1) is a read-only Integer32 giving the total number of entries in charPortTable regardless of their current state.
charPortAdminOrigin is a read-write INTEGER controlling the allowed session origin: dynamic(1) permits network or local establishment, network(2) or local(3) restrict to one source, and none(4) disallows any new sessions.
charPortAdminStatus is a read-write INTEGER with four values: enabled(1) allows character passing and new sessions, disabled(2) allows characters but not new sessions, off(3) disallows both, and maintenance(4) indicates an exclusive test mode. These map to ifAdminStatus up/down/test.
charPortHardware is a read-only AutonomousType pointing to a hardware-specific MIB sub-tree (e.g., RS-232 MIB) for physical ports; agents without such configuration return the null OID { 0 0 }.
charPortInCharacters and charPortOutCharacters are read-only Counter32 objects counting all characters (including framing, XON/XOFF, BREAK, locally-processed, and all-session traffic) since system reinitialization while the port was up, active, or in maintenance.
charPortInFlowState and charPortOutFlowState are read-only INTEGERs with values none(1), unknown(2), stop(3), and go(4), reporting the current operational flow-control state independent of the chosen flow-control type.
charPortLastChange is a read-only TimeTicks giving the value of sysUpTime when the port entered its current operational state; returns zero if the state was entered before the last management subsystem reinitialization.
charPortLowerIfIndex is a read-only InterfaceIndex referencing the lower-level hardware interface (e.g., RS-232 or parallel printer ifIndex) supporting this character port; zero if no lower interface exists.
charPortOperStatus is a read-only INTEGER with five values: up(1), down(2), maintenance(3), absent(4) for missing hardware, and active(5) for up with a user present. Maps to ifOperStatus up/down/test.
charPortReset is a read-write INTEGER control with values ready(1) and execute(2); setting to execute forces the port and all its sessions into a clean initial state. GET requests always return ready.
charPortSessionMaximum is a read-write INTEGER (-1..2147483647) specifying the maximum concurrent sessions on a port; -1 means no maximum. Behavior when set below the current session count is unspecified.
charPortSessionNumber is a read-only Gauge32 counting open sessions in connecting, connected, or disconnecting state; charPortSessionIndex is the charSessIndex of the port's first or only active session, returning zero when none exists.
charSessConnectionId is a read-only InstancePointer to the highest available related MIB for the session's protocol (e.g., tcpConnState for a TCP session without a Telnet MIB); agents without such configuration return { 0 0 }.
charSessIndex is a read-only INTEGER (1..2147483647) uniquely identifying a session within its port; indexes need not be sequential, may be reused across ports, and may have any agent-convenient value.
charSessKill is a read-write INTEGER control (ready/execute) to terminate a session; GET always returns ready, and setting execute causes termination.
charSessProtocol is a read-only AutonomousType identifying the network protocol of a session. The document assigns OIDs for: protocolOther, protocolTelnet, protocolRlogin, protocolLat, protocolX29, and protocolVtp under { char 4 }.
charSessStartTime is a read-only TimeTicks recording the value of sysUpTime when the session entered the connecting state.
PortIndex is a textual convention for uniquely identifying character ports; values must be greater than zero, remain constant across re-initializations, and are recommended to be assigned contiguously starting from 1.
The RFC explicitly states that security issues are not discussed in this memo, providing no guidance on access control, authentication, or protection of the read-write managed objects (such as charPortReset and charSessKill) against unauthorized use.
charSessState defines three session states: connecting(1) moving from nonexistent toward connected, connected(2) where character data can flow on the network side, and disconnecting(3) moving from connected or connecting back to nonexistent.
charPortInFlowTypes and charPortOutFlowTypes are each a 1-octet OCTET STRING bitmask for software-level flow control: bit 128 = xonXoff, bit 64 = enqHost (ENQ/ACK to host), bit 32 = enqTerm (ACK to port); zero means no flow control.