summaryrefslogtreecommitdiffstats
path: root/yang
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--yang/confd/confd.frr-ripd.yang24
-rw-r--r--yang/confd/confd.frr-ripngd.yang24
-rw-r--r--yang/frr-bgp-route-map.yang104
-rw-r--r--yang/frr-isisd.yang4
-rw-r--r--yang/frr-ospf-route-map.yang2
-rw-r--r--yang/frr-ospf6-route-map.yang2
-rw-r--r--yang/frr-route-map.yang2
-rw-r--r--yang/frr-test-module.yang17
-rw-r--r--yang/frr-zebra.yang14
-rw-r--r--yang/ietf/frr-deviations-ietf-key-chain.yang29
-rw-r--r--yang/ietf/frr-deviations-ietf-routing.yang3
-rw-r--r--yang/ietf/ietf-key-chain.yang382
-rw-r--r--yang/subdir.am29
13 files changed, 499 insertions, 137 deletions
diff --git a/yang/confd/confd.frr-ripd.yang b/yang/confd/confd.frr-ripd.yang
deleted file mode 100644
index 7bbe54c..0000000
--- a/yang/confd/confd.frr-ripd.yang
+++ /dev/null
@@ -1,24 +0,0 @@
-module confd.frr-ripd {
- namespace "urn:dummy";
- prefix "dummy";
-
- import tailf-common {
- prefix tailf;
- }
- import frr-ripd {
- prefix frr-ripd;
- }
-
- tailf:annotate-module "frr-ripd" {
- tailf:annotate-statement "container[name='ripd']" {
- tailf:annotate-statement "list[name='instance']" {
- tailf:annotate-statement "container[name='state']" {
- tailf:callpoint "state";
- }
- }
- }
- tailf:annotate-statement "rpc[name='clear-rip-route']" {
- tailf:actionpoint "actionpoint";
- }
- }
-}
diff --git a/yang/confd/confd.frr-ripngd.yang b/yang/confd/confd.frr-ripngd.yang
deleted file mode 100644
index 83383fb..0000000
--- a/yang/confd/confd.frr-ripngd.yang
+++ /dev/null
@@ -1,24 +0,0 @@
-module confd.frr-ripngd {
- namespace "urn:dummy";
- prefix "dummy";
-
- import tailf-common {
- prefix tailf;
- }
- import frr-ripngd {
- prefix frr-ripngd;
- }
-
- tailf:annotate-module "frr-ripngd" {
- tailf:annotate-statement "container[name='ripngd']" {
- tailf:annotate-statement "list[name='instance']" {
- tailf:annotate-statement "container[name='state']" {
- tailf:callpoint "state";
- }
- }
- }
- tailf:annotate-statement "rpc[name='clear-ripng-route']" {
- tailf:actionpoint "actionpoint";
- }
- }
-}
diff --git a/yang/frr-bgp-route-map.yang b/yang/frr-bgp-route-map.yang
index c679f3b..abfb14c 100644
--- a/yang/frr-bgp-route-map.yang
+++ b/yang/frr-bgp-route-map.yang
@@ -542,7 +542,7 @@ identity set-extcommunity-color {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:rmap-match-condition/frr-route-map:match-condition" {
case local-preference {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-local-preference')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-local-preference')";
leaf local-preference {
type uint32 {
range "0..4294967295";
@@ -551,21 +551,21 @@ identity set-extcommunity-color {
}
case alias {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-alias')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-alias')";
leaf alias {
type string;
}
}
case script {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-script')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-script')";
leaf script {
type string;
}
}
case origin {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-origin')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-origin')";
leaf origin {
type enumeration {
enum "egp" {
@@ -588,7 +588,7 @@ identity set-extcommunity-color {
}
case rpki {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:rpki')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:rpki')";
leaf rpki {
type enumeration {
enum "invalid" {
@@ -634,7 +634,7 @@ identity set-extcommunity-color {
}
case probability {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:probability')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:probability')";
leaf probability {
type uint8 {
range "0..100";
@@ -643,14 +643,14 @@ identity set-extcommunity-color {
}
case source-vrf {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:source-vrf')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:source-vrf')";
leaf source-vrf {
type string;
}
}
case peer {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:peer')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:peer')";
choice peer {
description
"Value of the peer";
@@ -689,10 +689,10 @@ identity set-extcommunity-color {
}
case access-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:mac-address-list') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:as-path-list') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source-prefix-list')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:mac-address-list') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:as-path-list') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:ip-route-source') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:ip-route-source-prefix-list')";
description
"Access-list name";
leaf list-name {
@@ -701,7 +701,7 @@ identity set-extcommunity-color {
}
case evpn-default-route {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-default-route')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:evpn-default-route')";
description
"Match default EVPN type-5 route";
leaf evpn-default-route {
@@ -710,7 +710,7 @@ identity set-extcommunity-color {
}
case evpn-vni {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-vni')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:evpn-vni')";
description
"Match eVPN VNI";
leaf evpn-vni {
@@ -721,7 +721,7 @@ identity set-extcommunity-color {
}
case evpn-route-type {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-route-type')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:evpn-route-type')";
description
"Match eVPN route-type";
leaf evpn-route-type {
@@ -756,7 +756,7 @@ identity set-extcommunity-color {
}
case evpn-rd {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-rd')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:evpn-rd')";
description
"Match eVPN route-distinguisher";
leaf route-distinguisher {
@@ -765,9 +765,9 @@ identity set-extcommunity-color {
}
case comm-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-community') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-large-community') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-extcommunity')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-community') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-large-community') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:match-extcommunity')";
container comm-list {
leaf comm-list-name {
mandatory true;
@@ -790,7 +790,7 @@ identity set-extcommunity-color {
}
case ipv4-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv4-nexthop')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:ipv4-nexthop')";
leaf ipv4-address {
type inet:ipv4-address;
description
@@ -799,7 +799,7 @@ identity set-extcommunity-color {
}
case ipv6-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv6-nexthop')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-bgp-route-map:ipv6-nexthop')";
leaf ipv6-address {
type inet:ipv6-address;
description
@@ -817,7 +817,7 @@ identity set-extcommunity-color {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" {
case distance {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:distance')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:distance')";
leaf distance {
type uint8 {
range "1..255";
@@ -826,7 +826,7 @@ identity set-extcommunity-color {
}
case extcommunity-none {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-none')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-none')";
description
"Value of the BGP extended community attribute";
leaf extcommunity-none {
@@ -836,7 +836,7 @@ identity set-extcommunity-color {
}
case extcommunity-rt {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-rt')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-rt')";
description
"Value of the ext-community";
leaf extcommunity-rt {
@@ -858,7 +858,7 @@ identity set-extcommunity-color {
}
case extcommunity-soo {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-soo')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-soo')";
description
"Value of the ext-community";
leaf extcommunity-soo {
@@ -869,7 +869,7 @@ identity set-extcommunity-color {
}
case extcommunity-lb {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-lb')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-lb')";
container extcommunity-lb {
description
"Value of the ext-community.";
@@ -881,9 +881,7 @@ identity set-extcommunity-color {
leaf bandwidth {
when "../lb-type = 'explicit-bandwidth'";
mandatory true;
- type uint16 {
- range "1..25600";
- }
+ type uint32;
description
"Bandwidth value in Mbps";
}
@@ -892,7 +890,7 @@ identity set-extcommunity-color {
}
case extcommunity-color {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-color')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-color')";
description
"Value of the ext-community";
leaf extcommunity-color {
@@ -905,7 +903,7 @@ identity set-extcommunity-color {
}
case ipv4-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv4-vpn-address')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:ipv4-vpn-address')";
description
"Set the IPv4 address";
leaf ipv4-address {
@@ -914,15 +912,15 @@ identity set-extcommunity-color {
}
case ipv4-nexthop {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-ipv4-nexthop')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-ipv4-nexthop')";
leaf ipv4-nexthop {
type string;
}
}
case ipv6-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-nexthop-global') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-vpn-address')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:ipv6-nexthop-global') or "
+ + "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:ipv6-vpn-address')";
description
"Set the IPv6 address";
leaf ipv6-address {
@@ -931,15 +929,15 @@ identity set-extcommunity-color {
}
case preference {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-prefer-global') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-peer-address')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:ipv6-prefer-global') or "
+ + "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:ipv6-peer-address')";
leaf preference {
type boolean;
}
}
case label-index {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:label-index')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:label-index')";
leaf label-index {
type uint32 {
range "0..1048560";
@@ -948,14 +946,14 @@ identity set-extcommunity-color {
}
case local-pref {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-local-preference')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-local-preference')";
leaf local-pref {
type string;
}
}
case weight {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:weight')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:weight')";
leaf weight {
type uint32 {
range "0..4294967295";
@@ -964,7 +962,7 @@ identity set-extcommunity-color {
}
case origin {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-origin')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-origin')";
leaf origin {
type enumeration {
enum "egp" {
@@ -987,14 +985,14 @@ identity set-extcommunity-color {
}
case originator-id {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:originator-id')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:originator-id')";
leaf originator-id {
type inet:ipv4-address;
}
}
case table {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:table')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:table')";
leaf table {
type uint32 {
range "1..4294967295";
@@ -1003,7 +1001,7 @@ identity set-extcommunity-color {
}
case atomic-aggregate {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:atomic-aggregate')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:atomic-aggregate')";
leaf atomic-aggregate {
type empty;
}
@@ -1019,7 +1017,7 @@ identity set-extcommunity-color {
}
case as-path-prepend {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-prepend')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:as-path-prepend')";
choice as-path-prepend {
description
"Value of the BGP AS-path attribute";
@@ -1044,7 +1042,7 @@ identity set-extcommunity-color {
}
case as-path-exclude {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-exclude')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:as-path-exclude')";
leaf exclude-as-path {
type string;
description
@@ -1053,7 +1051,7 @@ identity set-extcommunity-color {
}
case as-path-replace {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-replace')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:as-path-replace')";
leaf replace-as-path {
type string;
description
@@ -1062,7 +1060,7 @@ identity set-extcommunity-color {
}
case community {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-community')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-community')";
choice community {
description
"Value of the BGP community attribute";
@@ -1085,7 +1083,7 @@ identity set-extcommunity-color {
}
case large-community {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-large-community')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:set-large-community')";
choice large-community {
description
"Value of the BGP large-community attribute";
@@ -1108,7 +1106,7 @@ identity set-extcommunity-color {
}
case aggregator {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:aggregator')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:aggregator')";
container aggregator {
leaf aggregator-asn {
type asn-type;
@@ -1127,9 +1125,9 @@ identity set-extcommunity-color {
}
case comm-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:comm-list-delete') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:large-comm-list-delete') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action,
+ when "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:comm-list-delete') or "
+ + "derived-from-or-self(../frr-route-map:action, 'frr-bgp-route-map:large-comm-list-delete') or "
+ + "derived-from-or-self(../frr-route-map:action,
'frr-bgp-route-map:extended-comm-list-delete')";
leaf comm-list-name {
type bgp-filter:bgp-list-name;
@@ -1157,7 +1155,7 @@ identity set-extcommunity-color {
}
case l3vpn-nexthop-encapsulation {
when
- "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action,
+ "derived-from-or-self(../frr-route-map:action,
'frr-bgp-route-map:set-l3vpn-nexthop-encapsulation')";
description
"Accept L3VPN traffic over other than LSP encapsulation";
diff --git a/yang/frr-isisd.yang b/yang/frr-isisd.yang
index 5d7c739..d1a08fa 100644
--- a/yang/frr-isisd.yang
+++ b/yang/frr-isisd.yang
@@ -685,7 +685,7 @@ module frr-isisd {
type uint32 {
range "0..16777215";
}
- must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
+ must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide' or not(/frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style)";
default "10";
description
"Default level-1 metric for this IS-IS circuit.";
@@ -695,7 +695,7 @@ module frr-isisd {
type uint32 {
range "0..16777215";
}
- must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide'";
+ must ". < 64 or /frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style = 'wide' or not(/frr-isisd:isis/instance[area-tag = current()/../../area-tag]/metric-style)";
default "10";
description
"Default level-2 metric for this IS-IS circuit.";
diff --git a/yang/frr-ospf-route-map.yang b/yang/frr-ospf-route-map.yang
index ad7ba5c..6e7c85d 100644
--- a/yang/frr-ospf-route-map.yang
+++ b/yang/frr-ospf-route-map.yang
@@ -32,7 +32,7 @@ module frr-ospf-route-map {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" {
case metric-type {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'metric-type')";
+ when "derived-from-or-self(../frr-route-map:action, 'metric-type')";
leaf metric-type {
type enumeration {
enum "type-1" {
diff --git a/yang/frr-ospf6-route-map.yang b/yang/frr-ospf6-route-map.yang
index e5d4969..7e2e56d 100644
--- a/yang/frr-ospf6-route-map.yang
+++ b/yang/frr-ospf6-route-map.yang
@@ -38,7 +38,7 @@ module frr-ospf6-route-map {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" {
case ipv6-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'forwarding-address')";
+ when "derived-from-or-self(../frr-route-map:action, 'forwarding-address')";
leaf ipv6-address {
type inet:ipv6-address;
}
diff --git a/yang/frr-route-map.yang b/yang/frr-route-map.yang
index 7cb13b6..26d56ac 100644
--- a/yang/frr-route-map.yang
+++ b/yang/frr-route-map.yang
@@ -268,7 +268,7 @@ module frr-route-map {
when "derived-from-or-self(../condition, 'match-tag')";
leaf tag {
type uint32 {
- range "1..4294967295";
+ range "0..4294967295";
}
}
}
diff --git a/yang/frr-test-module.yang b/yang/frr-test-module.yang
index 6cc60e8..dcf204a 100644
--- a/yang/frr-test-module.yang
+++ b/yang/frr-test-module.yang
@@ -80,6 +80,23 @@ module frr-test-module {
}
}
}
+ action ping {
+ input {
+ leaf data {
+ type string;
+ }
+ }
+ output {
+ leaf vrf {
+ type string;
+ }
+ // can't use the same name in input and output
+ // because of a bug in libyang < 2.1.148
+ leaf data-out {
+ type string;
+ }
+ }
+ }
}
}
choice achoice {
diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang
index c338a23..79c524a 100644
--- a/yang/frr-zebra.yang
+++ b/yang/frr-zebra.yang
@@ -145,16 +145,16 @@ module frr-zebra {
"Zebra interface type bond.";
}
- identity zif-bond-slave {
+ identity zif-macvlan {
base zebra-interface-type;
description
- "Zebra interface type bond slave.";
+ "Zebra interface type macvlan.";
}
- identity zif-macvlan {
+ identity zif-gre {
base zebra-interface-type;
description
- "Zebra interface type macvlan.";
+ "Zebra interface type gre.";
}
/*
@@ -2733,6 +2733,12 @@ module frr-zebra {
description
"The VNI multicast group for BUM traffic.";
}
+
+ leaf bond {
+ type frr-interface:interface-ref;
+ description
+ "The bond interface this interface belongs to.";
+ }
}
}
}
diff --git a/yang/ietf/frr-deviations-ietf-key-chain.yang b/yang/ietf/frr-deviations-ietf-key-chain.yang
new file mode 100644
index 0000000..aa6a41f
--- /dev/null
+++ b/yang/ietf/frr-deviations-ietf-key-chain.yang
@@ -0,0 +1,29 @@
+module frr-deviations-ietf-key-chain {
+ yang-version 1.1;
+ namespace "http://frrouting.org/yang/frr-deviations-ietf-key-chain";
+ prefix frr-deviations-ietf-key-chain;
+
+ import ietf-key-chain {
+ prefix kc;
+ }
+
+ organization
+ "FRRouting";
+ contact
+ "FRR Users List: <mailto:frog@lists.frrouting.org>
+ FRR Development List: <mailto:dev@lists.frrouting.org>";
+ description
+ "This module defines deviation statements for the ietf-key-chain
+ module.";
+
+ revision 2024-03-03 {
+ description "Initial revision.";
+ reference "RFC 8177: YANG Data Model for Key Chains";
+ }
+
+ deviation /kc:key-chains/kc:key-chain/kc:key/kc:crypto-algorithm {
+ deviate replace {
+ mandatory false;
+ }
+ }
+}
diff --git a/yang/ietf/frr-deviations-ietf-routing.yang b/yang/ietf/frr-deviations-ietf-routing.yang
index 15ceb6b..5c0ae30 100644
--- a/yang/ietf/frr-deviations-ietf-routing.yang
+++ b/yang/ietf/frr-deviations-ietf-routing.yang
@@ -6,6 +6,9 @@ module frr-deviations-ietf-routing {
import ietf-routing {
prefix ietf-routing;
}
+ import ietf-rip {
+ prefix ietf-rip;
+ }
organization
"FRRouting";
diff --git a/yang/ietf/ietf-key-chain.yang b/yang/ietf/ietf-key-chain.yang
new file mode 100644
index 0000000..445d199
--- /dev/null
+++ b/yang/ietf/ietf-key-chain.yang
@@ -0,0 +1,382 @@
+module ietf-key-chain {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-key-chain";
+ prefix key-chain;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import ietf-netconf-acm {
+ prefix nacm;
+ }
+
+ organization
+ "IETF RTGWG - Routing Area Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/group/rtgwg>
+ WG List: <mailto:rtgwg@ietf.org>
+
+ Editor: Acee Lindem
+ <mailto:acee@cisco.com>
+ Yingzhen Qu
+ <mailto:yingzhen.qu@huawei.com>
+ Derek Yeung
+ <mailto:derek@arrcus.com>
+ Ing-Wher Chen
+ <mailto:Ing-Wher_Chen@jabail.com>
+ Jeffrey Zhang
+ <mailto:zzhang@juniper.net>";
+
+ description
+ "This YANG module defines the generic configuration
+ data for key chains. It is intended that the module
+ will be extended by vendors to define vendor-specific
+ key chain configuration parameters.
+
+ Copyright (c) 2017 IETF Trust and the persons identified as
+ authors of the code. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or
+ without modification, is permitted pursuant to, and subject
+ to the license terms contained in, the Simplified BSD License
+ set forth in Section 4.c of the IETF Trust's Legal Provisions
+ Relating to IETF Documents
+ (http://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8177;
+ see the RFC itself for full legal notices.";
+
+ reference "RFC 8177";
+
+ revision 2017-06-15 {
+ description
+ "Initial RFC Revision";
+ reference "RFC 8177: YANG Data Model for Key Chains";
+ }
+
+ feature hex-key-string {
+ description
+ "Support hexadecimal key string.";
+ }
+
+ feature accept-tolerance {
+ description
+ "Support the tolerance or acceptance limit.";
+ }
+
+ feature independent-send-accept-lifetime {
+ description
+ "Support for independent send and accept key lifetimes.";
+ }
+
+ feature crypto-hmac-sha-1-12 {
+ description
+ "Support for TCP HMAC-SHA-1 12-byte digest hack.";
+ }
+
+ feature cleartext {
+ description
+ "Support for cleartext algorithm. Usage is
+ NOT RECOMMENDED.";
+ }
+
+ feature aes-cmac-prf-128 {
+ description
+ "Support for AES Cipher-based Message Authentication
+ Code Pseudorandom Function.";
+ }
+
+ feature aes-key-wrap {
+ description
+ "Support for Advanced Encryption Standard (AES) Key Wrap.";
+ }
+
+ feature replay-protection-only {
+ description
+ "Provide replay protection without any authentication
+ as required by protocols such as Bidirectional
+ Forwarding Detection (BFD).";
+ }
+ identity crypto-algorithm {
+ description
+ "Base identity of cryptographic algorithm options.";
+ }
+
+ identity hmac-sha-1-12 {
+ base crypto-algorithm;
+ if-feature "crypto-hmac-sha-1-12";
+ description
+ "The HMAC-SHA1-12 algorithm.";
+ }
+
+ identity aes-cmac-prf-128 {
+ base crypto-algorithm;
+ if-feature "aes-cmac-prf-128";
+ description
+ "The AES-CMAC-PRF-128 algorithm - required by
+ RFC 5926 for TCP-AO key derivation functions.";
+ }
+
+ identity md5 {
+ base crypto-algorithm;
+ description
+ "The MD5 algorithm.";
+ }
+
+ identity sha-1 {
+ base crypto-algorithm;
+ description
+ "The SHA-1 algorithm.";
+ }
+
+ identity hmac-sha-1 {
+ base crypto-algorithm;
+ description
+ "HMAC-SHA-1 authentication algorithm.";
+ }
+
+ identity hmac-sha-256 {
+ base crypto-algorithm;
+ description
+ "HMAC-SHA-256 authentication algorithm.";
+ }
+
+ identity hmac-sha-384 {
+ base crypto-algorithm;
+ description
+ "HMAC-SHA-384 authentication algorithm.";
+ }
+
+ identity hmac-sha-512 {
+ base crypto-algorithm;
+ description
+ "HMAC-SHA-512 authentication algorithm.";
+ }
+
+ identity cleartext {
+ base crypto-algorithm;
+ if-feature "cleartext";
+ description
+ "cleartext.";
+ }
+
+ identity replay-protection-only {
+ base crypto-algorithm;
+ if-feature "replay-protection-only";
+ description
+ "Provide replay protection without any authentication as
+ required by protocols such as Bidirectional Forwarding
+ Detection (BFD).";
+ }
+
+ typedef key-chain-ref {
+ type leafref {
+ path
+ "/key-chain:key-chains/key-chain:key-chain/key-chain:name";
+ }
+ description
+ "This type is used by data models that need to reference
+ configured key chains.";
+ }
+
+ grouping lifetime {
+ description
+ "Key lifetime specification.";
+ choice lifetime {
+ default "always";
+ description
+ "Options for specifying key accept or send lifetimes";
+ case always {
+ leaf always {
+ type empty;
+ description
+ "Indicates key lifetime is always valid.";
+ }
+ }
+ case start-end-time {
+ leaf start-date-time {
+ type yang:date-and-time;
+ description
+ "Start time.";
+ }
+ choice end-time {
+ default "infinite";
+ description
+ "End-time setting.";
+ case infinite {
+ leaf no-end-time {
+ type empty;
+ description
+ "Indicates key lifetime end-time is infinite.";
+ }
+ }
+ case duration {
+ leaf duration {
+ type uint32 {
+ range "1..2147483646";
+ }
+ units "seconds";
+ description
+ "Key lifetime duration, in seconds";
+ }
+ }
+ case end-date-time {
+ leaf end-date-time {
+ type yang:date-and-time;
+ description
+ "End time.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ container key-chains {
+ description
+ "All configured key-chains on the device.";
+ list key-chain {
+ key "name";
+ description
+ "List of key-chains.";
+ leaf name {
+ type string;
+ description
+ "Name of the key-chain.";
+ }
+ leaf description {
+ type string;
+ description
+ "A description of the key-chain";
+ }
+ container accept-tolerance {
+ if-feature "accept-tolerance";
+ description
+ "Tolerance for key lifetime acceptance (seconds).";
+ leaf duration {
+ type uint32;
+ units "seconds";
+ default "0";
+ description
+ "Tolerance range, in seconds.";
+ }
+ }
+ leaf last-modified-timestamp {
+ type yang:date-and-time;
+ config false;
+ description
+ "Timestamp of the most recent update to the key-chain";
+ }
+ list key {
+ key "key-id";
+ description
+ "Single key in key chain.";
+ leaf key-id {
+ type uint64;
+ description
+ "Numeric value uniquely identifying the key";
+ }
+ container lifetime {
+ description
+ "Specify a key's lifetime.";
+ choice lifetime {
+ description
+ "Options for specification of send and accept
+ lifetimes.";
+ case send-and-accept-lifetime {
+ description
+ "Send and accept key have the same lifetime.";
+ container send-accept-lifetime {
+ description
+ "Single lifetime specification for both
+ send and accept lifetimes.";
+ uses lifetime;
+ }
+ }
+ case independent-send-accept-lifetime {
+ if-feature "independent-send-accept-lifetime";
+ description
+ "Independent send and accept key lifetimes.";
+ container send-lifetime {
+ description
+ "Separate lifetime specification for send
+ lifetime.";
+ uses lifetime;
+ }
+ container accept-lifetime {
+ description
+ "Separate lifetime specification for accept
+ lifetime.";
+ uses lifetime;
+ }
+ }
+ }
+ }
+ leaf crypto-algorithm {
+ type identityref {
+ base crypto-algorithm;
+ }
+ mandatory true;
+ description
+ "Cryptographic algorithm associated with key.";
+ }
+ container key-string {
+ description
+ "The key string.";
+ nacm:default-deny-all;
+ choice key-string-style {
+ description
+ "Key string styles";
+ case keystring {
+ leaf keystring {
+ type string;
+ description
+ "Key string in ASCII format.";
+ }
+ }
+ case hexadecimal {
+ if-feature "hex-key-string";
+ leaf hexadecimal-string {
+ type yang:hex-string;
+ description
+ "Key in hexadecimal string format. When compared
+ to ASCII, specification in hexadecimal affords
+ greater key entropy with the same number of
+ internal key-string octets. Additionally, it
+ discourages usage of well-known words or
+ numbers.";
+ }
+ }
+ }
+ }
+ leaf send-lifetime-active {
+ type boolean;
+ config false;
+ description
+ "Indicates if the send lifetime of the
+ key-chain key is currently active.";
+ }
+ leaf accept-lifetime-active {
+ type boolean;
+ config false;
+ description
+ "Indicates if the accept lifetime of the
+ key-chain key is currently active.";
+ }
+ }
+ }
+ container aes-key-wrap {
+ if-feature "aes-key-wrap";
+ description
+ "AES Key Wrap encryption for key-chain key-strings. The
+ encrypted key-strings are encoded as hexadecimal key
+ strings using the hex-key-string leaf.";
+ leaf enable {
+ type boolean;
+ default "false";
+ description
+ "Enable AES Key Wrap encryption.";
+ }
+ }
+ }
+}
diff --git a/yang/subdir.am b/yang/subdir.am
index 0bdf937..71aa040 100644
--- a/yang/subdir.am
+++ b/yang/subdir.am
@@ -35,9 +35,11 @@ dist_yangmodels_DATA += yang/frr-bgp-route-map.yang
dist_yangmodels_DATA += yang/frr-vrf.yang
dist_yangmodels_DATA += yang/frr-route-types.yang
dist_yangmodels_DATA += yang/frr-routing.yang
+dist_yangmodels_DATA += yang/ietf/frr-deviations-ietf-key-chain.yang
dist_yangmodels_DATA += yang/ietf/ietf-routing-types.yang
dist_yangmodels_DATA += yang/ietf/ietf-interfaces.yang
dist_yangmodels_DATA += yang/ietf/ietf-bgp-types.yang
+dist_yangmodels_DATA += yang/ietf/ietf-key-chain.yang
dist_yangmodels_DATA += yang/ietf/ietf-netconf-acm.yang
dist_yangmodels_DATA += yang/ietf/ietf-netconf.yang
dist_yangmodels_DATA += yang/ietf/ietf-netconf-with-defaults.yang
@@ -104,31 +106,4 @@ endif
CLEANFILES += \
yang/*.c \
yang/ietf/*.c \
- yang/confd/*.c \
#
-
-if CONFD
-
-SUBMODULES = $(shell cd $(top_srcdir); grep -l belongs-to $(dist_yangmodels_DATA))
-EXCLUDED_MODULES = $(SUBMODULES) yang/frr-module-translator.yang
-YANG_MODULES = $(filter-out $(EXCLUDED_MODULES),$(dist_yangmodels_DATA))
-
-fxsdir = $(sysconfdir)/confd
-fxs_DATA = $(YANG_MODULES:.yang=.fxs)
-
-SUFFIXES += .fxs
-CLEANFILES += $(fxs_DATA)
-
-AM_V_CONFDC = $(AM_V_CONFDC_@AM_V@)
-AM_V_CONFDC_ = $(AM_V_CONFDC_@AM_DEFAULT_V@)
-AM_V_CONFDC_0 = @echo " CONFDC " $@;
-
-CONFDC_FLAGS = --yangpath $(srcdir)/yang --yangpath $(srcdir)/yang/ietf
-
-yang/%.fxs: yang/%.yang yang/confd/confd.%.yang
- $(AM_V_CONFDC)$(CONFDC) $(CONFDC_FLAGS) -c -o $@ -a $(srcdir)/yang/confd/confd.$*.yang -- $<
-
-yang/%.fxs: yang/%.yang
- $(AM_V_CONFDC)$(CONFDC) $(CONFDC_FLAGS) -c -o $@ -- $<
-
-endif