ietf-l2vpn-svc@2018-10-09.yang | ietf-l2vpn-svc@2018-10-09.yang | |||
---|---|---|---|---|
skipping to change at line 203 | skipping to change at line 203 | |||
description | description | |||
"Enables the MAC loop-prevention capability in a VPN."; | "Enables the MAC loop-prevention capability in a VPN."; | |||
} | } | |||
feature lacp { | feature lacp { | |||
description | description | |||
"Enables the Link Aggregation Control Protocol (LACP) | "Enables the Link Aggregation Control Protocol (LACP) | |||
capability in a VPN."; | capability in a VPN."; | |||
} | } | |||
feature mac-addr-limit{ | feature mac-addr-limit { | |||
description | description | |||
"Enables the MAC address limit capability in a VPN."; | "Enables the MAC address limit capability in a VPN."; | |||
} | } | |||
feature acl { | feature acl { | |||
description | description | |||
"Enables the ACL capability in a VPN."; | "Enables the ACL capability in a VPN."; | |||
} | } | |||
feature cfm { | feature cfm { | |||
description | description | |||
"Enables the 802.1ag CFM capability in a VPN."; | "Enables the 802.1ag CFM capability in a VPN."; | |||
} | } | |||
feature y-1731 { | feature y-1731 { | |||
description | description | |||
"Enables the Y.1731 capability in a VPN."; | "Enables the Y.1731 capability in a VPN."; | |||
} | } | |||
typedef svc-id { | typedef svc-id { | |||
type string; | type string; | |||
description | description | |||
"Defines the type of service component identifier."; | "Defines the type of service component identifier."; | |||
} | } | |||
typedef ccm-priority-type { | typedef ccm-priority-type { | |||
type uint8 { | type uint8 { | |||
range "0..7"; | range "0..7"; | |||
} | } | |||
description | description | |||
"A 3-bit priority value to be used in the VLAN tag, | "A 3-bit priority value to be used in the VLAN tag, | |||
if present in the transmitted frame."; | if present in the transmitted frame."; | |||
} | } | |||
typedef control-mode { | typedef control-mode { | |||
type enumeration { | type enumeration { | |||
enum "peer" { | enum peer { | |||
description | description | |||
"'peer' mode, i.e., participate in the protocol towards | "'peer' mode, i.e., participate in the protocol towards | |||
the CE. Peering is common for LACP and the Ethernet | the CE. Peering is common for LACP and the Ethernet | |||
Local Management Interface (E-LMI) and, occasionally, | Local Management Interface (E-LMI) and, occasionally, | |||
for LLDP. For VPLSs and VPWSs, the subscriber can also | for LLDP. For VPLSs and VPWSs, the subscriber can also | |||
request that the SP peer enable spanning tree."; | request that the SP peer enable spanning tree."; | |||
} | } | |||
enum "tunnel" { | enum tunnel { | |||
description | description | |||
"'tunnel' mode, i.e., pass to the egress or destination | "'tunnel' mode, i.e., pass to the egress or destination | |||
site. For EPLs, the expectation is that L2CP frames are | site. For EPLs, the expectation is that L2CP frames are | |||
tunneled."; | tunneled."; | |||
} | } | |||
enum "discard" { | enum discard { | |||
description | description | |||
"'discard' mode, i.e., discard the frame."; | "'discard' mode, i.e., discard the frame."; | |||
} | } | |||
} | } | |||
description | description | |||
"Defines the type of control mode on L2CP protocols."; | "Defines the type of control mode on L2CP protocols."; | |||
} | } | |||
typedef neg-mode { | typedef neg-mode { | |||
type enumeration { | type enumeration { | |||
enum "full-duplex" { | enum full-duplex { | |||
description | description | |||
"Defines full-duplex mode."; | "Defines full-duplex mode."; | |||
} | } | |||
enum "auto-neg" { | enum auto-neg { | |||
description | description | |||
"Defines auto-negotiation mode."; | "Defines auto-negotiation mode."; | |||
} | } | |||
} | } | |||
description | description | |||
"Defines the type of negotiation mode."; | "Defines the type of negotiation mode."; | |||
} | } | |||
identity site-network-access-type { | identity site-network-access-type { | |||
description | description | |||
skipping to change at line 328 | skipping to change at line 328 | |||
identity multicast-tree-type { | identity multicast-tree-type { | |||
description | description | |||
"Base identity for the multicast tree type."; | "Base identity for the multicast tree type."; | |||
} | } | |||
identity ssm-tree-type { | identity ssm-tree-type { | |||
base multicast-tree-type; | base multicast-tree-type; | |||
description | description | |||
"Identity for the Source-Specific Multicast (SSM) tree type."; | "Identity for the Source-Specific Multicast (SSM) tree type."; | |||
reference | reference "RFC 8299: YANG Data Model for L3VPN Service Delivery"; | |||
"RFC 8299: YANG Data Model for L3VPN Service Delivery"; | ||||
} | } | |||
identity asm-tree-type { | identity asm-tree-type { | |||
base multicast-tree-type; | base multicast-tree-type; | |||
description | description | |||
"Identity for the Any-Source Multicast (ASM) tree type."; | "Identity for the Any-Source Multicast (ASM) tree type."; | |||
reference | reference "RFC 8299: YANG Data Model for L3VPN Service Delivery"; | |||
"RFC 8299: YANG Data Model for L3VPN Service Delivery"; | ||||
} | } | |||
identity bidir-tree-type { | identity bidir-tree-type { | |||
base multicast-tree-type; | base multicast-tree-type; | |||
description | description | |||
"Identity for the bidirectional tree type."; | "Identity for the bidirectional tree type."; | |||
reference | reference "RFC 8299: YANG Data Model for L3VPN Service Delivery"; | |||
"RFC 8299: YANG Data Model for L3VPN Service Delivery"; | ||||
} | } | |||
identity multicast-gp-address-mapping { | identity multicast-gp-address-mapping { | |||
description | description | |||
"Identity for mapping type."; | "Identity for mapping type."; | |||
} | } | |||
identity static-mapping { | identity static-mapping { | |||
base multicast-gp-address-mapping; | base multicast-gp-address-mapping; | |||
description | description | |||
skipping to change at line 1239 | skipping to change at line 1241 | |||
} | } | |||
description | description | |||
"Grouping that defines the ACL."; | "Grouping that defines the ACL."; | |||
} | } | |||
grouping site-bum { | grouping site-bum { | |||
container broadcast-unknown-unicast-multicast { | container broadcast-unknown-unicast-multicast { | |||
if-feature "bum"; | if-feature "bum"; | |||
leaf multicast-site-type { | leaf multicast-site-type { | |||
type enumeration { | type enumeration { | |||
enum "receiver-only" { | enum receiver-only { | |||
description | description | |||
"The site only has receivers."; | "The site only has receivers."; | |||
} | } | |||
enum "source-only" { | enum source-only { | |||
description | description | |||
"The site only has sources."; | "The site only has sources."; | |||
} | } | |||
enum "source-receiver" { | enum source-receiver { | |||
description | description | |||
"The site has both sources and receivers."; | "The site has both sources and receivers."; | |||
} | } | |||
} | } | |||
default "source-receiver"; | default "source-receiver"; | |||
description | description | |||
"Type of multicast site."; | "Type of multicast site."; | |||
} | } | |||
list multicast-gp-address-mapping { | list multicast-gp-address-mapping { | |||
key "id"; | key "id"; | |||
leaf id { | leaf id { | |||
type uint16; | type uint16; | |||
description | description | |||
"Unique identifier for the mapping."; | "Unique identifier for the mapping."; | |||
skipping to change at line 1371 | skipping to change at line 1372 | |||
ordered-by user; | ordered-by user; | |||
leaf id { | leaf id { | |||
type string; | type string; | |||
description | description | |||
"A description identifying the QoS classification | "A description identifying the QoS classification | |||
policy rule."; | policy rule."; | |||
} | } | |||
choice match-type { | choice match-type { | |||
default "match-flow"; | default "match-flow"; | |||
case match-flow { | case match-flow { | |||
container match-flow { | container match-flow { | |||
leaf dscp { | leaf dscp { | |||
type inet:dscp; | type inet:dscp; | |||
description | description | |||
"DSCP value."; | "DSCP value."; | |||
} | } | |||
leaf dot1q { | leaf dot1q { | |||
type uint16; | type uint16; | |||
description | description | |||
"802.1Q matching. It is a VLAN tag added into a frame."; | "802.1Q matching. It is a VLAN tag added into | |||
} | a frame."; | |||
leaf pcp { | } | |||
type uint8 { | leaf pcp { | |||
range "0..7"; | type uint8 { | |||
} | range "0..7"; | |||
description | } | |||
"PCP value."; | description | |||
} | "PCP value."; | |||
leaf src-mac { | } | |||
type yang:mac-address; | leaf src-mac { | |||
description | type yang:mac-address; | |||
"Source MAC."; | description | |||
} | "Source MAC."; | |||
leaf dst-mac { | } | |||
type yang:mac-address; | leaf dst-mac { | |||
description | type yang:mac-address; | |||
"Destination MAC."; | description | |||
} | "Destination MAC."; | |||
leaf color-type { | } | |||
type identityref { | leaf color-type { | |||
base color-type; | type identityref { | |||
} | base color-type; | |||
description | } | |||
"Color types."; | description | |||
} | "Color types."; | |||
leaf-list target-sites { | } | |||
if-feature "target-sites"; | leaf-list target-sites { | |||
type svc-id; | if-feature "target-sites"; | |||
description | type svc-id; | |||
"Identifies a site as a traffic destination."; | description | |||
} | "Identifies a site as a traffic destination."; | |||
leaf any { | } | |||
type empty; | leaf any { | |||
description | type empty; | |||
"Allow all."; | description | |||
} | "Allow all."; | |||
leaf vpn-id { | } | |||
type svc-id; | leaf vpn-id { | |||
description | type svc-id; | |||
"Reference to the target VPN."; | description | |||
} | "Reference to the target VPN."; | |||
description | } | |||
"Describes flow-matching criteria."; | description | |||
} | "Describes flow-matching criteria."; | |||
} | ||||
} | } | |||
case match-application { | case match-application { | |||
leaf match-application { | leaf match-application { | |||
type identityref { | type identityref { | |||
base customer-application; | base customer-application; | |||
} | } | |||
description | description | |||
"Defines the application to match."; | "Defines the application to match."; | |||
} | } | |||
} | } | |||
skipping to change at line 1462 | skipping to change at line 1464 | |||
choice qos-profile { | choice qos-profile { | |||
description | description | |||
"Choice for the QoS profile. | "Choice for the QoS profile. | |||
Can be a standard profile or a customized profile."; | Can be a standard profile or a customized profile."; | |||
case standard { | case standard { | |||
description | description | |||
"Standard QoS profile."; | "Standard QoS profile."; | |||
leaf profile { | leaf profile { | |||
type leafref { | type leafref { | |||
path "/l2vpn-svc/vpn-profiles/" | path "/l2vpn-svc/vpn-profiles/" | |||
+ "valid-provider-identifiers" | + "valid-provider-identifiers/" | |||
+ "/qos-profile-identifier"; | + "qos-profile-identifier"; | |||
} | } | |||
description | description | |||
"QoS profile to be used."; | "QoS profile to be used."; | |||
} | } | |||
} | } | |||
case custom { | case custom { | |||
description | description | |||
"Customized QoS profile."; | "Customized QoS profile."; | |||
container classes { | container classes { | |||
if-feature "qos-custom"; | if-feature "qos-custom"; | |||
skipping to change at line 1634 | skipping to change at line 1636 | |||
} | } | |||
description | description | |||
"Container for CsC."; | "Container for CsC."; | |||
} | } | |||
description | description | |||
"Grouping for CsC."; | "Grouping for CsC."; | |||
} | } | |||
container l2vpn-svc { | container l2vpn-svc { | |||
container vpn-profiles { | container vpn-profiles { | |||
container valid-provider-identifiers { | container valid-provider-identifiers { | |||
leaf-list cloud-identifier { | leaf-list cloud-identifier { | |||
if-feature "cloud-access"; | if-feature "cloud-access"; | |||
type string; | type string; | |||
description | description | |||
"Identification of the public cloud service or | "Identification of the public cloud service or | |||
Internet service. Local to each administration."; | Internet service. Local to each administration."; | |||
} | } | |||
leaf-list qos-profile-identifier { | leaf-list qos-profile-identifier { | |||
type string; | type string; | |||
description | description | |||
"Identification of the QoS profile to be used. | "Identification of the QoS profile to be used. | |||
Local to each administration."; | Local to each administration."; | |||
} | } | |||
leaf-list bfd-profile-identifier { | leaf-list bfd-profile-identifier { | |||
type string; | type string; | |||
description | description | |||
"Identification of the SP BFD profile to be used. | "Identification of the SP BFD profile to be used. | |||
Local to each administration."; | Local to each administration."; | |||
} | } | |||
leaf-list remote-carrier-identifier { | leaf-list remote-carrier-identifier { | |||
type string; | type string; | |||
description | description | |||
"Identification of the remote carrier name to be used. | "Identification of the remote carrier name to be used. | |||
It can be an L2VPN partner, data-center SP, or | It can be an L2VPN partner, data-center SP, or | |||
private CSP. Local to each administration."; | private CSP. Local to each administration."; | |||
} | ||||
nacm:default-deny-write; | ||||
description | ||||
"Container for valid provider identifiers."; | ||||
} | } | |||
nacm:default-deny-write; | ||||
description | ||||
"Container for valid provider identifiers."; | ||||
} | ||||
description | description | |||
"Container for VPN profiles."; | "Container for VPN profiles."; | |||
} | } | |||
container vpn-services { | container vpn-services { | |||
list vpn-service { | list vpn-service { | |||
key "vpn-id"; | key "vpn-id"; | |||
leaf vpn-id { | leaf vpn-id { | |||
type svc-id; | type svc-id; | |||
description | description | |||
"Defines a service identifier."; | "Defines a service identifier."; | |||
skipping to change at line 1698 | skipping to change at line 1700 | |||
} | } | |||
leaf svc-topo { | leaf svc-topo { | |||
type identityref { | type identityref { | |||
base vpn-topology; | base vpn-topology; | |||
} | } | |||
default "any-to-any"; | default "any-to-any"; | |||
description | description | |||
"Defines the service topology, e.g., | "Defines the service topology, e.g., | |||
'any-to-any', 'hub-spoke'."; | 'any-to-any', 'hub-spoke'."; | |||
} | } | |||
container cloud-accesses { | container cloud-accesses { | |||
if-feature "cloud-access"; | if-feature "cloud-access"; | |||
list cloud-access { | list cloud-access { | |||
key "cloud-identifier"; | key "cloud-identifier"; | |||
leaf cloud-identifier { | leaf cloud-identifier { | |||
type leafref { | ||||
path "/l2vpn-svc/vpn-profiles/valid-provider-identifiers" | ||||
+ "/cloud-identifier"; | ||||
} | ||||
description | ||||
"Identification of the cloud service. | ||||
Local to each administration."; | ||||
} | ||||
choice list-flavor { | ||||
case permit-any { | ||||
leaf permit-any { | ||||
type empty; | ||||
description | ||||
"Allow all sites."; | ||||
} | ||||
} | ||||
case deny-any-except { | ||||
leaf-list permit-site { | ||||
type leafref { | type leafref { | |||
path "/l2vpn-svc/sites/site/site-id"; | path "/l2vpn-svc/vpn-profiles/" | |||
+ "valid-provider-identifiers" | ||||
+ "/cloud-identifier"; | ||||
} | } | |||
description | description | |||
"Site ID to be authorized."; | "Identification of the cloud service. | |||
Local to each administration."; | ||||
} | } | |||
} | choice list-flavor { | |||
case permit-any-except { | case permit-any { | |||
leaf-list deny-site { | leaf permit-any { | |||
type leafref { | type empty; | |||
path "/l2vpn-svc/sites/site/site-id"; | description | |||
"Allow all sites."; | ||||
} | ||||
} | ||||
case deny-any-except { | ||||
leaf-list permit-site { | ||||
type leafref { | ||||
path "/l2vpn-svc/sites/site/site-id"; | ||||
} | ||||
description | ||||
"Site ID to be authorized."; | ||||
} | ||||
} | ||||
case permit-any-except { | ||||
leaf-list deny-site { | ||||
type leafref { | ||||
path "/l2vpn-svc/sites/site/site-id"; | ||||
} | ||||
description | ||||
"Site ID to be denied."; | ||||
} | ||||
} | } | |||
description | description | |||
"Site ID to be denied."; | "Choice for cloud access policy. | |||
By default, all sites in the L2VPN | ||||
MUST be authorized to access the cloud."; | ||||
} | } | |||
description | ||||
"Cloud access configuration."; | ||||
} | } | |||
description | description | |||
"Choice for cloud access policy. | "Container for cloud access configurations."; | |||
By default, all sites in the L2VPN | ||||
MUST be authorized to access the cloud."; | ||||
} | } | |||
description | container frame-delivery { | |||
"Cloud access configuration."; | if-feature "bum"; | |||
} | container customer-tree-flavors { | |||
description | leaf-list tree-flavor { | |||
"Container for cloud access configurations."; | type identityref { | |||
} | base multicast-tree-type; | |||
container frame-delivery { | } | |||
if-feature "bum"; | description | |||
container customer-tree-flavors { | "Type of tree to be used."; | |||
leaf-list tree-flavor { | } | |||
type identityref { | description | |||
base multicast-tree-type; | "Types of trees used by the customer."; | |||
} | } | |||
description | container bum-deliveries { | |||
"Type of tree to be used."; | list bum-delivery { | |||
} | key "frame-type"; | |||
description | leaf frame-type { | |||
"Types of trees used by the customer."; | type identityref { | |||
} | base tf-type; | |||
container bum-deliveries { | } | |||
list bum-delivery { | description | |||
key "frame-type"; | "Type of frame delivery. It supports unicast | |||
leaf frame-type { | frame delivery, multicast frame delivery, | |||
type identityref { | and broadcast frame delivery."; | |||
base tf-type; | } | |||
leaf delivery-mode { | ||||
type identityref { | ||||
base frame-delivery-mode; | ||||
} | ||||
default "unconditional"; | ||||
description | ||||
"Defines the frame delivery mode | ||||
('unconditional' (default), 'conditional', | ||||
or 'discard'). By default, service frames are | ||||
unconditionally delivered to the destination site."; | ||||
} | ||||
description | ||||
"List of frame delivery types and modes."; | ||||
} | ||||
description | ||||
"Defines the frame delivery types and modes."; | ||||
} | ||||
leaf multicast-gp-port-mapping { | ||||
type identityref { | ||||
base multicast-gp-address-mapping; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Describes the way in which each interface is | ||||
associated with the multicast group."; | ||||
} | } | |||
description | description | |||
"Type of frame delivery. It supports unicast | "Multicast global parameters for the VPN service."; | |||
frame delivery, multicast frame delivery, | ||||
and broadcast frame delivery."; | ||||
} | } | |||
leaf delivery-mode { | container extranet-vpns { | |||
type identityref { | if-feature "extranet-vpn"; | |||
base frame-delivery-mode; | list extranet-vpn { | |||
key "vpn-id"; | ||||
leaf vpn-id { | ||||
type svc-id; | ||||
description | ||||
"Identifies the target VPN that the local VPN wants to | ||||
access."; | ||||
} | ||||
leaf local-sites-role { | ||||
type identityref { | ||||
base site-role; | ||||
} | ||||
default "any-to-any-role"; | ||||
description | ||||
"Describes the role of the local sites in the target | ||||
VPN topology. In the any-to-any VPN service topology, | ||||
the local sites must have the same role, which will be | ||||
'any-to-any-role'. In the Hub-and-Spoke VPN service | ||||
topology or the Hub-and-Spoke-Disjoint VPN service | ||||
topology, the local sites must have a Hub role or a | ||||
Spoke role."; | ||||
} | ||||
description | ||||
"List of extranet VPNs to which the local VPN | ||||
is attached."; | ||||
} | } | |||
default "unconditional"; | ||||
description | description | |||
"Defines the frame delivery mode | "Container for extranet VPN configurations."; | |||
('unconditional' (default), 'conditional', | ||||
or 'discard'). By default, service frames are | ||||
unconditionally delivered to the destination site."; | ||||
} | ||||
description | ||||
"List of frame delivery types and modes."; | ||||
} | ||||
description | ||||
"Defines the frame delivery types and modes."; | ||||
} | ||||
leaf multicast-gp-port-mapping { | ||||
type identityref { | ||||
base multicast-gp-address-mapping; | ||||
} | } | |||
mandatory true; | leaf ce-vlan-preservation { | |||
description | type boolean; | |||
"Describes the way in which each interface is | mandatory true; | |||
associated with the multicast group."; | ||||
} | ||||
description | ||||
"Multicast global parameters for the VPN service."; | ||||
} | ||||
container extranet-vpns { | ||||
if-feature "extranet-vpn"; | ||||
list extranet-vpn { | ||||
key "vpn-id"; | ||||
leaf vpn-id { | ||||
type svc-id; | ||||
description | description | |||
"Identifies the target VPN that the local VPN wants to | "Preserves the CE-VLAN ID from ingress to egress, i.e., | |||
access."; | the CE-VLAN tag of the egress frame is identical to | |||
that of the ingress frame that yielded this | ||||
egress service frame. If all-to-one bundling within | ||||
a site is enabled, then preservation applies to all | ||||
ingress service frames. If all-to-one bundling is | ||||
disabled, then preservation applies to tagged | ||||
ingress service frames having CE-VLAN IDs 1 through 4094."; | ||||
} | } | |||
leaf local-sites-role { | leaf ce-vlan-cos-preservation { | |||
type identityref { | type boolean; | |||
base site-role; | mandatory true; | |||
} | ||||
default "any-to-any-role"; | ||||
description | description | |||
"Describes the role of the local sites in the target | "CE VLAN CoS preservation. The PCP bits in the CE-VLAN tag | |||
VPN topology. In the any-to-any VPN service topology, | of the egress frame are identical to those of the | |||
the local sites must have the same role, which will be | ingress frame that yielded this egress service frame."; | |||
'any-to-any-role'. In the Hub-and-Spoke VPN service | ||||
topology or the Hub-and-Spoke-Disjoint VPN service | ||||
topology, the local sites must have a Hub role or a | ||||
Spoke role."; | ||||
} | } | |||
description | ||||
"List of extranet VPNs to which the local VPN | ||||
is attached."; | ||||
} | ||||
description | ||||
"Container for extranet VPN configurations."; | ||||
} | ||||
leaf ce-vlan-preservation { | ||||
type boolean; | ||||
mandatory true; | ||||
description | ||||
"Preserves the CE-VLAN ID from ingress to egress, i.e., | ||||
the CE-VLAN tag of the egress frame is identical to | ||||
that of the ingress frame that yielded this | ||||
egress service frame. If all-to-one bundling within | ||||
a site is enabled, then preservation applies to all | ||||
ingress service frames. If all-to-one bundling is | ||||
disabled, then preservation applies to tagged | ||||
ingress service frames having CE-VLAN IDs 1 through 4094."; | ||||
} | ||||
leaf ce-vlan-cos-preservation { | ||||
type boolean; | ||||
mandatory true; | ||||
description | ||||
"CE VLAN CoS preservation. The PCP bits in the CE-VLAN tag | ||||
of the egress frame are identical to those of the | ||||
ingress frame that yielded this egress service frame."; | ||||
} | ||||
leaf carrierscarrier { | leaf carrierscarrier { | |||
if-feature "carrierscarrier"; | if-feature "carrierscarrier"; | |||
type boolean; | type boolean; | |||
default "false"; | default "false"; | |||
description | description | |||
"The VPN is using CsC, and so MPLS is required."; | "The VPN is using CsC, and so MPLS is required."; | |||
} | } | |||
description | description | |||
"List of VPN services."; | "List of VPN services."; | |||
} | } | |||
skipping to change at line 1875 | skipping to change at line 1878 | |||
"Container for VPN services."; | "Container for VPN services."; | |||
} | } | |||
container sites { | container sites { | |||
list site { | list site { | |||
key "site-id"; | key "site-id"; | |||
leaf site-id { | leaf site-id { | |||
type string; | type string; | |||
description | description | |||
"Identifier of the site."; | "Identifier of the site."; | |||
} | } | |||
leaf site-vpn-flavor { | leaf site-vpn-flavor { | |||
type identityref { | type identityref { | |||
base site-vpn-flavor; | base site-vpn-flavor; | |||
} | ||||
default "site-vpn-flavor-single"; | ||||
description | ||||
"Defines the way that the VPN multiplexing is | ||||
done, e.g., whether the site belongs to | ||||
a single VPN site or a multi-VPN site. By | ||||
default, the site belongs to a single VPN."; | ||||
} | ||||
container devices { | ||||
when "derived-from-or-self(../management/type, " | ||||
+ "'l2vpn-svc:provider-managed') or " | ||||
+ "derived-from-or-self(../management/type, " | ||||
+ "'l2vpn-svc:co-managed')" { | ||||
description | ||||
"Applicable only for a provider-managed or | ||||
co-managed device."; | ||||
} | ||||
list device { | ||||
key "device-id"; | ||||
leaf device-id { | ||||
type string; | ||||
description | ||||
"Identifier for the device."; | ||||
} | ||||
leaf location { | ||||
type leafref { | ||||
path "../../../locations/location/location-id"; | ||||
} | } | |||
mandatory true; | default "site-vpn-flavor-single"; | |||
description | description | |||
"Location of the device."; | "Defines the way that the VPN multiplexing is | |||
done, e.g., whether the site belongs to | ||||
a single VPN site or a multi-VPN site. By | ||||
default, the site belongs to a single VPN."; | ||||
} | } | |||
container management { | container devices { | |||
when "derived-from-or-self(../../../management/type, " | when "derived-from-or-self(../management/type, " | |||
+ "'l2vpn-svc:provider-managed') or " | ||||
+ "derived-from-or-self(../management/type, " | ||||
+ "'l2vpn-svc:co-managed')" { | + "'l2vpn-svc:co-managed')" { | |||
description | description | |||
"Applicable only for a co-managed device."; | "Applicable only for a provider-managed or | |||
co-managed device."; | ||||
} | } | |||
leaf transport { | list device { | |||
type identityref { | key "device-id"; | |||
base address-family; | leaf device-id { | |||
type string; | ||||
description | ||||
"Identifier for the device."; | ||||
} | } | |||
description | leaf location { | |||
"Transport protocol or address family | type leafref { | |||
used for management."; | path "../../../locations/location/location-id"; | |||
} | } | |||
leaf address { | mandatory true; | |||
when "(../ transport)" { | ||||
description | description | |||
"If the address family is specified, then the address | "Location of the device."; | |||
should also be specified. If the transport is not | } | |||
specified, then the address should not be | container management { | |||
specified."; | when "derived-from-or-self(../../../management/type, " | |||
+ "'l2vpn-svc:co-managed')" { | ||||
description | ||||
"Applicable only for a co-managed device."; | ||||
} | ||||
leaf transport { | ||||
type identityref { | ||||
base address-family; | ||||
} | ||||
description | ||||
"Transport protocol or address family | ||||
used for management."; | ||||
} | ||||
leaf address { | ||||
when '(../ transport)' { | ||||
description | ||||
"If the address family is specified, then the | ||||
address should also be specified. If the | ||||
transport is not specified, then the address | ||||
should not be specified."; | ||||
} | ||||
type inet:ip-address; | ||||
description | ||||
"Management address."; | ||||
} | ||||
description | ||||
"Management configuration. Applicable only for a | ||||
co-managed device."; | ||||
} | } | |||
type inet:ip-address; | ||||
description | description | |||
"Management address."; | "List of devices requested by the customer."; | |||
} | } | |||
description | description | |||
"Management configuration. Applicable only for a | "Device configurations."; | |||
co-managed device."; | ||||
} | ||||
description | ||||
"List of devices requested by the customer."; | ||||
} | ||||
description | ||||
"Device configurations."; | ||||
} | ||||
container management { | ||||
leaf type { | ||||
type identityref { | ||||
base management; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Management type of the connection."; | ||||
} | ||||
description | ||||
"Management configuration."; | ||||
} | ||||
container locations { | ||||
list location { | ||||
key "location-id"; | ||||
leaf location-id { | ||||
type string; | ||||
description | ||||
"Location ID."; | ||||
} | ||||
leaf address { | ||||
type string; | ||||
description | ||||
"Address (number and street) of the site."; | ||||
} | ||||
leaf postal-code { | ||||
type string; | ||||
description | ||||
"Postal code of the site. The format of 'postal-code' | ||||
is similar to the 'PC' (postal code) label format | ||||
defined in RFC 4119."; | ||||
} | ||||
leaf state { | ||||
type string; | ||||
description | ||||
"State (region) of the site. This leaf can also be used | ||||
to describe a region of a country that does not have | ||||
states."; | ||||
} | ||||
leaf city { | ||||
type string; | ||||
description | ||||
"City of the site."; | ||||
} | ||||
leaf country-code { | ||||
type string; | ||||
description | ||||
"Country of the site. The format of 'country-code' is | ||||
similar to the 'country' label defined in RFC 4119."; | ||||
} | } | |||
description | container management { | |||
"List of locations."; | leaf type { | |||
} | type identityref { | |||
description | base management; | |||
"Location of the site."; | } | |||
} | mandatory true; | |||
container site-diversity { | ||||
if-feature "site-diversity"; | ||||
container groups { | ||||
list group { | ||||
key "group-id"; | ||||
leaf group-id { | ||||
type string; | ||||
description | description | |||
"The group-id to which the site belongs."; | "Management type of the connection."; | |||
} | } | |||
description | description | |||
"List of group-ids."; | "Management configuration."; | |||
} | ||||
description | ||||
"Groups to which the site belongs. | ||||
All site network accesses will inherit those group | ||||
values."; | ||||
} | ||||
description | ||||
"The type of diversity constraint."; | ||||
} | ||||
container vpn-policies { | ||||
list vpn-policy { | ||||
key "vpn-policy-id"; | ||||
leaf vpn-policy-id { | ||||
type string; | ||||
description | ||||
"Unique identifier for the VPN policy."; | ||||
} | } | |||
list entries { | container locations { | |||
key "id"; | list location { | |||
leaf id { | key "location-id"; | |||
type string; | leaf location-id { | |||
type string; | ||||
description | ||||
"Location ID."; | ||||
} | ||||
leaf address { | ||||
type string; | ||||
description | ||||
"Address (number and street) of the site."; | ||||
} | ||||
leaf postal-code { | ||||
type string; | ||||
description | ||||
"Postal code of the site. The format of 'postal-code' | ||||
is similar to the 'PC' (postal code) label format | ||||
defined in RFC 4119."; | ||||
} | ||||
leaf state { | ||||
type string; | ||||
description | ||||
"State (region) of the site. This leaf can also be used | ||||
to describe a region of a country that does not have | ||||
states."; | ||||
} | ||||
leaf city { | ||||
type string; | ||||
description | ||||
"City of the site."; | ||||
} | ||||
leaf country-code { | ||||
type string; | ||||
description | ||||
"Country of the site. The format of 'country-code' is | ||||
similar to the 'country' label defined in RFC 4119."; | ||||
} | ||||
description | description | |||
"Unique identifier for the policy entry."; | "List of locations."; | |||
} | } | |||
container filters { | description | |||
list filter { | "Location of the site."; | |||
key "type"; | } | |||
ordered-by user; | container site-diversity { | |||
leaf type { | if-feature "site-diversity"; | |||
type identityref { | container groups { | |||
base vpn-policy-filter-type; | list group { | |||
} | key "group-id"; | |||
description | leaf group-id { | |||
"Type of VPN policy filter."; | type string; | |||
} | ||||
leaf-list lan-tag { | ||||
when "derived-from-or-self(../type, 'l2vpn-svc:lan')" { | ||||
description | ||||
"Only applies when the VPN policy filter is a | ||||
LAN tag filter."; | ||||
} | ||||
if-feature "lan-tag"; | ||||
type uint32; | ||||
description | description | |||
"List of Ethernet LAN tags to be matched. An | "The group-id to which the site belongs."; | |||
Ethernet LAN tag identifies a particular broadcast | ||||
domain in a VPN."; | ||||
} | } | |||
description | description | |||
"List of filters used on the site. This list can | "List of group-ids."; | |||
be augmented."; | ||||
} | } | |||
description | description | |||
"If a more granular VPN attachment is necessary, | "Groups to which the site belongs. | |||
filtering can be used. If used, it permits the | All site network accesses will inherit those group | |||
splitting of site LANs among multiple VPNs. The | values."; | |||
site LAN can be split based on either the LAN tag or | ||||
the LAN prefix. If no filter is used, all the LANs | ||||
will be part of the same VPNs with the same role."; | ||||
} | } | |||
list vpn { | description | |||
key "vpn-id"; | "The type of diversity constraint."; | |||
leaf vpn-id { | } | |||
type leafref { | container vpn-policies { | |||
path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | list vpn-policy { | |||
} | key "vpn-policy-id"; | |||
leaf vpn-policy-id { | ||||
type string; | ||||
description | description | |||
"Reference to an L2VPN."; | "Unique identifier for the VPN policy."; | |||
} | } | |||
leaf site-role { | list entries { | |||
type identityref { | key "id"; | |||
base site-role; | leaf id { | |||
type string; | ||||
description | ||||
"Unique identifier for the policy entry."; | ||||
} | ||||
container filters { | ||||
list filter { | ||||
key "type"; | ||||
ordered-by user; | ||||
leaf type { | ||||
type identityref { | ||||
base vpn-policy-filter-type; | ||||
} | ||||
description | ||||
"Type of VPN policy filter."; | ||||
} | ||||
leaf-list lan-tag { | ||||
when "derived-from-or-self(../type, " | ||||
+ "'l2vpn-svc:lan')" { | ||||
description | ||||
"Only applies when the VPN policy filter is a | ||||
LAN tag filter."; | ||||
} | ||||
if-feature "lan-tag"; | ||||
type uint32; | ||||
description | ||||
"List of Ethernet LAN tags to be matched. An | ||||
Ethernet LAN tag identifies a particular | ||||
broadcast domain in a VPN."; | ||||
} | ||||
description | ||||
"List of filters used on the site. This list can | ||||
be augmented."; | ||||
} | ||||
description | ||||
"If a more granular VPN attachment is necessary, | ||||
filtering can be used. If used, it permits the | ||||
splitting of site LANs among multiple VPNs. The | ||||
site LAN can be split based on either the LAN tag or | ||||
the LAN prefix. If no filter is used, all the LANs | ||||
will be part of the same VPNs with the same role."; | ||||
} | ||||
list vpn { | ||||
key "vpn-id"; | ||||
leaf vpn-id { | ||||
type leafref { | ||||
path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | ||||
} | ||||
description | ||||
"Reference to an L2VPN."; | ||||
} | ||||
leaf site-role { | ||||
type identityref { | ||||
base site-role; | ||||
} | ||||
default "any-to-any-role"; | ||||
description | ||||
"Role of the site in the L2VPN."; | ||||
} | ||||
description | ||||
"List of VPNs with which the LAN is associated."; | ||||
} | } | |||
default "any-to-any-role"; | ||||
description | description | |||
"Role of the site in the L2VPN."; | "List of entries for an export policy."; | |||
} | } | |||
description | description | |||
"List of VPNs with which the LAN is associated."; | "List of VPN policies."; | |||
} | } | |||
description | description | |||
"List of entries for an export policy."; | "VPN policy."; | |||
} | ||||
container service { | ||||
uses site-service-qos-profile; | ||||
uses site-service-mpls; | ||||
description | ||||
"Service parameters on the attachment."; | ||||
} | } | |||
description | ||||
"List of VPN policies."; | ||||
} | ||||
description | ||||
"VPN policy."; | ||||
} | ||||
container service { | ||||
uses site-service-qos-profile; | ||||
uses site-service-mpls; | ||||
description | ||||
"Service parameters on the attachment."; | ||||
} | ||||
uses site-bum; | uses site-bum; | |||
uses site-mac-loop-prevention; | uses site-mac-loop-prevention; | |||
uses site-acl; | uses site-acl; | |||
leaf actual-site-start { | leaf actual-site-start { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"This leaf is optional. It indicates the date and time | "This leaf is optional. It indicates the date and time | |||
when the service at a particular site actually started."; | when the service at a particular site actually started."; | |||
} | } | |||
leaf actual-site-stop { | leaf actual-site-stop { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
config false; | config false; | |||
description | description | |||
"This leaf is optional. It indicates the date and time | "This leaf is optional. It indicates the date and time | |||
when the service at a particular site actually stopped."; | when the service at a particular site actually stopped."; | |||
} | } | |||
leaf bundling-type { | leaf bundling-type { | |||
type identityref { | type identityref { | |||
base bundling-type; | base bundling-type; | |||
} | } | |||
default "one2one-bundling"; | default "one2one-bundling"; | |||
description | description | |||
"Bundling type. By default, each L2VPN | "Bundling type. By default, each L2VPN | |||
can be associated with only one | can be associated with only one | |||
CE-VLAN, i.e., one-to-one bundling is used."; | CE-VLAN, i.e., one-to-one bundling is used."; | |||
} | } | |||
leaf default-ce-vlan-id { | leaf default-ce-vlan-id { | |||
type uint32; | type uint32; | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Default CE VLAN ID set at the site level."; | "Default CE VLAN ID set at the site level."; | |||
} | } | |||
container site-network-accesses { | container site-network-accesses { | |||
list site-network-access { | list site-network-access { | |||
key "network-access-id"; | key "network-access-id"; | |||
leaf network-access-id { | leaf network-access-id { | |||
type string; | type string; | |||
description | description | |||
"Identifier of network access."; | "Identifier of network access."; | |||
} | } | |||
leaf remote-carrier-name { | leaf remote-carrier-name { | |||
when "derived-from-or-self(../../../site-vpn-flavor," | when "derived-from-or-self(../../../site-vpn-flavor," | |||
skipping to change at line 2173 | skipping to change at line 2174 | |||
+ "/remote-carrier-identifier"; | + "/remote-carrier-identifier"; | |||
} | } | |||
description | description | |||
"Remote carrier name. The 'remote-carrier-name' | "Remote carrier name. The 'remote-carrier-name' | |||
parameter must be configured only when | parameter must be configured only when | |||
'site-vpn-flavor' is set to 'site-vpn-flavor-nni'. | 'site-vpn-flavor' is set to 'site-vpn-flavor-nni'. | |||
If it is not set, it indicates that the customer | If it is not set, it indicates that the customer | |||
does not know the remote carrier's name | does not know the remote carrier's name | |||
beforehand."; | beforehand."; | |||
} | } | |||
leaf type { | leaf type { | |||
type identityref { | type identityref { | |||
base site-network-access-type; | base site-network-access-type; | |||
} | } | |||
default "point-to-point"; | default "point-to-point"; | |||
description | description | |||
"Describes the type of connection, e.g., | "Describes the type of connection, e.g., | |||
point-to-point or multipoint."; | point-to-point or multipoint."; | |||
} | ||||
choice location-flavor { | ||||
case location { | ||||
when "derived-from-or-self(../../management/type, " | ||||
+ "'l2vpn-svc:customer-managed')" { | ||||
description | ||||
"Applicable only for a customer-managed device."; | ||||
} | ||||
leaf location-reference { | ||||
type leafref { | ||||
path "../../../locations/location/location-id"; | ||||
} | ||||
description | ||||
"Location of the site-network-access."; | ||||
} | ||||
} | ||||
case device { | ||||
when "derived-from-or-self(../../management/type, " | ||||
+ "'l2vpn-svc:provider-managed') or " | ||||
+ "derived-from-or-self(../../management/type, " | ||||
+ "'l2vpn-svc:co-managed')" { | ||||
description | ||||
"Applicable only for a provider-managed | ||||
or co-managed device."; | ||||
} | ||||
leaf device-reference { | ||||
type leafref { | ||||
path "../../../devices/device/device-id"; | ||||
} | ||||
description | ||||
"Identifier of the CE to use."; | ||||
} | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Choice of how to describe the site's location."; | ||||
} | ||||
container access-diversity { | ||||
if-feature "site-diversity"; | ||||
container groups { | ||||
list group { | ||||
key "group-id"; | ||||
leaf group-id { | ||||
type string; | ||||
description | ||||
"Group-id to which the site belongs."; | ||||
} | ||||
description | ||||
"List of group-ids."; | ||||
} | ||||
description | ||||
"Groups to which the site or site-network-access belongs."; | ||||
} | ||||
container constraints { | ||||
list constraint { | ||||
key "constraint-type"; | ||||
leaf constraint-type { | ||||
type identityref { | ||||
base placement-diversity; | ||||
} | } | |||
description | choice location-flavor { | |||
"The type of diversity constraint."; | case location { | |||
} | when "derived-from-or-self(../../management/type, " | |||
container target { | + "'l2vpn-svc:customer-managed')" { | |||
choice target-flavor { | description | |||
default "id"; | "Applicable only for a customer-managed device."; | |||
case id { | } | |||
leaf location-reference { | ||||
type leafref { | ||||
path "../../../locations/location/location-id"; | ||||
} | ||||
description | ||||
"Location of the site-network-access."; | ||||
} | ||||
} | ||||
case device { | ||||
when "derived-from-or-self(../../management/type, " | ||||
+ "'l2vpn-svc:provider-managed') or " | ||||
+ "derived-from-or-self(../../management/type, " | ||||
+ "'l2vpn-svc:co-managed')" { | ||||
description | ||||
"Applicable only for a provider-managed | ||||
or co-managed device."; | ||||
} | ||||
leaf device-reference { | ||||
type leafref { | ||||
path "../../../devices/device/device-id"; | ||||
} | ||||
description | ||||
"Identifier of the CE to use."; | ||||
} | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Choice of how to describe the site's location."; | ||||
} | ||||
container access-diversity { | ||||
if-feature "site-diversity"; | ||||
container groups { | ||||
list group { | list group { | |||
key "group-id"; | key "group-id"; | |||
leaf group-id { | leaf group-id { | |||
type string; | type string; | |||
description | description | |||
"The constraint will apply against this | "Group-id to which the site belongs."; | |||
particular group-id."; | ||||
} | } | |||
description | description | |||
"List of groups."; | "List of group-ids."; | |||
} | } | |||
description | ||||
"Groups to which the site or site-network-access | ||||
belongs."; | ||||
} | } | |||
case all-accesses { | container constraints { | |||
leaf all-other-accesses { | list constraint { | |||
type empty; | key "constraint-type"; | |||
leaf constraint-type { | ||||
type identityref { | ||||
base placement-diversity; | ||||
} | ||||
description | ||||
"The type of diversity constraint."; | ||||
} | ||||
container target { | ||||
choice target-flavor { | ||||
default "id"; | ||||
case id { | ||||
list group { | ||||
key "group-id"; | ||||
leaf group-id { | ||||
type string; | ||||
description | ||||
"The constraint will apply against this | ||||
particular group-id."; | ||||
} | ||||
description | ||||
"List of groups."; | ||||
} | ||||
} | ||||
case all-accesses { | ||||
leaf all-other-accesses { | ||||
type empty; | ||||
description | ||||
"The constraint will apply against all other | ||||
site network accesses of this site."; | ||||
} | ||||
} | ||||
case all-groups { | ||||
leaf all-other-groups { | ||||
type empty; | ||||
description | ||||
"The constraint will apply against all other | ||||
groups the customer is managing."; | ||||
} | ||||
} | ||||
description | ||||
"Choice for the group definition."; | ||||
} | ||||
description | ||||
"The constraint will apply against | ||||
this list of groups."; | ||||
} | ||||
description | description | |||
"The constraint will apply against all other | "List of constraints."; | |||
site network accesses of this site."; | ||||
} | } | |||
description | ||||
"Constraints for placing this site network access."; | ||||
} | } | |||
case all-groups { | description | |||
leaf all-other-groups { | "Diversity parameters."; | |||
type empty; | } | |||
container bearer { | ||||
container requested-type { | ||||
if-feature "requested-type"; | ||||
leaf type { | ||||
type string; | ||||
description | description | |||
"The constraint will apply against all other | "Type of requested bearer: Ethernet, ATM, Frame | |||
groups the customer is managing."; | Relay, IP Layer 2 transport, Frame Relay Data | |||
Link Connection Identifier (DLCI), SONET/SDH, | ||||
PPP."; | ||||
} | ||||
leaf strict { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Defines whether the requested type is a preference | ||||
or a strict requirement."; | ||||
} | } | |||
description | ||||
"Container for requested types."; | ||||
} | ||||
leaf always-on { | ||||
if-feature "always-on"; | ||||
type boolean; | ||||
default "true"; | ||||
description | ||||
"Request for an 'always-on' access type. | ||||
For example, this could mean no dial-in access | ||||
type."; | ||||
} | ||||
leaf bearer-reference { | ||||
if-feature "bearer-reference"; | ||||
type string; | ||||
description | ||||
"An internal reference for the SP."; | ||||
} | } | |||
description | description | |||
"Choice for the group definition."; | "Bearer-specific parameters. To be augmented."; | |||
} | } | |||
description | container connection { | |||
"The constraint will apply against | leaf encapsulation-type { | |||
this list of groups."; | type identityref { | |||
} | base encapsulation-type; | |||
description | } | |||
"List of constraints."; | default "ethernet"; | |||
} | description | |||
description | "Encapsulation type. By default, the | |||
"Constraints for placing this site network access."; | encapsulation type is set to 'ethernet'."; | |||
} | } | |||
description | leaf eth-inf-type { | |||
"Diversity parameters."; | type identityref { | |||
} | base eth-inf-type; | |||
container bearer { | } | |||
container requested-type { | default "untagged"; | |||
if-feature "requested-type"; | description | |||
leaf type { | "Ethernet interface type. By default, the | |||
type string; | Ethernet interface type is set to 'untagged'."; | |||
description | } | |||
"Type of requested bearer: Ethernet, ATM, Frame Relay, | container tagged-interface { | |||
IP Layer 2 transport, Frame Relay Data Link | leaf type { | |||
Connection Identifier (DLCI), SONET/SDH, PPP."; | type identityref { | |||
} | base tagged-inf-type; | |||
leaf strict { | } | |||
type boolean; | default "priority-tagged"; | |||
default "false"; | description | |||
description | "Tagged interface type. By default, | |||
"Defines whether the requested type is a preference | the type of the tagged interface is | |||
or a strict requirement."; | 'priority-tagged'."; | |||
} | } | |||
description | container dot1q-vlan-tagged { | |||
"Container for requested types."; | when "derived-from-or-self(../type, " | |||
} | + "'l2vpn-svc:dot1q')" { | |||
leaf always-on { | description | |||
if-feature "always-on"; | "Only applies when the type of the tagged | |||
type boolean; | interface is 'dot1q'."; | |||
default "true"; | } | |||
description | if-feature "dot1q"; | |||
"Request for an 'always-on' access type. | leaf tg-type { | |||
For example, this could mean no dial-in access type."; | type identityref { | |||
} | base tag-type; | |||
leaf bearer-reference { | } | |||
if-feature "bearer-reference"; | default "c-vlan"; | |||
type string; | description | |||
description | "Tag type. By default, the tag type is | |||
"An internal reference for the SP."; | 'c-vlan'."; | |||
} | } | |||
description | leaf cvlan-id { | |||
"Bearer-specific parameters. To be augmented."; | type uint16; | |||
} | mandatory true; | |||
container connection { | description | |||
leaf encapsulation-type { | "VLAN identifier."; | |||
type identityref { | } | |||
base encapsulation-type; | description | |||
} | "Tagged interface."; | |||
default "ethernet"; | } | |||
description | container priority-tagged { | |||
"Encapsulation type. By default, the | when "derived-from-or-self(../type, " | |||
encapsulation type is set to 'ethernet'."; | + "'l2vpn-svc:priority-tagged')" { | |||
} | description | |||
leaf eth-inf-type { | "Only applies when the type of the tagged | |||
type identityref { | interface is 'priority-tagged'."; | |||
base eth-inf-type; | } | |||
} | leaf tag-type { | |||
default "untagged"; | type identityref { | |||
description | base tag-type; | |||
"Ethernet interface type. By default, the | } | |||
Ethernet interface type is set to 'untagged'."; | default "c-vlan"; | |||
} | description | |||
container tagged-interface { | "Tag type. By default, the tag type is | |||
leaf type { | 'c-vlan'."; | |||
type identityref { | } | |||
base tagged-inf-type; | description | |||
} | "Priority tagged."; | |||
default "priority-tagged"; | } | |||
description | container qinq { | |||
"Tagged interface type. By default, | when "derived-from-or-self(../type, " | |||
the type of the tagged interface is 'priority-tagged'."; | + "'l2vpn-svc:qinq')" { | |||
} | description | |||
container dot1q-vlan-tagged { | "Only applies when the type of the tagged | |||
when "derived-from-or-self(../type, 'l2vpn-svc:dot1q')" { | interface is 'qinq'."; | |||
description | } | |||
"Only applies when the type of the tagged interface | if-feature "qinq"; | |||
is 'dot1q'."; | leaf tag-type { | |||
} | type identityref { | |||
if-feature "dot1q"; | base tag-type; | |||
leaf tg-type { | } | |||
type identityref { | default "c-s-vlan"; | |||
base tag-type; | description | |||
} | "Tag type. By default, the tag type is | |||
default "c-vlan"; | 'c-s-vlan'."; | |||
description | } | |||
"Tag type. By default, the tag type is 'c-vlan'."; | leaf svlan-id { | |||
} | type uint16; | |||
leaf cvlan-id { | mandatory true; | |||
type uint16; | description | |||
mandatory true; | "SVLAN identifier."; | |||
description | } | |||
"VLAN identifier."; | leaf cvlan-id { | |||
} | type uint16; | |||
description | mandatory true; | |||
"Tagged interface."; | description | |||
} | "CVLAN identifier."; | |||
container priority-tagged { | } | |||
when "derived-from-or-self(../type, " | description | |||
+ "'l2vpn-svc:priority-tagged')" { | "QinQ."; | |||
description | } | |||
"Only applies when the type of the tagged interface | container qinany { | |||
is 'priority-tagged'."; | when "derived-from-or-self(../type, " | |||
} | + "'l2vpn-svc:qinany')" { | |||
leaf tag-type { | description | |||
type identityref { | "Only applies when the type of the tagged | |||
base tag-type; | interface is 'qinany'."; | |||
} | } | |||
default "c-vlan"; | if-feature "qinany"; | |||
description | leaf tag-type { | |||
"Tag type. By default, the tag type is 'c-vlan'."; | type identityref { | |||
} | base tag-type; | |||
description | } | |||
"Priority tagged."; | default "s-vlan"; | |||
} | description | |||
container qinq { | "Tag type. By default, the tag type is | |||
when "derived-from-or-self(../type, 'l2vpn-svc:qinq')" { | 's-vlan'."; | |||
description | } | |||
"Only applies when the type of the tagged interface | leaf svlan-id { | |||
is 'qinq'."; | type uint16; | |||
} | mandatory true; | |||
if-feature "qinq"; | description | |||
leaf tag-type { | "SVLAN ID."; | |||
type identityref { | } | |||
base tag-type; | description | |||
} | "Container for QinAny."; | |||
default "c-s-vlan"; | } | |||
description | container vxlan { | |||
"Tag type. By default, the tag type is 'c-s-vlan'."; | when "derived-from-or-self(../type, " | |||
} | + "'l2vpn-svc:vxlan')" { | |||
leaf svlan-id { | description | |||
type uint16; | "Only applies when the type of the tagged | |||
mandatory true; | interface is 'vxlan'."; | |||
description | } | |||
"SVLAN identifier."; | if-feature "vxlan"; | |||
} | leaf vni-id { | |||
leaf cvlan-id { | type uint32; | |||
type uint16; | mandatory true; | |||
mandatory true; | description | |||
description | "VXLAN Network Identifier (VNI)."; | |||
"CVLAN identifier."; | } | |||
} | leaf peer-mode { | |||
description | type identityref { | |||
"QinQ."; | base vxlan-peer-mode; | |||
} | } | |||
container qinany { | default "static-mode"; | |||
when "derived-from-or-self(../type, 'l2vpn-svc:qinany')" { | description | |||
description | "Specifies the VXLAN access mode. By default, | |||
"Only applies when the type of the tagged interface | the peer mode is set to 'static-mode'."; | |||
is 'qinany'."; | } | |||
} | list peer-list { | |||
if-feature "qinany"; | key "peer-ip"; | |||
leaf tag-type { | leaf peer-ip { | |||
type identityref { | type inet:ip-address; | |||
base tag-type; | description | |||
} | "Peer IP."; | |||
default "s-vlan"; | } | |||
description | description | |||
"Tag type. By default, the tag type is 's-vlan'."; | "List of peer IP addresses."; | |||
} | } | |||
leaf svlan-id { | description | |||
type uint16; | "QinQ."; | |||
mandatory true; | } | |||
description | description | |||
"SVLAN ID."; | "Container for tagged interfaces."; | |||
} | } | |||
description | container untagged-interface { | |||
"Container for QinAny."; | leaf speed { | |||
} | type uint32; | |||
container vxlan { | units "mbps"; | |||
when "derived-from-or-self(../type, 'l2vpn-svc:vxlan')" { | default "10"; | |||
description | description | |||
"Only applies when the type of the tagged interface | "Port speed."; | |||
is 'vxlan'."; | } | |||
} | leaf mode { | |||
if-feature "vxlan"; | type neg-mode; | |||
leaf vni-id { | default "auto-neg"; | |||
type uint32; | description | |||
mandatory true; | "Negotiation mode."; | |||
description | } | |||
"VXLAN Network Identifier (VNI)."; | leaf phy-mtu { | |||
} | type uint32; | |||
leaf peer-mode { | units "bytes"; | |||
type identityref { | description | |||
base vxlan-peer-mode; | "PHY MTU."; | |||
} | } | |||
default "static-mode"; | leaf lldp { | |||
description | type boolean; | |||
"Specifies the VXLAN access mode. By default, | default "false"; | |||
the peer mode is set to 'static-mode'."; | description | |||
} | "LLDP. Indicates that LLDP is supported."; | |||
list peer-list { | } | |||
key "peer-ip"; | container oam-802.3ah-link { | |||
leaf peer-ip { | if-feature "oam-3ah"; | |||
type inet:ip-address; | leaf enabled { | |||
description | type boolean; | |||
"Peer IP."; | default "false"; | |||
} | description | |||
description | "Indicates whether or not to support | |||
"List of peer IP addresses."; | OAM 802.3ah links."; | |||
} | } | |||
description | description | |||
"QinQ."; | "Container for OAM 802.3ah links."; | |||
} | } | |||
leaf uni-loop-prevention { | ||||
description | type boolean; | |||
"Container for tagged interfaces."; | default "false"; | |||
} | description | |||
container untagged-interface { | "If this leaf is set to 'true', then the port | |||
leaf speed { | automatically goes down when a physical | |||
type uint32; | loopback is detected."; | |||
units "mbps"; | } | |||
default "10"; | description | |||
description | "Container of untagged interface attribute | |||
"Port speed."; | configurations."; | |||
} | } | |||
leaf mode { | container lag-interfaces { | |||
type neg-mode; | if-feature "lag-interface"; | |||
default "auto-neg"; | list lag-interface { | |||
description | key "index"; | |||
"Negotiation mode."; | leaf index { | |||
} | type string; | |||
leaf phy-mtu { | description | |||
type uint32; | "LAG interface index."; | |||
units "bytes"; | } | |||
description | container lacp { | |||
"PHY MTU."; | if-feature "lacp"; | |||
} | leaf enabled { | |||
leaf lldp { | type boolean; | |||
type boolean; | default "false"; | |||
default "false"; | description | |||
description | "LACP on/off. By default, LACP is disabled."; | |||
"LLDP. Indicates that LLDP is supported."; | } | |||
} | leaf mode { | |||
container oam-802.3ah-link { | type neg-mode; | |||
if-feature "oam-3ah"; | description | |||
leaf enabled { | "LACP mode. LACP modes have active mode and | |||
type boolean; | passive mode ('false'). 'Active mode' means | |||
default "false"; | initiating the auto-speed negotiation and | |||
description | trying to form an Ethernet channel with the | |||
"Indicates whether or not to support | other end. 'Passive mode' means not initiating | |||
OAM 802.3ah links."; | the negotiation but responding to LACP packets | |||
} | initiated by the other end (e.g., full duplex | |||
description | or half duplex)."; | |||
"Container for OAM 802.3ah links."; | } | |||
} | leaf speed { | |||
leaf uni-loop-prevention { | type uint32; | |||
type boolean; | units "mbps"; | |||
default "false"; | default "10"; | |||
description | description | |||
"If this leaf is set to 'true', then the port automatically | "LACP speed. By default, the LACP speed is 10 | |||
goes down when a physical loopback is detected."; | Mbps."; | |||
} | } | |||
description | leaf mini-link-num { | |||
"Container of untagged interface attribute configurations."; | type uint32; | |||
} | description | |||
container lag-interfaces { | "Defines the minimum number of links that must | |||
if-feature "lag-interface"; | be active before the aggregating link is put | |||
list lag-interface { | into service."; | |||
key "index"; | } | |||
leaf index { | leaf system-priority { | |||
type string; | type uint16; | |||
description | default "32768"; | |||
"LAG interface index."; | description | |||
} | "Indicates the LACP priority for the system. | |||
container lacp { | The range is from 0 to 65535. | |||
if-feature "lacp"; | The default is 32768."; | |||
leaf enabled { | } | |||
type boolean; | container micro-bfd { | |||
if-feature "micro-bfd"; | ||||
default "false"; | leaf enabled { | |||
description | type enumeration { | |||
"LACP on/off. By default, LACP is disabled."; | enum on { | |||
} | description | |||
leaf mode { | "Micro-bfd on."; | |||
type neg-mode; | } | |||
description | enum off { | |||
"LACP mode. LACP modes have active mode and | description | |||
passive mode ('false'). 'Active mode' means | "Micro-bfd off."; | |||
initiating the auto-speed negotiation and trying | } | |||
to form an Ethernet channel with the other end. | } | |||
'Passive mode' means not initiating the negotiation | default "off"; | |||
but responding to LACP packets initiated by the | description | |||
other end (e.g., full duplex or half duplex)."; | "Micro-BFD on/off. By default, micro-BFD | |||
} | is set to 'off'."; | |||
leaf speed { | } | |||
type uint32; | leaf interval { | |||
units "mbps"; | type uint32; | |||
default "10"; | units "milliseconds"; | |||
description | description | |||
"LACP speed. By default, the LACP speed is 10 Mbps."; | "BFD interval."; | |||
} | } | |||
leaf mini-link-num { | leaf hold-timer { | |||
type uint32; | type uint32; | |||
description | units "milliseconds"; | |||
"Defines the minimum number of links that must be | description | |||
active before the aggregating link is put | "BFD hold timer."; | |||
into service."; | } | |||
} | description | |||
leaf system-priority { | "Container of micro-BFD configurations."; | |||
type uint16; | } | |||
default "32768"; | container bfd { | |||
description | if-feature "bfd"; | |||
"Indicates the LACP priority for the system. | leaf enabled { | |||
The range is from 0 to 65535. | type boolean; | |||
The default is 32768."; | default "false"; | |||
} | description | |||
container micro-bfd { | "BFD activation. By default, BFD is not | |||
if-feature "micro-bfd"; | activated."; | |||
leaf enabled { | } | |||
type enumeration { | choice holdtime { | |||
enum "on" { | default "fixed"; | |||
case profile { | ||||
leaf profile-name { | ||||
type leafref { | ||||
path "/l2vpn-svc/vpn-profiles/" | ||||
+ "valid-provider-identifiers" | ||||
+ "/bfd-profile-identifier"; | ||||
} | ||||
description | ||||
"SP well-known profile."; | ||||
} | ||||
description | ||||
"SP well-known profile."; | ||||
} | ||||
case fixed { | ||||
leaf fixed-value { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
description | ||||
"Expected hold time expressed in | ||||
milliseconds."; | ||||
} | ||||
} | ||||
description | ||||
"Choice for the hold-time flavor."; | ||||
} | ||||
description | ||||
"Container for BFD."; | ||||
} | ||||
container member-links { | ||||
list member-link { | ||||
key "name"; | ||||
leaf name { | ||||
type string; | ||||
description | ||||
"Member link name."; | ||||
} | ||||
leaf speed { | ||||
type uint32; | ||||
units "mbps"; | ||||
default "10"; | ||||
description | ||||
"Port speed."; | ||||
} | ||||
leaf mode { | ||||
type neg-mode; | ||||
default "auto-neg"; | ||||
description | ||||
"Negotiation mode."; | ||||
} | ||||
leaf link-mtu { | ||||
type uint32; | ||||
units "bytes"; | ||||
description | ||||
"Link MTU size."; | ||||
} | ||||
container oam-802.3ah-link { | ||||
if-feature "oam-3ah"; | ||||
leaf enabled { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether OAM 802.3ah links are | ||||
supported."; | ||||
} | ||||
description | ||||
"Container for OAM 802.3ah links."; | ||||
} | ||||
description | ||||
"Member link."; | ||||
} | ||||
description | ||||
"Container of the member link list."; | ||||
} | ||||
leaf flow-control { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Flow control. Indicates whether flow control | ||||
is supported."; | ||||
} | ||||
leaf lldp { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"LLDP. Indicates whether LLDP is supported."; | ||||
} | ||||
description | ||||
"LACP."; | ||||
} | ||||
description | ||||
"List of LAG interfaces."; | ||||
} | ||||
description | ||||
"Container of LAG interface attribute | ||||
configurations."; | ||||
} | ||||
list cvlan-id-to-svc-map { | ||||
key "svc-id"; | ||||
leaf svc-id { | ||||
type leafref { | ||||
path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | ||||
} | ||||
description | ||||
"VPN service identifier."; | ||||
} | ||||
list cvlan-id { | ||||
key "vid"; | ||||
leaf vid { | ||||
type uint16; | ||||
description | ||||
"CVLAN ID."; | ||||
} | ||||
description | ||||
"List of CVLAN-ID-to-SVC-map configurations."; | ||||
} | ||||
description | ||||
"List of CVLAN-ID-to-L2VPN-service-map | ||||
configurations."; | ||||
} | ||||
container l2cp-control { | ||||
if-feature "l2cp-control"; | ||||
leaf stp-rstp-mstp { | ||||
type control-mode; | ||||
description | ||||
"STP / Rapid STP (RSTP) / Multiple STP (MSTP) | ||||
protocol type applicable to all sites."; | ||||
} | ||||
leaf pause { | ||||
type control-mode; | ||||
description | ||||
"Pause protocol type applicable to all sites."; | ||||
} | ||||
leaf lacp-lamp { | ||||
type control-mode; | ||||
description | ||||
"LACP / Link Aggregation Marker Protocol (LAMP)."; | ||||
} | ||||
leaf link-oam { | ||||
type control-mode; | ||||
description | ||||
"Link OAM."; | ||||
} | ||||
leaf esmc { | ||||
type control-mode; | ||||
description | ||||
"Ethernet Synchronization Messaging Channel | ||||
(ESMC)."; | ||||
} | ||||
leaf l2cp-802.1x { | ||||
type control-mode; | ||||
description | ||||
"IEEE 802.1x."; | ||||
} | ||||
leaf e-lmi { | ||||
type control-mode; | ||||
description | ||||
"E-LMI."; | ||||
} | ||||
leaf lldp { | ||||
type boolean; | ||||
description | ||||
"LLDP protocol type applicable to all sites."; | ||||
} | ||||
leaf ptp-peer-delay { | ||||
type control-mode; | ||||
description | ||||
"Precision Time Protocol (PTP) peer delay."; | ||||
} | ||||
leaf garp-mrp { | ||||
type control-mode; | ||||
description | ||||
"GARP/MRP."; | ||||
} | ||||
description | ||||
"Container of L2CP control configurations."; | ||||
} | ||||
container oam { | ||||
if-feature "ethernet-oam"; | ||||
leaf md-name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Maintenance domain name."; | ||||
} | ||||
leaf md-level { | ||||
type uint16 { | ||||
range "0..255"; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Maintenance domain level. The level may be | ||||
restricted in certain protocols (e.g., | ||||
protocols in Layer 0 to Layer 7)."; | ||||
} | ||||
list cfm-8021-ag { | ||||
if-feature "cfm"; | ||||
key "maid"; | ||||
leaf maid { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Identifies a Maintenance Association (MA)."; | ||||
} | ||||
leaf mep-id { | ||||
type uint32; | ||||
description | ||||
"Local Maintenance Entity Group End Point (MEP) | ||||
ID. The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
leaf mep-level { | ||||
type uint32; | ||||
description | ||||
"Defines the MEP level. The non-existence of this | ||||
leaf means that no defects are to be reported."; | ||||
} | ||||
leaf mep-up-down { | ||||
type enumeration { | ||||
enum up { | ||||
description | ||||
"MEP up."; | ||||
} | ||||
enum down { | ||||
description | ||||
"MEP down."; | ||||
} | ||||
} | ||||
default "up"; | ||||
description | ||||
"MEP up/down. By default, MEP up is used. | ||||
The non-existence of this leaf means that | ||||
no defects are to be reported."; | ||||
} | ||||
leaf remote-mep-id { | ||||
type uint32; | ||||
description | ||||
"Remote MEP ID. The non-existence of this leaf | ||||
means that no defects are to be reported."; | ||||
} | ||||
leaf cos-for-cfm-pdus { | ||||
type uint32; | ||||
description | ||||
"CoS for CFM PDUs. The non-existence of this leaf | ||||
means that no defects are to be reported."; | ||||
} | ||||
leaf ccm-interval { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "10000"; | ||||
description | ||||
"CCM interval. By default, the CCM interval is | ||||
10,000 milliseconds (10 seconds)."; | ||||
} | ||||
leaf ccm-holdtime { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "35000"; | ||||
description | ||||
"CCM hold time. By default, the CCM hold time | ||||
is 3.5 times the CCM interval."; | ||||
} | ||||
leaf alarm-priority-defect { | ||||
type identityref { | ||||
base fault-alarm-defect-type; | ||||
} | ||||
default "remote-invalid-ccm"; | ||||
description | ||||
"The lowest-priority defect that is | ||||
allowed to generate a fault alarm. By default, | ||||
'fault-alarm-defect-type' is set to | ||||
'remote-invalid-ccm'. The non-existence of | ||||
this leaf means that no defects are | ||||
to be reported."; | ||||
} | ||||
leaf ccm-p-bits-pri { | ||||
type ccm-priority-type; | ||||
description | ||||
"The priority parameter for CCMs transmitted by | ||||
the MEP. The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
description | ||||
"List of 802.1ag CFM attributes."; | ||||
} | ||||
list y-1731 { | ||||
if-feature "y-1731"; | ||||
key "maid"; | ||||
leaf maid { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Identifies an MA."; | ||||
} | ||||
leaf mep-id { | ||||
type uint32; | ||||
description | ||||
"Local MEP ID. The non-existence of this leaf | ||||
means that no measurements are to be reported."; | ||||
} | ||||
leaf type { | ||||
type identityref { | ||||
base pm-type; | ||||
} | ||||
default "delay"; | ||||
description | ||||
"Performance-monitoring types. By default, the | ||||
performance-monitoring type is set to 'delay'. | ||||
The non-existence of this leaf means that no | ||||
measurements are to be reported."; | ||||
} | ||||
leaf remote-mep-id { | ||||
type uint32; | ||||
description | ||||
"Remote MEP ID. The non-existence of this | ||||
leaf means that no measurements are to be | ||||
reported."; | ||||
} | ||||
leaf message-period { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "10000"; | ||||
description | ||||
"Defines the interval between Y.1731 | ||||
performance-monitoring messages. The message | ||||
period is expressed in milliseconds."; | ||||
} | ||||
leaf measurement-interval { | ||||
type uint32; | ||||
units "seconds"; | ||||
description | ||||
"Specifies the measurement interval for | ||||
statistics. The measurement interval is | ||||
expressed in seconds."; | ||||
} | ||||
leaf cos { | ||||
type uint32; | ||||
description | ||||
"CoS. The non-existence of this leaf means that | ||||
no measurements are to be reported."; | ||||
} | ||||
leaf loss-measurement { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable loss | ||||
measurement. By default, loss | ||||
measurement is not enabled."; | ||||
} | ||||
leaf synthetic-loss-measurement { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable synthetic loss | ||||
measurement. By default, synthetic loss | ||||
measurement is not enabled."; | ||||
} | ||||
container delay-measurement { | ||||
leaf enable-dm { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable delay | ||||
measurement. By default, delay measurement | ||||
is not enabled."; | ||||
} | ||||
leaf two-way { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether delay measurement is two-way | ||||
('true') or one-way ('false'). By default, | ||||
one-way measurement is enabled."; | ||||
} | ||||
description | ||||
"Container for delay measurement."; | ||||
} | ||||
leaf frame-size { | ||||
type uint32; | ||||
units "bytes"; | ||||
description | ||||
"Frame size. The non-existence of this leaf | ||||
means that no measurements are to be reported."; | ||||
} | ||||
leaf session-type { | ||||
type enumeration { | ||||
enum proactive { | ||||
description | ||||
"Proactive mode."; | ||||
} | ||||
enum on-demand { | ||||
description | ||||
"On-demand mode."; | ||||
} | ||||
} | ||||
default "on-demand"; | ||||
description | ||||
"Session type. By default, the session type | ||||
is 'on-demand'. The non-existence of this | ||||
leaf means that no measurements are to be | ||||
reported."; | ||||
} | ||||
description | ||||
"List of configured Y-1731 instances."; | ||||
} | ||||
description | ||||
"Container for Ethernet Service OAM."; | ||||
} | ||||
description | description | |||
"Micro-bfd on."; | "Container for connection requirements."; | |||
} | } | |||
enum "off" { | container availability { | |||
leaf access-priority { | ||||
type uint32; | ||||
default "100"; | ||||
description | ||||
"Access priority. The higher the access-priority | ||||
value, the higher the preference will be for the | ||||
access in question."; | ||||
} | ||||
choice redundancy-mode { | ||||
case single-active { | ||||
leaf single-active { | ||||
type empty; | ||||
description | ||||
"Single-active mode."; | ||||
} | ||||
description | ||||
"In single-active mode, only one node forwards | ||||
traffic to and from the Ethernet segment."; | ||||
} | ||||
case all-active { | ||||
leaf all-active { | ||||
type empty; | ||||
description | ||||
"All-active mode."; | ||||
} | ||||
description | ||||
"In all-active mode, all nodes can forward | ||||
traffic."; | ||||
} | ||||
description | ||||
"Redundancy mode choice."; | ||||
} | ||||
description | description | |||
"Micro-bfd off."; | "Container of available optional configurations."; | |||
} | } | |||
} | container vpn-attachment { | |||
default "off"; | choice attachment-flavor { | |||
description | case vpn-id { | |||
"Micro-BFD on/off. By default, micro-BFD | leaf vpn-id { | |||
is set to 'off'."; | type leafref { | |||
} | path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | |||
leaf interval { | } | |||
type uint32; | description | |||
units "milliseconds"; | "Reference to an L2VPN. Referencing a vpn-id | |||
description | provides an easy way to attach a particular | |||
"BFD interval."; | logical access to a VPN. In this case, | |||
} | the vpn-id must be configured."; | |||
leaf hold-timer { | } | |||
type uint32; | leaf site-role { | |||
units "milliseconds"; | type identityref { | |||
description | base site-role; | |||
"BFD hold timer."; | } | |||
} | default "any-to-any-role"; | |||
description | description | |||
"Container of micro-BFD configurations."; | "Role of the site in the L2VPN. When referencing | |||
} | a vpn-id, the site-role setting must be added to | |||
container bfd { | express the role of the site in the target VPN | |||
if-feature "bfd"; | service topology."; | |||
leaf enabled { | } | |||
type boolean; | } | |||
default "false"; | case vpn-policy-id { | |||
description | leaf vpn-policy-id { | |||
"BFD activation. By default, BFD is not activated."; | type leafref { | |||
} | path "../../../../vpn-policies/vpn-policy/" | |||
choice holdtime { | + "vpn-policy-id"; | |||
default "fixed"; | } | |||
case profile { | description | |||
leaf profile-name { | "Reference to a VPN policy."; | |||
type leafref { | } | |||
path "/l2vpn-svc/vpn-profiles/" | } | |||
+ "valid-provider-identifiers" | mandatory true; | |||
+ "/bfd-profile-identifier"; | description | |||
"Choice for the VPN attachment flavor."; | ||||
} | } | |||
description | description | |||
"SP well-known profile."; | "Defines the VPN attachment of a site."; | |||
} | } | |||
description | container service { | |||
"SP well-known profile."; | container svc-bandwidth { | |||
} | if-feature "input-bw"; | |||
case fixed { | list bandwidth { | |||
leaf fixed-value { | key "direction type"; | |||
type uint32; | leaf direction { | |||
units "milliseconds"; | type identityref { | |||
base bw-direction; | ||||
} | ||||
description | ||||
"Indicates the bandwidth direction. It can be | ||||
the bandwidth download direction from the SP to | ||||
the site or the bandwidth upload direction from | ||||
the site to the SP."; | ||||
} | ||||
leaf type { | ||||
type identityref { | ||||
base bw-type; | ||||
} | ||||
description | ||||
"Bandwidth type. By default, the bandwidth type | ||||
is set to 'bw-per-cos'."; | ||||
} | ||||
leaf cos-id { | ||||
when "derived-from-or-self(../type, " | ||||
+ "'l2vpn-svc:bw-per-cos')" { | ||||
description | ||||
"Relevant when the bandwidth type is set to | ||||
'bw-per-cos'."; | ||||
} | ||||
type uint8; | ||||
description | ||||
"Identifier of the CoS, indicated by DSCP or a | ||||
CE-VLAN CoS (802.1p) value in the service frame. | ||||
If the bandwidth type is set to 'bw-per-cos', | ||||
the CoS ID MUST also be specified."; | ||||
} | ||||
leaf vpn-id { | ||||
when "derived-from-or-self(../type, " | ||||
+ "'l2vpn-svc:bw-per-svc')" { | ||||
description | ||||
"Relevant when the bandwidth type is | ||||
set as bandwidth per VPN service."; | ||||
} | ||||
type svc-id; | ||||
description | ||||
"Identifies the target VPN. If the bandwidth | ||||
type is set as bandwidth per VPN service, the | ||||
vpn-id MUST be specified."; | ||||
} | ||||
leaf cir { | ||||
type uint64; | ||||
units "bps"; | ||||
mandatory true; | ||||
description | ||||
"Committed Information Rate. The maximum number | ||||
of bits that a port can receive or send over | ||||
an interface in one second."; | ||||
} | ||||
leaf cbs { | ||||
type uint64; | ||||
units "bps"; | ||||
mandatory true; | ||||
description | ||||
"Committed Burst Size (CBS). Controls the bursty | ||||
nature of the traffic. Traffic that does not | ||||
use the configured Committed Information Rate | ||||
(CIR) accumulates credits until the credits | ||||
reach the configured CBS."; | ||||
} | ||||
leaf eir { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Excess Information Rate (EIR), i.e., excess frame | ||||
delivery allowed that is not subject to an SLA. | ||||
The traffic rate can be limited by the EIR."; | ||||
} | ||||
leaf ebs { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Excess Burst Size (EBS). The bandwidth available | ||||
for burst traffic from the EBS is subject to the | ||||
amount of bandwidth that is accumulated during | ||||
periods when traffic allocated by the EIR | ||||
policy is not used."; | ||||
} | ||||
leaf pir { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Peak Information Rate, i.e., maximum frame | ||||
delivery allowed. It is equal to or less | ||||
than the sum of the CIR and the EIR."; | ||||
} | ||||
leaf pbs { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Peak Burst Size. It is measured in bytes per | ||||
second."; | ||||
} | ||||
description | ||||
"List of bandwidth values (e.g., per CoS, | ||||
per vpn-id)."; | ||||
} | ||||
description | ||||
"From the customer site's perspective, the service | ||||
input/output bandwidth of the connection or | ||||
download/upload bandwidth from the SP/site | ||||
to the site/SP."; | ||||
} | ||||
leaf svc-mtu { | ||||
type uint16; | ||||
units "bytes"; | ||||
mandatory true; | ||||
description | ||||
"SVC MTU. It is also known as the maximum | ||||
transmission unit or maximum frame size. When | ||||
a frame is larger than the MTU, it is broken | ||||
down, or fragmented, into smaller pieces by | ||||
the network protocol to accommodate the MTU | ||||
of the network. If CsC is enabled, | ||||
the requested svc-mtu leaf will refer to the | ||||
MPLS MTU and not to the link MTU."; | ||||
} | ||||
uses site-service-qos-profile; | ||||
uses site-service-mpls; | ||||
description | description | |||
"Expected hold time expressed in milliseconds."; | "Container for services."; | |||
} | } | |||
} | uses site-bum; | |||
description | uses site-mac-loop-prevention; | |||
"Choice for the hold-time flavor."; | uses site-acl; | |||
} | container mac-addr-limit { | |||
description | if-feature "mac-addr-limit"; | |||
"Container for BFD."; | leaf limit-number { | |||
} | type uint16; | |||
container member-links { | default "2"; | |||
list member-link { | description | |||
key "name"; | "Maximum number of MAC addresses learned from | |||
leaf name { | the subscriber for a single service instance. | |||
type string; | The default allowed maximum number of MAC | |||
description | addresses is 2."; | |||
"Member link name."; | } | |||
} | leaf time-interval { | |||
leaf speed { | type uint32; | |||
type uint32; | units "seconds"; | |||
units "mbps"; | default "300"; | |||
default "10"; | description | |||
description | "The aging time of the MAC address. By default, | |||
"Port speed."; | the aging time is set to 300 seconds."; | |||
} | } | |||
leaf mode { | leaf action { | |||
type neg-mode; | type identityref { | |||
default "auto-neg"; | base mac-action; | |||
description | } | |||
"Negotiation mode."; | default "warning"; | |||
} | description | |||
leaf link-mtu { | "Specifies the action taken when the upper limit is | |||
type uint32; | exceeded: drop the packet, flood the packet, or | |||
units "bytes"; | simply send a warning log message. By default, | |||
description | the action is set to 'warning'."; | |||
"Link MTU size."; | } | |||
} | ||||
container oam-802.3ah-link { | ||||
if-feature "oam-3ah"; | ||||
leaf enabled { | ||||
type boolean; | ||||
default "false"; | ||||
description | description | |||
"Indicates whether OAM 802.3ah links are supported."; | "Container of MAC address limit configurations."; | |||
} | ||||
description | ||||
"Container for OAM 802.3ah links."; | ||||
} | ||||
description | ||||
"Member link."; | ||||
} | ||||
description | ||||
"Container of the member link list."; | ||||
} | ||||
leaf flow-control { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Flow control. Indicates whether flow control is | ||||
supported."; | ||||
} | ||||
leaf lldp { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"LLDP. Indicates whether LLDP is supported."; | ||||
} | ||||
description | ||||
"LACP."; | ||||
} | ||||
description | ||||
"List of LAG interfaces."; | ||||
} | ||||
description | ||||
"Container of LAG interface attribute configurations."; | ||||
} | ||||
list cvlan-id-to-svc-map { | ||||
key "svc-id"; | ||||
leaf svc-id { | ||||
type leafref { | ||||
path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | ||||
} | ||||
description | ||||
"VPN service identifier."; | ||||
} | ||||
list cvlan-id { | ||||
key "vid"; | ||||
leaf vid { | ||||
type uint16; | ||||
description | ||||
"CVLAN ID."; | ||||
} | ||||
description | ||||
"List of CVLAN-ID-to-SVC-map configurations."; | ||||
} | ||||
description | ||||
"List of CVLAN-ID-to-L2VPN-service-map configurations."; | ||||
} | ||||
container l2cp-control { | ||||
if-feature "l2cp-control"; | ||||
leaf stp-rstp-mstp { | ||||
type control-mode; | ||||
description | ||||
"STP / Rapid STP (RSTP) / Multiple STP (MSTP) protocol type | ||||
applicable to all sites."; | ||||
} | ||||
leaf pause { | ||||
type control-mode; | ||||
description | ||||
"Pause protocol type applicable to all sites."; | ||||
} | ||||
leaf lacp-lamp { | ||||
type control-mode; | ||||
description | ||||
"LACP / Link Aggregation Marker Protocol (LAMP)."; | ||||
} | ||||
leaf link-oam { | ||||
type control-mode; | ||||
description | ||||
"Link OAM."; | ||||
} | ||||
leaf esmc { | ||||
type control-mode; | ||||
description | ||||
"Ethernet Synchronization Messaging Channel (ESMC)."; | ||||
} | ||||
leaf l2cp-802.1x { | ||||
type control-mode; | ||||
description | ||||
"IEEE 802.1x."; | ||||
} | ||||
leaf e-lmi { | ||||
type control-mode; | ||||
description | ||||
"E-LMI."; | ||||
} | ||||
leaf lldp { | ||||
type boolean; | ||||
description | ||||
"LLDP protocol type applicable to all sites."; | ||||
} | ||||
leaf ptp-peer-delay { | ||||
type control-mode; | ||||
description | ||||
"Precision Time Protocol (PTP) peer delay."; | ||||
} | ||||
leaf garp-mrp { | ||||
type control-mode; | ||||
description | ||||
"GARP/MRP."; | ||||
} | ||||
description | ||||
"Container of L2CP control configurations."; | ||||
} | ||||
container oam { | ||||
if-feature "ethernet-oam"; | ||||
leaf md-name { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Maintenance domain name."; | ||||
} | ||||
leaf md-level { | ||||
type uint16 { | ||||
range "0..255"; | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Maintenance domain level. The level may be | ||||
restricted in certain protocols (e.g., | ||||
protocols in Layer 0 to Layer 7)."; | ||||
} | ||||
list cfm-8021-ag { | ||||
if-feature "cfm"; | ||||
key "maid"; | ||||
leaf maid { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Identifies a Maintenance Association (MA)."; | ||||
} | ||||
leaf mep-id { | ||||
type uint32; | ||||
description | ||||
"Local Maintenance Entity Group End Point (MEP) ID. | ||||
The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
leaf mep-level { | ||||
type uint32; | ||||
description | ||||
"Defines the MEP level. The non-existence of this leaf | ||||
means that no defects are to be reported."; | ||||
} | ||||
leaf mep-up-down { | ||||
type enumeration { | ||||
enum "up" { | ||||
description | ||||
"MEP up."; | ||||
} | ||||
enum "down" { | ||||
description | ||||
"MEP down."; | ||||
} | ||||
} | ||||
default "up"; | ||||
description | ||||
"MEP up/down. By default, MEP up is used. | ||||
The non-existence of this leaf means that | ||||
no defects are to be reported."; | ||||
} | ||||
leaf remote-mep-id { | ||||
type uint32; | ||||
description | ||||
"Remote MEP ID. The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
leaf cos-for-cfm-pdus { | ||||
type uint32; | ||||
description | ||||
"CoS for CFM PDUs. The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
leaf ccm-interval { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "10000"; | ||||
description | ||||
"CCM interval. By default, the CCM interval is | ||||
10,000 milliseconds (10 seconds)."; | ||||
} | ||||
leaf ccm-holdtime { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "35000"; | ||||
description | ||||
"CCM hold time. By default, the CCM hold time | ||||
is 3.5 times the CCM interval."; | ||||
} | ||||
leaf alarm-priority-defect { | ||||
type identityref { | ||||
base fault-alarm-defect-type; | ||||
} | ||||
default "remote-invalid-ccm"; | ||||
description | ||||
"The lowest-priority defect that is | ||||
allowed to generate a fault alarm. By default, | ||||
'fault-alarm-defect-type' is set to 'remote-invalid-ccm'. | ||||
The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
leaf ccm-p-bits-pri { | ||||
type ccm-priority-type; | ||||
description | ||||
"The priority parameter for CCMs transmitted by the MEP. | ||||
The non-existence of this leaf means | ||||
that no defects are to be reported."; | ||||
} | ||||
description | ||||
"List of 802.1ag CFM attributes."; | ||||
} | ||||
list y-1731 { | ||||
if-feature "y-1731"; | ||||
key "maid"; | ||||
leaf maid { | ||||
type string; | ||||
mandatory true; | ||||
description | ||||
"Identifies an MA."; | ||||
} | ||||
leaf mep-id { | ||||
type uint32; | ||||
description | ||||
"Local MEP ID. The non-existence of this leaf | ||||
means that no measurements are to be reported."; | ||||
} | ||||
leaf type { | ||||
type identityref { | ||||
base pm-type; | ||||
} | ||||
default "delay"; | ||||
description | ||||
"Performance-monitoring types. By default, the | ||||
performance-monitoring type is set to 'delay'. | ||||
The non-existence of this leaf means that no | ||||
measurements are to be reported."; | ||||
} | ||||
leaf remote-mep-id { | ||||
type uint32; | ||||
description | ||||
"Remote MEP ID. The non-existence of this | ||||
leaf means that no measurements are to be | ||||
reported."; | ||||
} | ||||
leaf message-period { | ||||
type uint32; | ||||
units "milliseconds"; | ||||
default "10000"; | ||||
description | ||||
"Defines the interval between Y.1731 | ||||
performance-monitoring messages. The message | ||||
period is expressed in milliseconds."; | ||||
} | ||||
leaf measurement-interval { | ||||
type uint32; | ||||
units "seconds"; | ||||
description | ||||
"Specifies the measurement interval for statistics. | ||||
The measurement interval is expressed in seconds."; | ||||
} | ||||
leaf cos { | ||||
type uint32; | ||||
description | ||||
"CoS. The non-existence of this leaf means that | ||||
no measurements are to be reported."; | ||||
} | ||||
leaf loss-measurement { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable loss measurement. | ||||
By default, loss measurement is not enabled."; | ||||
} | ||||
leaf synthetic-loss-measurement { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable synthetic loss | ||||
measurement. By default, synthetic loss | ||||
measurement is not enabled."; | ||||
} | ||||
container delay-measurement { | ||||
leaf enable-dm { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether or not to enable delay measurement. | ||||
By default, delay measurement is not enabled."; | ||||
} | ||||
leaf two-way { | ||||
type boolean; | ||||
default "false"; | ||||
description | ||||
"Indicates whether delay measurement is two-way ('true') | ||||
or one-way ('false'). By default, one-way measurement | ||||
is enabled."; | ||||
} | ||||
description | ||||
"Container for delay measurement."; | ||||
} | ||||
leaf frame-size { | ||||
type uint32; | ||||
units "bytes"; | ||||
description | ||||
"Frame size. The non-existence of this leaf means | ||||
that no measurements are to be reported."; | ||||
} | ||||
leaf session-type { | ||||
type enumeration { | ||||
enum "proactive" { | ||||
description | ||||
"Proactive mode."; | ||||
} | ||||
enum "on-demand" { | ||||
description | ||||
"On-demand mode."; | ||||
} | ||||
} | ||||
default "on-demand"; | ||||
description | ||||
"Session type. By default, the session type is | ||||
'on-demand'. The non-existence of this leaf means | ||||
that no measurements are to be reported."; | ||||
} | ||||
description | ||||
"List of configured Y-1731 instances."; | ||||
} | ||||
description | ||||
"Container for Ethernet Service OAM."; | ||||
} | ||||
description | ||||
"Container for connection requirements."; | ||||
} | ||||
container availability { | ||||
leaf access-priority { | ||||
type uint32; | ||||
default "100"; | ||||
description | ||||
"Access priority. The higher the access-priority value, | ||||
the higher the preference will be for the access | ||||
in question."; | ||||
} | ||||
choice redundancy-mode { | ||||
case single-active { | ||||
leaf single-active { | ||||
type empty; | ||||
description | ||||
"Single-active mode."; | ||||
} | ||||
description | ||||
"In single-active mode, only one node forwards traffic | ||||
to and from the Ethernet segment."; | ||||
} | ||||
case all-active { | ||||
leaf all-active { | ||||
type empty; | ||||
description | ||||
"All-active mode."; | ||||
} | ||||
description | ||||
"In all-active mode, all nodes can forward traffic."; | ||||
} | ||||
description | ||||
"Redundancy mode choice."; | ||||
} | ||||
description | ||||
"Container of available optional configurations."; | ||||
} | ||||
container vpn-attachment { | ||||
choice attachment-flavor { | ||||
case vpn-id { | ||||
leaf vpn-id { | ||||
type leafref { | ||||
path "/l2vpn-svc/vpn-services/vpn-service/vpn-id"; | ||||
} | ||||
description | ||||
"Reference to an L2VPN. Referencing a vpn-id provides | ||||
an easy way to attach a particular logical access to | ||||
a VPN. In this case, the vpn-id must be configured."; | ||||
} | ||||
leaf site-role { | ||||
type identityref { | ||||
base site-role; | ||||
} | ||||
default "any-to-any-role"; | ||||
description | ||||
"Role of the site in the L2VPN. When referencing a | ||||
vpn-id, the site-role setting must be added to express | ||||
the role of the site in the target VPN service | ||||
topology."; | ||||
} | ||||
} | ||||
case vpn-policy-id { | ||||
leaf vpn-policy-id { | ||||
type leafref { | ||||
path "../../../../vpn-policies/vpn-policy/vpn-policy-id"; | ||||
} | } | |||
description | description | |||
"Reference to a VPN policy."; | ||||
} | ||||
} | ||||
mandatory true; | ||||
description | ||||
"Choice for the VPN attachment flavor."; | ||||
} | ||||
description | ||||
"Defines the VPN attachment of a site."; | ||||
} | ||||
container service { | ||||
container svc-bandwidth { | ||||
if-feature "input-bw"; | ||||
list bandwidth { | ||||
key "direction type"; | ||||
leaf direction { | ||||
type identityref { | ||||
base bw-direction; | ||||
} | ||||
description | ||||
"Indicates the bandwidth direction. It can be | ||||
the bandwidth download direction from the SP to the site | ||||
or the bandwidth upload direction from the site to | ||||
the SP."; | ||||
} | ||||
leaf type { | ||||
type identityref { | ||||
base bw-type; | ||||
} | ||||
description | ||||
"Bandwidth type. By default, the bandwidth type is set | ||||
to 'bw-per-cos'."; | ||||
} | ||||
leaf cos-id { | ||||
when "derived-from-or-self(../type, 'l2vpn-svc:bw-per-cos')" { | ||||
description | ||||
"Relevant when the bandwidth type is set to | ||||
'bw-per-cos'."; | ||||
} | ||||
type uint8; | ||||
description | ||||
"Identifier of the CoS, indicated by DSCP or a | ||||
CE-VLAN CoS (802.1p) value in the service frame. | ||||
If the bandwidth type is set to 'bw-per-cos', | ||||
the CoS ID MUST also be specified."; | ||||
} | ||||
leaf vpn-id { | ||||
when "derived-from-or-self(../type, " | ||||
+ "'l2vpn-svc:bw-per-svc')" { | ||||
description | ||||
"Relevant when the bandwidth type is | ||||
set as bandwidth per VPN service."; | ||||
} | ||||
type svc-id; | ||||
description | ||||
"Identifies the target VPN. If the bandwidth | ||||
type is set as bandwidth per VPN service, the | ||||
vpn-id MUST be specified."; | ||||
} | ||||
leaf cir { | ||||
type uint64; | ||||
units "bps"; | ||||
mandatory true; | ||||
description | ||||
"Committed Information Rate. The maximum number of | ||||
bits that a port can receive or send over an interface | ||||
in one second."; | ||||
} | ||||
leaf cbs { | ||||
type uint64; | ||||
units "bps"; | ||||
mandatory true; | ||||
description | ||||
"Committed Burst Size (CBS). Controls the bursty nature | ||||
of the traffic. Traffic that does not use the | ||||
configured Committed Information Rate (CIR) accumulates | ||||
credits until the credits reach the configured CBS."; | ||||
} | ||||
leaf eir { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Excess Information Rate (EIR), i.e., excess frame | ||||
delivery allowed that is not subject to an SLA. | ||||
The traffic rate can be limited by the EIR."; | ||||
} | ||||
leaf ebs { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Excess Burst Size (EBS). The bandwidth available for | ||||
burst traffic from the EBS is subject to the amount of | ||||
bandwidth that is accumulated during periods when | ||||
traffic allocated by the EIR policy is not used."; | ||||
} | ||||
leaf pir { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Peak Information Rate, i.e., maximum frame delivery | ||||
allowed. It is equal to or less than the sum of | ||||
the CIR and the EIR."; | ||||
} | ||||
leaf pbs { | ||||
type uint64; | ||||
units "bps"; | ||||
description | ||||
"Peak Burst Size. It is measured in bytes per second."; | ||||
} | ||||
description | ||||
"List of bandwidth values (e.g., per CoS, per vpn-id)."; | ||||
} | ||||
description | ||||
"From the customer site's perspective, the service | ||||
input/output bandwidth of the connection or download/upload | ||||
bandwidth from the SP/site to the site/SP."; | ||||
} | ||||
leaf svc-mtu { | ||||
type uint16; | ||||
units "bytes"; | ||||
mandatory true; | ||||
description | ||||
"SVC MTU. It is also known as the maximum transmission unit | ||||
or maximum frame size. When a frame is larger than the MTU, | ||||
it is broken down, or fragmented, into smaller pieces by the | ||||
network protocol to accommodate the MTU of the network. | ||||
If CsC is enabled, the requested svc-mtu leaf will refer to | ||||
the MPLS MTU and not to the link MTU."; | ||||
} | ||||
uses site-service-qos-profile; | ||||
uses site-service-mpls; | ||||
description | ||||
"Container for services."; | ||||
} | ||||
uses site-bum; | ||||
uses site-mac-loop-prevention; | ||||
uses site-acl; | ||||
container mac-addr-limit { | ||||
if-feature "mac-addr-limit"; | ||||
leaf limit-number { | ||||
type uint16; | ||||
default "2"; | ||||
description | ||||
"Maximum number of MAC addresses learned from | ||||
the subscriber for a single service instance. | ||||
The default allowed maximum number of MAC | ||||
addresses is 2."; | ||||
} | ||||
leaf time-interval { | ||||
type uint32; | ||||
units "seconds"; | ||||
default "300"; | ||||
description | ||||
"The aging time of the MAC address. By default, | ||||
the aging time is set to 300 seconds."; | ||||
} | ||||
leaf action { | ||||
type identityref { | ||||
base mac-action; | ||||
} | ||||
default "warning"; | ||||
description | ||||
"Specifies the action taken when the upper limit is | ||||
exceeded: drop the packet, flood the packet, or | ||||
simply send a warning log message. By default, | ||||
the action is set to 'warning'."; | ||||
} | ||||
description | ||||
"Container of MAC address limit configurations."; | ||||
} | ||||
description | ||||
"List of site network accesses."; | "List of site network accesses."; | |||
} | } | |||
description | description | |||
"Container of port configurations."; | "Container of port configurations."; | |||
} | } | |||
description | description | |||
"List of sites."; | "List of sites."; | |||
} | } | |||
description | description | |||
"Container of site configurations."; | "Container of site configurations."; | |||
End of changes. 94 change blocks. | ||||
1522 lines changed or deleted | 1555 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |