junipernetworks.junos.junos_bgp_address_family (8.0.0) — module

Manage BGP Address Family attributes of interfaces on Junos devices.

| "added in version" 1.3.0 of junipernetworks.junos"

Authors: Rohit Thakur (@rohitthakur2590)

preview | supported by network

Install collection

Install with ansible-galaxy collection install junipernetworks.junos:==8.0.0


Add to requirements.yml

  collections:
    - name: junipernetworks.junos
      version: 8.0.0

Description

Manage BGP Address Family attributes of interfaces on Junos network devices.


Requirements

Usage examples

  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Using merged
#
# Before state
# ------------
#
# admin# show protocols bgp
#
# [edit]

- name: Merge Junos BGP address family configuration
  junipernetworks.junos.junos_bgp_address_family:
    config:
      address_family:
        - afi: 'evpn'
          af_type:
            - type: 'signaling'
              accepted_prefix_limit:
                maximum: 20
                limit_threshold: 98
                idle_timeout_value: 2001
              damping: true
              defer_initial_multipath_build:
                maximum_delay: 2
        - afi: 'inet'
          af_type:
            - type: 'flow'
              legacy_redirect_ip_action:
                send: true
                receive: true
              loops: 4
              no_install: true
              output_queue_priority_expedited: true
              secondary_independent_resolution: true

            - type: 'unicast'
              extended_nexthop: true
              extended_nexthop_color: true
              local_ipv4_address: '9.9.9.9'

            - type: 'labeled-unicast'
              entropy_label:
                no_next_hop_validation: true
              explicit_null:
                connected_only: true
              per_prefix_label: true
              per_group_label: true
              prefix_limit:
                maximum: 20
                limit_threshold: 99
                forever: true
              resolve_vpn: true
              rib: 'inet.3'
              route_refresh_priority_expedited: true
              route_refresh_priority_priority: 3

            - type: 'any'
              accepted_prefix_limit:
                maximum: 20
                limit_threshold: 99
                idle_timeout_value: 2000
              damping: true
              defer_initial_multipath_build:
                maximum_delay: 2
              delay_route_advertisements:
                max_delay_route_age: 20
                max_delay_routing_uptime: 32000
                min_delay_inbound_convergence: 32000
                min_delay_routing_uptime: 23000
              graceful_restart_forwarding_state_bit: 'from-fib'
    state: merged
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Task Output:
# ------------
#
# before: {}
#
# commands:
# - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:bgp><nc:family><nc:evpn><nc:signaling>
#   <nc:accepted-prefix-limit><nc:maximum>20</nc:maximum><nc:teardown><nc:limit-threshold>98</nc:limit-threshold>
#   <nc:idle-timeout><nc:timeout>2001</nc:timeout></nc:idle-timeout></nc:teardown></nc:accepted-prefix-limit>
#   <nc:damping/><nc:defer-initial-multipath-build><nc:maximum-delay>2</nc:maximum-delay>
#   </nc:defer-initial-multipath-build></nc:signaling></nc:evpn><nc:inet><nc:flow><nc:legacy-redirect-ip-action>
#   <nc:send/><nc:receive/></nc:legacy-redirect-ip-action><nc:loops>4</nc:loops><nc:no-install/>
#   <nc:output-queue-priority><nc:expedited/></nc:output-queue-priority><nc:secondary-independent-resolution/>
#   </nc:flow><nc:unicast><nc:extended-nexthop/><nc:extended-nexthop-color/><nc:local-ipv4-address>9.9.9.9</nc:local-ipv4-address>
#   </nc:unicast><nc:labeled-unicast><nc:entropy-label><nc:no-next-hop-validation/></nc:entropy-label>
#   <nc:explicit-null><nc:connected-only/></nc:explicit-null><nc:per-prefix-label/><nc:per-group-label/>
#   <nc:prefix-limit><nc:maximum>20</nc:maximum><nc:teardown>99<nc:idle-timeout><nc:forever/></nc:idle-timeout>
#   </nc:teardown></nc:prefix-limit><nc:resolve-vpn/><nc:rib><nc:inet.3/></nc:rib><nc:route-refresh-priority>
#   <nc:expedited/><nc:priority>3</nc:priority></nc:route-refresh-priority></nc:labeled-unicast><nc:any>
#   <nc:accepted-prefix-limit><nc:maximum>20</nc:maximum><nc:teardown><nc:limit-threshold>99</nc:limit-threshold>
#   <nc:idle-timeout><nc:timeout>2000</nc:timeout></nc:idle-timeout></nc:teardown></nc:accepted-prefix-limit>
#   <nc:damping/><nc:defer-initial-multipath-build><nc:maximum-delay>2</nc:maximum-delay></nc:defer-initial-multipath-build>
#   <nc:delay-route-advertisements><nc:maximum-delay><nc:route-age>20</nc:route-age><nc:routing-uptime>32000</nc:routing-uptime>
#   </nc:maximum-delay><nc:minimum-delay><nc:inbound-convergence>32000</nc:inbound-convergence>
#   <nc:routing-uptime>23000</nc:routing-uptime></nc:minimum-delay></nc:delay-route-advertisements><nc:graceful-restart>
#   <nc:forwarding-state-bit>from-fib</nc:forwarding-state-bit></nc:graceful-restart></nc:any></nc:inet></nc:family>
#   </nc:bgp></nc:protocols>
# - <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"/>
#
# after:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet

# After state
# -----------
#
# admin# show protocols bgp
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

#
# Using replaced
#
# Before state
# ------------
#
# admin# show protocols bgp
# preference 2;
# hold-time 5;
# advertise-inactive;
# out-delay 10;
# bgp-error-tolerance {
#     malformed-route-limit 40000000;
# }
# authentication-algorithm md5;
# advertise-bgp-static {
#     policy static-to-bgp;
# }
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

