]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Fix compilation on Mac OS
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 4 Dec 2023 18:55:06 +0000 (15:55 -0300)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Mon, 4 Dec 2023 20:08:43 +0000 (17:08 -0300)
Not really trying to add formal support for Mac OS at the moment;
this is just to be able to debug a little more efficiently in this
laptop I'm stuck with right now.

12 files changed:
src/asn1/asn1c/constr_TYPE.c
src/common.c
src/http/http.c
src/resource.c
src/rtr/db/db_table.c
src/rtr/db/db_table.h
src/rtr/db/delta.c
src/rtr/db/delta.h
src/rtr/db/vrps.c
src/slurm/slurm_loader.c
src/types/vrp.c
test/rtr/db/vrps_test.c

index eb3fd9df0b625cef8162ff80cd2f74811409cc09..02597a2ea23019ab3a378e48e8c012a6002973bd 100644 (file)
@@ -10,7 +10,7 @@
 /*
  * Version of the ASN.1 infrastructure shipped with compiler.
  */
-int get_asn1c_environment_version() { return ASN1C_ENVIRONMENT_VERSION; }
+int get_asn1c_environment_version(void) { return ASN1C_ENVIRONMENT_VERSION; }
 
 static asn_app_consume_bytes_f _print2fp;
 
index f1e9eded28b44c930e706e1b85c6b652667d4528..a0e9ec012cf722c4659299daab873b8fd0a27d07 100644 (file)
@@ -57,6 +57,7 @@ rwlock_read_lock(pthread_rwlock_t *lock)
         */
        pr_crit("pthread_rwlock_rdlock() returned error code %d. This is too critical for a graceful recovery; I must die now.",
            error);
+       return EINVAL; /* Warning shutupper */
 }
 
 void
index 844b27f1e81edaf695f6991f191f4251b9c911be..7b356be97faf9de65350c7a3420e1ab4846fd574 100644 (file)
@@ -45,7 +45,11 @@ get_ims(char const *file, time_t *ims)
                return (error == ENOENT) ? 0 : error;
        }
 
+#ifdef __APPLE__
+       *ims = meta.st_mtime; /* Seriously, Apple? */
+#else
        *ims = meta.st_mtim.tv_sec;
+#endif
        return 0;
 }
 
index 46a8165bd7f8c1259fe35ba7acf2981bfc12bf8d..3c35364887317e33423a16665e2ea87597002542 100644 (file)
@@ -116,6 +116,7 @@ inherit_aors(struct resources *resources, int family)
        }
 
        pr_crit("Unknown address family '%d'", family);
+       return EINVAL; /* Warning shutupper */
 }
 
 static int
@@ -213,6 +214,7 @@ add_prefix(struct resources *resources, int family, IPAddress_t *addr)
        }
 
        pr_crit("Unknown address family '%d'", family);
+       return EINVAL; /* Warning shutupper */
 }
 
 static int
@@ -312,6 +314,7 @@ add_range(struct resources *resources, int family, IPAddressRange_t *range)
        }
 
        pr_crit("Unknown address family '%d'", family);
+       return EINVAL; /* Warning shutupper */
 }
 
 static int
index 6d74a0f7245c9f2dd5f2594d17beefae1616c4bb..2f8bbb73900c9b14251a263d150a48230d268e45 100644 (file)
@@ -250,29 +250,25 @@ add_roa_deltas(struct hashable_roa *roas1, struct hashable_roa *roas2,
        struct hashable_roa *tmp;
        unsigned int r;
        unsigned int roa1_count;
-       int error;
 
        r = 0;
        roa1_count = HASH_COUNT(roas1);
 
        HASH_ITER(hh, roas1, n1, tmp) {
                HASH_FIND(hh, roas2, &n1->data, sizeof(n1->data), n2);
-               if (n2 == NULL) {
-                       error = deltas_add_roa(deltas, &n1->data, op,
-                           r1type, r, roa1_count);
-                       if (error)
-                               return error;
-               }
+               if (n2 == NULL)
+                       deltas_add_roa(deltas, &n1->data, op, r1type, r,
+                           roa1_count);
                r++;
        }
 
        return 0;
 }
 
