--
-- genLineRedundancy.mib
-- MIB generated by MG-SOFT Visual MIB Builder Version 2.0 Build 187
-- Monday, November 06, 2000 at 19:07:09
--

-- The ZHONE-RedundantLine-MIB defines a set of
-- variables to manage line interfaces under the
-- Zhone Technologies management system.  Lines are 
-- described by line profiles, and lines related to
-- one another through a line-sparing redundancy 
-- are grouped into a lineGroup.

	ZHONE-GEN-LINE-REDUNDANCY DEFINITIONS ::= BEGIN

		IMPORTS 
			ifIndex, InterfaceIndex			
				FROM IF-MIB			
			Integer32, OBJECT-TYPE, MODULE-IDENTITY			
				FROM SNMPv2-SMI			
			TEXTUAL-CONVENTION			
				FROM SNMPv2-TC			
			zhoneInterfaceGroup, zhoneModules			
				FROM Zhone			
			ZhoneAdminString, ZhoneShelfValue, ZhoneSlotValue, ZhoneRowStatus			
				FROM Zhone-TC;
	
	
-- This header defines the structures generated by the MIB
-- variables declared in this module.
-- 
-- The line redundancy groups are described by the Line_Group record
-- which is defined in the file lineGroup.h. and lineGroup.c.
-- The record is called "line-group" in the CLI.
-- Each record is locatd uneder the "interface/groups" branch of the
-- CLI profile tree, and is stored by groupId.
-- 
-- 
-- 
-- The line profiles are described by the Line_Profile record
-- which is defined in the file lineProf.h and lineProf.c.  
-- The record is called "line-profile" in the CLI.
-- Each record is located under the "interface/profiles" branch of the
-- CLI profile tree, and is stored by profileId.
-- 
-- 
-- 
-- 
-- I propose we use ZHONE_INFRA for generic pieces which 
-- must always be there.
		zhoneRedundantLine MODULE-IDENTITY
			LAST-UPDATED "200011031722Z"
			ORGANIZATION
				"Zhone Technologies"
			CONTACT-INFO
				"  Postal: 
				Zhone Technologies, Inc.
				@ Zhone Way
				7001 Oakport Street
				Oakland, CA  94621
				USA
				Toll-Free: +1 877-ZHONE20 (+1 877-946-6320)
				Tel: +1-510-777-7000
				Fax: +1-510-777-7001
				E-mail: support@zhone.com"
			DESCRIPTION
				"The Zhone Interface Group MIB defines variables for
				managing related groups of interfaces and allows
				pairs of lines to be grouped for redundancy.
				
				Note that the channelized entities (i.e. DS1 channels
				on a DS3 line) will not be included in this table."
			REVISION "200009121801Z"
			DESCRIPTION
				"V01.00.00 - Initial Release"
			REVISION "200010251646Z"
			DESCRIPTION
				"V01.00.01 - re-generated"
			REVISION "200011031943Z"
			DESCRIPTION
				"Added IfIndex type identifier
				in Zhone Keyword markup for Line Profile
				index value"
			REVISION "200011061853Z"
			DESCRIPTION
				"V01.00.04 - Fix OID numbering"
			::= { zhoneModules 9 }
		
	
--
-- Textual conventions
--
	
		InterfaceIndexOrZero ::= TEXTUAL-CONVENTION
			DISPLAY-HINT
				"d"
			STATUS current
			DESCRIPTION
				"This textual convention is an extension of the
				InterfaceIndex convention.  The latter defines a
				greater than zero value used to identify an interface
				or interface sub-layer in the managed system.  This
				extension permits the additional value of zero.  the
				value zero is object-specific and must therefore be
				defined as part of the description of any object which
				uses this syntax.  Examples of the usage of zero might
				include situations where interface was unknown, or
				when none or all interfaces need to be referenced."
			SYNTAX Integer32 (0..2147483647)
			
	
