--**MOD+***********************************************************************
--* Module:    hpicfSavi.mib
--*
-- Copyright (C) 2017 Hewlett-Packard Development Company, L.P.
--* All Rights Reserved.
--* 
--* The contents of this software are proprietary and confidential
--* to the Hewlett Packard Enterprise Development LP.  No part of this
--* program may be photocopied, reproduced, or translated into another
--* programming language without prior written consent of the
--* Hewlett Packard Enterprise Development LP.
--*
--* Purpose: This file contains MIB definition of HPICF-SAVI-MIB
--*
--**MOD-*********************************************************************** 

HPICF-SAVI-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-COMPLIANCE,OBJECT-GROUP
           FROM SNMPv2-CONF                    --RFC2580
       MODULE-IDENTITY, OBJECT-TYPE, Unsigned32
           FROM SNMPv2-SMI                     --RFC2578
       MacAddress,TimeInterval,RowStatus
           FROM SNMPv2-TC                      --RFC2579
       InterfaceIndex
           FROM IF-MIB                         --RFC2863
       InetVersion,InetAddressType,InetAddress
           FROM INET-ADDRESS-MIB               --RFC4001
       hpSwitchExperimental
           FROM HP-ICF-OID;

   hpicfSaviMIB MODULE-IDENTITY
       LAST-UPDATED "201711080000Z" -- Nov 08, 2017
       ORGANIZATION "HP Networking"
       CONTACT-INFO "Hewlett-Packard Company
                     8000 Foothills Blvd.
                     Roseville, CA 95747"
       DESCRIPTION
              "This MIB Module is designed to support the configuration 
               and monitoring of DHCPv6 Snooping protocol. This MIB module 
               was based off the IETF draft of SAVI mib, which was designed 
               to support configuration and monitoring of SAVI protocol by 
               Changging An(acq@cernet.edu.cn) and Jiahai Yang(yang@cernet.edu.cu), 
               https://tools.ietf.org/html/draft-an-savi-mib-02.\u201d."

       REVISION    "201711080000Z"
       DESCRIPTION
              "Initial version"
       ::= {hpSwitchExperimental 1}

   hpicfSaviObjects OBJECT IDENTIFIER ::= { hpicfSaviMIB 1 }

-- Port parameters for hpicfSAVI protocol

   hpicfSaviObjectsPortTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF HpicfSaviObjectsPortEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The table containing hpicfSAVI parameters of each anchor."
       ::= { hpicfSaviObjects 1 }

   hpicfSaviObjectsPortEntry OBJECT-TYPE
       SYNTAX     HpicfSaviObjectsPortEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "An entry containing hpicfSAVI running parameters of an anchor."
       INDEX {
               hpicfSaviObjectsPortIPVersion,
               hpicfSaviObjectsPortIfIndex
             }
       ::= { hpicfSaviObjectsPortTable 1 }

   HpicfSaviObjectsPortEntry ::=
       SEQUENCE {
           hpicfSaviObjectsPortIPVersion          InetVersion,
           hpicfSaviObjectsPortIfIndex            InterfaceIndex,
           hpicfSaviObjPortDhcpTrustAttr          INTEGER,
           hpicfSaviObjectsPortFilteringNum       Unsigned32
       }

   hpicfSaviObjectsPortIPVersion      OBJECT-TYPE
       SYNTAX     InetVersion
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The IP version."
       ::= { hpicfSaviObjectsPortEntry 1 }

   hpicfSaviObjectsPortIfIndex  OBJECT-TYPE
       SYNTAX     InterfaceIndex
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The index value that uniquely identifies the interface to
               which this entry is applicable.  The interface identified by
               a particular value of this index is the same interface as
               identified by the same value of the IF-MIB's ifIndex."
       ::= { hpicfSaviObjectsPortEntry 2 }

   hpicfSaviObjPortDhcpTrustAttr OBJECT-TYPE
       SYNTAX     INTEGER  {
                    enable(1),
                    disable(2)
                  }
       MAX-ACCESS read-write
       STATUS     current
       DESCRIPTION
              "The DHCP trust attribute of the port.
               enable(1), the attribute is set.
               disable(2), the attribute is not set."
       ::= { hpicfSaviObjectsPortEntry 3 }

   hpicfSaviObjectsPortFilteringNum OBJECT-TYPE
       SYNTAX     Unsigned32
       MAX-ACCESS read-write
       STATUS     current
       DESCRIPTION
              "The max filtering number of the Port."
       ::= { hpicfSaviObjectsPortEntry 4 }

