IP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, TimeStamp, RowPointer, RowStatus, StorageType
        FROM SNMPv2-TC
    InetAddress, InetAddressType
        FROM INET-ADDRESS-MIB
    InterfaceIndex
        FROM IF-MIB;

ipMIB MODULE-IDENTITY
    LAST-UPDATED "200602020000Z"
    ORGANIZATION "IETF IPv6 MIB Revision Team"
    DESCRIPTION
        "RFC 4293 IP-MIB schema used by the Rust agent. This embedded
         subset contains ipAddressTable and its textual conventions."
    ::= { mib-2 48 }

IpAddressOriginTC ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION "The mechanism by which an address was configured."
    SYNTAX INTEGER {
        other(1),
        manual(2),
        dhcp(4),
        linklayer(5),
        random(6)
    }

IpAddressStatusTC ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION "The usability state of an IP address."
    SYNTAX INTEGER {
        preferred(1),
        deprecated(2),
        invalid(3),
        inaccessible(4),
        unknown(5),
        tentative(6),
        duplicate(7),
        optimistic(8)
    }

ip OBJECT IDENTIFIER ::= { mib-2 4 }

ipAddressTable OBJECT-TYPE
    SYNTAX SEQUENCE OF IpAddressEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "IPv4 and IPv6 addresses assigned to this entity."
    ::= { ip 34 }

ipAddressEntry OBJECT-TYPE
    SYNTAX IpAddressEntry
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "Address information for one interface."
    INDEX { ipAddressAddrType, ipAddressAddr }
    ::= { ipAddressTable 1 }

IpAddressEntry ::= SEQUENCE {
    ipAddressAddrType InetAddressType,
    ipAddressAddr InetAddress,
    ipAddressIfIndex InterfaceIndex,
    ipAddressType INTEGER,
    ipAddressPrefix RowPointer,
    ipAddressOrigin IpAddressOriginTC,
    ipAddressStatus IpAddressStatusTC,
    ipAddressCreated TimeStamp,
    ipAddressLastChanged TimeStamp,
    ipAddressRowStatus RowStatus,
    ipAddressStorageType StorageType
}

ipAddressAddrType OBJECT-TYPE
    SYNTAX InetAddressType
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The format of ipAddressAddr."
    ::= { ipAddressEntry 1 }

ipAddressAddr OBJECT-TYPE
    SYNTAX InetAddress
    MAX-ACCESS not-accessible
    STATUS current
    DESCRIPTION "The address bytes identified by ipAddressAddrType."
    ::= { ipAddressEntry 2 }

ipAddressIfIndex OBJECT-TYPE
    SYNTAX InterfaceIndex
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The corresponding IF-MIB ifIndex."
    ::= { ipAddressEntry 3 }

ipAddressType OBJECT-TYPE
    SYNTAX INTEGER {
        unicast(1),
        anycast(2),
        broadcast(3)
    }
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The address type."
    DEFVAL { unicast }
    ::= { ipAddressEntry 4 }

ipAddressPrefix OBJECT-TYPE
    SYNTAX RowPointer
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "A pointer to the corresponding prefix row, or zeroDotZero."
    ::= { ipAddressEntry 5 }

ipAddressOrigin OBJECT-TYPE
    SYNTAX IpAddressOriginTC
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "The origin of the address."
    ::= { ipAddressEntry 6 }

ipAddressStatus OBJECT-TYPE
    SYNTAX IpAddressStatusTC
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The address usability state."
    DEFVAL { preferred }
    ::= { ipAddressEntry 7 }

ipAddressCreated OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "sysUpTime when this address row was created."
    ::= { ipAddressEntry 8 }

ipAddressLastChanged OBJECT-TYPE
    SYNTAX TimeStamp
    MAX-ACCESS read-only
    STATUS current
    DESCRIPTION "sysUpTime when this address row last changed."
    ::= { ipAddressEntry 9 }

ipAddressRowStatus OBJECT-TYPE
    SYNTAX RowStatus
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The status of this conceptual row."
    ::= { ipAddressEntry 10 }

ipAddressStorageType OBJECT-TYPE
    SYNTAX StorageType
    MAX-ACCESS read-create
    STATUS current
    DESCRIPTION "The storage type for this conceptual row."
    DEFVAL { volatile }
    ::= { ipAddressEntry 11 }

END
