﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dsmapping="tag:atsc.org,2021:XMLSchemas/ATSC3/Delivery/DS_MAPPING/1.0/" targetNamespace="tag:atsc.org,2021:XMLSchemas/ATSC3/Delivery/DS_MAPPING/1.0/" elementFormDefault="qualified">
  <xs:element name="DSMapping" type="dsmapping:DSMappingType" />
  <xs:complexType name="DSMappingType">
    <xs:sequence>
      <xs:element name="DSTunnel" type="dsmapping:DSTunnelType" minOccurs="1" maxOccurs="unbounded" />
      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:anyAttribute processContents="strict" />
  </xs:complexType>
  <xs:complexType name="DSTunnelType">
    <xs:sequence>
      <xs:element name="DSTBackup" type="dsmapping:DSTBackupType" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="TPS" type="dsmapping:TPSType" minOccurs="0" maxOccurs="unbounded" />
      <xs:any namespace="##other" processContents="strict" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="destAddr" type="dsmapping:IPv4addressType" use="required" />
    <xs:attribute name="destPort" type="dsmapping:PortType" use="required" />
    <xs:attribute name="srcAddr" type="dsmapping:IPv4addressType" />
    <xs:attribute name="igmpVersion" type="dsmapping:IGMPVersionType" />
    <xs:attribute name="defaultPLP" type="xs:unsignedShort" default="0" />
    <xs:anyAttribute processContents="strict" />
  </xs:complexType>
  <xs:complexType name="DSTBackupType">
    <xs:attribute name="srcAddr" type="dsmapping:IPv4addressType" />
    <xs:anyAttribute processContents="strict" />
  </xs:complexType>
  <xs:complexType name="TPSType">
    <xs:attribute name="destAddr" type="dsmapping:IPv4addressType" use="required" />
    <xs:attribute name="destPort" type="dsmapping:PortType" use="required"></xs:attribute>
    <xs:attribute name="plp" type="xs:unsignedShort" use="required" />
    <xs:anyAttribute processContents="strict" />
  </xs:complexType>
  <xs:simpleType name="IPv4addressType">
    <xs:restriction base="xs:token">
      <xs:pattern value="(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="PortType">
    <xs:restriction base="xs:unsignedShort">
      <xs:minInclusive value="1" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="IGMPVersionType">
    <xs:restriction base="xs:unsignedShort">
      <xs:minInclusive value="2" />
      <xs:maxInclusive value="3" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>