All Downloads are FREE. Search and download functionalities are using the official Maven repository.

[email protected] Maven / Gradle / Ivy

The newest version!
module openconfig-bgp {

  yang-version "1.1";

  // namespace
  namespace "http://openconfig.net/yang/bgp";

  prefix "bgp";

  // import some basic inet types
  import ietf-inet-types { prefix inet; }
  import openconfig-bgp-multiprotocol { prefix bgp-mp; }
  import openconfig-routing-policy { prefix rpol; }
  import openconfig-bgp-types { prefix bgp-types; }
  import openconfig-bgp-operational { prefix bgp-op; }
  import openconfig-extensions { prefix oc-ext; }

  // meta
  organization
    "OpenConfig working group";

  contact
    "OpenConfig working group
    [email protected]";

  description
    "This module describes a YANG model for BGP protocol
    configuration.It is a limited subset of all of the configuration
    parameters available in the variety of vendor implementations,
    hence it is expected that it would be augmented with vendor-
    specific configuration data as needed. Additional modules or
    submodules to handle other aspects of BGP configuration,
    including policy, VRFs, VPNs, and additional address families
    are also expected.

    This model supports the following BGP configuration level
    hierarchy:

      BGP
        |
        +-> [ global BGP configuration ]
          +-> AFI / SAFI global
        +-> peer group
          +-> [ peer group config ]
          +-> AFI / SAFI [ per-AFI overrides ]
        +-> neighbor
          +-> [ neighbor config ]
          +-> [ optional pointer to peer-group ]
          +-> AFI / SAFI [ per-AFI overrides ]";

  oc-ext:openconfig-version "1.1.0";

  revision "2015-10-09" {
    description
      "Initial OpenConfig public release";
    reference "1.1.0";
  }

  revision "2015-05-15" {
      description
        "Refactored BGP module";
      reference "Pre-release";
  }

  grouping bgp-global_config {
    description
      "Global configuration options for the BGP router.";

    leaf as {
      type inet:as-number;
      mandatory "true";
      description
        "Local autonomous system number of the router.  Uses
        the 32-bit as-number type from the model in RFC 6991.";
    }
    leaf router-id {
      type inet:ipv4-address;
      description
        "Router id of the router, expressed as an
        32-bit value, IPv4 address.";
    }
  }

  grouping bgp-default-route-distance_config {
    description
      "Configuration options relating to the administrative distance
      (or preference) assigned to routes received from different
      sources (external, internal, and local).";

    leaf external-route-distance {
      type uint8 {
        range "1..255";
      }
      description
        "Administrative distance for routes learned from external
        BGP (eBGP).";
    }
    leaf internal-route-distance {
      type uint8 {
        range "1..255";
      }
      description
        "Administrative distance for routes learned from internal
        BGP (iBGP).";
    }
  }

  grouping bgp-confederation_config {
    description
      "Configuration options specifying parameters when the local
      router is within an autonomous system which is part of a BGP
      confederation.";

    leaf enabled {
      type boolean;
      description
        "When this leaf is set to true it indicates that
        the local-AS is part of a BGP confederation";
    }

    leaf identifier {
      type inet:as-number;
      description
        "Confederation identifier for the autonomous system.";
    }

    leaf-list member-as {
      type inet:as-number;
      description
        "Remote autonomous systems that are to be treated
        as part of the local confederation.";
    }
  }

  grouping bgp-neighbor_config {
    description
      "Neighbor level configuration items.";

    leaf peer-as {
      type inet:as-number;
      description
        "AS number of the peer.";
    }

    leaf local-as {
      type inet:as-number;
      description
        "The local autonomous system number that is to be used
        when establishing sessions with the remote peer or peer
        group, if this differs from the global BGP router
        autonomous system number.";
    }

    leaf peer-type {
        type bgp-types:peer-type;
        description
          "Explicitly designate the peer or peer group as internal
          (iBGP) or external (eBGP).";
    }

    leaf auth-password {
      type string;
      description
        "Configures an MD5 authentication password for use with
        neighboring devices.";
    }

    leaf remove-private-as {
      // could also make this a container with a flag to enable
      // remove-private and separate option.  here, option implies
      // remove-private is enabled.
      type bgp-types:remove-private-as-option;
      description
        "Remove private AS numbers from updates sent to peers.";
    }

    leaf route-flap-damping {
      type boolean;
      default false;
      description
        "Enable route flap damping.";
    }

    leaf send-community {
      type bgp-types:community-type;
      default "NONE";
      description
        "Specify which types of community should be sent to the
        neighbor or group. The default is to not send the
        community attribute";
    }

    leaf description {
      type string;
      description
        "An optional textual description (intended primarily for use
        with a peer or group";
    }
  }

