]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Bug #83/#89: Print even more data
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Fri, 3 Feb 2023 18:44:32 +0000 (12:44 -0600)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Fri, 3 Feb 2023 19:29:31 +0000 (13:29 -0600)
src/output_printer.c
src/rtr/db/db_table.c
src/rtr/db/delta.c

index 570ef2f2e1ea26d030112677062a98ca32fe316d..315068947eff401dd4d95ae061b0a294a0f39bd8 100644 (file)
@@ -48,8 +48,10 @@ print_roa_csv(struct vrp const *vrp, void *arg)
 {
        FILE *out = arg;
 
-       if (vrp->addr_fam != AF_INET && vrp->addr_fam != AF_INET6)
-               pr_crit("Unknown family type");
+       if (vrp->addr_fam != AF_INET && vrp->addr_fam != AF_INET6) {
+               /* pr_crit("Unknown family type"); TODO (issue83) */
+               return 0;
+       }
 
        fprintf(out, "AS%u,%s/%u,%u\n", vrp->asn,
            inet_ntop(vrp->addr_fam, &vrp->prefix, addr_buf, INET6_ADDRSTRLEN),
index 981e25d959ba33e0c57d0ed91f3fd8faf0de5ce4..96fdb741db08c0e106e9937b9c633626b87a2ff7 100644 (file)
@@ -258,19 +258,34 @@ add_roa_deltas(struct hashable_roa *roas1, struct hashable_roa *roas2,
 void
 find_bad_vrp(char const *prefix, struct db_table *table)
 {
-       struct hashable_roa *cursor;
+       struct hashable_roa *node;
        struct hashable_roa *tmp;
-       uint8_t family;
+       struct vrp const *vrp;
+       unsigned int roa_counter;
+       unsigned int roa_count;
+       char buffer[INET6_ADDRSTRLEN];
 
        if (table == NULL)
                return;
 
-       HASH_ITER(hh, table->roas, cursor, tmp) {
-               family = cursor->data.addr_fam;
-               if (family != AF_INET && family != AF_INET6) {
-                       pr_op_err("%s: VRP corrupted!", prefix);
+       roa_counter = 0;
+       roa_count = HASH_COUNT(table->roas);
+
+       HASH_ITER(hh, table->roas, node, tmp) {
+               vrp = &node->data;
+               if (vrp->addr_fam != AF_INET && vrp->addr_fam != AF_INET6) {
+                       pr_op_err("%s: VRP corrupted! [%u %s/%u-%u %u] %u/%u",
+                           prefix,
+                           vrp->asn,
+                           addr2str6(&vrp->prefix.v6, buffer),
+                           vrp->prefix_length,
+                           vrp->max_prefix_length,
+                           vrp->addr_fam,
+                           roa_counter,
+                           roa_count);
                        return;
                }
+               roa_counter++;
        }
 }
 
index 99dc64ee18822696e24434c953e3b46817ab2536..58e049d6f0821bceada476acac557fffb906d52c 100644 (file)
@@ -141,7 +141,7 @@ deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op,
                return deltas_v6_add(get_deltas_array6(deltas, op), &delta.v6);
        }
 
-       pr_val_err("Unknown protocol: [%u %s/%u-%u %u] %c %u %u",
+       pr_val_err("Unknown protocol: [%u %s/%u-%u %u] %c %u/%u",
            vrp->asn,
            addr2str6(&vrp->prefix.v6, buffer),
            vrp->prefix_length,