// Copyright (c) 2012 DMTF.  All rights reserved.
   [Version ( "2.32.0" ), 
    UMLPackagePath ( "CIM::Network::ProtocolEndpoints" ), 
    Description ( "A ProtocolEndpoint that is dedicated to running IP." )]
class CIM_IPProtocolEndpoint : CIM_ProtocolEndpoint {

      [Description ( 
          "The IPv4 address that this ProtocolEndpoint represents." )]
   string IPv4Address;

      [Description ( 
          "The IPv6 address that this ProtocolEndpoint represents." ), 
       ModelCorrespondence { 
          "CIM_IPProtocolEndpoint.IPv6AddressType", 
          "CIM_IPProtocolEndpoint.IPv6SubnetPrefixLength" }]
   string IPv6Address;

      [Deprecated { "CIM_IPProtocolEndpoint.IPv4Address", 
          "CIM_IPProtocolEndpoint.IPv6Address" }, 
       Description ( 
          "The IP address that this ProtocolEndpoint represents, "
          "formatted according to the appropriate convention as "
          "defined in the AddressType property of this class (e.g., "
          "171.79.6.40). This single property is deprecated to "
          "replace it by specific IPv4 and v6 addresses." )]
   string Address;

      [Description ( 
          "The mask for the IPv4 address of this ProtocolEndpoint, "
          "if one is defined." )]
   string SubnetMask;

      [Description ( 
          "The prefix length for the IPv6 address of this Protocol "
          "Endpoint, if one is defined." )]
   uint8 PrefixLength;

      [Deprecated { "No value" }, 
       Description ( 
          "An enumeration that describes the format of the Address "
          "property. It is deprecated since it is not needed, as "
          "the class contains both IPv4 and v6 addresses)." ), 
       ValueMap { "0", "1", "2" }, 
       Values { "Unknown", "IPv4", "IPv6" }]
   uint16 AddressType;

      [Deprecated { "CIM_ProtocolEndpoint.ProtocolIFType" }, 
       Description ( 
          "This property explicitly defines support for different "
          "versions of the IP protocol, for this Endpoint. It is "
          "deprecated since the ProtocolIFType also provides this "
          "functionality by describing an endpoint as IPv4 only "
          "(value=4096), IPv6 only (value=4097), or IPv4/v6 "
          "(value=4098)." ), 
       ValueMap { "0", "1", "2", "3" }, 
       Values { "Unknown", "IPv4 Only", "IPv6 Only", 
          "Both IPv4 and IPv6" }]
   uint16 IPVersionSupport;

      [Override ( "ProtocolIFType" ), 
       Description ( 
          "ProtocolIFType\'s enumeration is limited to IP-related "
          "and reserved values for this subclass of "
          "ProtocolEndpoint." ), 
       ValueMap { "1", "225..4095", "4096", "4097", "4098", 
          "4301..32767", "32768.." }, 
       Values { "Other", "IANA Reserved", "IPv4", "IPv6", "IPv4/v6", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 ProtocolIFType = 4096;

      [Description ( 
          "AddressOrigin identifies the method by which the IP "
          "Address, Subnet Mask, and Gateway were assigned to the "
          "IPProtocolEndpoint.A value of 3 \"Static\" shall "
          "indicate the values were assigned manually. A value of 4 "
          "\"DHCP\" shall indicate the values were assigned "
          "utilizing the Dynamic Host Configuration Protocol. See "
          "RFC 2131 and related. \n"
          "A value of 5 \"BOOTP\" shall indicate the values were "
          "assigned utilizing BOOTP. See RFC 951 and related. \n"
          "A value of 6 \"IPv4 Link Local\" shall indicate the "
          "values were assigned using the IPv4 Link Local protocol. "
          "See RFC 3927.\n"
          "A value of 7 \"DHCPv6\" shall indicate the values were "
          "assigned using DHCPv6. See RFC 3315. \n"
          "A value of 8 \"IPv6 AutoConfig\" shall indicate the "
          "values were assinged using the IPv6 AutoConfig Protocol. "
          "See RFC 4862. \n"
          "A value of 9 \"Stateless\" shall indicate Stateless "
          "values were assigned. \n"
          "A value of 10 \"Link Local\" shall indicate Link Local "
          "values were assigned." ), 
       ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", 
          "10", "..", "32768..65535" }, 
       Values { "Unknown", "Other", "Not Applicable", "Static", 
          "DHCP", "BOOTP", "IPv4 Link Local", "DHCPv6", 
          "IPv6AutoConfig", "Stateless", "Link Local", 
          "DMTF Reserved", "Vendor Reserved" }]
   uint16 AddressOrigin = 0;

      [Description ( 
          "IPv6AddressType indentified the type of address found in "
          "the IPv6Address property. The values of this property "
          "shall be interpreted according to RFC4291, Section 2.4" ), 
       ValueMap { "2", "3", "4", "5", "6", "7", "8", "..", 
          "32768..65535" }, 
       Values { "Unspecified", "Loopback", "Multicast", 
          "Link Local Unicast", "Global Unicast", 
          "Embedded IPv4 Address", "Site Local Unicast", 
          "DMTF Reserved", "Vendor Reserved" }, 
       ModelCorrespondence { "CIM_IPProtocolEndpoint.IPv6Address" }]
   uint16 IPv6AddressType;

      [Description ( 
          "IPv6SubnetPrefixLength is used to identify the prefix "
          "length of the IPv6Address property that is used to "
          "specify a subnet" ), 
       ModelCorrespondence { "CIM_IPProtocolEndpoint.IPv6Address" }]
   uint16 IPv6SubnetPrefixLength;


};
