--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/servlib/routing/router.xsd Thu Apr 21 14:57:45 2011 +0100
@@ -0,0 +1,1720 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+
+<xs:annotation>
+ <xs:documentation xml:lang="en">
+ Copyright 2006-2007 The MITRE Corporation
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ The US Government will not be charged any license fee and/or royalties
+ related to this software. Neither name of The MITRE Corporation; nor the
+ names of its contributors may be used to endorse or promote products
+ derived from this software without specific prior written permission.
+ </xs:documentation>
+</xs:annotation>
+
+<!-- TYPES -->
+
+ <!-- Simple types -->
+
+ <xs:simpleType name="dtnStatusType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="justBooted"/>
+ <xs:enumeration value="shuttingDown"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="bundlePriorityType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="bulk"/>
+ <xs:enumeration value="normal"/>
+ <xs:enumeration value="expedited"/>
+ <xs:enumeration value="_unknown_priority_"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="eventSourceType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="peer"/>
+ <xs:enumeration value="application"/>
+ <xs:enumeration value="dataStore"/>
+ <xs:enumeration value="admin"/>
+ <xs:enumeration value="fragmentation"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="bundleForwardActionType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="forward"/>
+ <xs:enumeration value="copy"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="contactReasonType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="no_info"/>
+ <xs:enumeration value="user"/>
+ <xs:enumeration value="broken"/>
+ <xs:enumeration value="cl_error"/>
+ <xs:enumeration value="cl_version"/>
+ <xs:enumeration value="shutdown"/>
+ <xs:enumeration value="reconnect"/>
+ <xs:enumeration value="idle"/>
+ <xs:enumeration value="timeout"/>
+ <xs:enumeration value="blocked"/>
+ <xs:enumeration value="unblocked"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="linkTypeType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="alwayson"/>
+ <xs:enumeration value="ondemand"/>
+ <xs:enumeration value="scheduled"/>
+ <xs:enumeration value="opportunistic"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="linkStateType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="unavailable"/>
+ <xs:enumeration value="available"/>
+ <xs:enumeration value="opening"/>
+ <xs:enumeration value="open"/>
+ <xs:enumeration value="busy"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="eidTypeType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="*:*"/>
+ <xs:enumeration value="dtn:none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\S+://(\S|/)+/\*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="percentType">
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0"/>
+ <xs:maxInclusive value="100"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="failureActionType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="drop"/>
+ <xs:enumeration value="defer"/>
+ <xs:enumeration value="exec"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="bundleLocationType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="memory"/>
+ <xs:enumeration value="disk"/>
+ <xs:enumeration value="nodata"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <!-- Bundle Type -->
+
+ <xs:attributeGroup name="bundleAttributes">
+ <xs:attribute name="bundleid" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Local bundle identifier.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="is_fragment" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the bundle is a fragment.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="is_admin" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the bundle is an administrative record.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="do_not_fragment" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the bundle may be fragmented.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="priority" type="bundlePriorityType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Bundle priority or class of service.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="custody_requested" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether bundle custody is requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="local_custody" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the local node has custody of the bundle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="singleton_dest" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the destination is exactly one endpoint.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="custody_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether custody receipts are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="receive_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether hop-by-hop reception receipts are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="forward_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether hop-by-hop forwarding reports are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="delivery_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether end-to-end delivery receipts are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="deletion_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether bundle deletion reports are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="app_acked_rcpt" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether application acknowlegements are requested.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="creation_ts_seconds" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Seconds since 1/1/2000.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="creation_ts_seqno" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Subsecond sequence number.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="expiration" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Bundle expiration time.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="orig_length" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Length of original bundle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="frag_offset" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Offset of fragment in the original bundle.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="owner" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Declared DTN node that "owns" the bundle (could be empty).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="eidType">
+ <xs:attribute name="uri" type="eidTypeType" use="required"/>
+ </xs:complexType>
+
+ <xs:attributeGroup name="payloadAttributes">
+ <xs:attribute name="length" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Payload length.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="rcvd_length" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Actual length of payload available.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="base_offset" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+For bundle fragments, offset into the file (todo)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="gbofIdType">
+ <xs:sequence>
+ <xs:element name="source" type="eidType"/>
+ </xs:sequence>
+
+ <xs:attribute name="creation_ts" type="xs:long" use="required">
+ <xs:annotation><xs:documentation xml:lang="en">
+ Seconds (and subsecond sequence number) since 1/1/2000.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="is_fragment" type="xs:boolean" use="required">
+ <xs:annotation><xs:documentation xml:lang="en">
+ Whether the bundle is a fragment.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="frag_length" type="xs:unsignedInt" use="required">
+ <xs:annotation><xs:documentation xml:lang="en">
+ Fragment length.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="frag_offset" type="xs:unsignedInt" use="required">
+ <xs:annotation><xs:documentation xml:lang="en">
+ Offset of fragment in the original bundle.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+ <xs:complexType name="bundleType">
+ <xs:sequence>
+ <xs:element name="source" type="eidType"/>
+ <xs:element name="dest" type="eidType"/>
+ <xs:element name="custodian" type="eidType"/>
+ <xs:element name="replyto" type="eidType"/>
+ <xs:element name="prevhop" type="eidType"/>
+ <xs:element name="length" type="xs:unsignedInt"/>
+ <xs:element name="location" type="bundleLocationType"/>
+ <xs:element name="payload_file" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="bundleAttributes"/>
+ </xs:complexType>
+
+ <!-- Contact Type -->
+
+ <xs:attributeGroup name="contactAttributes">
+ <xs:attribute name="start_time_sec" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Time when the contact began (seconds and subsecond sequence number since 1/1/2000).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="start_time_usec" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="duration" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Contact duration (0 if unknown).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="bps" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Approximate bandwidth available.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="latency" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Approximate latency.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="pkt_loss_prob" type="percentType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Packet loss probability.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="contactType">
+ <xs:sequence>
+ <xs:element name="link_attr" type="linkType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="contactAttributes"/>
+ </xs:complexType>
+
+ <!-- Convergence Layer Info Type -->
+
+ <xs:attributeGroup name="clInfoAttributes">
+ <xs:attribute name="local_addr" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Local address.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="remote_addr" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Remote address.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="local_port" type="xs:unsignedShort">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Local port.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="remote_port" type="xs:unsignedShort">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Remote port.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="segment_ack_enabled" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Use per segment acks.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="negative_ack_enabled" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Use negative acks.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="keepalive_interval" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Seconds between keepalive packets.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="segment_length" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Maximum size of transmitted segments.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="busy_queue_depth" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Maximum number of bundles allowed in connection queue.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="reactive_frag_enabled" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether reactive fragmentation is enabled.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="sendbuf_length" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Buffer size for sending data (bytes).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="recvbuf_length" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Buffer size for receiving data (bytes).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="data_timeout" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Milliseconds to wait for data arrival.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="rate" type="xs:unsignedByte">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Rate (in bps)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="bucket_depth" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Token bucket depth (in bits)
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="channel" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Default channel.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="clInfoType">
+ <xs:attributeGroup ref="clInfoAttributes"/>
+ </xs:complexType>
+
+ <!-- Link Type -->
+
+ <xs:attributeGroup name="linkAttributes">
+ <xs:attribute name="type" type="linkTypeType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Type of the link.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="nexthop" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Next hop (ie, underlay) address.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="state" type="linkStateType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+State of the link.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="is_reachable" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the link is reachable.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="is_usable" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the link is usable.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="how_reliable" type="percentType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+How reliable the link is.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="how_available" type="percentType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+How available the link is.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+<!-- @@@ should this be here?
+ <xs:attribute name="reactive_frag_enabled" type="xs:boolean" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether reactive fragmentation is enabled.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+-->
+ <xs:attribute name="clayer" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Name of the convergence layer.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="min_retry_interval" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Minimum amount to wait between attempts to re-open the link (seconds).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="max_retry_interval" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Maximum amount to wait between attempts to re-open the link (seconds).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="idle_close_time" type="xs:unsignedInt" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Seconds of idle time before the link is closed. Zero for always on links (i.e. they are never closed).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="linkType">
+ <xs:sequence>
+ <xs:element name="clinfo" type="clInfoType" minOccurs="0"/>
+ <xs:element name="remote_eid" type="eidType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="linkAttributes"/>
+ </xs:complexType>
+
+ <!-- Route Entry Type -->
+
+ <xs:attributeGroup name="routeEntryAttributes">
+ <xs:attribute name="route_priority" type="xs:integer" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Route priority.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="action" type="bundleForwardActionType" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Forwarding behavior.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="link" type="xs:string" use="required">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Next hop link.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="routeEntryType">
+ <xs:sequence>
+ <xs:element name="dest_pattern" type="eidType"/>
+ <xs:element name="source_pattern" type="eidType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="routeEntryAttributes"/>
+ </xs:complexType>
+
+ <!-- Custody Signal Type -->
+
+ <xs:attributeGroup name="custodySignalAttributes">
+ <xs:attribute name="admin_type" type="xs:unsignedByte" use="required"/>
+ <xs:attribute name="admin_flags" type="xs:unsignedByte" use="required"/>
+ <xs:attribute name="succeeded" type="xs:boolean" use="required"/>
+ <xs:attribute name="reason" type="xs:unsignedByte" use="required"/>
+ <xs:attribute name="orig_frag_offset" type="xs:unsignedLong" use="required"/>
+ <xs:attribute name="orig_frag_length" type="xs:unsignedLong" use="required"/>
+ <xs:attribute name="custody_signal_seconds" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="custody_signal_seqno" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="orig_creation_seconds" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="orig_creation_seqno" type="xs:unsignedInt" use="required"/>
+ </xs:attributeGroup>
+
+ <xs:complexType name="custodySignalType">
+ <xs:attributeGroup ref="custodySignalAttributes"/>
+ </xs:complexType>
+
+ <!-- Registration Type -->
+
+ <xs:attributeGroup name="registrationAttributes">
+ <xs:attribute name="regid" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="action" type="failureActionType" use="required"/>
+ <xs:attribute name="script" type="xs:string" use="required"/>
+ <xs:attribute name="expiration" type="xs:unsignedInt" use="required"/>
+ </xs:attributeGroup>
+
+ <xs:complexType name="registrationType">
+ <xs:sequence>
+ <xs:element name="endpoint" type="eidType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="registrationAttributes"/>
+ </xs:complexType>
+
+ <!-- Link Configuration Parameters -->
+
+ <xs:attributeGroup name="linkConfigParams">
+ <xs:attribute name="is_usable" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether the link is allowed to be used to transmit bundles.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="reactive_frag_enabled" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Whether reactive fragmentation is enabled.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="nexthop" type="xs:string">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Next hop address.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <!-- Following are DTN2 parameters not listed in the DP interface -->
+ <xs:attribute name="min_retry_interval" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Minimum amount to wait between attempts to re-open the link (seconds).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="max_retry_interval" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Maximum amount to wait between attempts to re-open the link (seconds).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="idle_close_time" type="xs:unsignedInt">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Seconds of idle time before the link is closed. Zero for always on links (i.e. they are never closed).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:attributeGroup>
+
+ <xs:complexType name="linkConfigType">
+ <xs:sequence>
+ <xs:element name="cl_params" type="key_value_pair" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="linkConfigParams"/>
+ </xs:complexType>
+
+ <!-- Generic parameters -->
+
+ <xs:complexType name="key_value_pair">
+ <xs:sequence>
+ <xs:element name="name" type="xs:string"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="bool_value" type="xs:boolean"/>
+ <xs:element name="u_int_value" type="xs:unsignedInt"/>
+ <xs:element name="int_value" type="xs:int"/>
+ <xs:element name="str_value" type="xs:string"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+
+ <!-- Bundle Attributes Query types -->
+
+ <xs:simpleType name="bundleAttributesSimpleQueryType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="bundleid"/>
+ <xs:enumeration value="is_admin"/>
+ <xs:enumeration value="do_not_fragment"/>
+ <xs:enumeration value="priority"/>
+ <xs:enumeration value="custody_requested"/>
+ <xs:enumeration value="local_custody"/>
+ <xs:enumeration value="singleton_dest"/>
+ <xs:enumeration value="custody_rcpt"/>
+ <xs:enumeration value="receive_rcpt"/>
+ <xs:enumeration value="forward_rcpt"/>
+ <xs:enumeration value="delivery_rcpt"/>
+ <xs:enumeration value="deletion_rcpt"/>
+ <xs:enumeration value="app_acked_rcpt"/>
+ <xs:enumeration value="expiration"/>
+ <xs:enumeration value="orig_length"/>
+ <xs:enumeration value="owner"/>
+ <xs:enumeration value="source"/>
+ <xs:enumeration value="dest"/>
+ <xs:enumeration value="custodian"/>
+ <xs:enumeration value="replyto"/>
+ <xs:enumeration value="prevhop"/>
+ <xs:enumeration value="location"/>
+ <xs:enumeration value="payload_file"/>
+ <xs:enumeration value="meta_block_list"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+<!-- <xs:simpleType name="bundleMetaBlockTypeType">
+ <xs:restriction base="xs:unsignedByte">
+ <xs:minInclusive value="2"/>
+ </xs:restriction>
+ </xs:simpleType>
+-->
+
+ <xs:complexType name="bundleMetaBlockQueryType">
+ <xs:choice>
+ <xs:element name="type" type="xs:long"/>
+ <xs:element name="identifier" type="xs:unsignedInt"/>
+ </xs:choice>
+ </xs:complexType>
+
+ <xs:complexType name="bundleAttributesQueryType">
+ <xs:choice>
+ <xs:element name="query" type="bundleAttributesSimpleQueryType"/>
+ <xs:element name="meta_blocks" type="bundleMetaBlockQueryType"/>
+ </xs:choice>
+ </xs:complexType>
+
+ <xs:attributeGroup name="bundleQueriedAttributes">
+ <xs:attribute name="bundleid" type="xs:unsignedInt" use="optional"/>
+ <xs:attribute name="is_admin" type="xs:boolean" use="optional"/>
+ <xs:attribute name="do_not_fragment" type="xs:boolean" use="optional"/>
+ <xs:attribute name="priority" type="bundlePriorityType" use="optional"/>
+ <xs:attribute name="custody_requested" type="xs:boolean" use="optional"/>
+ <xs:attribute name="local_custody" type="xs:boolean" use="optional"/>
+ <xs:attribute name="singleton_dest" type="xs:boolean" use="optional"/>
+ <xs:attribute name="custody_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="receive_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="forward_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="delivery_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="deletion_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="app_acked_rcpt" type="xs:boolean" use="optional"/>
+ <xs:attribute name="expiration" type="xs:unsignedInt" use="optional"/>
+ <xs:attribute name="orig_length" type="xs:unsignedInt" use="optional"/>
+ <xs:attribute name="owner" type="xs:string" use="optional"/>
+ <xs:attribute name="location" type="bundleLocationType" use="optional"/>
+ <xs:attribute name="payload_file" type="xs:string" use="optional"/>
+ </xs:attributeGroup>
+
+ <xs:complexType name="metadataBlockType">
+ <xs:attribute name="identifier" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="generated" type="xs:boolean" use="required"/>
+ <xs:attribute name="type" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="contents" type="xs:base64Binary" use="required"/>
+ </xs:complexType>
+
+ <xs:complexType name="bundleAttributesReportType">
+ <xs:sequence>
+ <xs:element name="dest" type="eidType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="custodian" type="eidType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="replyto" type="eidType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="prevhop" type="eidType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="meta_blocks" type="metadataBlockType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="bundleQueriedAttributes"/>
+ </xs:complexType>
+
+
+
+<!-- EVENTS -->
+
+ <!-- Bundle Received Event -->
+
+ <xs:element name="bundle_received_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a new bundle arrival.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="dest" type="eidType"/>
+ <xs:element name="custodian" type="eidType"/>
+ <xs:element name="replyto" type="eidType"/>
+ <xs:element name="prevhop" type="eidType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ <xs:attribute name="expiration" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="bytes_received" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="num_meta_blocks" type="xs:unsignedInt" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Data Transmitted Event -->
+
+ <xs:element name="data_transmitted_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a bundle or bundle fragment transmission.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="bytes_sent" type="xs:unsignedInt" use="required"/>
+ <xs:attribute name="reliably_sent" type="xs:unsignedInt" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundle Delivered Event -->
+
+ <xs:element name="bundle_delivered_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a new bundle arrival that is destined for this node.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundle Delivery Event -->
+
+ <xs:element name="bundle_delivery_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a new bundle arrival that is destined for an external router. External routers access the bundle using the payload filename attribute.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="bundle" type="bundleType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundle Send Cancelled Event -->
+
+ <xs:element name="bundle_send_cancelled_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals when a bundle that was previously requested to be sent using RequestSendBundle is cancelled upon a subsequent request of RequestCancelBundleSend.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="link_id" type="xs:string"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundle Expired Event -->
+
+ <xs:element name="bundle_expired_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals bundle expiration.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundle Injected Event -->
+
+ <xs:element name="bundle_injected_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals that a Inject Bundle Request was successful, and correlates the newly generated GBOF_ID with the Request ID. This event does NOT signal that the bundle was transmitted, because a Send Bundle Request is required for that.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="request_id" type="xs:string"/>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Opened Event -->
+
+ <xs:element name="link_opened_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals when a link is opened.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="contact_attr" type="contactType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Closed Event -->
+
+ <xs:element name="link_closed_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals when a link has closed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="contact_attr" type="contactType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Created Event -->
+
+ <xs:element name="link_created_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals the creation of a new link.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link_attr" type="linkType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Deleted Event -->
+
+ <xs:element name="link_deleted_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a link deletion.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Available Event -->
+
+ <xs:element name="link_available_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals availability of a link. ONDEMAND links still need to be opened (open_link_request) before they can be used.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Unavailable Event -->
+
+ <xs:element name="link_unavailable_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a link as unavailable.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Attribute Change Event -->
+
+ <xs:element name="link_attribute_changed_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a link attribute has changed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link_attr" type="linkType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Contact Attribute Change Event -->
+
+ <xs:element name="contact_attribute_changed_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals when a contact attribute has changed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="contact_eid" type="eidType"/>
+ <xs:element name="contact_attr" type="contactType"/>
+ </xs:sequence>
+ <xs:attribute name="reason" type="contactReasonType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Link Busy Event -->
+
+ <xs:element name="link_busy_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a link as busy.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link" type="linkType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- EID Reachable Event -->
+
+ <xs:element name="eid_reachable_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals discovery of a new EID.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="peer_eid" type="eidType"/>
+ </xs:sequence>
+ <xs:attribute name="interface_name" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Route Add Event -->
+
+ <xs:element name="route_add_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a new static route added from the DTN console.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="route_entry" type="routeEntryType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Route Delete Event -->
+
+ <xs:element name="route_delete_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a static route was deleted from the DTN console.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="dest" type="eidType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Custody Signal Event -->
+
+ <xs:element name="custody_signal_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a bundle custody transfer.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="custody_signal_attr" type="custodySignalType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Custody Timeout Event -->
+
+ <xs:element name="custody_timeout_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a bundle custody transfer timeout.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Intentional Name Resolved Event -->
+
+ <xs:element name="intentional_name_resolved_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Pass-through response to intentional name resolver.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="request_id" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="response_id" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="router_eid" type="eidType" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="lb_dp_eid" type="eidType" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="intentional_name" type="eidType" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="grain_state" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="canonical_eids" type="eidType" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="app_eids" type="eidType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Registration Added Event -->
+
+ <xs:element name="registration_added_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a new application registration
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="registration" type="registrationType"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="eventSourceType" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Registration Removed Event -->
+
+ <xs:element name="registration_removed_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a registration removal
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="registration" type="registrationType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Registration Expired Event -->
+
+ <xs:element name="registration_expired_event">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Signals a registration expiration
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="regid" type="xs:unsignedInt" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+
+
+<!-- REQUESTS -->
+
+ <!-- Open Link Request -->
+
+ <xs:element name="open_link_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a link be opened.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Close Link Request -->
+
+ <xs:element name="close_link_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a link be closed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Add Link Request -->
+
+ <xs:element name="add_link_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a link be added.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link_config_params" type="linkConfigType" minOccurs="0"/>
+ <xs:element name="remote_eid" type="eidType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="link_type" type="linkTypeType" use="required"/>
+ <xs:attribute name="clayer" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Delete Link Request -->
+
+ <xs:element name="delete_link_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a link be deleted.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Reconfigure Link Request -->
+
+ <xs:element name="reconfigure_link_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a link be reconfigured.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link_config_params" type="linkConfigType"/>
+ </xs:sequence>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Send Bundle Request -->
+
+ <xs:element name="send_bundle_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a bundle with "gbof_id" and "local_id" be sent on "link_id" with a particular "fwd_action". See bundleForwardActionType.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="metadata_block" type="metadataBlockType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="fwd_action" type="bundleForwardActionType" use="required"/>
+ <xs:attribute name="frag_size" type="xs:unsignedLong" use="optional"/>
+ <xs:attribute name="frag_offset" type="xs:unsignedLong" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Send Bundle Broadcast Request -->
+
+ <xs:element name="send_bundle_broadcast_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a bundle with "gbof_id" and "local_id" be broadcasted with a particular "fwd_action". See bundleForwardActionType.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="metadata_block" type="metadataBlockType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ <xs:attribute name="fwd_action" type="bundleForwardActionType" use="required"/>
+ <xs:attribute name="frag_size" type="xs:unsignedLong" use="optional"/>
+ <xs:attribute name="frag_offset" type="xs:unsignedLong" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Cancel Bundle Request -->
+
+ <xs:element name="cancel_bundle_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a bundle transmission be cancelled.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Inject Bundle Request -->
+
+ <xs:element name="inject_bundle_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a router generated bundle be sent. Pay special attention to required and optional attributes. This message type requires that the bundle payload be base64 encoded.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="source" type="eidType"/>
+ <xs:element name="dest" type="eidType"/>
+ <xs:element name="replyto" type="eidType" minOccurs="0"/>
+ <xs:element name="custodian" type="eidType" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="request_id" type="xs:string" use="required"/>
+ <xs:attribute name="link_id" type="xs:string" use="required"/>
+ <xs:attribute name="fwd_action" type="bundleForwardActionType" use="optional"/>
+ <xs:attribute name="priority" type="bundlePriorityType" use="optional"/>
+ <xs:attribute name="expiration" type="xs:unsignedInt" use="optional"/>
+ <xs:attribute name="payload_file" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Delete Bundle Request -->
+
+ <xs:element name="delete_bundle_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Request that a stored bundle be deleted.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Set CL Params Request -->
+
+ <xs:element name="set_cl_params_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Pass-through request to BPA to set convergence layer adapter params.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="cl_params" type="key_value_pair" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="clayer" type="xs:string" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Intentional Name Resolution Request -->
+
+ <xs:element name="intentional_name_resolution_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Pass-through request to intentional name resolver.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="gbof_id" type="gbofIdType" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="request_id" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="router_eid" type="eidType" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="intentional_name" type="eidType" minOccurs="1" maxOccurs="1"/>
+ <xs:element name="grain_state" type="xs:string" minOccurs="1" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Deliver Bundle To Application Request -->
+
+ <xs:element name="deliver_bundle_to_app_request">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Requests delivery of a specific bundle to a specific registration on this node.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="endpoint" type="eidType"/>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+
+<!-- QUERIES / REPORTS -->
+
+ <!-- Links -->
+
+ <xs:element name="link_query" type="xs:anyType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on links.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="link_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on links.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="link" type="linkType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="link_attributes_query">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on links.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="query_id" type="xs:string"/>
+ <xs:element name="link_id" type="xs:string"/>
+ <xs:element name="query_params" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="link_attributes_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on links.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="query_id" type="xs:string"/>
+
+ <xs:element name="report_params" type="key_value_pair" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Contacts -->
+
+ <xs:element name="contact_query" type="xs:anyType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on contacts.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="contact_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on contacts.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="contact" type="contactType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Static Routes -->
+
+ <xs:element name="route_query" type="xs:anyType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on static routes.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="route_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on static routes.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="route_entry" type="routeEntryType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- Bundles -->
+
+ <xs:element name="bundle_query" type="xs:anyType">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on bundles (incl. custody bundles).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="bundle_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on bundles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="bundle" type="bundleType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="bundle_attributes_query">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Query for information on bundles (incl. custody bundles).
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="query_id" type="xs:string"/>
+ <xs:element name="gbof_id" type="gbofIdType"/>
+ <xs:element name="query_params" type="bundleAttributesQueryType" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="local_id" type="xs:long" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="bundle_attributes_report">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Meta-information on bundles.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="query_id" type="xs:string"/>
+ <xs:element name="report_params" type="bundleAttributesReportType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="bpa">
+ <xs:annotation>
+ <xs:documentation xml:lang="en">
+Carry two or more router message on a single packet.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element ref="bundle_received_event" minOccurs="0"/>
+ <xs:element ref="data_transmitted_event" minOccurs="0"/>
+ <xs:element ref="bundle_delivered_event" minOccurs="0"/>
+ <xs:element ref="bundle_delivery_event" minOccurs="0"/>
+ <xs:element ref="bundle_expired_event" minOccurs="0"/>
+ <xs:element ref="bundle_send_cancelled_event" minOccurs="0"/>
+ <xs:element ref="bundle_injected_event" minOccurs="0"/>
+ <xs:element ref="link_opened_event" minOccurs="0"/>
+ <xs:element ref="link_closed_event" minOccurs="0"/>
+ <xs:element ref="link_created_event" minOccurs="0"/>
+ <xs:element ref="link_deleted_event" minOccurs="0"/>
+ <xs:element ref="link_available_event" minOccurs="0"/>
+ <xs:element ref="link_unavailable_event" minOccurs="0"/>
+ <xs:element ref="link_attribute_changed_event" minOccurs="0"/>
+ <xs:element ref="contact_attribute_changed_event" minOccurs="0"/>
+ <xs:element ref="link_busy_event" minOccurs="0"/>
+ <xs:element ref="eid_reachable_event" minOccurs="0"/>
+ <xs:element ref="route_add_event" minOccurs="0"/>
+ <xs:element ref="route_delete_event" minOccurs="0"/>
+ <xs:element ref="custody_signal_event" minOccurs="0"/>
+ <xs:element ref="custody_timeout_event" minOccurs="0"/>
+ <xs:element ref="intentional_name_resolved_event" minOccurs="0"/>
+ <xs:element ref="registration_added_event" minOccurs="0"/>
+ <xs:element ref="registration_removed_event" minOccurs="0"/>
+ <xs:element ref="registration_expired_event" minOccurs="0"/>
+ <xs:element ref="open_link_request" minOccurs="0"/>
+ <xs:element ref="close_link_request" minOccurs="0"/>
+ <xs:element ref="add_link_request" minOccurs="0"/>
+ <xs:element ref="delete_link_request" minOccurs="0"/>
+ <xs:element ref="reconfigure_link_request" minOccurs="0"/>
+ <xs:element ref="send_bundle_request" minOccurs="0"/>
+ <xs:element ref="send_bundle_broadcast_request" minOccurs="0"/>
+ <xs:element ref="cancel_bundle_request" minOccurs="0"/>
+ <xs:element ref="inject_bundle_request" minOccurs="0"/>
+ <xs:element ref="delete_bundle_request" minOccurs="0"/>
+ <xs:element ref="set_cl_params_request" minOccurs="0"/>
+ <xs:element ref="intentional_name_resolution_request" minOccurs="0"/>
+ <xs:element ref="deliver_bundle_to_app_request" minOccurs="0"/>
+ <xs:element ref="link_query" minOccurs="0"/>
+ <xs:element ref="link_report" minOccurs="0"/>
+ <xs:element ref="link_attributes_query" minOccurs="0"/>
+ <xs:element ref="link_attributes_report" minOccurs="0"/>
+ <xs:element ref="contact_query" minOccurs="0"/>
+ <xs:element ref="contact_report" minOccurs="0"/>
+ <xs:element ref="route_query" minOccurs="0"/>
+ <xs:element ref="route_report" minOccurs="0"/>
+ <xs:element ref="bundle_query" minOccurs="0"/>
+ <xs:element ref="bundle_report" minOccurs="0"/>
+ <xs:element ref="bundle_attributes_query" minOccurs="0"/>
+ <xs:element ref="bundle_attributes_report" minOccurs="0"/>
+ </xs:all>
+ <xs:attribute name="eid" type="xs:string" use="optional"/>
+ <xs:attribute name="hello_interval" type="xs:unsignedShort" use="optional"/>
+ <xs:attribute name="alert" type="dtnStatusType" use="optional"/>
+ </xs:complexType>
+</xs:element>
+
+</xs:schema>