- name: Replace existing Junos BGP address family config with provided config
  junipernetworks.junos.junos_bgp_address_family:
    config:
      address_family:
        - afi: 'evpn'
          af_type:
            - type: 'signaling'
              accepted_prefix_limit:
                maximum: 21
                limit_threshold: 99
                idle_timeout_value: 2002
              delay_route_advertisements:
                max_delay_route_age: 20
                max_delay_routing_uptime: 32000
                min_delay_inbound_convergence: 32000
                min_delay_routing_uptime: 23000
              damping: true
    state: replaced
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Task Output:
# ------------
#
#  before:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet
#
# commands:
# - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:bgp><nc:family>
#   <nc:evpn delete="delete"/></nc:family><nc:family><nc:evpn><nc:signaling><nc:accepted-prefix-limit>
#   <nc:maximum>21</nc:maximum><nc:teardown><nc:limit-threshold>99</nc:limit-threshold><nc:idle-timeout>
#   <nc:timeout>2002</nc:timeout></nc:idle-timeout></nc:teardown></nc:accepted-prefix-limit><nc:damping/>
#   <nc:delay-route-advertisements><nc:maximum-delay><nc:route-age>20</nc:route-age>
#   <nc:routing-uptime>32000</nc:routing-uptime></nc:maximum-delay><nc:minimum-delay>
#   <nc:inbound-convergence>32000</nc:inbound-convergence><nc:routing-uptime>23000</nc:routing-uptime>
#   </nc:minimum-delay></nc:delay-route-advertisements></nc:signaling></nc:evpn></nc:family></nc:bgp></nc:protocols>
# - <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"/>
#
# after:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2002
#         limit_threshold: 99
#         maximum: 21
#       damping: true
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet
#
# After state
# -----------
#
# admin# show protocols bgp
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 21;
#             teardown 99 idle-timeout 2002;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#     }
# }

# Using overridden
#
# Before state
# ------------
#
# admin# show protocols bgp
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

- name: Override Junos BGP address family config
  junipernetworks.junos.junos_bgp_address_family:
    config:
      address_family:
        - afi: 'evpn'
          af_type:
            - type: 'signaling'
              accepted_prefix_limit:
                maximum: 21
                limit_threshold: 99
                idle_timeout_value: 2002
              delay_route_advertisements:
                max_delay_route_age: 20
                max_delay_routing_uptime: 32000
                min_delay_inbound_convergence: 32000
                min_delay_routing_uptime: 23000
              damping: true
    state: overridden
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Task Output:
# ------------
#
# before:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2002
#         limit_threshold: 99
#         maximum: 21
#       damping: true
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet
#
# commands:
# - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:bgp><nc:family>
#   <nc:evpn delete="delete"/><nc:inet delete="delete"/></nc:family><nc:family><nc:evpn delete="delete"/>
#   </nc:family><nc:family><nc:evpn><nc:signaling><nc:accepted-prefix-limit><nc:maximum>21</nc:maximum>
#   <nc:teardown><nc:limit-threshold>99</nc:limit-threshold><nc:idle-timeout><nc:timeout>2002</nc:timeout>
#   </nc:idle-timeout></nc:teardown></nc:accepted-prefix-limit><nc:damping/><nc:delay-route-advertisements>
#   <nc:maximum-delay><nc:route-age>20</nc:route-age><nc:routing-uptime>32000</nc:routing-uptime>
#   </nc:maximum-delay><nc:minimum-delay><nc:inbound-convergence>32000</nc:inbound-convergence>
#   <nc:routing-uptime>23000</nc:routing-uptime></nc:minimum-delay></nc:delay-route-advertisements>
#   </nc:signaling></nc:evpn></nc:family></nc:bgp></nc:protocols>
# - <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"/>
#
# After state
# -----------
#
# admin# show protocols bgp
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 21;
#             teardown 99 idle-timeout 2002;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#     }
# }

# Using deleted
#
# Before state
# ------------
#
# admin# show protocols bgp
# preference 2;
# hold-time 5;
# advertise-inactive;
# out-delay 10;
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

- name: Delete Junos BGP address family config based on the afi
  junipernetworks.junos.junos_bgp_address_family:
    config:
      address_family:
        - afi: 'inet'
    state: deleted
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Task Output:
# ------------
#
# before:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet
#
# commands:
# - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><nc:bgp>
#   <nc:family><nc:inet delete="delete"/></nc:family></nc:bgp></nc:protocols>
# - <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"/>
#
# after:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#
# After state
# -----------
#
# admin# show protocols bgp
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

# Using deleted
#
# Before state
# ------------
#
# admin# show protocols bgp
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

- name: Delete complete Junos BGP address family config
  junipernetworks.junos.junos_bgp_address_family:
    config:
    state: deleted
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
# Task Output:
# ------------
#
# before:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet
# commands:
# - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
#   <nc:bgp><nc:family><nc:evpn delete="delete"/><nc:inet delete="delete"/>
#   </nc:family></nc:bgp></nc:protocols>
# - <nc:routing-options xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"/>
#
# after: {}

# After state
# -----------
#
# admin# show protocols bgp
#

# Using gathered
#
# Before state
# ------------
#
# admin# show protocols bgp
# family inet {
#     unicast {
#         local-ipv4-address 9.9.9.9;
#         extended-nexthop;
#         extended-nexthop-color;
#     }
#     flow {
#         loops 4;
#         no-install;
#         output-queue-priority expedited;
#         legacy-redirect-ip-action {
#             receive;
#             send;
#         }
#         secondary-independent-resolution;
#     }
#     any {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout 2000;
#         }
#         damping;
#         delay-route-advertisements {
#             minimum-delay {
#                 routing-uptime 23000;
#                 inbound-convergence 32000;
#             }
#             maximum-delay {
#                 route-age 20;
#                 routing-uptime 32000;
#             }
#         }
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#         graceful-restart {
#             forwarding-state-bit from-fib;
#         }
#     }
#     labeled-unicast {
#         prefix-limit {
#             maximum 20;
#             teardown 99 idle-timeout forever;
#         }
#         route-refresh-priority priority 3;
#         per-prefix-label;
#         per-group-label;
#         rib {
#             inet.3;
#         }
#         explicit-null connected-only;
#         resolve-vpn;
#         entropy-label {
#             no-next-hop-validation;
#         }
#     }
# }
# family evpn {
#     signaling {
#         accepted-prefix-limit {
#             maximum 20;
#             teardown 98 idle-timeout 2001;
#         }
#         damping;
#         defer-initial-multipath-build {
#             maximum-delay 2;
#         }
#     }
# }

