]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Trace VRPs as they're approved
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Thu, 30 Oct 2025 23:53:48 +0000 (17:53 -0600)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Thu, 30 Oct 2025 23:53:48 +0000 (17:53 -0600)
Helps with the log analysis.

src/log.c
src/log.h
src/object/certificate.c
src/rtr/db/db_table.c

index 63c3ea6f4b0b664a2f28a2c3a76322eebfd6120d..18bcde3526f822222116f01c15f05abac81b270e 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -59,6 +59,7 @@ SLIST_HEAD(loggers, logger);
 
 /* Constant after init */
 static struct loggers listeners = SLIST_HEAD_INITIALIZER(listeners);
+static bool trc_enabled;
 
 static void
 vcb(struct logger *lgr, struct level *lvl, char const *fmt, ...)
@@ -219,6 +220,8 @@ add_listener(struct loggers *list, struct log_listener *new)
                return pr_err("Unknown log type: %s", new->type);
        }
 
+       if (node->lvl == &TRC)
+               trc_enabled = true;
        SLIST_INSERT_HEAD(list, node, lh);
        return 0;
 }
@@ -288,6 +291,12 @@ pr_clutter(const char *fmt, ...)
 
 #endif
 
+bool
+pr_trc_enabled(void)
+{
+       return trc_enabled;
+}
+
 void
 pr_trc(const char *fmt, ...)
 {
index 59a5cb776077c997b78c678e16f3a72ceb699605..8a8bfe960da7f2e13c06808d202a89b78e2897bf 100644 (file)
--- a/src/log.h
+++ b/src/log.h
@@ -91,6 +91,8 @@ void pr_clutter(const char *, ...) CHECK_FORMAT(1, 2);
 #define pr_clutter(...)
 #endif
 
+bool pr_trc_enabled(void);
+
 void pr_trc(const char *, ...) CHECK_FORMAT(1, 2);
 void pr_inf(const char *, ...) CHECK_FORMAT(1, 2);
 int pr_wrn(const char *, ...) CHECK_FORMAT(1, 2);
index 6eaf432e4b5370bb13ba6beede7f7a67c2a2df62..390b621e2ca7fe3256d09782bc846f3587f47bfb 100644 (file)
@@ -2050,7 +2050,7 @@ retry:    mft.path = cage_map_file(cage, &mft.url, &rpp_type);
                        ghostbusters_traverse(map, ca);
        }
 
-       pr_trc("RPP seems sufficiently correct.");
+       pr_trc("RPP seems salvageable.");
 
        if (queued > 0)
                task_wakeup();
index 94775aee8e806422b82028c22fe92d486cf3538b..6f6db05e1899d2bd311e1ab20ced7410036ffd0a 100644 (file)
@@ -225,6 +225,15 @@ db_table_remove_router_key(struct db_table *table,
        }
 }
 
+static void
+trc_vrp(struct vrp *vrp)
+{
+       char buf[INET6_ADDRSTRLEN];
+       pr_trc("Adding VRP: %s/%u-%u => %u",
+           inet_ntop(vrp->addr_fam, &vrp->prefix, buf, INET6_ADDRSTRLEN),
+           vrp->prefix_length, vrp->max_prefix_length, vrp->asn);
+}
+
 int
 rtrhandler_handle_roa_v4(struct db_table *table, uint32_t asn,
     struct ipv4_prefix const *prefix4, uint8_t max_length)
@@ -237,6 +246,9 @@ rtrhandler_handle_roa_v4(struct db_table *table, uint32_t asn,
        roa->data.max_prefix_length = max_length;
        roa->data.addr_fam = AF_INET;
 
+       if (pr_trc_enabled())
+               trc_vrp(&roa->data);
+
        return add_roa(table, roa);
 }
 
@@ -252,6 +264,9 @@ rtrhandler_handle_roa_v6(struct db_table *table, uint32_t asn,
        roa->data.max_prefix_length = max_length;
        roa->data.addr_fam = AF_INET6;
 
+       if (pr_trc_enabled())
+               trc_vrp(&roa->data);
+
        return add_roa(table, roa);
 }