-static int
+static void
 add_router_key_delta(struct deltas *deltas, struct hashable_key *key, int op)
 {
-       return deltas_add_router_key(deltas, &key->data, op);
+       deltas_add_router_key(deltas, &key->data, op);
 }
 
 /*
@@ -280,56 +276,36 @@ add_router_key_delta(struct deltas *deltas, struct hashable_key *key, int op)
  *
  * (Places the Router Keys that exist in @keys1 but not in @key2 in @deltas.)
  */
-static int
+static void
 add_router_key_deltas(struct hashable_key *keys1, struct hashable_key *keys2,
     struct deltas *deltas, int op)
 {
        struct hashable_key *n1; /* A node from @keys1 */
        struct hashable_key *n2; /* A node from @keys2 */
-       int error;
 
        for (n1 = keys1; n1 != NULL; n1 = n1->hh.next) {
                HASH_FIND(hh, keys2, &n1->data, sizeof(n1->data), n2);
-               if (n2 == NULL) {
-                       error = add_router_key_delta(deltas, n1, op);
-                       if (error)
-                               return error;
-               }
+               if (n2 == NULL)
+                       add_router_key_delta(deltas, n1, op);
        }
-
-       return 0;
 }
 
-int
-compute_deltas(struct db_table *old, struct db_table *new,
-    struct deltas **result)
+struct deltas *
+compute_deltas(struct db_table *old, struct db_table *new)
 {
-       struct deltas *deltas;
-       int error;
-
-       deltas = deltas_create();
-
-       error = add_roa_deltas(new->roas, old->roas, deltas, FLAG_ANNOUNCEMENT,
-           'n');
-       if (error)
-               goto fail;
-       error = add_roa_deltas(old->roas, new->roas, deltas, FLAG_WITHDRAWAL,
-           'o');
-       if (error)
-               goto fail;
-       error = add_router_key_deltas(new->router_keys, old->router_keys,
-           deltas, FLAG_ANNOUNCEMENT);
-       if (error)
-               goto fail;
-       error = add_router_key_deltas(old->router_keys, new->router_keys,
-           deltas, FLAG_WITHDRAWAL);
-       if (error)
-               goto fail;
-
-       *result = deltas;
-       return 0;
+       struct deltas *deltas = deltas_create();
+
+       add_roa_deltas(new->roas, old->roas, deltas, FLAG_ANNOUNCEMENT, 'n');
+       add_roa_deltas(old->roas, new->roas, deltas, FLAG_WITHDRAWAL, 'o');
+       add_router_key_deltas(new->router_keys, old->router_keys, deltas,
+           FLAG_ANNOUNCEMENT);
+       add_router_key_deltas(old->router_keys, new->router_keys, deltas,
+           FLAG_WITHDRAWAL);
+
+       if (deltas_is_empty(deltas)) {
+               deltas_refput(deltas);
+               return NULL;
+       }
 
-fail:
-       deltas_refput(deltas);
-       return error;
+       return deltas;
 }
index ebd6c535818612309776f5c6c35ebabadfe21053..e6ac9e37e1a5490ec6f3bdbcccc777cdc1da55b2 100644 (file)
@@ -28,6 +28,6 @@ int rtrhandler_handle_roa_v6(struct db_table *, uint32_t,
     struct ipv6_prefix const *, uint8_t);
 int rtrhandler_handle_router_key(struct db_table *, unsigned char const *,
     uint32_t, unsigned char const *);
-int compute_deltas(struct db_table *, struct db_table *, struct deltas **);
+struct deltas *compute_deltas(struct db_table *, struct db_table *);
 
 #endif /* SRC_RTR_DB_DB_TABLE_H_ */