--
-- Node definitions
--
	
		nextLineGroupId OBJECT-TYPE
			SYNTAX Integer32 (0..2147483647)
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The next available line group id which can be used
				by the manager when creating a line group. A 'get'
				to this field, causes the number to be returned
				and the value to be incremented for the next 
				requester.
				
				The range for nextLineGroupId is 0..2147483647 
				where the value 0 indicates that no unassigned 
				entries are available."
			::= { zhoneInterfaceGroup 1 }
		
		lineProfileTable OBJECT-TYPE
			SYNTAX SEQUENCE OF LineProfileEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The table which contains Zhone-specific 
				descriptions of each physical line. There is one
				entry for each physical line in the system and
				it's primary use is for a user to specify redundant
				lines in the system. 
				
				An entry is automatically created by the associated
				driver whenever a new card is inserted in the 
				system (specifically when an ifindex value is 
				allocated for this port). 
				
				Statistics, admin state, and operational state
				can be obtained by the matching ifEntry.
				
				This line is part of a redundancy group if the
				lgRedundancyGroupId is non-zero. This value is a 
				cross-reference to the maching line redundancy group
				table and must be created by the user.
				
				In order for a line/ifEntry to be admin'd active,
				this line MUST be part of a line redundancy group
				(even if no redundancy is being configured)."
			::= { zhoneInterfaceGroup 2 }
		
-- The entry describes a line profile, which are all of 
-- the settable parameters associated with every line. 
-- The name is an arbitrary label assigned by the user.
-- The physical address is the shelf/slot/port/subPort
-- at which the line is attached. The RGName identifies 
-- the line group which this line belongs to, and is set
-- to an empty string if there is no redundant line, 
-- such as with an ethernet interface.  The port type
-- identifies the physica media attached to the line, 
-- and the ifIndex is the SNMP index used to locate the 
-- ifTable entry for this line, which provides for
-- control and monitoring.
		lineProfileEntry OBJECT-TYPE
			SYNTAX LineProfileEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The entry describing a single physical line in the
				line profile table."
			INDEX { ifIndex }
			::= { lineProfileTable 1 }
		
		LineProfileEntry ::=
			SEQUENCE { 
				lpDescription
					ZhoneAdminString,
				lpPhysicalShelf
					ZhoneShelfValue,
				lpPhysicalSlot
					ZhoneSlotValue,
				lpPhysicalPort
					Integer32,
				lpPhysicalSubPort
					Integer32,
				lpRedundancyGroupId
					Integer32
			 }

