<?xml version="1.0" encoding="gb2312" ?>
<xs:schema targetNamespace="http://www.h3c.com/netconf/action:1.0"
                  elementFormDefault="qualified"
                  xmlns="http://www.h3c.com/netconf/action:1.0"
                  xmlns:base="http://www.h3c.com/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:annotation>
    <xs:documentation>
      ACL module action definition
    </xs:documentation>
  </xs:annotation>
  
  <xs:complexType name="Acl_GroupIndex">
    <xs:simpleContent>
      <xs:restriction base="base:String">
        <xs:pattern value="(^[2345][0-9]{3}$)|(^[a-zA-Z][^?&#x09;&#x0d;&#x0a;]{0,62}$)"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="AclGroupType">
    <xs:simpleContent>
      <xs:restriction base="base:String">
        <xs:pattern value="(^0$)|(^[2345][0-9]{3}$)|(^[a-zA-Z][^?&#x09;&#x0d;&#x0a;]{0,62}$)"></xs:pattern>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  
  <xs:complexType name="ZoneNameString">
    <xs:simpleContent>
      <xs:restriction base="base:String">
        <xs:maxLength value ="31"/>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ACL">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Groups" minOccurs="0">
          <xs:annotation>
            <xs:documentation>ACL group table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Group" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>ACL group</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="GroupType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Group type. 1: IPv4, 2: IPv6, 3: MAC, 4: User.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                            <xs:enumeration value="3"/>
                            <xs:enumeration value="4"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="GroupID" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ACL group ID. IPv4: 2000~5999, IPv6: 2000~3999</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:minInclusive value="2000"/>
                            <xs:maxInclusive value="5999"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="CountClear" type="xs:string" fixed="">
                      <xs:annotation>
                        <xs:documentation>Clear the count.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="NamedGroups" minOccurs="0">
          <xs:annotation>
            <xs:documentation>ACL named group table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Group" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>ACL group</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="GroupType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Group type. 1: IPv4, 2: IPv6, 3: MAC, 4: User.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                            <xs:enumeration value="3"/>
                            <xs:enumeration value="4"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="GroupIndex" minOccurs="0" type="Acl_GroupIndex">
                      <xs:annotation>
                        <xs:documentation>
                          Acl Group Name of Index.If it's Index, range from 2000 to 5999.
                        </xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="CountClear" type="xs:string" fixed="">
                      <xs:annotation>
                        <xs:documentation>Clear the count.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="PfilterApply" minOccurs="0">
          <xs:annotation>
            <xs:documentation>Pfilter apply table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Pfilter" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Pfilter apply</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="AppObjType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Object type. 1: interface, 2: vlan,3: global.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                            <xs:enumeration value="3"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AppObjIndex" type="base:UnsignedInteger32" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Object Index.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="AppDirection" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Apply Direction.1:inbound, 2:outbound.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AppAclType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ACL Group type. 1: IPv4, 2: IPv6, 3: MAC, 4: User-defined, 5: default.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                            <xs:enumeration value="3"/>
                            <xs:enumeration value="4"/>
                            <xs:enumeration value="5"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AppAclGroup" type="AclGroupType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ACL Group Index.range from 2000 to 5999, Default: 0.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="CountClear" type="xs:string" fixed="">
                      <xs:annotation>
                        <xs:documentation>Clear the count.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="ClearZonePairPfilter" minOccurs="0">
          <xs:annotation>
            <xs:documentation>Clear pfilter statistic table</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice>
              <xs:element name="Pfilter" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>Row name</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                  <xs:all>
                    <xs:element name="SrcZone" type="ZoneNameString">
                      <xs:annotation>
                        <xs:documentation>Source zone name</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="DestZone" type="ZoneNameString">
                      <xs:annotation>
                        <xs:documentation>Destination zone name</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="AclType" minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>ACL group type. 1: IPv4, 2: IPv6.</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="AclGroup"  minOccurs="0">
                      <xs:annotation>
                        <xs:documentation>Acl group name or number</xs:documentation>
                      </xs:annotation>
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:maxLength value ="61"/>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Clear" type="xs:string" fixed="">
                      <xs:annotation>
                        <xs:documentation>Clear action</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                  </xs:all>
                </xs:complexType>
              </xs:element>
            </xs:choice>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>                                                                                                                                 