index 1875a64071a27b82e88bd4165b6bef7d59fb80bc..d7d5fae3321fc4ffafebd5e3bb169815394aee25 100644 (file)
@@ -97,6 +97,7 @@ get_deltas_array4(struct deltas *deltas, int op)
        }
 
        pr_crit("Unknown delta operation: %d", op);
+       return NULL; /* Warning shutupper */
 }
 
 static struct deltas_v6 *
@@ -110,9 +111,10 @@ get_deltas_array6(struct deltas *deltas, int op)
        }
 
        pr_crit("Unknown delta operation: %d", op);
+       return NULL; /* Warning shutupper */
 }
 
-int
+void
 deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op,
     char r1type, unsigned int roa_counter, unsigned int roa_count)
 {
@@ -129,14 +131,14 @@ deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op,
                delta.v4.prefix.len = vrp->prefix_length;
                delta.v4.max_length = vrp->max_prefix_length;
                deltas_v4_add(get_deltas_array4(deltas, op), &delta.v4);
-               return 0;
+               return;
        case AF_INET6:
                delta.v6.as = vrp->asn;
                delta.v6.prefix.addr = vrp->prefix.v6;
                delta.v6.prefix.len = vrp->prefix_length;
                delta.v6.max_length = vrp->max_prefix_length;
                deltas_v6_add(get_deltas_array6(deltas, op), &delta.v6);
-               return 0;
+               return;
        }
 
        pr_crit("Unknown protocol: [%u %s/%u-%u %u] %c %u/%u "
@@ -151,7 +153,7 @@ deltas_add_roa(struct deltas *deltas, struct vrp const *vrp, int op,
            roa_count);
 }
 
