FRR

POST /netinfra/routing/frr/configure

Configure FRR

Configure BGP router, neighbors, and EVPN on local FRR instance

Request JSON Object:
  • config.as (integer) – (required)

  • config.default_ipv4 (boolean)

  • config.log_neighbor_changes (boolean)

  • config.router_id (string) – (required)

  • evpn.advertise_all_vni (boolean)

  • evpn.enable_neighbors[] (string)

  • neighbors[].bfd (boolean) – Enable BFD (Bidirectional Forwarding Detection) for fast failover

  • neighbors[].description (string)

  • neighbors[].ebgp_multihop_ttl (integer) – EBGPMultihopTTL enables ebgp-multihop <ttl> when > 0. Required for edge-cube topologies where the eBGP peer is not directly connected (loopback-to-loopback over an intermediate underlay) — without it, FRR rejects the open with “Could not connect (not directly connected)” and the session falls into a transitive-blackhole retry loop. Typical value: 2 (one underlay hop) or 5 (multi-leaf transit). Zero disables; do not emit the line.

  • neighbors[].ip (string) – (required)

  • neighbors[].next_hop_self (boolean) – NextHopSelf emits neighbor <ip> next-hop-self inside the EVPN address-family block. Edge-cubes that reflect routes from one underlay segment to another must rewrite the next-hop to themselves or the receiver will install a route whose next-hop is unreachable (silent blackhole). Set only on cubes that genuinely re-originate traffic; harmless but unnecessary on simple leaf-RR compute peers.

  • neighbors[].password (string)

  • neighbors[].remote_as (integer) – (required)

  • neighbors[].update_source (string)

  • ospf (any) – OSPF underlay configuratio

Status Codes:
Response JSON Object:
  • as (integer)

  • message (string)

  • neighbors[].ip (string)

  • neighbors[].peer_config.frr_config (string) – FRR vtysh config block for the remote peer

  • neighbors[].peer_config.message (string) – Human-readable troubleshooting hint

  • neighbors[].peer_config.state_guide (string) – Explanation of current BGP state and what to check

  • neighbors[].remote_as (integer)

  • neighbors[].session_state (string)

  • ospf_applied (boolean)

  • ospf_neighbors[].address (string)

  • ospf_neighbors[].dead_time (string)

  • ospf_neighbors[].interface (string)

  • ospf_neighbors[].neighbor_id (string)

  • ospf_neighbors[].priority (integer)

  • ospf_neighbors[].state (string) – Full, 2-Way, Init, Down

  • router_id (string)

  • verified (boolean)

GET /netinfra/routing/frr/rib

Get IP routing table

Get IP routing table (RIB) from FRR

Status Codes:
Response JSON Object:
  • count (integer)

  • routes[].destination (string) – e.g. “10.0.0.0/24”, “1.1.1.1/32”

  • routes[].distance (integer) – Administrative distance

  • routes[].installed (boolean) – Installed in FIB

  • routes[].interface (string) – Outgoing interface

  • routes[].metric (integer) – Route metric

  • routes[].next_hop (string) – Next-hop IP (empty for directly connected)

  • routes[].protocol (string) – kernel, connected, ospf, bgp, static, etc.

  • routes[].selected (boolean) – Best/selected route

  • routes[].uptime (string) – How long the route has been in the table

GET /netinfra/routing/frr/running-config

Get FRR running config

Get the full FRR running configuration (vtysh show running-config)

Status Codes:
Response JSON Object:
  • config (string)

POST /netinfra/routing/frr/teardown

Teardown FRR

Remove BGP/OSPF/EVPN and (optionally) vtep0 on the local FRR instance

Request JSON Object:
  • as (integer) – BGP AS to remove (0 = skip BGP removal)

  • remove_vtep (boolean) – also delete vtep0 + its ifupdown persistence

Status Codes:
Response JSON Object:
  • message (string)

  • removed (boolean)

  • steps[] (string)