- name: Gather Junos BGP address family config
  junipernetworks.junos.junos_bgp_address_family:
    config:
    state: gathered
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
#
#
# Task Output:
# ------------
#
# gathered:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet

# Using parsed
# parsed.cfg
# ------------
# <?xml version="1.0" encoding="UTF-8"?>
# <rpc-reply message-id="urn:uuid:0cadb4e8-5bba-47f4-986e-72906227007f">
#     <configuration changed-seconds="1590139550" changed-localtime="2020-05-22 09:25:50 UTC">
#         <version>18.4R1-S2.4</version>
#         <protocols>
#             <bgp>
#                 <preference>2</preference>
#                 <hold-time>5</hold-time>
#                 <advertise-inactive/>
#                 <out-delay>10</out-delay>
#                 <family>
#                     <inet>
#                         <unicast>
#                             <local-ipv4-address>9.9.9.9</local-ipv4-address>
#                             <extended-nexthop/>
#                             <extended-nexthop-color/>
#                         </unicast>
#                         <flow>
#                             <loops>
#                                 <loops>4</loops>
#                             </loops>
#                             <no-install/>
#                             <output-queue-priority>
#                                 <expedited/>
#                             </output-queue-priority>
#                             <legacy-redirect-ip-action>
#                                 <receive/>
#                                 <send/>
#                             </legacy-redirect-ip-action>
#                             <secondary-independent-resolution/>
#                         </flow>
#                         <any>
#                             <accepted-prefix-limit>
#                                 <maximum>20</maximum>
#                                 <teardown>
#                                     <limit-threshold>99</limit-threshold>
#                                     <idle-timeout>
#                                         <timeout>2000</timeout>
#                                     </idle-timeout>
#                                 </teardown>
#                             </accepted-prefix-limit>
#                             <damping/>
#                             <delay-route-advertisements>
#                                 <minimum-delay>
#                                     <routing-uptime>23000</routing-uptime>
#                                     <inbound-convergence>32000</inbound-convergence>
#                                 </minimum-delay>
#                                 <maximum-delay>
#                                     <route-age>20</route-age>
#                                     <routing-uptime>32000</routing-uptime>
#                                 </maximum-delay>
#                             </delay-route-advertisements>
#                             <defer-initial-multipath-build>
#                                 <maximum-delay>2</maximum-delay>
#                             </defer-initial-multipath-build>
#                             <graceful-restart>
#                                 <forwarding-state-bit>from-fib</forwarding-state-bit>
#                             </graceful-restart>
#                         </any>
#                         <labeled-unicast>
#                             <prefix-limit>
#                                 <maximum>20</maximum>
#                                 <teardown>
#                                     <limit-threshold>99</limit-threshold>
#                                     <idle-timeout>
#                                         <forever/>
#                                     </idle-timeout>
#                                 </teardown>
#                             </prefix-limit>
#                             <route-refresh-priority>
#                                 <priority>3</priority>
#                             </route-refresh-priority>
#                             <per-prefix-label/>
#                             <per-group-label/>
#                             <rib>
#                                 <inet.3/>
#                             </rib>
#                             <explicit-null>
#                                 <connected-only/>
#                             </explicit-null>
#                             <resolve-vpn/>
#                             <entropy-label>
#                                 <no-next-hop-validation/>
#                             </entropy-label>
#                         </labeled-unicast>
#                     </inet>
#                     <evpn>
#                         <signaling>
#                             <accepted-prefix-limit>
#                                 <maximum>20</maximum>
#                                 <teardown>
#                                     <limit-threshold>98</limit-threshold>
#                                     <idle-timeout>
#                                         <timeout>2001</timeout>
#                                     </idle-timeout>
#                                 </teardown>
#                             </accepted-prefix-limit>
#                             <damping/>
#                             <defer-initial-multipath-build>
#                                 <maximum-delay>2</maximum-delay>
#                             </defer-initial-multipath-build>
#                         </signaling>
#                     </evpn>
#                 </family>
#             </bgp>
#             <ospf3>
#                 <area>
#                     <name>0.0.0.100</name>
#                     <stub>
#                         <default-metric>200</default-metric>
#                     </stub>
#                     <interface>
#                         <name>so-0/0/0.0</name>
#                         <metric>5</metric>
#                         <priority>3</priority>
#                     </interface>
#                 </area>
#             </ospf3>
#         </protocols>
#         <routing-options>
#             <static>
#                 <route>
#                     <name>172.16.17.0/24</name>
#                     <discard />
#                 </route>
#             </static>
#             <router-id>10.200.16.75</router-id>
#             <autonomous-system>
#                 <as-number>65432</as-number>
#             </autonomous-system>
#         </routing-options>
#     </configuration>
# </rpc-reply>


- name: Parsed the bgp address family running config to get the facts
  junipernetworks.junos.junos_bgp_address_family:
    running_config: "{{ lookup('file', './parsed.cfg') }}"
    state: parsed
  • Success
    Steampunk Spotter scan finished with no errors, warnings or hints.
#
# Task Output:
# ------------
#
# parsed:
#   address_family:
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2001
#         limit_threshold: 98
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       type: signaling
#     afi: evpn
#   - af_type:
#     - accepted_prefix_limit:
#         idle_timeout_value: 2000
#         limit_threshold: 99
#         maximum: 20
#       damping: true
#       defer_initial_multipath_build:
#         maximum_delay: 2
#       delay_route_advertisements:
#         max_delay_route_age: 20
#         max_delay_routing_uptime: 32000
#         min_delay_inbound_convergence: 32000
#         min_delay_routing_uptime: 23000
#       graceful_restart_forwarding_state_bit: from-fib
#       type: any
#     - legacy_redirect_ip_action:
#         receive: true
#         send: true
#       loops: 4
#       no_install: true
#       output_queue_priority_expedited: true
#       secondary_independent_resolution: true
#       type: flow
#     - entropy_label:
#         no_next_hop_validation: true
#       explicit_null:
#         connected_only: true
#       per_group_label: true
#       per_prefix_label: true
#       prefix_limit:
#         forever: true
#         limit_threshold: 99
#         maximum: 20
#       resolve_vpn: true
#       rib: inet.3
#       route_refresh_priority_priority: 3
#       type: labeled-unicast
#     - extended_nexthop: true
#       extended_nexthop_color: true
#       local_ipv4_address: 9.9.9.9
#       type: unicast
#     afi: inet