-- 
-- 
		lpDescription OBJECT-TYPE
			SYNTAX ZhoneAdminString
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"A descriptive name the user can enter. It is not used
				by the operating software and more than likely the 
				user only should modify the description in the 
				ifTable.
				"
			::= { lineProfileEntry 1 }
		
		lpPhysicalShelf OBJECT-TYPE
			SYNTAX ZhoneShelfValue
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The physical address or number of the shelf where
				desired line is located.  A Zhone system is limited
				to a maximum of 255 shelves.  The first shelf in a
				system is shelf 1."
			::= { lineProfileEntry 2 }
		
		lpPhysicalSlot OBJECT-TYPE
			SYNTAX ZhoneSlotValue
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The physical slot number on which the the card
				containing the port for the line profile is located.
				Zhone shelves are currently limited to a maximum of
				17 slots numbered 1-17."
			::= { lineProfileEntry 3 }
		
		lpPhysicalPort OBJECT-TYPE
			SYNTAX Integer32 (1..262143)
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The port number defines the physical port number on
				the selected shel/slot for the line profile.  Port
				numbering begins with 1 and are numbered sequentially.
				The valid range of port numbers is 1..262143.  
				
				lpPhysicalPort 0 is invalid."
			::= { lineProfileEntry 4 }
		
		lpPhysicalSubPort OBJECT-TYPE
			SYNTAX Integer32
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The lpPhysicalSubPort is used to identify multiple
				logical ports on a physical port that require their
				own line profiles.
				
				Value of 0 indicates there is no lpPhysicalsubPort"
			::= { lineProfileEntry 5 }
		
		lpRedundancyGroupId OBJECT-TYPE
			SYNTAX Integer32
			MAX-ACCESS read-write
			STATUS current
			DESCRIPTION
				"The matching id of the line redundancy group (lgId)
				of which this line is a part.  This field must be 
				set, even if the line is not a redundant pair but is
				being utilized in the system. The user may have
				lines configured but not part of a redundancy group
				which just means this line is in the process of being
				configured.
				
				When the line profile is initially created, it
				is NOT part of a line redundancy group (value =0)."
			::= { lineProfileEntry 6 }
		
		lineGroupTable OBJECT-TYPE
			SYNTAX SEQUENCE OF LineGroupEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The lineGroupTable contains descriptions of the 
				redundancy relationship between lines.  Each of the
				two lines are given a weight between 1 and 10 which 
				is used to determine their role.
				
				Each line is referenced by an ID (ifIndex) used to
				access the ifEntry and lineProfile tables. The use of
				Primary/Secondary naming convention is arbitrary and
				specifying either does not guarantee any particular 
				line having additional priority. The sole 
				determination of which line is active is the 
				weighting level, thus where if both are equal, which 
				ever line becomes active remains active until an 
				error condition occurs.
				
				Table entries are created only by the user when they 
				add/make a line part of a redundancy group. Non-
				Redundancy configurations require one of the entries
				(primary or secondary) to be populated. It is 
				possible to have a redundancy group entry with both 
				fields not configured (0), however, the state must be
				Admin down for this group. Activation requests in 
				this state will cause an error return."
			::= { zhoneInterfaceGroup 3 }
		
-- Collection of variables describing a pair of lines.  One
-- Line is a primary and one is a secondary.  In the case
-- where both are actually equivalent, we assign them equal
-- weights, otherwise the primary is given a larger weight than
-- the secondary.  The GroupAdminStatus is used to lock the group
-- against changes when modifying an associated line profile,
-- or changing line profiles.
		lineGroupEntry OBJECT-TYPE
			SYNTAX LineGroupEntry
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"A line group entry describes a pair of redundant 
				lines."
			INDEX { lgId }
			::= { lineGroupTable 1 }
		
		LineGroupEntry ::=
			SEQUENCE { 
				lgId
					Integer32,
				lgName
					ZhoneAdminString,
				lgPrimaryLineId
					InterfaceIndexOrZero,
				lgPrimaryWeight
					Integer32,
				lgSecondaryLineId
					InterfaceIndexOrZero,
				lgSecondaryWeight
					Integer32,
				lgGroupAdminState
					INTEGER,
				lgGroupOperState
					INTEGER,
				lgActiveLineId
					InterfaceIndex,
				lgRowStatus
					ZhoneRowStatus
			 }

		lgId OBJECT-TYPE
			SYNTAX Integer32 (1..2147483647)
			MAX-ACCESS not-accessible
			STATUS current
			DESCRIPTION
				"The line group entry id. This is a unique number
				that is obtained by the nextLineGroupId field.
				
				The range for lgId is 1..2147483647 and the range 
				for nextLineGroupId is 0..2147483647 where the 
				value 0 indicates that no unassigned entries are 
				available."
			::= { lineGroupEntry 1 }
		
		lgName OBJECT-TYPE
			SYNTAX ZhoneAdminString
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The name of this entry. This value is the one 
				utilized by the user when referencing this line group.
				This is performed so the user does not have to know 
				the numeric id's that has been assigned to this group 
				entry. Because of this, this value is unique within 
				the line group table and must never be null.
				
				Changing this name is not allowed unless any 
				references to it are deleted in any associated 
				records (i.e. subscriber mib).
				
				Required by row creation."
			::= { lineGroupEntry 2 }
		
		lgPrimaryLineId OBJECT-TYPE
			SYNTAX InterfaceIndexOrZero
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The id entered in the line profile table for the 
				profile of the primary line.  The default value of 
				0 indicates no primary line is configured.
				
				When this field is set, the matching lineProfile 
				entry will also be updated. Note that the matching 
				entry (ifIndex) must be admin'd down before this 
				field can be modified.
				
				Required by row creation."
			DEFVAL { 0 }
			::= { lineGroupEntry 3 }
		
