aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/yang/openconfig/openconfig-bgp-policy.yang
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/yang/openconfig/openconfig-bgp-policy.yang')
-rw-r--r--src/plugins/yang/openconfig/openconfig-bgp-policy.yang1210
1 files changed, 1210 insertions, 0 deletions
diff --git a/src/plugins/yang/openconfig/openconfig-bgp-policy.yang b/src/plugins/yang/openconfig/openconfig-bgp-policy.yang
new file mode 100644
index 0000000..23db9f7
--- /dev/null
+++ b/src/plugins/yang/openconfig/openconfig-bgp-policy.yang
@@ -0,0 +1,1210 @@
+module openconfig-bgp-policy {
+
+ yang-version "1";
+
+ // namespace
+ namespace "http://openconfig.net/yang/bgp-policy";
+
+ prefix "oc-bgp-pol";
+
+ // import some basic types
+ import openconfig-inet-types { prefix oc-inet; }
+ import openconfig-routing-policy {prefix oc-rpol; }
+ import openconfig-policy-types { prefix oc-pol-types; }
+ import openconfig-bgp-types { prefix oc-bgp-types; }
+ import openconfig-extensions { prefix oc-ext; }
+
+
+ // meta
+ organization
+ "OpenConfig working group";
+
+ contact
+ "OpenConfig working group
+ netopenconfig@googlegroups.com";
+
+ description
+ "This module contains data definitions for BGP routing policy.
+ It augments the base routing-policy module with BGP-specific
+ options for conditions and actions.";
+
+ oc-ext:openconfig-version "5.0.1";
+
+ revision "2018-08-20" {
+ description
+ "Correct description of AFI-SAFI enabled leaf.";
+ reference "5.0.1";
+ }
+
+ revision "2018-04-11" {
+ description
+ "Correct naming of BGP maximum prefix warning percentage leaf.";
+ reference "5.0.0";
+ }
+
+ revision "2018-03-20" {
+ description
+ "Added SR-TE policy SAFI";
+ reference "4.1.0";
+ }
+
+ revision "2017-07-10" {
+ description
+ "Add error notifications; moved add-paths config; add AS
+ prepend policy features; removed unneeded config leaves";
+ reference "4.0.0";
+ }
+
+ revision "2017-02-02" {
+ description
+ "Bugfix to remove remaining global-level policy data";
+ reference "3.0.1";
+ }
+
+ revision "2017-01-26" {
+ description
+ "Add dynamic neighbor support, migrate to OpenConfig types";
+ reference "3.0.0";
+ }
+
+ revision "2016-06-21" {
+ description
+ "OpenConfig BGP refactor";
+ reference "2.1.1";
+ }
+
+
+ // typedef statements
+
+ typedef bgp-set-community-option-type {
+ type enumeration {
+ enum ADD {
+ description
+ "add the specified communities to the existing
+ community attribute";
+ }
+ enum REMOVE {
+ description
+ "remove the specified communities from the
+ existing community attribute";
+ }
+ enum REPLACE {
+ description
+ "replace the existing community attribute with
+ the specified communities. If an empty set is
+ specified, this removes the community attribute
+ from the route.";
+ }
+ }
+ description
+ "Type definition for options when setting the community
+ attribute in a policy action";
+ }
+
+ typedef bgp-next-hop-type {
+ type union {
+ type oc-inet:ip-address;
+ type enumeration {
+ enum SELF {
+ description "special designation for local router's own
+ address, i.e., next-hop-self";
+ }
+ }
+ }
+ description
+ "type definition for specifying next-hop in policy actions";
+ }
+
+ typedef bgp-set-med-type {
+ type union {
+ type uint32;
+ type string {
+ pattern '^[+-][0-9]+$';
+ }
+ type enumeration {
+ enum IGP {
+ description "set the MED value to the IGP cost toward the
+ next hop for the route";
+ }
+ }
+ }
+ description
+ "Type definition for specifying how the BGP MED can
+ be set in BGP policy actions. The three choices are to set
+ the MED directly, increment/decrement using +/- notation,
+ and setting it to the IGP cost (predefined value).";
+ }
+
+ // grouping statements
+
+ grouping match-community-config {
+ description
+ "Configuration data for match conditions on communities";
+
+ leaf community-set {
+ type leafref {
+ path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" +
+ "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/" +
+ "oc-bgp-pol:community-set/oc-bgp-pol:community-set-name";
+ }
+ description
+ "References a defined community set";
+ }
+
+ uses oc-rpol:match-set-options-group;
+ }
+
+ grouping match-community-state {
+ description
+ "Operational state data for match conditions on communities";
+ }
+
+ grouping match-community-top {
+ description
+ "Top-level grouping for match conditions on communities";
+
+ container match-community-set {
+ description
+ "Top-level container for match conditions on communities.
+ Match a referenced community-set according to the logic
+ defined in the match-set-options leaf";
+
+ container config {
+ description
+ "Configuration data for match conditions on communities";
+
+ uses match-community-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data ";
+
+ uses match-community-config;
+ uses match-community-state;
+ }
+ }
+ }
+
+ grouping match-ext-community-config {
+ description
+ "Configuration data for match conditions on extended
+ communities";
+
+ leaf ext-community-set {
+ type leafref {
+ path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" +
+ "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/" +
+ "oc-bgp-pol:ext-community-set/" +
+ "oc-bgp-pol:ext-community-set-name";
+ }
+ description "References a defined extended community set";
+ }
+
+ uses oc-rpol:match-set-options-group;
+ }
+
+ grouping match-ext-community-state {
+ description
+ "Operational state data for match conditions on extended
+ communities";
+ }
+
+ grouping match-ext-community-top {
+ description
+ "Top-level grouping for match conditions on extended
+ communities";
+
+ container match-ext-community-set {
+ description
+ "Match a referenced extended community-set according to the
+ logic defined in the match-set-options leaf";
+
+ container config {
+ description
+ "Configuration data for match conditions on extended
+ communities";
+
+ uses match-ext-community-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for match conditions on extended
+ communities";
+
+ uses match-ext-community-config;
+ uses match-ext-community-state;
+ }
+ }
+ }
+
+ grouping match-as-path-config {
+ description
+ "Configuration data for match conditions on AS path set";
+
+ leaf as-path-set {
+ type leafref {
+ path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" +
+ "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:as-path-sets/" +
+ "oc-bgp-pol:as-path-set/oc-bgp-pol:as-path-set-name";
+ }
+ description "References a defined AS path set";
+ }
+ uses oc-rpol:match-set-options-group;
+ }
+
+ grouping match-as-path-state {
+ description
+ "Operational state data for match conditions on AS path set";
+ }
+
+ grouping match-as-path-top {
+ description
+ "Top-level grouping for match conditions on AS path set";
+
+ container match-as-path-set {
+ description
+ "Match a referenced as-path set according to the logic
+ defined in the match-set-options leaf";
+
+ container config {
+ description
+ "Configuration data for match conditions on AS path set";
+
+ uses match-as-path-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for match conditions on AS
+ path set";
+
+ uses match-as-path-config;
+ uses match-as-path-state;
+ }
+ }
+ }
+
+ grouping bgp-match-set-conditions {
+ description
+ "Condition statement definitions for checking membership in a
+ defined set";
+
+ uses match-community-top;
+ uses match-ext-community-top;
+ uses match-as-path-top;
+ }
+
+ grouping community-count-config {
+ description
+ "Configuration data for community count condition";
+
+ uses oc-pol-types:attribute-compare-operators;
+ }
+
+ grouping community-count-state {
+ description
+ "Operational state data for community count condition";
+ }
+
+ grouping community-count-top {
+ description
+ "Top-level grouping for community count condition";
+
+ container community-count {
+ description
+ "Value and comparison operations for conditions based on the
+ number of communities in the route update";
+
+ container config {
+ description
+ "Configuration data for community count condition";
+
+ uses community-count-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for community count condition";
+
+ uses community-count-config;
+ uses community-count-state;
+ }
+ }
+ }
+
+ grouping as-path-length-config {
+ description
+ "Configuration data for AS path length condition";
+
+ uses oc-pol-types:attribute-compare-operators;
+ }
+
+ grouping as-path-length-state {
+ description
+ "Operational state data for AS path length condition";
+ }
+
+ grouping as-path-length-top {
+ description
+ "Top-level grouping for AS path length condition";
+
+ container as-path-length {
+ description
+ "Value and comparison operations for conditions based on the
+ length of the AS path in the route update";
+
+ container config {
+ description
+ "Configuration data for AS path length condition";
+
+ uses as-path-length-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for AS path length condition";
+
+ uses as-path-length-config;
+ uses as-path-length-state;
+ }
+ }
+ }
+
+ grouping bgp-conditions-config {
+ description
+ "Configuration data for BGP-specific policy conditions";
+
+ leaf med-eq {
+ type uint32;
+ description
+ "Condition to check if the received MED value is equal to
+ the specified value";
+ }
+
+ leaf origin-eq {
+ type oc-bgp-types:bgp-origin-attr-type;
+ description
+ "Condition to check if the route origin is equal to the
+ specified value";
+ }
+
+ leaf-list next-hop-in {
+ type oc-inet:ip-address;
+ description
+ "List of next hop addresses to check for in the route
+ update";
+ }
+
+ leaf-list afi-safi-in {
+ type identityref {
+ base oc-bgp-types:AFI_SAFI_TYPE;
+ }
+ description
+ "List of address families which the NLRI may be
+ within";
+ }
+
+ leaf local-pref-eq {
+ type uint32;
+ // TODO: add support for other comparisons if needed
+ description
+ "Condition to check if the local pref attribute is equal to
+ the specified value";
+ }
+
+ leaf route-type {
+ // TODO: verify extent of vendor support for this comparison
+ type enumeration {
+ enum INTERNAL {
+ description "route type is internal";
+ }
+ enum EXTERNAL {
+ description "route type is external";
+ }
+ }
+ description
+ "Condition to check the route type in the route update";
+ }
+ }
+
+ grouping bgp-conditions-state {
+ description
+ "Operational state data for BGP-specific policy conditions";
+ }
+
+ grouping bgp-conditions-top {
+ description
+ "Top-level grouping for BGP-specific policy conditions";
+
+ container bgp-conditions {
+ description
+ "Top-level container ";
+
+ container config {
+ description
+ "Configuration data for BGP-specific policy conditions";
+
+ uses bgp-conditions-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for BGP-specific policy
+ conditions";
+
+ uses bgp-conditions-config;
+ uses bgp-conditions-state;
+ }
+
+ uses community-count-top;
+ uses as-path-length-top;
+ uses bgp-match-set-conditions;
+ }
+ }
+
+ grouping community-set-config {
+ description
+ "Configuration data for BGP community sets";
+
+ leaf community-set-name {
+ type string;
+ mandatory true;
+ description
+ "name / label of the community set -- this is used to
+ reference the set in match conditions";
+ }
+
+ leaf-list community-member {
+ type union {
+ type oc-bgp-types:bgp-std-community-type;
+ type oc-bgp-types:bgp-community-regexp-type;
+ type oc-bgp-types:bgp-well-known-community-type;
+ }
+ description
+ "members of the community set";
+ }
+ }
+
+ grouping community-set-state {
+ description
+ "Operational state data for BGP community sets";
+ }
+
+ grouping community-set-top {
+ description
+ "Top-level grouping for BGP community sets";
+
+ container community-sets {
+ description
+ "Enclosing container for list of defined BGP community sets";
+
+ list community-set {
+ key "community-set-name";
+ description
+ "List of defined BGP community sets";
+
+ leaf community-set-name {
+ type leafref {
+ path "../config/community-set-name";
+ }
+ description
+ "Reference to list key";
+ }
+
+ container config {
+ description
+ "Configuration data for BGP community sets";
+
+ uses community-set-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for BGP community sets";
+
+ uses community-set-config;
+ uses community-set-state;
+ }
+ }
+ }
+ }
+
+ grouping ext-community-set-config {
+ description
+ "Configuration data for extended BGP community sets";
+
+ leaf ext-community-set-name {
+ type string;
+ description
+ "name / label of the extended community set -- this is
+ used to reference the set in match conditions";
+ }
+
+ leaf-list ext-community-member {
+ type union {
+ type oc-bgp-types:bgp-ext-community-type;
+ type oc-bgp-types:bgp-community-regexp-type;
+ }
+ description
+ "members of the extended community set";
+ }
+ }
+
+ grouping ext-community-set-state {
+ description
+ "Operational state data for extended BGP community sets";
+ }
+
+ grouping ext-community-set-top {
+ description
+ "Top-level grouping for extended BGP community sets";
+
+ container ext-community-sets {
+ description
+ "Enclosing container for list of extended BGP community
+ sets";
+
+ list ext-community-set {
+ key "ext-community-set-name";
+ description
+ "List of defined extended BGP community sets";
+
+ leaf ext-community-set-name {
+ type leafref {
+ path "../config/ext-community-set-name";
+ }
+ description
+ "Reference to list key";
+ }
+
+ container config {
+ description
+ "Configuration data for extended BGP community sets";
+
+ uses ext-community-set-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for extended BGP community sets";
+
+ uses ext-community-set-config;
+ uses ext-community-set-state;
+ }
+ }
+ }
+ }
+
+ grouping as-path-set-config {
+ description
+ "Configuration data for AS path sets";
+
+ leaf as-path-set-name {
+ type string;
+ description
+ "name of the AS path set -- this is used to reference
+ the set in match conditions";
+ }
+
+ leaf-list as-path-set-member {
+ // TODO: need to refine typedef for AS path expressions
+ type string;
+ description
+ "AS path expression -- list of ASes in the set";
+ }
+ }
+
+ grouping as-path-set-state {
+ description
+ "Operational state data for AS path sets";
+ }
+
+ grouping as-path-set-top {
+ description
+ "Top-level grouping for AS path sets";
+
+ container as-path-sets {
+ description
+ "Enclosing container for list of define AS path sets";
+
+ list as-path-set {
+ key "as-path-set-name";
+ description
+ "List of defined AS path sets";
+
+ leaf as-path-set-name {
+ type leafref {
+ path "../config/as-path-set-name";
+ }
+ description
+ "Reference to list key";
+ }
+
+ container config {
+ description
+ "Configuration data for AS path sets";
+
+ uses as-path-set-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for AS path sets";
+
+ uses as-path-set-config;
+ uses as-path-set-state;
+ }
+ }
+ }
+ }
+
+ // augment statements
+
+ augment "/oc-rpol:routing-policy/oc-rpol:defined-sets" {
+ description "adds BGP defined sets container to routing policy
+ model";
+
+ container bgp-defined-sets {
+ description
+ "BGP-related set definitions for policy match conditions";
+
+ uses community-set-top;
+ uses ext-community-set-top;
+ uses as-path-set-top;
+ }
+ }
+
+ grouping as-path-prepend-config {
+ description
+ "Configuration data for the AS path prepend action";
+
+ leaf repeat-n {
+ type uint8 {
+ range 1..max;
+ }
+ description
+ "Number of times to prepend the value specified in the asn
+ leaf to the AS path. If no value is specified by the asn
+ leaf, the local AS number of the system is used. The value
+ should be between 1 and the maximum supported by the
+ implementation.";
+ }
+
+ leaf asn {
+ type oc-inet:as-number;
+ description
+ "The AS number to prepend to the AS path. If this leaf is
+ not specified and repeat-n is set, then the local AS
+ number will be used for prepending.";
+ }
+ }
+
+ grouping as-path-prepend-state {
+ description
+ "Operational state data for the AS path prepend action";
+ }
+
+ grouping as-path-prepend-top {
+ description
+ "Top-level grouping for the AS path prepend action";
+
+ container set-as-path-prepend {
+ description
+ "Action to prepend the specified AS number to the AS-path a
+ specified number of times";
+
+ container config {
+ description
+ "Configuration data for the AS path prepend action";
+
+ uses as-path-prepend-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the AS path prepend action";
+
+ uses as-path-prepend-config;
+ uses as-path-prepend-state;
+ }
+ }
+ }
+
+ grouping set-community-action-common {
+ description
+ "Common leaves for set-community and set-ext-community
+ actions";
+
+ leaf method {
+ type enumeration {
+ enum INLINE {
+ description
+ "The extended communities are specified inline as a
+ list";
+ }
+ enum REFERENCE {
+ description
+ "The extended communities are specified by referencing a
+ defined ext-community set";
+ }
+ }
+ description
+ "Indicates the method used to specify the extended
+ communities for the set-ext-community action";
+ }
+
+ leaf options {
+ type bgp-set-community-option-type;
+ description
+ "Options for modifying the community attribute with
+ the specified values. These options apply to both
+ methods of setting the community attribute.";
+ }
+ }
+
+ grouping set-community-inline-config {
+ description
+ "Configuration data for inline specification of set-community
+ action";
+
+ leaf-list communities {
+ type union {
+ type oc-bgp-types:bgp-std-community-type;
+ type oc-bgp-types:bgp-well-known-community-type;
+ }
+ description
+ "Set the community values for the update inline with
+ a list.";
+ }
+ }
+
+ grouping set-community-inline-state {
+ description
+ "Operational state data or inline specification of
+ set-community action";
+ }
+
+ grouping set-community-inline-top {
+ description
+ "Top-level grouping or inline specification of set-community
+ action";
+
+ container inline {
+ when "../config/method=INLINE" {
+ description
+ "Active only when the set-community method is INLINE";
+ }
+ description
+ "Set the community values for the action inline with
+ a list.";
+
+ container config {
+ description
+ "Configuration data or inline specification of set-community
+ action";
+
+ uses set-community-inline-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data or inline specification of
+ set-community action";
+
+ uses set-community-inline-config;
+ uses set-community-inline-state;
+ }
+ }
+ }
+
+ grouping set-community-reference-config {
+ description
+ "Configuration data for referening a community-set in the
+ set-community action";
+
+ leaf community-set-ref {
+ type leafref {
+ path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" +
+ "oc-bgp-pol:bgp-defined-sets/" +
+ "oc-bgp-pol:community-sets/oc-bgp-pol:community-set/" +
+ "oc-bgp-pol:community-set-name";
+ }
+ description
+ "References a defined community set by name";
+ }
+ }
+
+ grouping set-community-reference-state {
+ description
+ "Operational state data for referening a community-set in the
+ set-community action";
+ }
+
+ grouping set-community-reference-top {
+ description
+ "Top-level grouping for referening a community-set in the
+ set-community action";
+
+ container reference {
+ when "../config/method=REFERENCE" {
+ description
+ "Active only when the set-community method is REFERENCE";
+ }
+ description
+ "Provide a reference to a defined community set for the
+ set-community action";
+
+ container config {
+ description
+ "Configuration data for referening a community-set in the
+ set-community action";
+
+ uses set-community-reference-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for referening a community-set
+ in the set-community action";
+
+ uses set-community-reference-config;
+ uses set-community-reference-state;
+ }
+ }
+ }
+
+ grouping set-community-action-config {
+ description
+ "Configuration data for the set-community action";
+
+ uses set-community-action-common;
+ }
+
+ grouping set-community-action-state {
+ description
+ "Operational state data for the set-community action";
+ }
+
+ grouping set-community-action-top {
+ description
+ "Top-level grouping for the set-community action";
+
+ container set-community {
+ description
+ "Action to set the community attributes of the route, along
+ with options to modify how the community is modified.
+ Communities may be set using an inline list OR
+ reference to an existing defined set (not both).";
+
+ container config {
+ description
+ "Configuration data for the set-community action";
+
+ uses set-community-action-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the set-community action";
+
+ uses set-community-action-config;
+ uses set-community-action-state;
+ }
+
+ uses set-community-inline-top;
+ uses set-community-reference-top;
+ }
+ }
+
+ grouping set-ext-community-inline-config {
+ description
+ "Configuration data for inline specification of
+ set-ext-community action";
+
+ leaf-list communities {
+ type union {
+ type oc-bgp-types:bgp-ext-community-type;
+ type oc-bgp-types:bgp-well-known-community-type;
+ }
+ description
+ "Set the extended community values for the update inline
+ with a list.";
+ }
+ }
+
+ grouping set-ext-community-inline-state {
+ description
+ "Operational state data or inline specification of
+ set-ext-community action";
+ }
+
+ grouping set-ext-community-inline-top {
+ description
+ "Top-level grouping or inline specification of set-ext-community
+ action";
+
+ container inline {
+ when "../config/method=INLINE" {
+ description
+ "Active only when the set-community method is INLINE";
+ }
+ description
+ "Set the extended community values for the action inline with
+ a list.";
+
+ container config {
+ description
+ "Configuration data or inline specification of
+ set-ext-community action";
+
+ uses set-ext-community-inline-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data or inline specification of
+ set-ext-community action";
+
+ uses set-ext-community-inline-config;
+ uses set-ext-community-inline-state;
+ }
+ }
+ }
+
+ grouping set-ext-community-reference-config {
+ description
+ "Configuration data for referening a extended community-set
+ in the set-ext-community action";
+
+ leaf ext-community-set-ref {
+ type leafref {
+ path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" +
+ "oc-bgp-pol:bgp-defined-sets/" +
+ "oc-bgp-pol:ext-community-sets/" +
+ "oc-bgp-pol:ext-community-set/" +
+ "oc-bgp-pol:ext-community-set-name";
+ }
+ description
+ "References a defined extended community set by
+ name";
+ }
+ }
+
+ grouping set-ext-community-reference-state {
+ description
+ "Operational state data for referening an extended
+ community-set in the set-ext-community action";
+ }
+
+ grouping set-ext-community-reference-top {
+ description
+ "Top-level grouping for referening an extended community-set
+ in the set-community action";
+
+ container reference {
+ when "../config/method=REFERENCE" {
+ description
+ "Active only when the set-community method is REFERENCE";
+ }
+ description
+ "Provide a reference to an extended community set for the
+ set-ext-community action";
+
+ container config {
+ description
+ "Configuration data for referening an extended
+ community-set in the set-ext-community action";
+
+ uses set-ext-community-reference-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for referening an extended
+ community-set in the set-ext-community action";
+
+ uses set-ext-community-reference-config;
+ uses set-ext-community-reference-state;
+ }
+ }
+ }
+
+ grouping set-ext-community-action-config {
+ description
+ "Configuration data for the set-ext-community action";
+
+ uses set-community-action-common;
+ }
+
+ grouping set-ext-community-action-state {
+ description
+ "Operational state data for the set-ext-community action";
+ }
+
+ grouping set-ext-community-action-top {
+ description
+ "Top-level grouping for the set-ext-community action";
+
+ container set-ext-community {
+ description
+ "Action to set the extended community attributes of the
+ route, along with options to modify how the community is
+ modified. Extended communities may be set using an inline
+ list OR a reference to an existing defined set (but not
+ both).";
+
+ container config {
+ description
+ "Configuration data for the set-ext-community action";
+
+ uses set-ext-community-action-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for the set-ext-community action";
+
+ uses set-ext-community-action-config;
+ uses set-ext-community-action-state;
+ }
+ uses set-ext-community-inline-top;
+ uses set-ext-community-reference-top;
+ }
+ }
+
+ grouping bgp-actions-config {
+ description
+ "Configuration data for BGP-specific actions";
+
+ leaf set-route-origin {
+ type oc-bgp-types:bgp-origin-attr-type;
+ description "set the origin attribute to the specified
+ value";
+ }
+
+ leaf set-local-pref {
+ type uint32;
+ description "set the local pref attribute on the route
+ update";
+ }
+
+ leaf set-next-hop {
+ type bgp-next-hop-type;
+ description "set the next-hop attribute in the route update";
+ }
+
+ leaf set-med {
+ type bgp-set-med-type;
+ description "set the med metric attribute in the route
+ update";
+ }
+ }
+
+ grouping bgp-actions-state {
+ description
+ "Operational state data for BGP-specific actions";
+ }
+
+ grouping bgp-actions-top {
+ description
+ "Top-level grouping for BGP-specific actions";
+
+ container bgp-actions {
+ description
+ "Top-level container for BGP-specific actions";
+
+ container config {
+ description
+ "Configuration data for BGP-specific actions";
+
+ uses bgp-actions-config;
+ }
+
+ container state {
+
+ config false;
+
+ description
+ "Operational state data for BGP-specific actions";
+
+ uses bgp-actions-config;
+ uses bgp-actions-state;
+ }
+ uses as-path-prepend-top;
+ uses set-community-action-top;
+ uses set-ext-community-action-top;
+ }
+ }
+
+ augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" +
+ "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" +
+ "oc-rpol:conditions" {
+ description
+ "BGP policy conditions added to routing policy module";
+
+ uses bgp-conditions-top;
+ }
+
+ augment "/oc-rpol:routing-policy/oc-rpol:policy-definitions/" +
+ "oc-rpol:policy-definition/oc-rpol:statements/oc-rpol:statement/" +
+ "oc-rpol:actions" {
+ description "BGP policy actions added to routing policy
+ module";
+
+ uses bgp-actions-top;
+ }
+
+ // rpc statements
+
+ // notification statements
+}