  grouping bgp-neighbor-timers_config {
    description
      "Config parameters related to timers associated with the BGP
      peer";

    leaf connect-retry {
      type decimal64 {
        fraction-digits 2;
      }
      default 30;
      description
        "Time interval in seconds between attempts to establish a
        session with the peer.";
    }

    leaf hold-time {
      type decimal64 {
        fraction-digits 2;
      }
      default 90;
      description
        "Time interval in seconds that a BGP session will be
        considered active in the absence of keepalive or other
        messages from the peer.  The hold-time is typically
        set to 3x the keepalive-interval.";
      reference
        "RFC 4271 - A Border Gateway Protocol 4, Sec. 10";
    }

    leaf keepalive-interval {
      type decimal64 {
        fraction-digits 2;
      }
      default 30;
      description
        "Time interval in seconds between transmission of keepalive
        messages to the neighbor.  Typically set to 1/3 the
        hold-time.";
    }

    leaf minimum-advertisement-interval {
      type decimal64 {
        fraction-digits 2;
      }
      default 30;
      description
        "Minimum time which must elapse between subsequent UPDATE
        messages relating to a common set of NLRI being transmitted
        to a peer. This timer is referred to as
        MinRouteAdvertisementIntervalTimer by RFC 4721 and serves to
        reduce the number of UPDATE messages transmitted when a
        particular set of NLRI exhibit instability.";
      reference
        "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1";
    }
  }

  grouping bgp-neighbor-transport_config {
    description
      "Configuration parameters relating to the transport protocol
      used by the BGP session to the peer";

    leaf tcp-mss {
      type uint16;
      description
        "Sets the max segment size for BGP TCP sessions.";
    }

    leaf mtu-discovery {
      type boolean;
      default false;
      description
        "Turns path mtu discovery for BGP TCP sessions on (true)
        or off (false)";
    }

    leaf passive-mode {
      type boolean;
      default false;
      description
        "Wait for peers to issue requests to open a BGP session,
        rather than initiating sessions from the local router.";
    }

    leaf local-address {
      type union {
        type inet:ip-address;
        type string;
      }
      //TODO:  the string should be converted to a leafref type
      //to point to an interface when YANG 1.1 is available with
      //leafrefs in union types.
      description
        "Set the local IP (either IPv4 or IPv6) address to use
        for the session when sending BGP update messages.  This
        may be expressed as either an IP address or reference
        to the name of an interface.";
    }
  }

  grouping bgp-neighbor-error-handling_config {
    description
      "Configuration parameters relating to enhanced error handling
      behaviours for BGP";

    leaf treat-as-withdraw {
      type boolean;
      default "false";
      description
        "Specify whether erroneous UPDATE messages for which the
        NLRI can be extracted are treated as though the NLRI is
        withdrawn - avoiding session reset";
      reference "https://tools.ietf.org/html/rfc7606";
    }
  }

  grouping bgp-neighbor-logging-options_config {
    description
      "Configuration parameters specifying the logging behaviour for
      BGP sessions to the peer";

    leaf log-neighbor-state-changes {
      type boolean;
      default "true";
      description
        "Configure logging of peer state changes.  Default is
        to enable logging of peer state changes.";
    }
  }

  grouping bgp-neighbor-multihop_config {
    description
      "Configuration parameters specifying the multihop behaviour for
      BGP sessions to the peer";

    leaf enabled {
      type boolean;
      default "false";
      description
        "When enabled the referenced group or neighbors are permitted
        to be indirectly connected - including cases where the TTL
        can be decremented between the BGP peers";
    }

    leaf multihop-ttl {
      type uint8;
      description
        "Time-to-live value to use when packets are sent to the
        referenced group or neighbors and ebgp-multihop is enabled";
    }
  }

