<?xml version="1.0" encoding="gb2312" ?> 
<xs:schema targetNamespace="http://www.h3c.com/netconf/config:1.0"
                  elementFormDefault="qualified"
                  xmlns="http://www.h3c.com/netconf/config:1.0"
                  xmlns:base="http://www.h3c.com/netconf/base:1.0" 
                  xmlns:netconf ="urn:ietf:params:xml:ns:netconf:base:1.0" 
                  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://www.h3c.com/netconf/base:1.0" schemaLocation="basetype.xsd"></xs:import>
  <xs:import schemaLocation="netconf.xsd" namespace="urn:ietf:params:xml:ns:netconf:base:1.0"></xs:import>

  <xs:complexType name="MLDS_Vlan_ID">
    <xs:simpleContent >
      <xs:restriction base="base:UnsignedShort">
        <xs:minInclusive value ="1"/>
		<xs:maxInclusive value ="4094"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
   <xs:complexType name="MLDS_Vlan_Ver">
    <xs:simpleContent >
      <xs:restriction base="base:UnsignedShort">
        <xs:enumeration value="1"/>
		<xs:enumeration value="2"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="MLDS_VLan_QueryInterval">
    <xs:simpleContent >
      <xs:restriction base="base:UnsignedShort">
        <xs:minInclusive value="2"/>
		<xs:maxInclusive value="31744"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
    <xs:complexType name="MLDS_Vsi_VsiName">
    <xs:simpleContent>
      <xs:restriction base="base:String">
        <xs:minLength value="1"/>
        <xs:maxLength value="31"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:annotation>
    <xs:documentation >
      MLD Snooping config definition
    </xs:documentation>
  </xs:annotation>
  <xs:element name="MLDSnooping">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
	  
		<!-- global mlds -->
	    <xs:element name="Configuration" minOccurs="0">
		  <xs:annotation>
		    <xs:documentation>MLD Snooping global information table</xs:documentation>
		  </xs:annotation>
		  <xs:complexType>
		    <xs:all>
			  <xs:element name="Enabled"  minOccurs="0"  type="base:EnableState" nillable="true">
                <xs:annotation>
                  <xs:documentation>Enable global MLD Snooping</xs:documentation>
                </xs:annotation>
              </xs:element>
			</xs:all>
			<xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
		  </xs:complexType>
		</xs:element>

		<!-- mlds vlan information table -->
	    <xs:element name="VLANs" minOccurs="0">
          <xs:annotation>
            <xs:documentation>MLD Snooping VLAN information table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="VLAN" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Row name</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="VLANID"  minOccurs="0"  type="MLDS_Vlan_ID" nillable="true">
                      <xs:annotation>
                        <xs:documentation>VLAN id</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Enabled"  minOccurs="0"  type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Enable MLD Snooping on the VLAN</xs:documentation>
                      </xs:annotation>
                    </xs:element>
					<xs:element name="Version"  minOccurs="0"  type="MLDS_Vlan_Ver" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Specify version</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="DropUnknown" minOccurs="0" type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure drop-unknown</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Querier" minOccurs="0" type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Enable the querier function</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="QueryInterval"  minOccurs="0"  type="MLDS_VLan_QueryInterval" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Set the interval between general queries</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="GeneralQuerySourceAddr"  minOccurs="0"  type="base:Ipv6Address" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure the source address of general queries</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SpecialQuerySourceAddr"  minOccurs="0"  type="base:Ipv6Address" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure the source address of group-specific</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"></xs:attributeGroup>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
      
        <xs:element name="FastLeavePorts" minOccurs="0">
          <xs:annotation>
            <xs:documentation>MLD Snooping port fast leave information table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Interface" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Row name</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="IfIndex"  minOccurs="0"  type="base:NameAndIndexUnion" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Interface index</xs:documentation>
                      </xs:annotation>
                    </xs:element>
					<xs:element name="FastLeaveVlanList"  minOccurs="0"  type="base:VlanRange" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Config fast leave vlan list</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"></xs:attributeGroup>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
		
		<xs:element name="GroupLimitPorts" minOccurs="0">
          <xs:annotation>
            <xs:documentation>MLD Snooping port group limit information table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Interface" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Row name</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="IfIndex"  minOccurs="0"  type="base:NameAndIndexUnion" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Interface index</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Limit" minOccurs="0" type="base:UnsignedInteger32" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Group limit number</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="GroupLimitVlanList" minOccurs="0" type="base:VlanRange" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Config group limit vlan list</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"></xs:attributeGroup>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
	
	
		<!-- mlds vlan information table -->
	    <xs:element name="VSIs" minOccurs="0">
          <xs:annotation>
            <xs:documentation>MLD Snooping VSI information table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="VSI" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Row name</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="VsiName"  minOccurs="0"  type="MLDS_Vsi_VsiName" nillable="true">
                      <xs:annotation>
                        <xs:documentation>VSI NAME</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Enabled"  minOccurs="0"  type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Enable MLD Snooping on the VSI</xs:documentation>
                      </xs:annotation>
                    </xs:element>
					          <xs:element name="Version"  minOccurs="0"  type="MLDS_Vlan_Ver" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Specify version</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="DropUnknown" minOccurs="0" type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure drop-unknown</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="Querier" minOccurs="0" type="base:EnableState" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Enable the querier function</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="QueryInterval"  minOccurs="0"  type="MLDS_VLan_QueryInterval" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Set the interval between general queries</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="GeneralQuerySourceAddr"  minOccurs="0"  type="base:Ipv6Address" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure the source address of general queries</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="SpecialQuerySourceAddr"  minOccurs="0"  type="base:Ipv6Address" nillable="true">
                      <xs:annotation>
                        <xs:documentation>Configure the source address of group-specific</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                  <xs:attributeGroup ref="base:RowAttributeGroup"></xs:attributeGroup>
                </xs:complexType>
              </xs:element>
            </xs:choice>
            <xs:attributeGroup ref="base:TableAttributeGroup"></xs:attributeGroup>
          </xs:complexType>
        </xs:element>
  
	
      </xs:choice>
      <xs:attributeGroup ref="base:NodeAttributeGroup"></xs:attributeGroup>
    </xs:complexType>
  </xs:element>
  
</xs:schema>
