<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	targetNamespace="urn:ietf:params:xml:ns:xfb" xmlns:xfb="urn:ietf:params:xml:ns:xfb"
	xmlns:ne="urn:ietf:params:xml:ns:network_elements" elementFormDefault="qualified">
	<xsd:import id="ne" namespace="urn:ietf:params:xml:ns:network_elements"
		schemaLocation="network_elements_2_00.xsd" />

	<xsd:element name="OPEN" type="xfb:open_type" />
	<xsd:element name="UPDATE" type="xfb:update_type" />
	<xsd:element name="NOTIFICATION" type="xfb:notification_type" />
	<xsd:element name="KEEP_ALIVE" type="xfb:keepalive_type" />


	<xsd:complexType name="open_type">

		<xsd:sequence>
			<xsd:element name="VERSION" type="xsd:unsignedByte"
				minOccurs="1" maxOccurs="1" />
			<xsd:element name="ASN" type="xsd:unsignedInt" minOccurs="1"
				maxOccurs="1" />
			<xsd:element name="HOLD_TIME" type="xsd:unsignedInt"
				minOccurs="1" maxOccurs="1" />
			<xsd:element name="BGP_ID" type="xsd:unsignedLong"
				minOccurs="1" maxOccurs="1" />
			<xsd:choice maxOccurs="unbounded" minOccurs="0">
				<xsd:element ref="xfb:MP_CAP" />
				<xsd:element ref="xfb:ROUTE_REFRESH_CAP" />
				<xsd:element ref="xfb:OUTBOUND_ROUTE_FILTERING_CAP" />
				<xsd:element ref="xfb:MPLS_CAP" />
				<xsd:element ref="xfb:UNKNOWN_CAPABILITY" />
			</xsd:choice>
		</xsd:sequence>

		<xsd:attribute name="bgp_message_type" type="xsd:integer"
			fixed="1" use="required" />
	</xsd:complexType>


	<xsd:complexType name="update_type">
		<xsd:sequence>
			<xsd:element name="WITHDRAW" type="ne:ipv4_prefix_type"
				maxOccurs="unbounded" minOccurs="0" />

			<xsd:choice maxOccurs="unbounded" minOccurs="0">

				<!-- type 1 -->
				<xsd:element ref="xfb:ORIGIN" maxOccurs="1" minOccurs="0" />
				<!-- type 2 -->
				<xsd:element ref="xfb:AS_PATH" maxOccurs="1" minOccurs="0" />
				<!-- type 3 -->
				<xsd:element ref="xfb:NEXT_HOP" maxOccurs="1" minOccurs="0" />
				<!-- type 4 -->
				<xsd:element ref="xfb:MULTI_EXIT_DISC" maxOccurs="1"
					minOccurs="0" />
				<!-- type 5 -->
				<xsd:element ref="xfb:LOCAL_PREF" maxOccurs="1"
					minOccurs="0" />
				<!-- type 6 -->
				<xsd:element ref="xfb:ATOMIC_AGGREGATE" maxOccurs="1"
					minOccurs="0" />
				<!-- type 7 -->
				<xsd:element ref="xfb:AGGREGATOR" maxOccurs="1"
					minOccurs="0" />
				<!-- type 8 -->
				<xsd:element ref="xfb:COMMUNITY" maxOccurs="unbounded"
					minOccurs="0" />
				<!-- type 9 -->
				<xsd:element ref="xfb:ORIGINATOR_ID" maxOccurs="1"
					minOccurs="0" />
				<!-- type 10 -->
				<xsd:element ref="xfb:CLUSTER_LIST" maxOccurs="1"
					minOccurs="0" />
				<!-- type 14 -->
				<xsd:element ref="xfb:MP_REACH_NLRI" maxOccurs="1"
					minOccurs="0" />
				<!-- type 15 -->
				<xsd:element ref="xfb:MP_UNREACH_NLRI" maxOccurs="1"
					minOccurs="0" />
				<!-- type 16 -->
				<xsd:element ref="xfb:EXTENDED_COMMUNITIES" maxOccurs="1"
					minOccurs="0" />
				<!-- type 17 -->
				<xsd:element ref="xfb:AS4_PATH" maxOccurs="1" minOccurs="0" />
				<!-- type 18 -->
				<xsd:element ref="xfb:AS4_AGGREGATOR" maxOccurs="1"
					minOccurs="0" />
				<xsd:element ref="xfb:UNKNOWN_ATTRIBUTE" maxOccurs="unbounded"
					minOccurs="0" />
				<xsd:element ref="xfb:PARSE_ERROR" maxOccurs="1" minOccurs="1" />

			</xsd:choice>
			<xsd:element name="NLRI" type="ne:ipv4_prefix_type"
				maxOccurs="unbounded" minOccurs="0" />
		</xsd:sequence>
		<xsd:attribute name="bgp_message_type" type="xsd:integer"
			fixed="2" use="required" />
	</xsd:complexType>

	<xsd:complexType name="notification_type">
		<xsd:choice>
			<xsd:element name="MESSAGE_HEADER_ERROR" type="xfb:message_header_error_type" />
			<xsd:element name="OPEN_MESSAGE_ERROR" type="xfb:open_message_error_type" />
			<xsd:element name="UPDATE_MESSAGE_ERROR" type="xfb:update_message_error_type" />
			<xsd:element name="HOLD_TIMER_EXPIRED" type="xfb:hold_timer_expired_type" />
			<xsd:element name="FINITE_STATE_MACHINE_ERROR" type="xfb:finite_state_machine_error_type" />
			<xsd:element name="CEASE" type="xfb:cease_type" />
			<xsd:element name="UNKNOWN_ERROR" type="xfb:unknown_error_type" />
		</xsd:choice>
		<xsd:attribute name="bgp_message_type" type="xsd:integer"
			fixed="3" use="required" />
	</xsd:complexType>




	<xsd:element name="MP_CAP">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="AFI" type="xsd:unsignedInt" />
				<xsd:element name="SAFI" type="xsd:unsignedByte" />
			</xsd:sequence>

			<xsd:attribute name="param_code" type="xsd:integer"
				fixed="2" />
			<xsd:attribute name="code" type="xsd:integer" fixed="1" />
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="ROUTE_REFRESH_CAP">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="AFI" type="xsd:unsignedInt" />
				<xsd:element name="SAFI" type="xsd:unsignedByte" />
			</xsd:sequence>

			<xsd:attribute name="param_code" type="xsd:integer"
				fixed="2" />
			<xsd:attribute name="code" type="xsd:integer" fixed="2" />
		</xsd:complexType>
	</xsd:element>


	<xsd:element name="OUTBOUND_ROUTE_FILTERING_CAP">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="AFI" type="xsd:unsignedInt" />
				<xsd:element name="SAFI" type="xsd:unsignedByte" />
				<xsd:element name="ORF_TYPE" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="type" type="xsd:unsignedByte" />
						</xsd:sequence>
						<xsd:attribute name="send" type="xsd:boolean" />
						<xsd:attribute name="receive" type="xsd:boolean" />
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>

			<xsd:attribute name="param_code" type="xsd:integer"
				fixed="2" />
			<xsd:attribute name="code" type="xsd:integer" fixed="3" />
		</xsd:complexType>
	</xsd:element>

	<xsd:element name="MPLS_CAP">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="AFI" type="xsd:unsignedInt" />
				<xsd:element name="SAFI" type="xsd:unsignedByte" />
			</xsd:sequence>

			<xsd:attribute name="param_code" type="xsd:integer"
				fixed="2" />
			<xsd:attribute name="code" type="xsd:integer" fixed="4" />
		</xsd:complexType>
	</xsd:element>












	<xsd:complexType name="message_header_error_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="1" type="xsd:integer" />
	</xsd:complexType>

	<xsd:complexType name="open_message_error_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="2" type="xsd:integer" />
	</xsd:complexType>

	<xsd:complexType name="update_message_error_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="3" type="xsd:integer" />
	</xsd:complexType>

	<xsd:complexType name="hold_timer_expired_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="4" type="xsd:integer" />
	</xsd:complexType>

	<xsd:complexType name="finite_state_machine_error_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="5" type="xsd:integer" />
	</xsd:complexType>


	<xsd:complexType name="cease_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" fixed="6" type="xsd:integer" />
	</xsd:complexType>

	<xsd:complexType name="unknown_error_type">
		<xsd:sequence>
			<xsd:element ref="xfb:SUBCODE" />
		</xsd:sequence>
		<xsd:attribute name="code" type="xsd:integer" />
	</xsd:complexType>

	<xsd:element name="SUBCODE" type="xfb:notification_error_subcode" />

	<xsd:complexType name="notification_error_subcode">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="code" type="xsd:integer" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="keepalive_type">
		<xsd:attribute name="bgp_message_type" type="xsd:integer"
			fixed="4" use="required" />
	</xsd:complexType>

	<!-- This section defines the optional parameters in an open message https://tools.ietf.org/html/rfc5492 -->
	<xsd:element name="UNKNOWN_CAPABILITY" type="xfb:unknown_capability_type" />

	<xsd:complexType name="unknown_capability_type">
		<xsd:complexContent>
			<xsd:extension base="xfb:capabilities_type">
				<xsd:sequence>
					<xsd:element name="VALUE" type="xsd:hexBinary" />
				</xsd:sequence>
				<xsd:attribute name="code" type="xsd:unsignedInt" />
			</xsd:extension>

		</xsd:complexContent>

	</xsd:complexType>


	<xsd:complexType name="capabilities_type">
		<xsd:complexContent>
			<xsd:restriction base="xfb:optional_parameter_type">
				<xsd:attribute name="parameter_type" type="xsd:integer"
					fixed="2" use="required" />
			</xsd:restriction>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="optional_parameter_type"
		abstract="true">
		<xsd:attribute name="parameter_type" type="xsd:integer"
			use="required" />
	</xsd:complexType>

	<xsd:element name="ORIGIN" type="xfb:origin_type" />
	<xsd:element name="AS_PATH" type="xfb:as_path_type" />
	<xsd:element name="NEXT_HOP" type="xfb:next_hop_type" />
	<xsd:element name="MULTI_EXIT_DISC" type="xfb:multi_exit_disc_type" />
	<xsd:element name="LOCAL_PREF" type="xfb:local_pref_type" />
	<xsd:element name="ATOMIC_AGGREGATE" type="xfb:atomic_aggregate_type" />
	<xsd:element name="AGGREGATOR" type="xfb:aggregator_type" />
	<xsd:element name="COMMUNITY" type="xfb:community_type" />
	<xsd:element name="ORIGINATOR_ID" type="xfb:originator_id_type" />
	<xsd:element name="CLUSTER_LIST" type="xfb:cluster_list_type" />
	<xsd:element name="MP_REACH_NLRI" type="xfb:mp_reach_nlri_type" />
	<xsd:element name="MP_UNREACH_NLRI" type="xfb:mp_unreach_nlri_type" />
	<xsd:element name="EXTENDED_COMMUNITIES" type="xfb:extended_communities_type" />
	<xsd:element name="AS4_PATH" type="xfb:as4_path" />
	<xsd:element name="AS4_AGGREGATOR" type="xfb:as4_aggregator_type" />
	<xsd:element name="UNKNOWN_ATTRIBUTE" type="xfb:unknown_attribute_type" />
	<xsd:element name="PARSE_ERROR" type="xfb:parse_error_type" />

	<xsd:complexType name="origin_type">
		<xsd:simpleContent>
			<xsd:extension base="xfb:origin_sub_type">
				<xsd:attribute name="optional" type="xsd:boolean"
					fixed="false" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					fixed="true" use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					fixed="1" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:simpleType name="origin_sub_type">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="IGP" />
			<xsd:enumeration value="EGP" />
			<xsd:enumeration value="INCOMPLETE" />
			<xsd:enumeration value="UNKNOWN" />
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:complexType name="as_path_type">
		<xsd:choice maxOccurs="255" minOccurs="1">
			<xsd:element ref="xfb:AS_SEQUENCE" maxOccurs="1" />
			<xsd:element ref="xfb:AS_SET" maxOccurs="1" />
			<xsd:element ref="xfb:AS_CONFED_SEQUENCE" maxOccurs="1" />
			<xsd:element ref="xfb:AS_CONFED_SET" maxOccurs="1" />
		</xsd:choice>
		<xsd:attribute name="optional" type="xsd:boolean" fixed="false"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="2" use="required" />
	</xsd:complexType>

	<xsd:element name="AS_SEQUENCE" type="xfb:as_list" />
	<xsd:element name="AS_SET" type="xfb:as_list" />
	<xsd:element name="AS_CONFED_SEQUENCE" type="xfb:as_list" />
	<xsd:element name="AS_CONFED_SET" type="xfb:as_list" />

	<xsd:complexType name="next_hop_type">
		<xsd:simpleContent>
			<xsd:extension base="ne:ipv4_address_type">
				<xsd:attribute name="optional" type="xsd:boolean"
					fixed="false" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					fixed="true" use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					fixed="3" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="multi_exit_disc_type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:unsignedLong">
				<xsd:attribute name="optional" type="xsd:boolean"
					fixed="true" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					fixed="false" use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					fixed="4" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="local_pref_type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:unsignedLong">
				<xsd:attribute name="optional" type="xsd:boolean"
					fixed="false" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					fixed="true" use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					fixed="5" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="atomic_aggregate_type">
		<xsd:attribute name="optional" type="xsd:boolean" fixed="false"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="6" use="required" />
	</xsd:complexType>

	<xsd:complexType name="aggregator_type">
		<xsd:sequence>
			<xsd:choice>
				<xsd:element ref="xfb:ASN2" />
				<xsd:element ref="xfb:ASN4" />
			</xsd:choice>
			<xsd:element name="IPv4_ADDRESS" type="ne:ipv4_address_type" />
		</xsd:sequence>

		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="7" use="required" />

	</xsd:complexType>


	<xsd:complexType name="as4_aggregator_type">
		<xsd:sequence>
			<xsd:element ref="xfb:ASN4" />
			<xsd:element name="IPv4_ADDRESS" type="ne:ipv4_address_type" />
		</xsd:sequence>

		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="18" use="required" />

	</xsd:complexType>

	<xsd:complexType name="community_type">
		<xsd:sequence>
			<xsd:element ref="xfb:ASN2" />
			<xsd:element name="VALUE" type="xsd:unsignedInt" />
		</xsd:sequence>

		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="8" use="required" />

	</xsd:complexType>

	<xsd:complexType name="originator_id_type">
		<xsd:annotation>
			<xsd:documentation>http://tools.ietf.org/html/rfc4456
			</xsd:documentation>
		</xsd:annotation>
		<xsd:simpleContent>
			<xsd:extension base="ne:ipv4_address_type">
				<xsd:attribute name="optional" type="xsd:boolean"
					fixed="true" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					fixed="false" use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					fixed="9" use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="cluster_list_type">
		<xsd:annotation>
			<xsd:documentation>http://tools.ietf.org/html/rfc4456
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="CLUSTER_ID" type="ne:ipv4_address_type"
				minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="false" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="10" use="required" />
	</xsd:complexType>

	<xsd:annotation>
		<xsd:documentation>http://tools.ietf.org/html/draft-ietf-idr-deprecate-dpa-etal-00
		</xsd:documentation>
	</xsd:annotation>

	<xsd:complexType name="mp_reach_nlri_type">
		<xsd:annotation>
			<xsd:documentation>http://tools.ietf.org/html/rfc2858
			</xsd:documentation>
		</xsd:annotation>
		<xsd:choice minOccurs="1" maxOccurs="unbounded">
			<xsd:element name="MP_NEXT_HOP" type="ne:network_address_type"
				minOccurs="0" maxOccurs="unbounded" />
			<xsd:element name="MP_NLRI" type="ne:network_prefix_type"
				minOccurs="0" maxOccurs="unbounded" />
		</xsd:choice>
		<xsd:attribute name="safi" type="xsd:unsignedByte" use="required" />
		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="false" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="14" use="required" />
	</xsd:complexType>

	<xsd:complexType name="mp_unreach_nlri_type">
		<xsd:annotation>
			<xsd:documentation>http://tools.ietf.org/html/rfc2858
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="MP_NLRI" type="ne:network_prefix_type"
				minOccurs="1" maxOccurs="unbounded" />
		</xsd:sequence>
		<xsd:attribute name="safi" type="xsd:unsignedByte" use="required" />
		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="false" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="15" use="required" />
	</xsd:complexType>


	<xsd:complexType name="extended_communities_type">
		<xsd:annotation>
			<xsd:documentation>http://tools.ietf.org/html/rfc4360
			</xsd:documentation>
		</xsd:annotation>

		<xsd:sequence>
			<xsd:choice>

				<!-- Two-Octet specific -->
				<xsd:sequence>
					<xsd:element ref="xfb:ASN2" />
					<xsd:element name="VALUE" type="xsd:string" minOccurs="1"
						maxOccurs="1" />
				</xsd:sequence>

				<!-- IPv4 Address Specific -->
				<xsd:sequence>
					<xsd:element name="IPv4_ADDRESS" type="ne:ipv4_address_type"
						minOccurs="1" maxOccurs="1" />
					<xsd:element name="VALUE" type="xsd:string" minOccurs="1"
						maxOccurs="1" />
				</xsd:sequence>

				<!-- Four-Octet specific -->
				<xsd:sequence>
					<xsd:element ref="xfb:ASN4" />
					<xsd:element name="VALUE" type="xsd:string" minOccurs="1"
						maxOccurs="1" />
				</xsd:sequence>

				<!-- Opaque -->
				<xsd:sequence>
					<xsd:choice>
						<xsd:sequence> <!-- Type 0,1,and 2 -->
							<xsd:element name="VALUE" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
						</xsd:sequence>
						<xsd:sequence> <!-- Type 6 -->
							<xsd:element name="AREA_NUMBER" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
							<xsd:element name="ROUTE_TYPE" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
							<xsd:element name="OPTIONS" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
						</xsd:sequence>
						<xsd:sequence> <!-- Type 11 -->
							<xsd:element name="COLOR_VALUE" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
						</xsd:sequence>
						<xsd:sequence> <!-- Type 12 -->
							<xsd:element name="TUNNEL_TYPE" type="xsd:string"
								minOccurs="1" maxOccurs="1" />
						</xsd:sequence>
					</xsd:choice>
				</xsd:sequence>
				
				<!-- UNKNOWN OR UNNSUPPORTED -->
				<xsd:sequence>
					<xsd:element name="HEX_STRING" type="xsd:string" />
				</xsd:sequence>
			</xsd:choice>


		</xsd:sequence>

		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"	fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"	fixed="16" use="required" />
		<xsd:attribute name="extended_communities_type" type="xsd:string" use="required" />
		<xsd:attribute name="extended_communities_subtype" type="xsd:string" use="optional" />




	</xsd:complexType>


	<xsd:complexType name="unknown_attribute_type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:hexBinary">
				<xsd:attribute name="length" type="xsd:integer" use="required" />
				<xsd:attribute name="optional" type="xsd:boolean" use="required" />
				<xsd:attribute name="transitive" type="xsd:boolean"
					use="required" />
				<xsd:attribute name="partial" type="xsd:boolean" use="required" />
				<xsd:attribute name="extended" type="xsd:boolean" use="required" />
				<xsd:attribute name="attribute_type" type="xsd:integer"
					use="required" />
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="parse_error_type">
		<xsd:attribute name="position" type="xsd:integer" use="required" />
	</xsd:complexType>




	<xsd:complexType name="as4_path">
		<xsd:choice maxOccurs="255" minOccurs="1">
			<xsd:element ref="xfb:AS4_SEQUENCE" maxOccurs="1" />
			<xsd:element ref="xfb:AS4_SET" maxOccurs="1" />
			<xsd:element ref="xfb:AS_SET" maxOccurs="1" />
			<xsd:element ref="xfb:AS_SEQUENCE" maxOccurs="1" />
		</xsd:choice>
		<xsd:attribute name="optional" type="xsd:boolean" fixed="true"
			use="required" />
		<xsd:attribute name="transitive" type="xsd:boolean"
			fixed="true" use="required" />
		<xsd:attribute name="partial" type="xsd:boolean" use="required" />
		<xsd:attribute name="extended" type="xsd:boolean" use="required" />
		<xsd:attribute name="attribute_type" type="xsd:integer"
			fixed="17" use="required" />
	</xsd:complexType>

	<xsd:element name="AS4_SEQUENCE" type="xfb:as4_list" />
	<xsd:element name="AS4_SET" type="xfb:as4_list" />

	<xsd:element name="ASN4" type="xfb:asn4_type" />


	<xsd:complexType name="asn4_type">
		<xsd:simpleContent>
			<xsd:restriction base="ne:asn_type">
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>


	<xsd:element name="ASN2" type="xfb:asn2_type" />
	<xsd:complexType name="asn2_type">
		<xsd:simpleContent>
			<xsd:restriction base="ne:asn_type">
				<xsd:maxInclusive value="65535" />
			</xsd:restriction>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="as_list">
		<xsd:sequence maxOccurs="1" minOccurs="1">
			<xsd:choice maxOccurs="255" minOccurs="1">
				<xsd:element ref="xfb:ASN2" />
				<xsd:element ref="xfb:ASN4" />
			</xsd:choice>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="as4_list">
		<xsd:sequence maxOccurs="255" minOccurs="1">
			<xsd:element ref="xfb:ASN4" />
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="as2_list">
		<xsd:sequence maxOccurs="255" minOccurs="1">
			<xsd:element ref="xfb:ASN2" />
		</xsd:sequence>
	</xsd:complexType>


</xsd:schema>