  grouping bgp-neighbor-route-reflector_config {
    description
      "Configuration parameters determining whether the behaviour of
      the local system when acting as a route-reflector";

    leaf route-reflector-cluster-id {
      type bgp-types:rr-cluster-id-type;
      description
        "route-reflector cluster id to use when local router is
        configured as a route reflector.  Commonly set at the group
        level, but allows a different cluster
        id to be set for each neighbor.";
    }

    leaf route-reflector-client {
      type boolean;
      default "false";
      description
        "Configure the neighbor as a route reflector client.";
    }
  }

  grouping bgp-neighbor-as-path-options_config {
    description
      "Configuration parameters allowing manipulation of the AS_PATH
      attribute";

    leaf allow-own-as {
      type uint8;
      default 0;
      description
        "Specify the number of occurrences of the local BGP speaker's
        AS that can occur within the AS_PATH before it is rejected.";
    }

    leaf replace-peer-as {
      type boolean;
      default "false";
      description
        "Replace occurrences of the peer's AS in the AS_PATH
        with the local autonomous system number";
    }
  }

  grouping bgp-neighbor-add-paths_config {
    description
      "Configuration parameters specfying whether the local system
      will send or receive multiple paths using ADD_PATHS";

    leaf receive {
      type boolean;
      default false;
      description
        "Enable ability to receive multiple path advertisements
        for an NLRI from the neighbor or group";
    }

    leaf send-max {
      type uint8;
      description
        "The maximum number of paths to advertise to neighbors
        for a single NLRI";
    }
  }

  grouping bgp-neighbor-peer-group_config {
    description
      "Configuration parameters indicating whether the specified peer
      is to be considered as part of a peer-group - and therefore
      inherit its configuration";

    leaf peer-group {
      type leafref {
        path "/bgp:bgp/bgp:peer-groups/bgp:peer-group/bgp:peer-group-name";
        require-instance true;
      }
      description
        "The peer-group with which this neighbor is associated";
    }
  }

  grouping bgp-graceful-restart {
    description
      "Configures BGP graceful restart, which is a negotiated
      option that indicates that a BGP speaker is able to retain
      forwarding state when a BGP session restarts";

    reference "RFC 4724: Graceful Restart Mechanism for BGP";
    container graceful-restart {
      description
        "Parameters relating the graceful restart mechanism for BGP";
      container config {
        description
          "Configuration parameters relating to graceful-restart";
        uses bgp-neighbor-graceful-restart_config;
      }
      container state {
        config false;
        description
          "State information associated with graceful-restart";
        uses bgp-neighbor-graceful-restart_config;
      }
    }
  }

  grouping bgp-neighbor-graceful-restart_config {
    description
      "Configuration parameters relating to BGP graceful restart.";

    leaf enabled {
      type boolean;
      description
        "Enable or disable the graceful-restart capability.";
    }

    leaf restart-time {
      type uint16 {
        range 0..4096;
      }
      description
        "Estimated time (in seconds) for the local BGP speaker to
        restart a session. This value is advertise in the graceful
        restart BGP capability.  This is a 12-bit value, referred to
        as Restart Time in RFC4724.  Per RFC4724, the suggested
        default value is <= the hold-time value.";
    }

    leaf stale-routes-time {
      type decimal64 {
        fraction-digits 2;
      }
      description
        "An upper-bound on the time thate stale routes will be
        retained by a router after a session is restarted. If an
        End-of-RIB (EOR) marker is received prior to this timer
        expiring stale-routes will be flushed upon its receipt - if
        no EOR is received, then when this timer expires stale paths
        will be purged. This timer is referred to as the
        Selection_Deferral_Timer in RFC4724";
    }

    leaf helper-only {
      type boolean;
      description
        "Enable graceful-restart in helper mode only. When this
        leaf is set, the local system does not retain forwarding
        its own state during a restart, but supports procedures
        for the receiving speaker, as defined in RFC4724.";
    }
  }

  // ************************************************************
  // *              configuration context containers            *
  // ************************************************************