-- Binding Status Table for hpicfSAVI protocol

   hpicfSaviObjectsBindingTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF HpicfSaviObjectsBindingEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The table containing the state of binding
               between source address and anchor."
       ::= { hpicfSaviObjects 2 }

   hpicfSaviObjectsBindingEntry OBJECT-TYPE
       SYNTAX     HpicfSaviObjectsBindingEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "An entry containing the state of binding between source
               address and anchor.
               Entries are keyed on the source IP address type,
               binding type, anchor, and source IP address."
       INDEX {
               hpicfSaviObjBindingIpAddrType,
               hpicfSaviObjectsBindingType,
               hpicfSaviObjectsBindingIfIndex,
               hpicfSaviObjectsBindingIpAddress
             }
       ::= { hpicfSaviObjectsBindingTable 1 }

   HpicfSaviObjectsBindingEntry ::=
       SEQUENCE {
           hpicfSaviObjBindingIpAddrType          InetAddressType,
           hpicfSaviObjectsBindingType            INTEGER,
           hpicfSaviObjectsBindingIfIndex         InterfaceIndex,
           hpicfSaviObjectsBindingIpAddress       InetAddress,
           hpicfSaviObjectsBindingMacAddr         MacAddress,
           hpicfSaviObjectsBindingLifetime        TimeInterval,
           hpicfSaviObjectsBindingRowStatus       RowStatus
        }

   hpicfSaviObjBindingIpAddrType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "IP address type of the  binding source IP."
       ::= { hpicfSaviObjectsBindingEntry 1 }

   hpicfSaviObjectsBindingType OBJECT-TYPE
       SYNTAX     INTEGER {
                    manual(1),
                    slaac(2),
                    dhcp(3),
                    send(4)
                  }
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "IP address assignment methods."
       ::= { hpicfSaviObjectsBindingEntry 2 }

   hpicfSaviObjectsBindingIfIndex OBJECT-TYPE
       SYNTAX     InterfaceIndex
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The index value that uniquely identifies the interface to
               which this entry is applicable.  The interface identified by
               a particular value of this index is the same interface as
               identified by the same value of the IF-MIB's ifIndex."
       ::= { hpicfSaviObjectsBindingEntry 3 }

   hpicfSaviObjectsBindingIpAddress OBJECT-TYPE
       SYNTAX     InetAddress ( SIZE (4|16) )
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The binding source IP address."
       ::= { hpicfSaviObjectsBindingEntry 4 }

   hpicfSaviObjectsBindingMacAddr OBJECT-TYPE
       SYNTAX     MacAddress
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
              "The binding source mac address."
       ::= { hpicfSaviObjectsBindingEntry 5 }

   hpicfSaviObjectsBindingLifetime OBJECT-TYPE
       SYNTAX     TimeInterval
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
              "The remaining lifetime of the entry.
               TimeInterval is defined in RFC 2579, it's a period of time,
               measured in units of 0.01 seconds,
               and the value is (0..2147483647).
               If hpicfSaviObjectsBindingType=manual, a value of 2147483647
               represents infinity."
       ::= { hpicfSaviObjectsBindingEntry 6 }

   hpicfSaviObjectsBindingRowStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
              "The status of this row, by which new entries may be
               created, or old entries deleted from this table.
               An Entry can be created or deleted only when
               hpicfSaviObjectsBindingType=manual. Row statuses 
               createAndWait(5), notReady(3) and notInService(2) 
               are not supported."
       ::= { hpicfSaviObjectsBindingEntry 7 }

