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:
200 OK – FRR configured
400 Bad Request – Invalid request
500 Internal Server Error – FRR configuration error
- 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:
200 OK – IP routing table
500 Internal Server Error – FRR query error
- 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:
200 OK – FRR running configuration
500 Internal Server Error – FRR query error
- 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:
200 OK – FRR torn down
400 Bad Request – Invalid request
500 Internal Server Error – FRR teardown error
- Response JSON Object:
message (string)
removed (boolean)
steps[] (string)