<?xml version="1.0" encoding="UTF-8"?>
<!---->
<!--################################################################################       -->
<!--# Redfish Schema:  IPAddresses v1.1.3                                                  -->
<!--#                                                                                      -->
<!--# For a detailed change log, see the README file contained in the DSP8010 bundle,      -->
<!--# available at http://www.dmtf.org/standards/redfish                                   -->
<!--# Copyright 2014-2022 DMTF.                                                            -->
<!--# For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright -->
<!--################################################################################       -->
<!---->
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">

  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/errata03/csd01/complete/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Namespace="Org.OData.Core.V1" Alias="OData"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/RedfishExtensions_v1.xml">
    <edmx:Include Namespace="RedfishExtensions.v1_0_0" Alias="Redfish"/>
    <edmx:Include Namespace="Validation.v1_0_0" Alias="Validation"/>
  </edmx:Reference>
  <edmx:Reference Uri="http://redfish.dmtf.org/schemas/v1/Resource_v1.xml">
    <edmx:Include Namespace="Resource"/>
  </edmx:Reference>

  <edmx:DataServices>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>

      <ComplexType Name="IPv4Address" Abstract="true">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="This type describes an IPv4 address."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe an IPv4 address assigned to an interface."/>
      </ComplexType>

      <ComplexType Name="IPv6Address" Abstract="true">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="This type describes an IPv6 address."/>
        <Annotation Term="OData.LongDescription" String="This type shall describe an IPv6 address assigned to an interface."/>
      </ComplexType>

      <ComplexType Name="IPv6StaticAddress" Abstract="true">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="This type represents a single IPv6 static address to be assigned on a network interface."/>
        <Annotation Term="OData.LongDescription" String="This type shall represent a single IPv6 static address to be assigned on a network interface."/>
      </ComplexType>

      <ComplexType Name="IPv6GatewayStaticAddress" Abstract="true">
        <Annotation Term="OData.AdditionalProperties" Bool="false"/>
        <Annotation Term="OData.Description" String="This type represents a single IPv6 static address to be assigned on a network interface."/>
        <Annotation Term="OData.LongDescription" String="This type shall represent a single IPv6 static address to be assigned on a network interface."/>
      </ComplexType>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="1.0"/>

      <ComplexType Name="IPv4Address" BaseType="IPAddresses.IPv4Address">
        <Property Name="Oem" Type="Resource.Oem" Nullable="false">
          <Annotation Term="OData.Description" String="The OEM extension property."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."/>
        </Property>
        <Property Name="Address" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The IPv4 address."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain an IPv4 address assigned to this interface.  If DHCPv4 is enabled on the interface, this property becomes read-only."/>
          <Annotation Term="Validation.Pattern" String="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$"/>
        </Property>
        <Property Name="SubnetMask" Type="IPAddresses.v1_0_0.SubnetMask">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The IPv4 subnet mask."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IPv4 subnet mask for this address.  If DHCPv4 is enabled on the interface, this property becomes read-only."/>
        </Property>
        <Property Name="AddressOrigin" Type="IPAddresses.v1_0_0.IPv4AddressOrigin">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="This indicates how the address was determined."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IP address origin for this network interface."/>
        </Property>
        <Property Name="Gateway" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The IPv4 gateway for this address."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IPv4 default gateway address for this interface.  If DHCPv4 is enabled on the interface and is configured to set the IPv4 default gateway address, this property becomes read-only.  If multiple IPv4 addresses are present on the same interface only a single default gateway is allowed.  Any additional IPv4 addresses shall not have a default gateway specified."/>
          <Annotation Term="Validation.Pattern" String="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$"/>
        </Property>
      </ComplexType>

      <ComplexType Name="IPv6Address" BaseType="IPAddresses.IPv6Address">
        <Property Name="Oem" Type="Resource.Oem" Nullable="false">
          <Annotation Term="OData.Description" String="The OEM extension property."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."/>
        </Property>
        <Property Name="Address" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The IPv6 address."/>
          <Annotation Term="OData.LongDescription" String="This property lists an IPv6 address that is currently assigned on this interface."/>
          <Annotation Term="Redfish.IPv6Format"/>
        </Property>
        <Property Name="PrefixLength" Type="IPAddresses.v1_0_0.PrefixLength">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The IPv6 address prefix Length."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IPv6 address prefix length for this interface."/>
        </Property>
        <Property Name="AddressOrigin" Type="IPAddresses.v1_0_0.IPv6AddressOrigin">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="This indicates how the address was determined."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IPv6 address origin for this interface."/>
        </Property>
        <Property Name="AddressState" Type="IPAddresses.v1_0_0.AddressState">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/Read"/>
          <Annotation Term="OData.Description" String="The current RFC4862-defined state of this address."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the current RFC4862-defined state of this address.  Preferred and Deprecated states follow the definitions in RFC4862, section 5.5.4.  The Tentative state indicates that the address is undergoing Duplicate Address Detection (DAD), as defined in RFC4862, section 5.4.  The Failed state indicates a static address that did not pass DAD.  A static address in the Failed state is not in use on the network stack, and corrective action is required to remedy this condition."/>
        </Property>
      </ComplexType>

      <EnumType Name="IPv4AddressOrigin">
        <Member Name="Static">
          <Annotation Term="OData.Description" String="A user-configured static address."/>
        </Member>
        <Member Name="DHCP">
          <Annotation Term="OData.Description" String="A DHCPv4 service-provided address."/>
        </Member>
        <Member Name="BOOTP">
          <Annotation Term="OData.Description" String="A BOOTP service-provided address."/>
        </Member>
        <Member Name="IPv4LinkLocal">
          <Annotation Term="OData.Description" String="The address is valid for only this network segment, or link."/>
        </Member>
      </EnumType>

      <EnumType Name="IPv6AddressOrigin">
        <Member Name="Static">
          <Annotation Term="OData.Description" String="A static user-configured address."/>
        </Member>
        <Member Name="DHCPv6">
          <Annotation Term="OData.Description" String="A DHCPv6 service-provided address."/>
        </Member>
        <Member Name="LinkLocal">
          <Annotation Term="OData.Description" String="The address is valid for only this network segment, or link."/>
        </Member>
        <Member Name="SLAAC">
          <Annotation Term="OData.Description" String="A stateless autoconfiguration (SLAAC) service-provided address."/>
        </Member>
      </EnumType>

      <TypeDefinition Name="SubnetMask" UnderlyingType="Edm.String">
        <Annotation Term="Validation.Pattern" String="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$"/>
      </TypeDefinition>

      <TypeDefinition Name="PrefixLength" UnderlyingType="Edm.Int64">
        <Annotation Term="Validation.Minimum" Int="0"/>
        <Annotation Term="Validation.Maximum" Int="128"/>
      </TypeDefinition>

      <EnumType Name="AddressState">
        <Member Name="Preferred">
          <Annotation Term="OData.Description" String="This address is currently within both its RFC4862-defined valid and preferred lifetimes."/>
        </Member>
        <Member Name="Deprecated">
          <Annotation Term="OData.Description" String="This address is currently within its valid lifetime but is now outside its RFC4862-defined preferred lifetime."/>
        </Member>
        <Member Name="Tentative">
          <Annotation Term="OData.Description" String="This address is currently undergoing Duplicate Address Detection (DAD) testing, as defined in RFC4862, section 5.4."/>
        </Member>
        <Member Name="Failed">
          <Annotation Term="OData.Description" String="This address has failed Duplicate Address Detection (DAD) testing, as defined in RFC4862, section 5.4, and is not currently in use."/>
        </Member>
      </EnumType>

      <ComplexType Name="IPv6StaticAddress" BaseType="IPAddresses.IPv6StaticAddress">
        <Property Name="Oem" Type="Resource.Oem" Nullable="false">
          <Annotation Term="OData.Description" String="The OEM extension property."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."/>
        </Property>
        <Property Name="Address" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="A valid IPv6 address."/>
          <Annotation Term="OData.LongDescription" String="This property provides access to a static IPv6 address that is currently assigned on a network interface."/>
          <Annotation Term="Redfish.Required"/>
          <Annotation Term="Redfish.IPv6Format"/>
        </Property>
        <Property Name="PrefixLength" Type="IPAddresses.v1_0_0.PrefixLength">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The prefix length, in bits, of this IPv6 address."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the IPv6 network prefix length, in bits, for this address."/>
          <Annotation Term="Redfish.Required"/>
        </Property>
      </ComplexType>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_2">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that annotations in previous namespaces were updated."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_3">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that annotations in previous namespaces were updated."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_4">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that annotations in previous namespaces were updated."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_5">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to show that annotations in previous namespaces were updated."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_6">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to add an abstract base type for IPv4Address, IPv6Address, and IPv6StaticAddress.  It was also created to make PrefixLength in IPv6StaticAddress writable."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_7">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to force the regeneration of JSON Schema so that OData properties are marked as required, and integer properties are marked as integer rather than number.  It was also created to add an abstract base type for IPv6GatewayStaticAddress.  It was also created to remove the requirement for PrefixLength in IPv6StaticAddress when used for gateway addresses."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_8">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to update descriptions that this schema defines."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_9">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to correct the minimum value allowed for PrefixLength."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_0_10">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to clarify language around the IPv4 Gateway property."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_1_0">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="Redfish.Release" String="2018.2"/>

      <ComplexType Name="IPv6GatewayStaticAddress" BaseType="IPAddresses.IPv6GatewayStaticAddress">
        <Property Name="Oem" Type="Resource.Oem" Nullable="false">
          <Annotation Term="OData.Description" String="The OEM extension property."/>
          <Annotation Term="OData.LongDescription" String="This property shall contain the OEM extensions.  All values for properties contained in this object shall conform to the Redfish Specification-described requirements."/>
        </Property>
        <Property Name="Address" Type="Edm.String">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="A valid IPv6 address."/>
          <Annotation Term="OData.LongDescription" String="This property provides access to a static IPv6 address that is currently assigned on a network interface."/>
          <Annotation Term="Redfish.Required"/>
          <Annotation Term="Redfish.IPv6Format"/>
        </Property>
        <Property Name="PrefixLength" Type="IPAddresses.v1_0_0.PrefixLength">
          <Annotation Term="OData.Permissions" EnumMember="OData.Permission/ReadWrite"/>
          <Annotation Term="OData.Description" String="The IPv6 network prefix length, in bits, for this address."/>
          <Annotation Term="OData.LongDescription" String="Provides the IPv6 network prefix length, in bits, for this address."/>
        </Property>
      </ComplexType>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_1_1">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to update descriptions that this schema defines."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_1_2">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to correct the minimum value allowed for PrefixLength."/>
    </Schema>

    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="IPAddresses.v1_1_3">
      <Annotation Term="Redfish.OwningEntity" String="DMTF"/>
      <Annotation Term="OData.Description" String="This version was created to clarify language around the IPv4 Gateway property."/>
    </Schema>

  </edmx:DataServices>
</edmx:Edmx>