  grouping bgp-global-base {
    description
      "Global configuration parameters for the BGP router";

    container config {
      description
        "Configuration parameters relating to the global BGP router";
      uses bgp-global_config;
      /*
      Presence is added as a workaround for BUG-6069 and it lacks
      of presence meaning therefore is left empty.
      */
      presence "";
    }
    container state {
      config false;
      description
        "State information relating to the global BGP router";
      uses bgp-global_config;
      uses bgp-op:bgp-global_state;
    }

    uses bgp-mp:bgp-route-selection-options;

    container default-route-distance {
      description
        "Administrative distance (or preference) assigned to
        routes received from different sources
        (external, internal, and local).";

      container config {
        description
          "Configuration parameters relating to the default route
          distance";
        uses bgp-default-route-distance_config;
      }
      container state {
        config false;
        description
          "State information relating to the default route distance";
        uses bgp-default-route-distance_config;
      }
    }

    container confederation {
      description
        "Parameters indicating whether the local system acts as part
        of a BGP confederation";

      container config {
        description
          "Configuration parameters relating to BGP confederations";
        uses bgp-confederation_config;
      }
      container state {
        config false;
        description
          "State information relating to the BGP confederations";
        uses bgp-confederation_config;
      }
    }

    uses bgp-mp:bgp-use-multiple-paths;

    uses bgp-graceful-restart;

    container afi-safis {
      description
        "Address family specific configuration";
      uses bgp-mp:bgp-common-afi-safi-list;
    }
  }

  grouping bgp-neighbors {
    description
      "BGP neighbors configured on the local system";
    list neighbor {
      key "neighbor-address";
      description
        "List of BGP neighbors configured on the local system,
        uniquely identified by peer IPv[46] address";

      leaf neighbor-address {
// FIXME: BUG-4625: DTO generation cannot handle this case in Binding Spec v1
//        type leafref {
//          path "../config/neighbor-address";
//        }
        type inet:ip-address;

        description
          "Reference to the address of the BGP neighbor used as
          a key in the neighbor list";
      }

      uses bgp-neighbor-group;
    }
  }

  grouping bgp-peer-group {
    description
      "BGP peer-groups configured on the local system";
    list peer-group {
      key "peer-group-name";
      description
        "List of BGP peer-groups configured on the local system -
        uniquely identified by peer-group name";

    leaf peer-group-name {
// FIXME: BUG-4625: DTO generation cannot handle this case in Binding Spec v1
//      type leafref {
//        path "../config/peer-group-name";
//      }
      type string;
      description
        "Reference to the name of the BGP peer-group used as a
        key in the peer-group list";
      }

      uses bgp-neighbor-group;
    }
  }

  grouping bgp-neighbor-group {
    description
      "Parameters related to a BGP neighbor or group";

    container config {
      description
        "Configuration parameters relating to the BGP neighbor or
        group";
      uses bgp-neighbor_config;
    }
    container state {
      config false;
      description
        "State information relating to the BGP neighbor or group";
      uses bgp-neighbor_config;
    }

    container timers {
      description
        "Timers related to a BGP neighbor or group";
      container config {
        description
          "Configuration parameters relating to timers used for the
          BGP neighbor or group";
        uses bgp-neighbor-timers_config;
      }
      container state {
        config false;
        description
          "State information relating to the timers used for the BGP
          neighbor or group";
        uses bgp-neighbor-timers_config;
      }
    }

    container transport {
      description
        "Transport session parameters for the BGP neighbor or group";
      container config {
        description
          "Configuration parameters relating to the transport
          session(s) used for the BGP neighbor or group";
        uses bgp-neighbor-transport_config;
      }
      container state {
        config false;
        description
          "State information relating to the transport session(s)
          used for the BGP neighbor or group";
        uses bgp-neighbor-transport_config;
      }
    }

    container error-handling {
      description
        "Error handling parameters used for the BGP neighbor or
        group";
      container config {
        description
          "Configuration parameters enabling or modifying the
          behavior or enhanced error handling mechanisms for the BGP
          neighbor or group";
        uses bgp-neighbor-error-handling_config;
      }
      container state {
        config false;
        description
          "State information relating to enhanced error handling
          mechanisms for the BGP neighbor or group";
        uses bgp-neighbor-error-handling_config;
      }
    }

    container logging-options {
      description
        "Logging options for events related to the BGP neighbor or
        group";
      container config {
        description
          "Configuration parameters enabling or modifying logging
          for events relating to the BGP neighbor or group";
        uses bgp-neighbor-logging-options_config;
      }
      container state {
        config false;
        description
          "State information relating to logging for the BGP neighbor
          or group";
        uses bgp-neighbor-logging-options_config;
      }
    }

    container ebgp-multihop {
      description
        "eBGP multi-hop parameters for the BGP neighbor or group";
      container config {
        description
          "Configuration parameters relating to eBGP multihop for the
          BGP neighbor or group";
        uses bgp-neighbor-multihop_config;
      }
      container state {
        config false;
        description
          "State information for eBGP multihop, for the BGP neighbor
          or group";
        uses bgp-neighbor-multihop_config;
      }
    }

    container route-reflector {
      description
        "Route reflector parameters for the BGP neighbor or group";
      container config {
        description
          "Configuraton parameters relating to route reflection
          for the BGP neighbor or group";
        uses bgp-neighbor-route-reflector_config;
      }
      container state {
        config false;
        description
          "State information relating to route reflection for the
          BGP neighbor or group";
        uses bgp-neighbor-route-reflector_config;
      }
    }

    container as-path-options {
      description
        "AS_PATH manipulation parameters for the BGP neighbor or
        group";
      container config {
        description
          "Configuration parameters relating to AS_PATH manipulation
          for the BGP peer or group";
        uses bgp-neighbor-as-path-options_config;
      }
      container state {
        config false;
        description
          "State information relating to the AS_PATH manipulation
          mechanisms for the BGP peer or group";
        uses bgp-neighbor-as-path-options_config;
      }
    }

    container add-paths {
      description
        "Parameters relating to the advertisement and receipt of
        multiple paths for a single NLRI (add-paths)";
      container config {
        description
          "Configuration parameters relating to ADD_PATHS";
        uses bgp-neighbor-add-paths_config;
      }
      container state {
        config false;
        description
          "State information associated with ADD_PATHS";
        uses bgp-neighbor-add-paths_config;
      }
    }

    container afi-safis {
      description
        "Per-address-family configuration parameters associated with
        the neighbor or group";
      uses bgp-mp:bgp-common-afi-safi-list;
    }

    uses bgp-graceful-restart;

    uses rpol:apply-policy-group;
  }