# Using rendered
#
- name: Render the commands for provided  configuration
  junipernetworks.junos.junos_bgp_address_family:
    config:
      address_family:
        - afi: 'evpn'
          af_type:
            - type: 'signaling'
              accepted_prefix_limit:
                maximum: 20
                limit_threshold: 98
                idle_timeout_value: 2001
              damping: true
              defer_initial_multipath_build:
                maximum_delay: 2
        - afi: 'inet'
          af_type:
            - type: 'flow'
              legacy_redirect_ip_action:
                send: true
                receive: true
              loops: 4
              no_install: true
              output_queue_priority_expedited: true
              secondary_independent_resolution: true

            - type: 'unicast'
              extended_nexthop: true
              extended_nexthop_color: true
              local_ipv4_address: '9.9.9.9'

            - type: 'labeled-unicast'
              entropy_label:
                no_next_hop_validation: true
              explicit_null:
                connected_only: true
              per_prefix_label: true
              per_group_label: true
              prefix_limit:
                maximum: 20
                limit_threshold: 99
                forever: true
              resolve_vpn: true
              rib: 'inet.3'
              route_refresh_priority_expedited: true
              route_refresh_priority_priority: 3

            - type: 'any'
              accepted_prefix_limit:
                maximum: 20
                limit_threshold: 99
                idle_timeout_value: 2000
              damping: true
              defer_initial_multipath_build:
                maximum_delay: 2
              delay_route_advertisements:
                max_delay_route_age: 20
                max_delay_routing_uptime: 32000
                min_delay_inbound_convergence: 32000
                min_delay_routing_uptime: 23000
              graceful_restart_forwarding_state_bit: 'from-fib'
    state: rendered

Inputs

    
state:
    choices:
    - merged
    - replaced
    - overridden
    - deleted
    - parsed
    - gathered
    - rendered
    default: merged
    description:
    - The state the configuration should be left in.
    - State I(deleted) only removes BGP address family attributes that this modules manages
      and does not negate the BGP neighbor address family completely. Thereby, preserving
      address-family related configurations under BGP group neighbor context.
    - To delete the address family associated to neighbor use M(junipernetworks.junos.junos_bgp_neighbor_address_family)
      modules for prior cleanup.
    - Refer to examples for more details.
    type: str