-- Filtering Table for hpicfSAVI protocol

   hpicfSaviObjectsFilteringTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF HpicfSaviObjectsFilteringEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The table containing the filtering entries."
       ::= { hpicfSaviObjects 3 }

   hpicfSaviObjectsFilteringEntry OBJECT-TYPE
       SYNTAX     HpicfSaviObjectsFilteringEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "An entry containing the filtering parameters.
               Entries are keyed on the source IP address type,
               anchor, and source IP address."
       INDEX { hpicfSaviObjFilteringIpAddrType,
               hpicfSaviObjectsFilteringIfIndex,
               hpicfSaviObjFilteringIpAddr
             }
       ::= { hpicfSaviObjectsFilteringTable 1 }

   HpicfSaviObjectsFilteringEntry ::=
       SEQUENCE {
           hpicfSaviObjFilteringIpAddrType        InetAddressType,
           hpicfSaviObjectsFilteringIfIndex       InterfaceIndex,
           hpicfSaviObjFilteringIpAddr            InetAddress,
           hpicfSaviObjectsFilteringMacAddr       MacAddress
       }

   hpicfSaviObjFilteringIpAddrType OBJECT-TYPE
       SYNTAX     InetAddressType
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "IP address type of the  filtering source IP."
       ::= { hpicfSaviObjectsFilteringEntry 1 }

   hpicfSaviObjectsFilteringIfIndex OBJECT-TYPE
       SYNTAX     InterfaceIndex
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The index value that uniquely identifies the interface to
               which this entry is applicable.  The interface identified by
               a particular value of this index is the same interface as
               identified by the same value of the IF-MIB's ifIndex."
       ::= { hpicfSaviObjectsFilteringEntry 2 }

   hpicfSaviObjFilteringIpAddr OBJECT-TYPE
       SYNTAX     InetAddress ( SIZE (4|16) )
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
              "The filtering source IP address."
       ::= { hpicfSaviObjectsFilteringEntry 3 }

   hpicfSaviObjectsFilteringMacAddr OBJECT-TYPE
       SYNTAX     MacAddress
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
              "The filtering source mac address."
       ::= { hpicfSaviObjectsFilteringEntry 4 }

-- Conformance information
   hpicfSaviConformance OBJECT IDENTIFIER ::= { hpicfSaviMIB 2 }
   hpicfSaviCompliances OBJECT IDENTIFIER ::= { hpicfSaviConformance 1 }

-- Compliance statements
   hpicfSaviCompliance MODULE-COMPLIANCE
       STATUS current
       DESCRIPTION
              "The compliance statement for entities which implement hpicfSAVI
               protocol."
       MODULE
       MANDATORY-GROUPS {
           hpicfSaviportGroup,
           hpicfSavibindingGroup,
           hpicfSavifilteringGroup
       }
       ::= { hpicfSaviCompliances 1}

   hpicfSaviGroups OBJECT IDENTIFIER ::= { hpicfSaviConformance 2 }

--Units of conformance

   hpicfSaviportGroup OBJECT-GROUP
       OBJECTS {
           hpicfSaviObjPortDhcpTrustAttr,
           hpicfSaviObjectsPortFilteringNum
       }
       STATUS current
       DESCRIPTION
              "The if group contains objects corresponding to the hpicfSavi running
               parameters of each anchor."
       ::= {hpicfSaviGroups 1}

   hpicfSavibindingGroup OBJECT-GROUP
       OBJECTS {
           hpicfSaviObjectsBindingMacAddr,
           hpicfSaviObjectsBindingLifetime,
           hpicfSaviObjectsBindingRowStatus
       }
       STATUS current
       DESCRIPTION
              "The binding group contains the binding
               information of anchor and source ip address."
       ::= {hpicfSaviGroups 2}

   hpicfSavifilteringGroup OBJECT-GROUP
       OBJECTS {
             hpicfSaviObjectsFilteringMacAddr
       }
       STATUS current
       DESCRIPTION
              "The filtering group contains the filtering
               information of anchor and source ip address."
       ::= {hpicfSaviGroups 3}
END