  grouping bgp-neighbor-neighbor-address_config {
    description
      "Configuration options relating to the BGP neighbor address";

    leaf neighbor-address {
        type inet:ip-address;
        description
          "Address of the BGP peer, either in IPv4 or IPv6";
    }
  }

  grouping bgp-peer-group-peer-group-name_config {
    description
      "Configuration options relating to the BGP peer-group name";

    leaf peer-group-name {
      type string;
      description
        "Name of the BGP peer-group";
    }
  }

  // add peer-group pointer only for the neighbor list
  augment /bgp/neighbors/neighbor/config {
    description
      "Augmentation to allow association of a neighbor with a
      peer-group";
    uses bgp-neighbor-peer-group_config;
  }

  augment /bgp/neighbors/neighbor/state {
    description
      "Augmentation to reflect the association of a neighbor with a
      peer-group";
    uses bgp-neighbor-peer-group_config;
  }

  augment /bgp/peer-groups/peer-group {
    description
      "Augmentation to add multipath configuration to a peer-group";
    uses bgp-mp:bgp-use-multiple-paths;
  }

  augment /bgp/neighbors/neighbor {
    description
      "Augmentation to add the multipath configuration to a
      neighbor";
    uses bgp-mp:bgp-use-multiple-paths-neighbor;
  }

  augment /bgp/peer-groups/peer-group/afi-safis/afi-safi {
    description
      "Augmentation to add multipath configuration to a peer-group
      on a per-AFI-SAFI basis";
    uses bgp-mp:bgp-use-multiple-paths;
  }

  augment /bgp/neighbors/neighbor/afi-safis/afi-safi {
    description
      "Augmentation to add multipath configuration to a neighbor
      on a per-AFI-SAFI basis";
    uses bgp-mp:bgp-use-multiple-paths-neighbor;
  }

  augment /bgp/global/afi-safis/afi-safi {
    description
      "Augmentation to add global instance specific AFI-SAFI
      configuration information";
    uses bgp-mp:bgp-global-afi-safi;
    uses bgp-mp:bgp-use-multiple-paths;
  }

  augment /bgp/peer-groups/peer-group/afi-safis/afi-safi {
    description
      "Augmentation that adds peer-group instance specific
      AFI-SAFI configuration information";
    uses bgp-mp:bgp-group-afi-safi;
  }

  augment /bgp/neighbors/neighbor/config {
    description
      "Augmentation adding the neighbor address to the
      neighbor configuration container";
    uses bgp-neighbor-neighbor-address_config;
  }