-- 
		lgPrimaryWeight OBJECT-TYPE
			SYNTAX Integer32 (0..10)
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The preference for this line to be active. A value of
				1 is low preference, and 10 is high. Default is 5 to 
				match the secondary line so the default is that both 
				lines are equal and whichever becomes active first 
				remains the active line until an error condition 
				occurs.
				
				Value of 0 is reserved."
			DEFVAL { 5 }
			::= { lineGroupEntry 4 }
		
-- 
		lgSecondaryLineId OBJECT-TYPE
			SYNTAX InterfaceIndexOrZero
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The name as entered in the line profile table for the
				profile of the secondary line. The default value of
				0 indicates that no secondary line is configured.
				
				When this field is set, the matching lineProfile 
				entry will also be updated. Note that the matching 
				entry (ifIndex) must be admin'd down before this 
				field can be modified."
			DEFVAL { 0 }
			::= { lineGroupEntry 5 }
		
		lgSecondaryWeight OBJECT-TYPE
			SYNTAX Integer32 (0..10)
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The preference for this line to be active. A value of 
				1 is low preference, and 10 is high. Default is 5 to 
				match the primary line so that the default is that 
				both lines are equal and whichever line becomes 
				active first remains the active line until an error
				condition occurs.
				
				Value of 0 is reserved."
			DEFVAL { 5 }
			::= { lineGroupEntry 6 }
		
-- 
		lgGroupAdminState OBJECT-TYPE
			SYNTAX INTEGER
				{
				down(1),
				up(2),
				lockActive(3)
				}
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"The line group admin status
				
				- 'up' status is when the group is in use and the 
				lines in the group can become active. In this state,
				line parameters may not be changed.
				
				- 'down' status is set to down the entire line group.
				A redundant switch does not occur and in the down
				state line group parameters may be cahnged and the
				entire line group may be deleted.
				
				- 'lockAtive' status is set to allow the inactive
				member of the line group to be modified.  In this
				state the active line is uneffected, however, if an
				error occurs on the active line that would result
				in a redundant switch, the switch will not occur."
			DEFVAL { down }
			::= { lineGroupEntry 7 }
		
		lgGroupOperState OBJECT-TYPE
			SYNTAX INTEGER
				{
				inactive(1),
				active(2)
				}
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The state of this line group. Normally, this state 
				will match the admin state of this group except 
				during the activation phase of the group or if
				'all' active lines in the group are down (admin'd or
				due to a fault)
				
				- 'inactive' status is returned when the line group
				is not active or inoperable.
				
				- 'active' status is returned if at least one line
				is active and operational in the group."
			::= { lineGroupEntry 8 }
		
		lgActiveLineId OBJECT-TYPE
			SYNTAX InterfaceIndex
			MAX-ACCESS read-only
			STATUS current
			DESCRIPTION
				"The currently active line (ifindex) for this Group. 
				
				0 indicates no active lines."
			::= { lineGroupEntry 9 }
		
		lgRowStatus OBJECT-TYPE
			SYNTAX ZhoneRowStatus
			MAX-ACCESS read-create
			STATUS current
			DESCRIPTION
				"A line group entry can only be created if both the 
				lgName and line group id is specified.
				
				An entry in this table CANNOT be deleted unless the 
				admin state is down and both the primary and 
				secondary line id fields are 0 (no lines are part of 
				this group).
				
				lgName, lgPrimaryLineId, and lgPrimaryWeight are 
				required for row creation."
			::= { lineGroupEntry 10 }
		
	
	END

--
-- genLineRedundancy.mib
--
