From: Alberto Leiva Popper Date: Mon, 4 Dec 2023 18:55:06 +0000 (-0300) Subject: Fix compilation on Mac OS X-Git-Tag: 1.6.1~11 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd59667dc231d47e301a3e3d94e69ae1f01e0c61;p=thirdparty%2FFORT-validator.git Fix compilation on Mac OS 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. --- diff --git a/src/asn1/asn1c/constr_TYPE.c b/src/asn1/asn1c/constr_TYPE.c index eb3fd9df..02597a2e 100644 --- a/src/asn1/asn1c/constr_TYPE.c +++ b/src/asn1/asn1c/constr_TYPE.c @@ -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; diff --git a/src/common.c b/src/common.c index f1e9eded..a0e9ec01 100644 --- a/src/common.c +++ b/src/common.c @@ -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 diff --git a/src/http/http.c b/src/http/http.c index 844b27f1..7b356be9 100644 --- a/src/http/http.c +++ b/src/http/http.c @@ -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; } diff --git a/src/resource.c b/src/resource.c index 46a8165b..3c353648 100644 --- a/src/resource.c +++ b/src/resource.c @@ -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 diff --git a/src/rtr/db/db_table.c b/src/rtr/db/db_table.c index 6d74a0f7..2f8bbb73 100644 --- a/src/rtr/db/db_table.c +++ b/src/rtr/db/db_table.c @@ -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; } diff --git a/src/rtr/db/db_table.h b/src/rtr/db/db_table.h index ebd6c535..e6ac9e37 100644 --- a/src/rtr/db/db_table.h +++ b/src/rtr/db/db_table.h @@ -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_ */ diff --git a/src/rtr/db/delta.c b/src/rtr/db/delta.c index 1875a640..d7d5fae3 100644 --- a/src/rtr/db/delta.c +++ b/src/rtr/db/delta.c @@ -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); diff --git a/src/rtr/db/delta.h b/src/rtr/db/delta.h index 20fb7198..cdaa9bcb 100644 --- a/src/rtr/db/delta.h +++ b/src/rtr/db/delta.h @@ -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, diff --git a/src/rtr/db/vrps.c b/src/rtr/db/vrps.c index 39b9faa2..8f4015b0 100644 --- a/src/rtr/db/vrps.c +++ b/src/rtr/db/vrps.c @@ -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; } diff --git a/src/slurm/slurm_loader.c b/src/slurm/slurm_loader.c index d90ed757..6562a469 100644 --- a/src/slurm/slurm_loader.c +++ b/src/slurm/slurm_loader.c @@ -1,5 +1,6 @@ #include "slurm/slurm_loader.h" +#include #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 diff --git a/src/types/vrp.c b/src/types/vrp.c index 648944d8..ae2f31a5 100644 --- a/src/types/vrp.c +++ b/src/types/vrp.c @@ -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 diff --git a/test/rtr/db/vrps_test.c b/test/rtr/db/vrps_test.c index df867b93..cd91a629 100644 --- a/test/rtr/db/vrps_test.c +++ b/test/rtr/db/vrps_test.c @@ -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