<?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 ="InterfaceFullName">
    <xs:simpleContent>
      <xs:restriction base="base:String">
        <xs:minLength value="1"></xs:minLength>
        <xs:maxLength value ="47"></xs:maxLength>
      </xs:restriction>
    </xs:simpleContent>
  </xs:complexType>
  <xs:element name="RBAC">
    <xs:complexType>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Roles" minOccurs="0">
          <xs:annotation>
            <xs:documentation>RBAC Roles</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Role" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="RoleName" minOccurs="0"  nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="63"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Description" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value ="128"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="PermitAllInterface" minOccurs="0" type="base:Boolean" nillable="true"></xs:element>
                    <xs:element name="PermitAllVLAN" minOccurs="0" type="base:Boolean" nillable="true"></xs:element>
                    <xs:element name="PermitAllVRF" minOccurs="0" type="base:Boolean" nillable="true"></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="Rules" minOccurs="0">
          <xs:annotation>
            <xs:documentation>RBAC Rules</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Rule" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="RoleName" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="63"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="RuleIndex" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:minInclusive value="1"></xs:minInclusive>
                            <xs:maxInclusive value="256"></xs:maxInclusive>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Action" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:minInclusive value="0"></xs:minInclusive>
                            <xs:maxInclusive value="1"></xs:maxInclusive>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="ReadOperation" minOccurs="0" type="base:Boolean" nillable="true"></xs:element>
                    <xs:element name="WriteOperation" minOccurs="0" type="base:Boolean" nillable="true"></xs:element>
                    <xs:element name="ExecOperation" minOccurs="0" type="base:Boolean" nillable="true"></xs:element>
                    <xs:element name="EntityType" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:UnsignedInteger32">
                            <xs:minInclusive value="0"></xs:minInclusive>
                            <xs:maxInclusive value="5"></xs:maxInclusive>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="Entity" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="255"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </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="Policies" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="InterfacePolicies" minOccurs="0">
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="Policy" maxOccurs="unbounded" minOccurs="0">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="RoleName" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:String">
                                  <xs:minLength value="1"></xs:minLength>
                                  <xs:maxLength value="63"></xs:maxLength>
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="InterfaceListPermitted" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:String">
                                  <xs:pattern value="^(([a-zA-Z][-a-zA-Z0-9]{1,18}[a-zA-Z]|((E1|T1|E3|T3) ))(([1-9][0-9]{0,2}|[0-9])/)?(([1-9][0-9]{0,2}|[0-9])/)?(([1-9][0-9]{0,2}|[0-9])/)?([1-9][0-9]{0,4}|[0-9])(:([1-9][0-9]{0,3}|[0-9]))?(\.([1-9][0-9]{0,3}|[0-9]))?(,| to )*)*$"></xs:pattern>
                                  <xs:minLength value="1"></xs:minLength>
                                  <xs:maxLength value="32767"></xs:maxLength>
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </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="VRFPolicies" minOccurs="0">
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="Policy" maxOccurs="unbounded" minOccurs="0">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="RoleName" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:String">
                                  <xs:minLength value="1"></xs:minLength>
                                  <xs:maxLength value ="63"></xs:maxLength>
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="VRFPermitted" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:String">
                                  <xs:minLength value="1"></xs:minLength>
                                  <xs:maxLength value ="31"></xs:maxLength>
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </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="VLANPolicies" minOccurs="0">
                <xs:complexType>
                  <xs:choice maxOccurs="unbounded">
                    <xs:element name="Policy" maxOccurs="unbounded" minOccurs="0">
                      <xs:complexType>
                        <xs:all>
                          <xs:element name="RoleName" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:String">
                                  <xs:minLength value="1"></xs:minLength>
                                  <xs:maxLength value="63"></xs:maxLength>
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="VLANListPermitted" minOccurs="0" nillable="true">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:restriction base="base:VlanRange">
                                </xs:restriction>
                              </xs:simpleContent>
                            </xs:complexType>
                          </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:complexType>
        </xs:element>
        <xs:element name="FeatureGroups" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="FeatureGroup" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="Name" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="31"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </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="FeaturesInGroup" minOccurs="0">
          <xs:complexType>
            <xs:choice maxOccurs="unbounded">
              <xs:element name="Feature" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:all>
                    <xs:element name="GroupName" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="31"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="FeatureName" minOccurs="0" nillable="true">
                      <xs:complexType>
                        <xs:simpleContent>
                          <xs:restriction base="base:String">
                            <xs:minLength value="1"></xs:minLength>
                            <xs:maxLength value="15"></xs:maxLength>
                          </xs:restriction>
                        </xs:simpleContent>
                      </xs:complexType>
                    </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>