config:
    description: The provided link BGP address family dictionary.
    suboptions:
      address_family:
        description: Enable address family and enter its config mode.
        elements: dict
        suboptions:
          af_type:
            description: Address family type for ipv4.
            elements: dict
            suboptions:
              accepted_prefix_limit:
                description: Specify limit for maximum number of prefixes accepted from
                  a peer.
                suboptions:
                  forever:
                    description: Idle the peer until the user intervenes.
                    type: bool
                  idle_timeout:
                    description: Set idle timeout node.
                    type: bool
                  idle_timeout_value:
                    description: Specify timeout before attempting to restart peer.
                    type: int
                  limit_threshold:
                    description: Specify teardown percentage of prefix-limit to start
                      warnings.
                    type: int
                  maximum:
                    description: Specify maximum number of prefixes accepted from a peer.
                    type: int
                  teardown:
                    description: Clear peer connection on reaching limit.
                    type: bool
                type: dict
              add_path:
                description: Advertise multiple paths to peer.
                suboptions:
                  receive:
                    description: Receive multiple paths from peer.
                    type: bool
                  send:
                    description: Send multiple paths to peer.
                    suboptions:
                      include_backup_path:
                        description: Specify number of backup paths to advertise.
                        type: int
                      multipath:
                        description: Include only multipath contributor routes.
                        type: bool
                      path_count:
                        description: Include only multipath contributor routes.
                        required: true
                        type: int
                      path_selection_mode:
                        description: Configure how to select add-path routes.
                        suboptions:
                          all_paths:
                            description: Advertise all paths allowed by path count.
                            type: bool
                          equal_cost_paths:
                            description: Advertise equal cost paths.
                            type: bool
                        type: dict
                      prefix_policy:
                        description: Perform add-path only for prefixes that match policy.
                        type: str
                    type: dict
                type: dict
              aggregate_label:
                description: Aggregate labels of incoming routes with the same FEC.
                suboptions:
                  community:
                    description: Community to identify the FEC of incoming routesC.
                    type: str
                  set:
                    description: Set Aggregate labels of incoming routes with the same
                      FEC
                    type: bool
                type: dict
              aigp:
                description: Allow sending and receiving of AIGP attribute.
                suboptions:
                  disable:
                    description: Dn not allow sending and receiving of AIGP attribute.
                    type: bool
                  set:
                    description: Set AIGP.
                    type: bool
                type: dict
              damping:
                description: Enable route flap damping.
                type: bool
              defer_initial_multipath_build:
                description: Defer initial multipath build until EOR is received.
                suboptions:
                  maximum_delay:
                    description: Max delay(sec) multipath build after peer is up.
                    type: int
                  set:
                    description: Set defer initial multipath build.
                    type: bool
                type: dict
              delay_route_advertisements:
                description: Delay route updates for this family until FIB-sync.
                suboptions:
                  max_delay_route_age:
                    description: Set max delay advertisement route age.
                    type: int
                  max_delay_routing_uptime:
                    description: Set max delay advertisement route age.
                    type: int
                  min_delay_inbound_convergence:
                    description: Set min delayadvertisement after source-peer sent all
                      routes.
                    type: int
                  min_delay_routing_uptime:
                    description: Set min delay advertisement route age.
                    type: int
                  set:
                    description: Set delay route advertisements.
                    type: bool
                type: dict
              entropy_label:
                description: Use entropy label for entropy label capable BGP LSPs.
                suboptions:
                  import:
                    description: Policy to select BGP LSPs to use entropy label.
                    type: str
                  no_next_hop_validation:
                    description: Don't validate next hop field against route next hop.
                    type: bool
                  set:
                    description: Set entropy-label attribute.
                    type: bool
                type: dict
              explicit_null:
                description: Advertise explicit null.
                suboptions:
                  connected_only:
                    description: Advertise explicit null only for connected routes.
                    type: bool
                  set:
                    description: Set explicit-null attribute.
                    type: bool
                type: dict
              extended_nexthop:
                description: Enable extended nexthop encoding.
                type: bool
              extended_nexthop_color:
                description: Resolve using extended color nexthop.
                type: bool
              graceful_restart_forwarding_state_bit:
                choices:
                - from-fib
                - set
                description: Specify BGP graceful restart options.
                type: str
              legacy_redirect_ip_action:
                description: Configure legacy redirect to IP support.
                suboptions:
                  receive:
                    description: Accept legacy encoded redirect-to-ip action attribute
                    type: bool
                  send:
                    description: Advertise Redirect action as legacy redirect attribute.
                    type: bool
                  set:
                    description: Set the legacy-redirect-ip-action.
                    type: bool
                type: dict
              local_ipv4_address:
                description: Specify local IPv4 address.
                type: str
              loops:
                description: Allow local AS in received AS paths.
                type: int
              no_install:
                description: Dont install received routes in forwarding.
                type: bool
              no_validate:
                description: Bypass validation procedure for routes that match policy.
                type: str
              output_queue_priority_expedited:
                description: Expedited queue; highest priority.
                type: bool
              output_queue_priority_priority:
                description: Output queue priority; higher is better.
                type: int
              per_group_label:
                description: Advertise prefixes with unique labels per group.
                type: bool
              per_prefix_label:
                description: Allocate a unique label to each advertised prefix.
                type: bool
              prefix_limit:
                description: Limit maximum number of prefixes from a peer.
                suboptions:
                  forever:
                    description: Idle the peer until the user intervenes.
                    type: bool
                  idle_timeout:
                    description: Set idle timeout node.
                    type: bool
                  idle_timeout_value:
                    description: Specify timeout before attempting to restart peer.
                    type: int
                  limit_threshold:
                    description: Percentage of prefix-limit to start warnings.
                    type: int
                  maximum:
                    description: Specify maximum number of prefixes from a peer.
                    type: int
                  teardown:
                    description: Clear peer connection on reaching limit.
                    type: bool
                type: dict
              resolve_vpn:
                description: Install received NLRI in inet.3 also.
                type: bool
              rib:
                choices:
                - inet.3
                description: Select table used by labeled unicast routes.
                type: str
              ribgroup_name:
                description: Name of the routing table group.
                type: str
              route_refresh_priority_expedited:
                description: Expedited queue; highest priority.
                type: bool
              route_refresh_priority_priority:
                description: Output queue priority; higher is better.
                type: int
              secondary_independent_resolution:
                description: Resolve FLOW routes in VRF table independent of VPN FLOW
                  route.
                type: bool
              set:
                description: Set NLRI.
                type: bool
              strip_nexthop:
                description: Strip the next-hop from the outgoing flow update.
                type: bool
              topology:
                description: Multi topology routing tables.
                elements: dict
                suboptions:
                  community:
                    description: Community to identify multi topology routes.
                    elements: str
                    type: list
                  name:
                    description: Specify topology name.
                    type: str
                type: list
              traffic_statistics:
                description: Collect statistics for BGP label-switched paths
                suboptions:
                  file:
                    description: Statistics file options.
                    suboptions:
                      filename:
                        description: Name of file in which to write trace information.
                        type: str
                      files:
                        description: Maximum number of trace files.
                        type: int
                      no_world_readable:
                        description: Don't allow any user to read the log file.
                        type: bool
                      size:
                        description: Maximum trace file size.
                        type: int
                      world_readable:
                        description: Don't allow any user to read the log file.
                        type: bool
                    type: dict
                  interval:
                    description: Time to collect statistics (seconds).
                    type: int
                  labeled_path:
                    description: Enable ingress labeled path statistics.
                    type: bool
                  set:
                    description: Set traffic-statistics.
                    type: bool
                type: dict
              type:
                choices:
                - any
                - flow
                - labeled-unicast
                - multicast
                - segment-routing-te
                - unicast
                - signaling
                - auto-discovery-mspw
                - auto-discovery-only
                description: Specify type of NLRI.
                type: str
              withdraw_priority_expedited:
                description: Expedited queue; highest priority.
                type: bool
              withdraw_priority_priority:
                description: Output queue priority; higher is better.
                type: int
            type: list
          afi:
            choices:
            - evpn
            - inet
            - inet-mdt
            - inet-mvpn
            - inet-vpn
            - inet6
            - inet6-mvpn
            - inet6-vpn
            - iso-vpn
            - l2vpn
            - route-target
            - traffic-engineering
            description: address family.
            type: str
        type: list
      groups:
        description: Specify address family config for groups.
        elements: dict
        suboptions:
          address_family:
            description: Enable address family and enter its config mode.
            elements: dict
            suboptions:
              af_type:
                description: Address family type for ipv4.
                elements: dict
                suboptions:
                  accepted_prefix_limit:
                    description: Specify limit for maximum number of prefixes accepted
                      from a peer.
                    suboptions:
                      forever:
                        description: Idle the peer until the user intervenes.
                        type: bool
                      idle_timeout:
                        description: Set idle timeout node.
                        type: bool
                      idle_timeout_value:
                        description: Specify timeout before attempting to restart peer.
                        type: int
                      limit_threshold:
                        description: Specify teardown percentage of prefix-limit to start
                          warnings.
                        type: int
                      maximum:
                        description: Specify maximum number of prefixes accepted from
                          a peer.
                        type: int
                      teardown:
                        description: Clear peer connection on reaching limit.
                        type: bool
                    type: dict
                  add_path:
                    description: Advertise multiple paths to peer.
                    suboptions:
                      receive:
                        description: Receive multiple paths from peer.
                        type: bool
                      send:
                        description: Send multiple paths to peer.
                        suboptions:
                          include_backup_path:
                            description: Specify number of backup paths to advertise.
                            type: int
                          multipath:
                            description: Include only multipath contributor routes.
                            type: bool
                          path_count:
                            description: Include only multipath contributor routes.
                            required: true
                            type: int
                          path_selection_mode:
                            description: Configure how to select add-path routes.
                            suboptions:
                              all_paths:
                                description: Advertise all paths allowed by path count.
                                type: bool
                              equal_cost_paths:
                                description: Advertise equal cost paths.
                                type: bool
                            type: dict
                          prefix_policy:
                            description: Perform add-path only for prefixes that match
                              policy.
                            type: str
                        type: dict
                    type: dict
                  aggregate_label:
                    description: Aggregate labels of incoming routes with the same FEC.
                    suboptions:
                      community:
                        description: Community to identify the FEC of incoming routesC.
                        type: str
                      set:
                        description: Set Aggregate labels of incoming routes with the
                          same FEC
                        type: bool
                    type: dict
                  aigp:
                    description: Allow sending and receiving of AIGP attribute.
                    suboptions:
                      disable:
                        description: Dn not allow sending and receiving of AIGP attribute.
                        type: bool
                      set:
                        description: Set AIGP.
                        type: bool
                    type: dict
                  damping:
                    description: Enable route flap damping.
                    type: bool
                  defer_initial_multipath_build:
                    description: Defer initial multipath build until EOR is received.
                    suboptions:
                      maximum_delay:
                        description: Max delay(sec) multipath build after peer is up.
                        type: int
                      set:
                        description: Set defer initial multipath build.
                        type: bool
                    type: dict
                  delay_route_advertisements:
                    description: Delay route updates for this family until FIB-sync.
                    suboptions:
                      max_delay_route_age:
                        description: Set max delay advertisement route age.
                        type: int
                      max_delay_routing_uptime:
                        description: Set max delay advertisement route age.
                        type: int
                      min_delay_inbound_convergence:
                        description: Set min delayadvertisement after source-peer sent
                          all routes.
                        type: int
                      min_delay_routing_uptime:
                        description: Set min delay advertisement route age.
                        type: int
                      set:
                        description: Set delay route advertisements.
                        type: bool
                    type: dict
                  entropy_label:
                    description: Use entropy label for entropy label capable BGP LSPs.
                    suboptions:
                      import:
                        description: Policy to select BGP LSPs to use entropy label.
                        type: str
                      no_next_hop_validation:
                        description: Don't validate next hop field against route next
                          hop.
                        type: bool
                      set:
                        description: Set entropy-label attribute.
                        type: bool
                    type: dict
                  explicit_null:
                    description: Advertise explicit null.
                    suboptions:
                      connected_only:
                        description: Advertise explicit null only for connected routes.
                        type: bool
                      set:
                        description: Set explicit-null attribute.
                        type: bool
                    type: dict
                  extended_nexthop:
                    description: Enable extended nexthop encoding.
                    type: bool
                  extended_nexthop_color:
                    description: Resolve using extended color nexthop.
                    type: bool
                  graceful_restart_forwarding_state_bit:
                    choices:
                    - from-fib
                    - set
                    description: Specify BGP graceful restart options.
                    type: str
                  legacy_redirect_ip_action:
                    description: Configure legacy redirect to IP support.
                    suboptions:
                      receive:
                        description: Accept legacy encoded redirect-to-ip action attribute
                        type: bool
                      send:
                        description: Advertise Redirect action as legacy redirect attribute.
                        type: bool
                      set:
                        description: Set the legacy-redirect-ip-action.
                        type: bool
                    type: dict
                  local_ipv4_address:
                    description: Specify local IPv4 address.
                    type: str
                  loops:
                    description: Allow local AS in received AS paths.
                    type: int
                  no_install:
                    description: Dont install received routes in forwarding.
                    type: bool
                  no_validate:
                    description: Bypass validation procedure for routes that match policy.
                    type: str
                  output_queue_priority_expedited:
                    description: Expedited queue; highest priority.
                    type: bool
                  output_queue_priority_priority:
                    description: Output queue priority; higher is better.
                    type: int
                  per_group_label:
                    description: Advertise prefixes with unique labels per group.
                    type: bool
                  per_prefix_label:
                    description: Allocate a unique label to each advertised prefix.
                    type: bool
                  prefix_limit:
                    description: Limit maximum number of prefixes from a peer.
                    suboptions:
                      forever:
                        description: Idle the peer until the user intervenes.
                        type: bool
                      idle_timeout:
                        description: Set idle timeout node.
                        type: bool
                      idle_timeout_value:
                        description: Specify timeout before attempting to restart peer.
                        type: int
                      limit_threshold:
                        description: Percentage of prefix-limit to start warnings.
                        type: int
                      maximum:
                        description: Specify maximum number of prefixes from a peer.
                        type: int
                      teardown:
                        description: Clear peer connection on reaching limit.
                        type: bool
                    type: dict
                  resolve_vpn:
                    description: Install received NLRI in inet.3 also.
                    type: bool
                  rib:
                    choices:
                    - inet.3
                    description: Select table used by labeled unicast routes.
                    type: str
                  ribgroup_name:
                    description: Name of the routing table group.
                    type: str
                  route_refresh_priority_expedited:
                    description: Expedited queue; highest priority.
                    type: bool
                  route_refresh_priority_priority:
                    description: Output queue priority; higher is better.
                    type: int
                  secondary_independent_resolution:
                    description: Resolve FLOW routes in VRF table independent of VPN FLOW
                      route.
                    type: bool
                  set:
                    description: Set NLRI.
                    type: bool
                  strip_nexthop:
                    description: Strip the next-hop from the outgoing flow update.
                    type: bool
                  topology:
                    description: Multi topology routing tables.
                    elements: dict
                    suboptions:
                      community:
                        description: Community to identify multi topology routes.
                        elements: str
                        type: list
                      name:
                        description: Specify topology name.
                        type: str
                    type: list
                  traffic_statistics:
                    description: Collect statistics for BGP label-switched paths
                    suboptions:
                      file:
                        description: Statistics file options.
                        suboptions:
                          filename:
                            description: Name of file in which to write trace information.
                            type: str
                          files:
                            description: Maximum number of trace files.
                            type: int
                          no_world_readable:
                            description: Don't allow any user to read the log file.
                            type: bool
                          size:
                            description: Maximum trace file size.
                            type: int
                          world_readable:
                            description: Don't allow any user to read the log file.
                            type: bool
                        type: dict
                      interval:
                        description: Time to collect statistics (seconds).
                        type: int
                      labeled_path:
                        description: Enable ingress labeled path statistics.
                        type: bool
                      set:
                        description: Set traffic-statistics.
                        type: bool
                    type: dict
                  type:
                    choices:
                    - any
                    - flow
                    - labeled-unicast
                    - multicast
                    - segment-routing-te
                    - unicast
                    - signaling
                    - auto-discovery-mspw
                    - auto-discovery-only
                    description: Specify type of NLRI.
                    type: str
                  withdraw_priority_expedited:
                    description: Expedited queue; highest priority.
                    type: bool
                  withdraw_priority_priority:
                    description: Output queue priority; higher is better.
                    type: int
                type: list
              afi:
                choices:
                - evpn
                - inet
                - inet-mdt
                - inet-mvpn
                - inet-vpn
                - inet6
                - inet6-mvpn
                - inet6-vpn
                - iso-vpn
                - l2vpn
                - route-target
                - traffic-engineering
                description: address family.
                type: str
            type: list
          name:
            description: Specify name of the group
            type: str
          neighbors:
            description: Specify address family config per neighbor.
            elements: dict
            suboptions:
              address_family:
                description: Enable address family and enter its config mode.
                elements: dict
                suboptions:
                  af_type:
                    description: Address family type for ipv4.
                    elements: dict
                    suboptions:
                      accepted_prefix_limit:
                        description: Specify limit for maximum number of prefixes accepted
                          from a peer.
                        suboptions:
                          forever:
                            description: Idle the peer until the user intervenes.
                            type: bool
                          idle_timeout:
                            description: Set idle timeout node.
                            type: bool
                          idle_timeout_value:
                            description: Specify timeout before attempting to restart
                              peer.
                            type: int
                          limit_threshold:
                            description: Specify teardown percentage of prefix-limit to
                              start warnings.
                            type: int
                          maximum:
                            description: Specify maximum number of prefixes accepted from
                              a peer.
                            type: int
                          teardown:
                            description: Clear peer connection on reaching limit.
                            type: bool
                        type: dict
                      add_path:
                        description: Advertise multiple paths to peer.
                        suboptions:
                          receive:
                            description: Receive multiple paths from peer.
                            type: bool
                          send:
                            description: Send multiple paths to peer.
                            suboptions:
                              include_backup_path:
                                description: Specify number of backup paths to advertise.
                                type: int
                              multipath:
                                description: Include only multipath contributor routes.
                                type: bool
                              path_count:
                                description: Include only multipath contributor routes.
                                required: true
                                type: int
                              path_selection_mode:
                                description: Configure how to select add-path routes.
                                suboptions:
                                  all_paths:
                                    description: Advertise all paths allowed by path count.
                                    type: bool
                                  equal_cost_paths:
                                    description: Advertise equal cost paths.
                                    type: bool
                                type: dict
                              prefix_policy:
                                description: Perform add-path only for prefixes that match
                                  policy.
                                type: str
                            type: dict
                        type: dict
                      aggregate_label:
                        description: Aggregate labels of incoming routes with the same
                          FEC.
                        suboptions:
                          community:
                            description: Community to identify the FEC of incoming routesC.
                            type: str
                          set:
                            description: Set Aggregate labels of incoming routes with
                              the same FEC
                            type: bool
                        type: dict
                      aigp:
                        description: Allow sending and receiving of AIGP attribute.
                        suboptions:
                          disable:
                            description: Dn not allow sending and receiving of AIGP attribute.
                            type: bool
                          set:
                            description: Set AIGP.
                            type: bool
                        type: dict
                      damping:
                        description: Enable route flap damping.
                        type: bool
                      defer_initial_multipath_build:
                        description: Defer initial multipath build until EOR is received.
                        suboptions:
                          maximum_delay:
                            description: Max delay(sec) multipath build after peer is
                              up.
                            type: int
                          set:
                            description: Set defer initial multipath build.
                            type: bool
                        type: dict
                      delay_route_advertisements:
                        description: Delay route updates for this family until FIB-sync.
                        suboptions:
                          max_delay_route_age:
                            description: Set max delay advertisement route age.
                            type: int
                          max_delay_routing_uptime:
                            description: Set max delay advertisement route age.
                            type: int
                          min_delay_inbound_convergence:
                            description: Set min delayadvertisement after source-peer
                              sent all routes.
                            type: int
                          min_delay_routing_uptime:
                            description: Set min delay advertisement route age.
                            type: int
                          set:
                            description: Set delay route advertisements.
                            type: bool
                        type: dict
                      entropy_label:
                        description: Use entropy label for entropy label capable BGP LSPs.
                        suboptions:
                          import:
                            description: Policy to select BGP LSPs to use entropy label.
                            type: str
                          no_next_hop_validation:
                            description: Don't validate next hop field against route next
                              hop.
                            type: bool
                          set:
                            description: Set entropy-label attribute.
                            type: bool
                        type: dict
                      explicit_null:
                        description: Advertise explicit null.
                        suboptions:
                          connected_only:
                            description: Advertise explicit null only for connected routes.
                            type: bool
                          set:
                            description: Set explicit-null attribute.
                            type: bool
                        type: dict
                      extended_nexthop:
                        description: Enable extended nexthop encoding.
                        type: bool
                      extended_nexthop_color:
                        description: Resolve using extended color nexthop.
                        type: bool
                      graceful_restart_forwarding_state_bit:
                        choices:
                        - from-fib
                        - set
                        description: Specify BGP graceful restart options.
                        type: str
                      legacy_redirect_ip_action:
                        description: Configure legacy redirect to IP support.
                        suboptions:
                          receive:
                            description: Accept legacy encoded redirect-to-ip action attribute
                            type: bool
                          send:
                            description: Advertise Redirect action as legacy redirect
                              attribute.
                            type: bool
                          set:
                            description: Set the legacy-redirect-ip-action.
                            type: bool
                        type: dict
                      local_ipv4_address:
                        description: Specify local IPv4 address.
                        type: str
                      loops:
                        description: Allow local AS in received AS paths.
                        type: int
                      no_install:
                        description: Dont install received routes in forwarding.
                        type: bool
                      no_validate:
                        description: Bypass validation procedure for routes that match
                          policy.
                        type: str
                      output_queue_priority_expedited:
                        description: Expedited queue; highest priority.
                        type: bool
                      output_queue_priority_priority:
                        description: Output queue priority; higher is better.
                        type: int
                      per_group_label:
                        description: Advertise prefixes with unique labels per group.
                        type: bool
                      per_prefix_label:
                        description: Allocate a unique label to each advertised prefix.
                        type: bool
                      prefix_limit:
                        description: Limit maximum number of prefixes from a peer.
                        suboptions:
                          forever:
                            description: Idle the peer until the user intervenes.
                            type: bool
                          idle_timeout:
                            description: Set idle timeout node.
                            type: bool
                          idle_timeout_value:
                            description: Specify timeout before attempting to restart
                              peer.
                            type: int
                          limit_threshold:
                            description: Percentage of prefix-limit to start warnings.
                            type: int
                          maximum:
                            description: Specify maximum number of prefixes from a peer.
                            type: int
                          teardown:
                            description: Clear peer connection on reaching limit.
                            type: bool
                        type: dict
                      resolve_vpn:
                        description: Install received NLRI in inet.3 also.
                        type: bool
                      rib:
                        choices:
                        - inet.3
                        description: Select table used by labeled unicast routes.
                        type: str
                      ribgroup_name:
                        description: Name of the routing table group.
                        type: str
                      route_refresh_priority_expedited:
                        description: Expedited queue; highest priority.
                        type: bool
                      route_refresh_priority_priority:
                        description: Output queue priority; higher is better.
                        type: int
                      secondary_independent_resolution:
                        description: Resolve FLOW routes in VRF table independent of VPN
                          FLOW route.
                        type: bool
                      set:
                        description: Set NLRI.
                        type: bool
                      strip_nexthop:
                        description: Strip the next-hop from the outgoing flow update.
                        type: bool
                      topology:
                        description: Multi topology routing tables.
                        elements: dict
                        suboptions:
                          community:
                            description: Community to identify multi topology routes.
                            elements: str
                            type: list
                          name:
                            description: Specify topology name.
                            type: str
                        type: list
                      traffic_statistics:
                        description: Collect statistics for BGP label-switched paths
                        suboptions:
                          file:
                            description: Statistics file options.
                            suboptions:
                              filename:
                                description: Name of file in which to write trace information.
                                type: str
                              files:
                                description: Maximum number of trace files.
                                type: int
                              no_world_readable:
                                description: Don't allow any user to read the log file.
                                type: bool
                              size:
                                description: Maximum trace file size.
                                type: int
                              world_readable:
                                description: Don't allow any user to read the log file.
                                type: bool
                            type: dict
                          interval:
                            description: Time to collect statistics (seconds).
                            type: int
                          labeled_path:
                            description: Enable ingress labeled path statistics.
                            type: bool
                          set:
                            description: Set traffic-statistics.
                            type: bool
                        type: dict
                      type:
                        choices:
                        - any
                        - flow
                        - labeled-unicast
                        - multicast
                        - segment-routing-te
                        - unicast
                        - signaling
                        - auto-discovery-mspw
                        - auto-discovery-only
                        description: Specify type of NLRI.
                        type: str
                      withdraw_priority_expedited:
                        description: Expedited queue; highest priority.
                        type: bool
                      withdraw_priority_priority:
                        description: Output queue priority; higher is better.
                        type: int
                    type: list
                  afi:
                    choices:
                    - evpn
                    - inet
                    - inet-mdt
                    - inet-mvpn
                    - inet-vpn
                    - inet6
                    - inet6-mvpn
                    - inet6-vpn
                    - iso-vpn
                    - l2vpn
                    - route-target
                    - traffic-engineering
                    description: address family.
                    type: str
                type: list
              neighbor_address:
                description: Specify neighbor address.
                type: str
            type: list
        type: list
    type: dict