-int
+void
 deltas_add_router_key(struct deltas *deltas, struct router_key const *key,
     int op)
 {
@@ -164,10 +166,10 @@ deltas_add_router_key(struct deltas *deltas, struct router_key const *key,
        switch (op) {
        case FLAG_ANNOUNCEMENT:
                deltas_rk_add(&deltas->rk.adds, &delta);
-               return 0;
+               return;
        case FLAG_WITHDRAWAL:
                deltas_rk_add(&deltas->rk.removes, &delta);
-               return 0;
+               return;
        }
 
        pr_crit("Unknown delta operation: %d", op);
index 20fb7198c92ba99d450324aa9fe62b08c48f67b7..cdaa9bcb2c832901b795edcf5e85a240740fa9f1 100644 (file)
@@ -9,9 +9,9 @@ struct deltas *deltas_create(void);
 void deltas_refget(struct deltas *);
 void deltas_refput(struct deltas *);
 
-int deltas_add_roa(struct deltas *, struct vrp const *, int,
+void deltas_add_roa(struct deltas *, struct vrp const *, int,
     char, unsigned int, unsigned int);
-int deltas_add_router_key(struct deltas *, struct router_key const *, int);
+void deltas_add_router_key(struct deltas *, struct router_key const *, int);
 
 bool deltas_is_empty(struct deltas *);
 int deltas_foreach(struct deltas *, delta_vrp_foreach_cb,
index 39b9faa229d51608456842129f19d9237dab4ffc..8f4015b00d7cfc612b90ccef494346d015a35190 100644 (file)
@@ -171,34 +171,6 @@ handle_router_key(unsigned char const *ski, struct asn_range const *asns,
        return 0;
 }
 
-static int
-__compute_deltas(struct db_table *old_base, struct db_table *new_base,
-    bool *notify_clients, struct deltas **result)
-{
-       int error;
-
-       *result = NULL;
-       if (notify_clients != NULL)
-               *notify_clients = true;
-
-       /* First version of the database = No deltas */
-       if (old_base == NULL)
-               return 0;
-
-       error = compute_deltas(old_base, new_base, result);
-       if (error)
-               return error;
-
-       if (deltas_is_empty(*result)) {
-               if (notify_clients != NULL)
-                       *notify_clients = false;
-               deltas_refput(*result);
-               *result = NULL;
-       }
-
-       return 0;
-}
-
 /*
  * High level validator function.
  *
@@ -222,10 +194,11 @@ __vrps_update(bool *changed)
        struct deltas *new_deltas;
        int error;
 
-       if (changed)
+       if (changed != NULL)
                *changed = false;
        old_base = state.base;
        new_base = NULL;
+       new_deltas = NULL;
 
        new_base = perform_standalone_validation();
        if (new_base == NULL)
@@ -238,23 +211,17 @@ __vrps_update(bool *changed)
        }
 
        /*
-        * At this point, new_base is completely valid. Even if we error out
-        * later, report the ROAs.
-        *
         * This is done after the validation, not during it, to prevent
         * duplicate ROAs.
         */
        output_print_data(new_base);
 
-       error = __compute_deltas(old_base, new_base, changed, &new_deltas);
-       if (error) {
-               /*
-                * Deltas are nice-to haves. As long as state.base is correct,
-                * the validator can continue serving the routers.
-                * (Albeit less efficiently.)
-                * So drop a warning and keep going.
-                */
-               pr_op_warn("Deltas could not be computed: %s", strerror(error));
+       if (old_base != NULL) {
+               new_deltas = compute_deltas(old_base, new_base);
+               if (new_deltas == NULL) {
+                       db_table_destroy(new_base);
+                       return 0;
+               }
        }
 
        rwlock_write_lock(&state_lock);
@@ -277,6 +244,8 @@ __vrps_update(bool *changed)
 
        if (old_base != NULL)
                db_table_destroy(old_base);
+       if (changed != NULL)
+               *changed = true;
 
        return 0;
 }
index d90ed757eace09e8c7f377553c8770b4c4c8d661..6562a4692a20f90c4d19bed832058b83eb94792e 100644 (file)
@@ -1,5 +1,6 @@
 #include "slurm/slurm_loader.h"
 
+#include <errno.h>
 #include "alloc.h"
 #include "log.h"
 #include "config.h"
@@ -86,6 +87,7 @@ slurm_pfx_assertions_add(struct slurm_prefix *prefix, void *arg)
        }
 
        pr_crit("Unknown addr family type: %u", vrp.addr_fam);
+       return EINVAL; /* Warning shutupper */
 }
 
 static int
index 648944d8c09abeda88994292e37177e1d0bbfad1..ae2f31a5496aafb5851ad272196a1b03a7de9584 100644 (file)
@@ -20,6 +20,7 @@ vrp_equals(struct vrp const *a, struct vrp const *b)
        }
 
        pr_crit("Unknown address family: %u", a->addr_fam);
+       return false; /* Warning shutupper */
 }
 
 /* Checks if a's prefix equals or covers b's prefix */
@@ -39,6 +40,7 @@ vrp_prefix_cov(struct vrp const *a, struct vrp const *b)
        }
 
        pr_crit("Unknown address family: %u", a->addr_fam);
+       return false; /* Warning shutupper */
 }
 
 int
index df867b93e82274e835ec74f609fd6bc35a625997..cd91a62966a5214a4ce4b2925729c2ae82326ef2 100644 (file)
@@ -271,13 +271,15 @@ check_base(serial_t expected_serial, bool const *expected_base)
 static int
 vrp_add(struct delta_vrp const *delta, void *arg)
 {
-       return deltas_add_roa(arg, &delta->vrp, delta->flags, 'a', 0, 0);
+       deltas_add_roa(arg, &delta->vrp, delta->flags, 'a', 0, 0);
+       return 0;
 }
 
 static int
 rk_add(struct delta_router_key const *delta, void *arg)
 {
-       return deltas_add_router_key(arg, &delta->router_key, delta->flags);
+       deltas_add_router_key(arg, &delta->router_key, delta->flags);
+       return 0;
 }
 
 static void