<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified">

  <xsd:include schemaLocation="common_trans_obj.xsd"/>
  <xsd:include schemaLocation="common_obj.xsd"/>

  <xsd:element name="DYNAMIC_IP_SERVICE" type="DynamicIPServiceType"/>
  <xsd:element name="STATUS" type="xsd:integer"/>
  <xsd:element name="GK_INFO" type="GkInfoContent"/>
  <xsd:element name="SERVICE_STATUS" type="xsd:integer"/>
  <xsd:element name="SERVICE_OPCODE" type="ServiceOpcodeType"/>
  <xsd:element name="REGISTRATION_INTERVAL" type="xsd:integer"/>
  <xsd:element name="CONNECTION_STATE" type="GateKeeperConnectionStateType"/>
  <xsd:element name="DYNAMIC_GATEKEEPER_LIST" type="DynamicGateKeeperListContent"/>
  <xsd:element name="DYNAMIC_GATEKEEPER" type="DynamicGatekeeperContent"/>
  <xsd:element name="GK_ID" type="xsd:string"/>
  <xsd:element name="ROLE" type="DynamicGKRoleType"/>
  <xsd:element name="CENTRAL_SIGNALING_IP_SERVICE_INFO" type="CsIpServiceContent"/>
  <xsd:element name="IP_INFO" type="IpInfo"/>
  <xsd:element name="CENTRAL_SIGNALING_PROXY_INFO" type="CsProxyInfoContent"/>
  <xsd:element name="CENTRAL_SIGNALING_GK_INFO" type="CsGkInfoContent"/>
  <xsd:element name="PRIMARY_GK" type="ProxyDataContent"/>
  <xsd:element name="ALTERNATE_GK" type="ProxyDataContent"/>
  <xsd:element name="SPAN_IP_SERVICE_INFO" type="SpanIpServiceInfoContent"/>
  <xsd:element name="SIP_SERVER_LIST_INFO" type="SipServerListInfoContent"/>
  <xsd:element name="SIP_SERVER_INFO" type="SipServerInfoContent"/>
  <xsd:element name="SERVER_ROLE" type="ServerRoleType"/>
  <xsd:element name="SIP_SERVER_STATUS" type="SipServerStatusType"/>
  <xsd:element name="DNS_INFO" type="DnsInfoContent"/>
  <xsd:element name="ICE_SERVERS_LIST_INFO" type="IceServersListInfoContent"/>
  <xsd:element name="ICE_SERVER" type="IceServerContent"/>
  <xsd:element name="ICE_SERVER_IP_ADDRESS" type="IpAddressType"/>
  <xsd:element name="ICE_SERVER_STATUS_1" type="IceServerStatusType"/>
  <xsd:element name="ICE_SERVER_STATUS_2" type="IceServerStatusType"/>
  <xsd:element name="ICE_SERVER_STATUS_3" type="IceServerStatusType"/>
  <xsd:element name="ICE_SERVER_STATUS_4" type="IceServerStatusType"/>
  <xsd:element name="ICE_FIREWALL_DETECTION" type="IceFirewallDetectionType"/>



  <xsd:complexType name="SipServerListInfoContent">
    <xsd:sequence>
      <xsd:element ref="SIP_SERVER_INFO"  minOccurs="0" maxOccurs="unbounded"/>
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="SipServerInfoContent">
    <xsd:sequence>
      <xsd:element ref="SERVER_ROLE"/>
      <xsd:element ref="NAME"/>
      <xsd:element ref="IP" minOccurs="0"/>
      <xsd:element ref="SIP_SERVER_STATUS"/>
      <xsd:element ref="IP_V6" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="ServerRoleType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="not_available"/>
      <xsd:enumeration value="Primary_Server"/>
      <xsd:enumeration value="Alternate_Server"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="SipServerStatusType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="not_available"/>
      <xsd:enumeration value="ok"/>
      <xsd:enumeration value="fail"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="GkInfoContent">
    <xsd:sequence>
      <xsd:element ref="SERVICE_STATUS"/>
      <xsd:element ref="SERVICE_OPCODE"/>
      <xsd:element ref="REGISTRATION_INTERVAL"/>
      <xsd:element ref="CONNECTION_STATE"/>
      <xsd:element ref="DYNAMIC_GATEKEEPER_LIST" minOccurs="0"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DynamicGateKeeperListContent">
    <xsd:sequence>
      <xsd:element ref="DYNAMIC_GATEKEEPER"  minOccurs="0" maxOccurs="unbounded"/>
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DynamicGatekeeperContent">
    <xsd:sequence>
      <xsd:element ref="GK_ID"/>
      <xsd:element ref="IP" minOccurs="0"/>
      <xsd:element ref="NAME"/>
      <xsd:element ref="ROLE"/>
      <xsd:element ref="IP_V6" minOccurs="0"/>
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="ServiceOpcodeType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Status_OK"/>
      <xsd:enumeration value="GK_Discovery_State"/>
      <xsd:enumeration value="Registration_To_Alternate_GK_Failed"/>
      <xsd:enumeration value="Registration_Succeeded"/>
      <xsd:enumeration value="GK_Unregistration_State"/>
      <xsd:enumeration value="GK_Registration_Timeout"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Resource_Unavailable"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Invalid_Revision"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_18"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Terminal_Excluded"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Security_Denial"/>
      <xsd:enumeration value="GK Rejected GRQ Reason Is Status_Illegal"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Generic_Data"/>
      <xsd:enumeration value="GK_Rejected_GRQ_Reason_Is_Needed_Feature_Not_Supported"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Resource_Unavailable"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Invalid_Revision"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Invalid_Call_Signal_Address"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Invalid_RAS_Address"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Terminal_Type"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Endpoint_Id"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Discovery_Required"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Duplicate_Alias"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Transport_Not_Supported"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_18"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Security_Denial"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Transport_QOS_Not_Supported"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Invalid_Alias"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Status_Illegal"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Full_Registration_Required"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Generic_Data"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Additive_Registration_Not_Supported"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Invalid_Terminal_Aliases"/>
      <xsd:enumeration value="GK_Rejected_RRQ_Reason_Is_Needed_Feature_Not_Supported"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="SpanIpServiceInfoContent">
    <xsd:sequence>
      <xsd:element ref="IP_INFO" minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CsIpServiceContent">
    <xsd:sequence>
      <xsd:element ref="IP_INFO"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="GateKeeperConnectionStateType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="GK_State_Invalid"/>
      <xsd:enumeration value="GK_Non_Registered"/>
      <xsd:enumeration value="GK_Discovery"/>
      <xsd:enumeration value="GK_Registration"/>
      <xsd:enumeration value="GK_Registered"/>
      <xsd:enumeration value="GK_Unregistration"/>
      <xsd:enumeration value="GK_Timeout_Registration"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="DynamicGKRoleType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="Active"/>
      <xsd:enumeration value="Backup"/>
    </xsd:restriction>
  </xsd:simpleType>


  <xsd:complexType name="CsProxyInfoContent">
    <xsd:sequence>
      <xsd:element ref="PRIMARY_PROXY"/>
      <xsd:element ref="ALTERNATE_PROXY"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="CsGkInfoContent">
    <xsd:sequence>
      <xsd:element ref="PRIMARY_GK"/>
      <xsd:element ref="ALTERNATE_GK"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="DnsInfoContent">
    <xsd:sequence>
      <xsd:element ref="DOMAIN_NAME"/>
      <xsd:element ref="IP"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="IceServersListInfoContent">
    <xsd:sequence>
      <xsd:element ref="ICE_SERVER" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="IceServerContent">
    <xsd:sequence>
      <xsd:element ref="ICE_SERVER_ROLE"/>
      <xsd:element ref="ICE_SERVER_IP_ADDRESS"/>
      <xsd:element ref="ICE_SERVER_STATUS_1"/>
      <xsd:element ref="ICE_SERVER_STATUS_2"/>
      <xsd:element ref="ICE_SERVER_STATUS_3"/>
      <xsd:element ref="ICE_SERVER_STATUS_4"/>
      <xsd:any processContents="skip" minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:simpleType name="IceServerStatusType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ice_server_status_not_available"/>
      <xsd:enumeration value="ice_server_status_connection_ok"/>
      <xsd:enumeration value="ice_server_status_connection_failed"/>
      <xsd:enumeration value="ice_server_status_stun_user_password_failed"/>
	  <xsd:enumeration value="ice_server_status_stun_password_connection_failure"/>
	  <xsd:enumeration value="ice_turn_server_dns_resolve_failure"/>
	  <xsd:enumeration value="ice_turn_server_unreachable"/>
	  <xsd:enumeration value="ice_turn_server_authorization_failure"/>
      <xsd:enumeration value="ice_server_status_unknown_failure"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="IceFirewallDetectionType">
    <xsd:restriction base="xsd:string">
      <xsd:enumeration value="ice_firewall_detection_unknown"/>
      <xsd:enumeration value="ice_firewall_detection_udp_enabled"/>
      <xsd:enumeration value="ice_firewall_detection_tcp_enabled"/>
      <xsd:enumeration value="ice_firewall_detection_tcp_proxy"/>
      <xsd:enumeration value="ice_firewall_detection_block"/>
      <xsd:enumeration value="ice_firewall_detection_none"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="IpInfo">
    <xsd:sequence>
      <xsd:element ref="IP"/>
      <xsd:element ref="SUBNET_MASK_ADDRESS"/>
      <xsd:element ref="DEFAULT_GATEWAY_ADDRESS"/>
      <xsd:element ref="DHCP_STATUS_TYPE"/>
      <xsd:element ref="DHCP_SERVER_IP"/>
      <xsd:element ref="DNS_SERVERS_LIST"/>
      <xsd:element ref="DOMAIN_NAME"/>
      <xsd:element ref="NAT_IP"/>
    </xsd:sequence>
  </xsd:complexType>


  <xsd:complexType name="DynamicIPServiceType">
    <xsd:sequence>
      <xsd:element ref="NAME"/>
      <xsd:element ref="ID"/>
      <xsd:element ref="STATUS"/>
      <xsd:element ref="SPAN_IP_SERVICE_INFO"/>
      <xsd:element ref="GK_INFO"/>
      <xsd:element ref="CENTRAL_SIGNALING_IP_SERVICE_INFO"/>
      <xsd:element ref="CENTRAL_SIGNALING_GK_INFO"/>
      <xsd:element ref="SIP_SERVER_LIST_INFO"/>
      <xsd:element ref="DNS_INFO"/>
      <xsd:element ref="ICE_SERVERS_LIST_INFO"/>
      <xsd:element ref="ICE_FIREWALL_DETECTION"/>
    </xsd:sequence>
  </xsd:complexType>


</xsd:schema>