  IANA-ADDRESS-FAMILY-NUMBERS-MIB DEFINITIONS ::= BEGIN

  IMPORTS
      MODULE-IDENTITY,
      mib-2                               FROM SNMPv2-SMI
      TEXTUAL-CONVENTION                  FROM SNMPv2-TC;

  ianaAddressFamilyNumbers MODULE-IDENTITY
      LAST-UPDATED "200203140000Z"  -- March 14, 2002
      ORGANIZATION "IANA"
      CONTACT-INFO
          "Postal:    Internet Assigned Numbers Authority
                      Internet Corporation for Assigned Names
		      and Numbers
                      4676 Admiralty Way, Suite 330
                      Marina del Rey, CA 90292-6601
                      USA

          Tel:    +1  310-823-9358
          E-Mail: iana&iana.org"
      DESCRIPTION
          "The MIB module defines the AddressFamilyNumbers
          textual convention."

      -- revision history

      REVISION     "200203140000Z"  -- March 14, 2002
      DESCRIPTION  "AddressFamilyNumbers assignment 22 to 
                   fibreChannelWWPN. AddressFamilyNumbers 
                   assignment 23 to fibreChannelWWNN.
                   AddressFamilyNumers assignment 24 to gwid."

      REVISION     "200009080000Z"  -- September 8, 2000
      DESCRIPTION  "AddressFamilyNumbers assignment 19 to xtpOverIpv4.  
                   AddressFamilyNumbers assignment 20 to xtpOverIpv6.  
                   AddressFamilyNumbers assignment 21 to xtpNativeModeXTP."

      REVISION     "200003010000Z"  -- March 1, 2000
      DESCRIPTION  "AddressFamilyNumbers assignment 17 to distinguishedName. 
                   AddressFamilyNumbers assignment 18 to asNumber."

      REVISION     "200002040000Z"  -- February 4, 2000
      DESCRIPTION  "AddressFamilyNumbers assignment 16 to dns."

      REVISION     "9908260000Z"  -- August 26, 1999
      DESCRIPTION  "Initial version, published as RFC 2677."
      ::= { mib-2 72 }

  AddressFamilyNumbers ::= TEXTUAL-CONVENTION
      STATUS       current
      DESCRIPTION
          "The definition of this textual convention with the
          addition of newly assigned values is published
          periodically by the IANA, in either the Assigned
          Numbers RFC, or some derivative of it specific to
          Internet Network Management number assignments.
          (The latest arrangements can be obtained by
          contacting the IANA.)

          The enumerations are described as:

          other(0),    -- none of the following
          ipV4(1),     -- IP Version 4
          ipV6(2),     -- IP Version 6
          nsap(3),     -- NSAP
          hdlc(4),     -- (8-bit multidrop)
          bbn1822(5),
          all802(6),   -- (includes all 802 media
                       --   plus Ethernet 'canonical format')
          e163(7),
          e164(8),     -- (SMDS, Frame Relay, ATM)
          f69(9),      -- (Telex)
          x121(10),    -- (X.25, Frame Relay)
          ipx(11),     -- IPX (Internet Protocol Exchange)
          appleTalk(12),  -- Apple Talk
          decnetIV(13),   -- DEC Net Phase IV
          banyanVines(14),  -- Banyan Vines
          e164withNsap(15),
                       -- (E.164 with NSAP format subaddress)
          dns(16),     -- (Domain Name System)
          distinguishedName(17), -- (Distinguished Name, per X.500)
          asNumber(18), -- (16-bit quantity, per the AS number space)
          xtpOverIpv4(19),  -- XTP over IP version 4
          xtpOverIpv6(20),  -- XTP over IP version 6
          xtpNativeModeXTP(21),  -- XTP native mode XTP
          fibreChannelWWPN(22),  -- Fibre Channel World-Wide Port Name 
          fibreChannelWWNN(23),  -- Fibre Channel World-Wide Node Name
          gwid(24),    -- Gateway Identifier 
          afi(25),  -- AFI for L2VPN information
          reserved(65535)

          Requests for new values should be made to IANA via
          email (iana&iana.org)."
      SYNTAX  INTEGER {
                  other(0),
                  ipV4(1),
                  ipV6(2),
                  nsap(3),
                  hdlc(4),
                  bbn1822(5),
                  all802(6),
                  e163(7),
                  e164(8),
                  f69(9),
                  x121(10),
                  ipx(11),
                  appleTalk(12),
                  decnetIV(13),
                  banyanVines(14),
                  e164withNsap(15),
                  dns(16),
                  distinguishedName(17), -- (Distinguished Name, per X.500)
                  asNumber(18), -- (16-bit quantity, per the AS number space)
                  xtpOverIpv4(19),
                  xtpOverIpv6(20),
                  xtpNativeModeXTP(21),
                  fibreChannelWWPN(22),
                  fibreChannelWWNN(23),
                  gwid(24),
                  afi(25),
                  reserved(65535)
              }
      END
