Status page: count rejected announcements, and name AS numbers

The "refused" column counted rejected announcements since the start, not
routes, which made two peers that send the same routes look different
when one of them re-sends more often. It is now "rejected announcements",
with the held routes, the number that compares, beside it as "held now".
The page says "rejected" throughout, as the documentation and metrics do.

Rows are highlighted under the pointer, and pointing at an AS number
shows its holder's name, which the browser asks RIPEstat for. The daemon
looks nothing up; the monitoring page says what the browser sends where.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Rayhaan JaufeerallyandClaude Opus 5.5 committed 2026-10-04 22:43:36 +02:00
1 parent efb2d81a50
commit acecc22f48
2 files changed
+78 -17

No files matched your search

+16 -3
View File
@@ -29,8 +29,8 @@ The status page, `/statusz`, displays the following information:
- The configuration that was read at startup.
- Each neighbor, with its session state, address families, role and role
confirmation, number of accepted, rejected, and held routes, and last
error.
confirmation, number of accepted routes, rejected announcements, and held
routes, and last error.
- The originated routes, and a lookup of received routes.
- RPKI validation: the cache, the RTR version, and the age of the data.
- Kernel route installation: the number of installed routes, the number of
@@ -39,6 +39,11 @@ The status page, `/statusz`, displays the following information:
- Rejected routes, by neighbor and by reason.
- A live event log.
To display the name of the holder of an AS number, point to the number. The
browser requests the name from [RIPEstat](https://stat.ripe.net/); Ferrix
does not send any requests itself. If the browser cannot reach RIPEstat,
the page displays "name not available".
## Route Lookup
The status page provides a lookup of received routes. The HTTP endpoint
@@ -71,12 +76,20 @@ curl -s '127.0.0.1:8080/api/routes/received?address=193.0.0.1&best=true' | jq
Ferrix does not store rejected routes in the routing table. For each
neighbor, it records the number of rejected routes for each reason, and the
200 most recent rejected routes with all the path attributes they were
received with. The status page displays this information under "Refused
received with. The status page displays this information under "Rejected
routes"; to display the attributes of a rejected route, select **show** in
its row. The HTTP endpoint `/api/routes/rejected` returns the same
information as JSON. To display the records for one neighbor, add
`?peer=NAME`.
The numbers count rejected announcements, not prefixes. When a neighbor
announces a route again, for example because an attribute changed, and
Ferrix rejects it again, the count increases again. Two neighbors that
advertise the same routes can therefore have different counts. The number
of routes currently held, because they are RPKI or ASPA invalid or their
next hop is unreachable, is displayed in the neighbor table as **held
now**.
```json
[{"peer":"transit-a","total":3,"by_reason":{"RPKI invalid":2,"bogon prefix":1},
"recent":[{"prefix":"203.0.113.0/24","reason":"RPKI invalid","as_path":[64496,64511]}]}]