<?xml version="1.0" encoding="UTF-8"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="openDoveDomain" type="openDoveDomain"/>
  <xs:element name="openDoveEndpoint" type="openDoveEndpoint"/>
  <xs:element name="openDoveGWSession" type="openDoveGWSession"/>
  <xs:element name="openDoveGwIpv4" type="openDoveGwIpv4"/>
  <xs:element name="openDoveNVP" type="openDoveNVP"/>
  <xs:element name="openDoveNetwork" type="openDoveNetwork"/>
  <xs:element name="openDoveNeutronControlBlock" type="openDoveNeutronControlBlock"/>
  <xs:element name="openDoveServiceAppliance" type="openDoveServiceAppliance"/>
  <xs:element name="openDoveSwitch" type="openDoveSwitch"/>
  <xs:element name="openDoveVGWVNIDMapping" type="openDoveVGWVNIDMapping"/>
  <xs:element name="openDoveDCSList" type="openDoveDCSList"/>
  <xs:element name="openDoveDomainRequest" type="openDoveDomainRequest"/>
  <xs:element name="openDoveEndpointRequest" type="openDoveEndpointRequest"/>
  <xs:element name="openDoveGWSessionStatsRequest" type="openDoveGWSessionStatsRequest"/>
  <xs:element name="openDoveGWStats" type="openDoveGWStats"/>
  <xs:element name="openDoveGwIpv4Request" type="openDoveGwIpv4Request"/>
  <xs:element name="openDoveNetworkRequest" type="openDoveNetworkRequest"/>
  <xs:element name="openDoveServiceApplianceRequest" type="openDoveServiceApplianceRequest"/>
  <xs:element name="openDoveSwitchRequest" type="openDoveSwitchRequest"/>
  <xs:element name="openDoveSwitchStatsRequest" type="openDoveSwitchStatsRequest"/>
  <xs:element name="openDoveVGWVNIDMappingRequest" type="openDoveVGWVNIDMappingRequest"/>
  <xs:element name="openDoveVNIDStats" type="openDoveVNIDStats"/>
  <xs:complexType name="openDoveDomain">
    <xs:sequence>
      <xs:element name="is_tombstone" type="xs:boolean" minOccurs="0"/>
      <xs:element name="replication_factor" type="xs:int" minOccurs="0"/>
      <xs:element name="create_version" type="xs:int" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="change_version" type="xs:int" minOccurs="0"/>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveEndpoint">
    <xs:sequence>
      <xs:element name="physical IPs" type="xs:string" minOccurs="0"/>
      <xs:element name="virtual IPs" type="xs:string" minOccurs="0"/>
      <xs:element name="mac" type="xs:string" minOccurs="0"/>
      <xs:element name="Host IP" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveGWSession">
    <xs:sequence>
      <xs:element name="action" type="xs:string" minOccurs="0"/>
      <xs:element name="dport" type="xs:int" minOccurs="0"/>
      <xs:element name="sip" type="xs:string" minOccurs="0"/>
      <xs:element name="proto" type="xs:int" minOccurs="0"/>
      <xs:element name="snat_sport" type="xs:int" minOccurs="0"/>
      <xs:element name="orig_sip" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_dip" type="xs:string" minOccurs="0"/>
      <xs:element name="net_id" type="xs:string" minOccurs="0"/>
      <xs:element name="orig_sport" type="xs:int" minOccurs="0"/>
      <xs:element name="age" type="xs:string" minOccurs="0"/>
      <xs:element name="orig_dport" type="xs:int" minOccurs="0"/>
      <xs:element name="dip" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_sip" type="xs:string" minOccurs="0"/>
      <xs:element name="sport" type="xs:int" minOccurs="0"/>
      <xs:element name="ovl_dport" type="xs:int" minOccurs="0"/>
      <xs:element name="snat_ip" type="xs:string" minOccurs="0"/>
      <xs:element name="orig_dip" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_sport" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveGwIpv4">
    <xs:sequence>
      <xs:element name="mask" type="xs:string" minOccurs="0"/>
      <xs:element name="intf_type" type="xs:string" minOccurs="0"/>
      <xs:element name="is_tombstone" type="xs:boolean" minOccurs="0"/>
      <xs:element name="gwUUID" type="xs:string" minOccurs="0"/>
      <xs:element name="change_version" type="xs:int" minOccurs="0"/>
      <xs:element name="vlan" type="xs:int" minOccurs="0"/>
      <xs:element name="create_version" type="xs:int" minOccurs="0"/>
      <xs:element name="ip" type="xs:string" minOccurs="0"/>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
      <xs:element name="nexthop" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveNVP">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" minOccurs="0"/>
      <xs:element name="Value" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveNetwork">
    <xs:sequence>
      <xs:element name="domain_uuid" type="xs:string" minOccurs="0"/>
      <xs:element name="network_id" type="xs:int" minOccurs="0"/>
      <xs:element name="type" type="xs:int" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="create_version" type="xs:int" minOccurs="0"/>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
      <xs:element name="change_version" type="xs:int" minOccurs="0"/>
      <xs:element name="is_tombstone" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveNeutronControlBlock">
    <xs:sequence>
      <xs:element name="domain_separation" type="xs:boolean" minOccurs="0"/>
      <xs:element name="egw_replication_factor" type="xs:int" minOccurs="0"/>
      <xs:element name="snat_pool_size" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveServiceAppliance">
    <xs:sequence>
      <xs:element name="ip_family" type="xs:int" minOccurs="0"/>
      <xs:element name="build_version" type="xs:string" minOccurs="0"/>
      <xs:element name="canBeDGW" type="xs:boolean" minOccurs="0"/>
      <xs:element name="ip" type="xs:string" minOccurs="0"/>
      <xs:element name="uuid" type="xs:string" minOccurs="0"/>
      <xs:element name="canBeDCS" type="xs:boolean" minOccurs="0"/>
      <xs:element name="dcs_raw_service_port" type="xs:int" minOccurs="0"/>
      <xs:element name="timestamp" type="xs:string" minOccurs="0"/>
      <xs:element name="isDGW" type="xs:boolean" minOccurs="0"/>
      <xs:element name="dcs_rest_service_port" type="xs:int" minOccurs="0"/>
      <xs:element name="isDCS" type="xs:boolean" minOccurs="0"/>
      <xs:element name="dgw_config_version" type="xs:int" minOccurs="0"/>
      <xs:element name="dcs_config_version" type="xs:int" minOccurs="0"/>
      <xs:element name="dgw_rest_service_port" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveSwitch">
    <xs:sequence>
      <xs:element name="is_tombstone" type="xs:boolean" minOccurs="0"/>
      <xs:element name="change_version" type="xs:int" minOccurs="0"/>
      <xs:element name="timestamp" type="xs:string" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="tunnelip" type="xs:string" minOccurs="0"/>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
      <xs:element name="managementip" type="xs:string" minOccurs="0"/>
      <xs:element name="create_version" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveVGWVNIDMapping">
    <xs:sequence>
      <xs:element name="change_version" type="xs:int" minOccurs="0"/>
      <xs:element name="create_version" type="xs:int" minOccurs="0"/>
      <xs:element name="net_id" type="xs:int" minOccurs="0"/>
      <xs:element name="vlan" type="xs:int" minOccurs="0"/>
      <xs:element name="is_tombstone" type="xs:boolean" minOccurs="0"/>
      <xs:element name="gatewayUUID" type="xs:string" minOccurs="0"/>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveDCSList">
    <xs:sequence>
      <xs:element name="oDCS_list" type="openDoveServiceAppliance" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="oDCS" type="openDoveServiceAppliance" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveDomainRequest">
    <xs:sequence>
      <xs:element name="domains" type="openDoveDomain" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="domain" type="openDoveDomain" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveEndpointRequest">
    <xs:sequence>
      <xs:element name="endpoint" type="openDoveEndpoint" minOccurs="0"/>
      <xs:element name="endpoints" type="openDoveEndpoint" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveGWSessionStatsRequest">
    <xs:sequence>
      <xs:element name="sessions" type="openDoveGWSession" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="session" type="openDoveGWSession" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveGWStats">
    <xs:sequence>
      <xs:element name="ovl_to_ext_leave_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_pkts" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveGwIpv4Request">
    <xs:sequence>
      <xs:element name="gw_ipv4_assignment" type="openDoveGwIpv4" minOccurs="0"/>
      <xs:element name="gw_ipv4_assignments" type="openDoveGwIpv4" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveNetworkRequest">
    <xs:sequence>
      <xs:element name="networks" type="openDoveNetwork" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="network" type="openDoveNetwork" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveServiceApplianceRequest">
    <xs:sequence>
      <xs:element name="service_appliance" type="openDoveServiceAppliance" minOccurs="0"/>
      <xs:element name="service_appliances" type="openDoveServiceAppliance" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveSwitchRequest">
    <xs:sequence>
      <xs:element name="switch" type="openDoveSwitch" minOccurs="0"/>
      <xs:element name="switches" type="openDoveSwitch" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveSwitchStatsRequest">
    <xs:sequence>
      <xs:element name="stat" type="openDoveNVP" minOccurs="0"/>
      <xs:element name="stats" type="openDoveNVP" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveVGWVNIDMappingRequest">
    <xs:sequence>
      <xs:element name="vnid_mapping_rules" type="openDoveVGWVNIDMapping" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="vnid_mapping_rule" type="openDoveVGWVNIDMapping" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="openDoveVNIDStats">
    <xs:sequence>
      <xs:element name="net_id" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_bytes" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_bps" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_pps" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_vlan_leave_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="ovl_to_ext_leave_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="vlan_to_ovl_enter_pkts" type="xs:string" minOccurs="0"/>
      <xs:element name="ext_to_ovl_enter_pps" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
