A thinko slipped through review in aspa.c which broke the ASPA counters. Use only one counter and call it STYPE_PROVIDERS.
Is it ok to switch from "both" to "valid" in output-ometric.c for consistency with the other products or do we need to maintain compat for some parsers? output before and after my diff: -rpki_client_objects{type="vap providers",state="both"} 0 -rpki_client_objects{type="vap providers",state="IPv4 only"} 0 -rpki_client_objects{type="vap providers",state="IPv6 only"} 0 +rpki_client_objects{type="vap providers",state="valid"} 4 Index: aspa.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/aspa.c,v retrieving revision 1.20 diff -u -p -r1.20 aspa.c --- aspa.c 28 Jun 2023 17:24:20 -0000 1.20 +++ aspa.c 29 Jun 2023 14:11:46 -0000 @@ -369,7 +369,7 @@ aspa_insert_vaps(struct vap_tree *tree, aspa->providers[i] < v->providers[j]) { /* merge provider from aspa into v */ repo_stat_inc(rp, v->talid, RTYPE_ASPA, - STYPE_BOTH + aspa->providers[i]); + STYPE_PROVIDERS); insert_vap(v, j, &aspa->providers[i]); i++; } else if (aspa->providers[i] == v->providers[j]) Index: extern.h =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/extern.h,v retrieving revision 1.187 diff -u -p -r1.187 extern.h --- extern.h 29 Jun 2023 10:28:25 -0000 1.187 +++ extern.h 29 Jun 2023 14:11:47 -0000 @@ -530,9 +530,7 @@ enum stype { STYPE_TOTAL, STYPE_UNIQUE, STYPE_DEC_UNIQUE, - STYPE_BOTH, - STYPE_ONLY_IPV4, - STYPE_ONLY_IPV6, + STYPE_PROVIDERS, }; struct repo; @@ -562,8 +560,6 @@ struct repotalstats { uint32_t vaps; /* total number of Validated ASPA Payloads */ uint32_t vaps_uniqs; /* total number of unique VAPs */ uint32_t vaps_pas; /* total number of providers */ - uint32_t vaps_pas4; /* total number of IPv4 only providers */ - uint32_t vaps_pas6; /* total number of IPv6 only providers */ uint32_t vrps; /* total number of Validated ROA Payloads */ uint32_t vrps_uniqs; /* number of unique vrps */ }; Index: main.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/main.c,v retrieving revision 1.243 diff -u -p -r1.243 main.c --- main.c 23 Jun 2023 11:36:24 -0000 1.243 +++ main.c 29 Jun 2023 14:11:47 -0000 @@ -750,8 +750,6 @@ sum_stats(const struct repo *rp, const s out->vaps += in->vaps; out->vaps_uniqs += in->vaps_uniqs; out->vaps_pas += in->vaps_pas; - out->vaps_pas4 += in->vaps_pas4; - out->vaps_pas6 += in->vaps_pas6; } static void Index: output-ometric.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/output-ometric.c,v retrieving revision 1.4 diff -u -p -r1.4 output-ometric.c --- output-ometric.c 5 Jun 2023 14:19:13 -0000 1.4 +++ output-ometric.c 29 Jun 2023 14:11:47 -0000 @@ -83,11 +83,7 @@ set_common_stats(const struct repotalsta ometric_set_int_with_labels(metric, in->vaps_uniqs, OKV("type", "state"), OKV("vap", "unique"), ol); ometric_set_int_with_labels(metric, in->vaps_pas, - OKV("type", "state"), OKV("vap providers", "both"), ol); - ometric_set_int_with_labels(metric, in->vaps_pas4, - OKV("type", "state"), OKV("vap providers", "IPv4 only"), ol); - ometric_set_int_with_labels(metric, in->vaps_pas6, - OKV("type", "state"), OKV("vap providers", "IPv6 only"), ol); + OKV("type", "state"), OKV("vap providers", "valid"), ol); } static void Index: repo.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/repo.c,v retrieving revision 1.49 diff -u -p -r1.49 repo.c --- repo.c 29 Jun 2023 14:09:42 -0000 1.49 +++ repo.c 29 Jun 2023 14:11:47 -0000 @@ -1473,14 +1473,8 @@ repo_stat_inc(struct repo *rp, int talid case STYPE_DEC_UNIQUE: rp->stats[talid].vaps_uniqs--; break; - case STYPE_BOTH: + case STYPE_PROVIDERS: rp->stats[talid].vaps_pas++; - break; - case STYPE_ONLY_IPV4: - rp->stats[talid].vaps_pas4++; - break; - case STYPE_ONLY_IPV6: - rp->stats[talid].vaps_pas6++; break; default: break;