running_config:
    description:
    - This option is used only with state I(parsed).
    - The value of this option should be the output received from the Junos device by
      executing the command B(show protocols bgp).
    - The state I(parsed) reads the configuration from C(running_config) option and transforms
      it into Ansible structured data as per the resource module's argspec and the value
      is then returned in the I(parsed) key within the result
    type: str

Outputs

after:
  description: The resulting configuration model invocation.
  returned: when changed
  sample: "The configuration returned will always be in the same format\n of the parameters\
    \ above.\n"
  type: dict
before:
  description: The configuration prior to the model invocation.
  returned: always
  sample: "The configuration returned will always be in the same format\n of the parameters\
    \ above.\n"
  type: dict
commands:
  description: The set of commands pushed to the remote device.
  returned: always
  sample:
  - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"> <nc:bgp><nc:family><nc:evpn><nc:signaling><nc:accepted-prefix-limit>
    <nc:maximum>21</nc:maximum><nc:teardown><nc:limit-threshold>99</nc:limit-threshold>
    <nc:idle-timeout><nc:timeout>2002</nc:timeout></nc:idle-timeout> </nc:teardown></nc:accepted-prefix-limit><nc:damping/>
    <nc:delay-route-advertisements><nc:maximum-delay> <nc:route-age>20</nc:route-age><nc:routing-uptime>32000</nc:routing-uptime>
    </nc:maximum-delay><nc:minimum-delay><nc:inbound-convergence>32000</nc:inbound-convergence>
    <nc:routing-uptime>23000</nc:routing-uptime></nc:minimum-delay></nc:delay-route-advertisements>
    </nc:signaling></nc:evpn></nc:family></nc:bgp></nc:protocols>
  - xml 2
  - xml 3
  type: list
gathered:
  description: Facts about the network resource gathered from the remote device as
    structured data.
  returned: when I(state) is C(gathered)
  sample: 'This output will always be in the same format as the module argspec.

    '
  type: list
parsed:
  description: The device native config provided in I(running_config) option parsed
    into structured data as per module argspec.
  returned: when I(state) is C(parsed)
  sample: 'This output will always be in the same format as the module argspec.

    '
  type: list
rendered:
  description: The provided configuration in the task rendered in device-native format
    (offline).
  returned: when I(state) is C(rendered)
  sample:
  - <nc:protocols xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  type: list