  augment /bgp/neighbors/neighbor/state {
    description
      "Augmentation adding the neighbor address to the
      neighbor state container";
    uses bgp-neighbor-neighbor-address_config;
  }

  augment /bgp/peer-groups/peer-group/config {
    description
      "Augmentation adding the peer-group name to the
      peer-group configuration container";
    uses bgp-peer-group-peer-group-name_config;
  }

  augment /bgp/peer-groups/peer-group/state {
    description
      "Augmentation adding the peer-group name to the
      peer-group state container";
    uses bgp-peer-group-peer-group-name_config;
  }

  // ************************************************************
  // *              Augmentations to add state                  *
  // *  (rjs: cleaner to have these in the base module to avoid *
  //     needing to specify which module - e.g. augment of      *
  //     /bgp:bgp/bgp:neighbors/bgp:neighbor...)                *
  // ************************************************************
  augment /bgp/neighbors/neighbor/state {
    description
      "Augmentation to add operational state related to a particular
      BGP neighbor";
    uses bgp-op:bgp-neighbor_state;
  }

  augment /bgp/neighbors/bgp:neighbor/state {
    description
      "Augmentation to add operational state related to a particular
      BGP neighbor";

    container messages {
      description
        "Counters for BGP messages sent and received from the
        neighbor";
      container sent {
        description
          "Counters relating to BGP messages sent to the neighbor";
        uses bgp-op:bgp-neighbor-message-counters-sent_state;
        }

      container received {
        description
          "Counters for BGP messages received from the neighbor";
        uses bgp-op:bgp-neighbor-message-counters-received_state;
      }
    }

    container queues {
      description
        "Counters related to queued messages associated with the
        BGP neighbor";
      uses bgp-op:bgp-neighbor-queue-counters_state;
    }
  }

  augment /bgp:bgp/bgp:neighbors/neighbor/timers/state {
    description
      "Augmentation to add the operational state of timers associated
      with the BGP neighbor";
    uses bgp-op:bgp-neighbor-timers_state;
  }

  augment /bgp/neighbors/neighbor/transport/state {
    description
      "Augmentation to add the operational state of the transport
      session associated with the BGP neighbor";
    uses bgp-op:bgp-neighbor-transport_state;
  }

  augment /bgp/neighbors/neighbor/error-handling/state {
    description
      "Augmentation to add the operational state of the error
      handling associated with the BGP neighbor";
    uses bgp-op:bgp-neighbor-error-handling_state;
  }

  augment /bgp/neighbors/neighbor/graceful-restart/state {
    description
      "Augmentation to add the operational state of graceful-restart
      associated with a BGP neighbor";
    uses bgp-op:bgp-afi-safi-graceful-restart_state;
  }

  augment /bgp/peer-groups/peer-group/state {
    description
      "Augmentation to add the operational state and counters
      relating to a BGP peer-group";
    uses bgp-op:bgp-peer-group_state;
  }

  augment /bgp/global/afi-safis/afi-safi/state {
    description
      "Augmentation to add operational state and counters
      on a per-AFI-SAFI basis to the global BGP router";
    uses bgp-op:bgp-global-afi-safi_state;
  }

  augment /bgp/neighbors/neighbor/afi-safis/afi-safi/state {
    description
      "Augmentation to add per-AFI-SAFI operational state
      and counters to the BGP neighbor";
    uses bgp-op:bgp-neighbor-afi-safi_state;
  }

  augment "/bgp/neighbors/neighbor/afi-safis/afi-safi/" +
    "graceful-restart/state" {
    description
      "Augmentation to add per-AFI-SAFI operational state for BGP
      graceful-restart";
    uses bgp-op:bgp-neighbor-afi-safi-graceful-restart_state;
  }

  grouping bgp-top {
    description
      "Top-level grouping for the BGP model data";

    container bgp {
      presence "Container for BGP protocol hierarchy";
      description
        "Top-level configuration and state for the BGP router";

      container global {
        description
          "Global configuration for the BGP router";
          uses bgp-global-base;
          uses rpol:apply-policy-group;
      }

      container neighbors {
        description
          "Configuration for BGP neighbors";
        uses bgp-neighbors;
      }

      container peer-groups {
        description
          "Configuration for BGP peer-groups";
        uses bgp-peer-group;
      }
    }
  }

   // ************************************************************
  // *              module structure containers                 *
  // ************************************************************

  uses bgp-top;

}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy