FreeCalypso > hg > themwi-system-sw
view utils/themwi-dump-numdb.c @ 124:7e04d28fae8b
sip-in: default use-100rel to no
BulkVS servers act badly when we send a reliable 180 Ringing response
to an incoming call, even though they advertise 100rel support in
the Supported header in the INVITE packet, and we probably won't be
implementing 100rel for outbound because doing per-the-spec PRACK
as a UAC is just too burdensome. Therefore, we need to consider
100rel extension as not-really-supported in themwi-system-sw.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 01 Oct 2022 15:54:50 -0800 |
parents | 7749ae8b6414 |
children |
line wrap: on
line source
/* * This program is a debug utility: it reads and dumps the compiled * binary form of ThemWi number database. */ #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include "../include/number_db_file.h" static char binfile_default_pathname[] = "/var/gsm/number-db.bin"; static char *binfile_pathname; static FILE *inf; static struct numdb_file_hdr hdr; static void dump_owned_numbers() { unsigned count; uint64_t rec; for (count = 0; count < hdr.owned_number_count; count++) { if (fread(&rec, sizeof rec, 1, inf) != 1) { fprintf(stderr, "error reading record from %s\n", binfile_pathname); exit(1); } if (rec < 2000000000ULL || rec > 9999999999ULL) { fprintf(stderr, "owned number record #%u: uint64_t value out of valid range\n", count); exit(1); } printf("Owned NANP number: +1%llu\n", rec); } } static void dump_short_numbers() { unsigned count; struct short_number_map rec; for (count = 0; count < hdr.short_number_count; count++) { if (fread(&rec, sizeof rec, 1, inf) != 1) { fprintf(stderr, "error reading record from %s\n", binfile_pathname); exit(1); } if (rec.short_code > 9999) { fprintf(stderr, "short number record #%u: short_code field out of valid range\n", count); exit(1); } if (!rec.prefix) { printf("Short number %04u is an ITN\n", rec.short_code); continue; } if (rec.prefix < 200000 || rec.prefix > 999999) { fprintf(stderr, "short number record #%u: prefix field out of valid range\n", count); exit(1); } printf("Short number %04u maps to +1%06u%04u\n", rec.short_code, rec.prefix, rec.short_code); } } main(argc, argv) char **argv; { if (argc > 2) { fprintf(stderr, "usage: %s [binfile]\n", argv[0]); exit(1); } if (argv[1]) binfile_pathname = argv[1]; else binfile_pathname = binfile_default_pathname; inf = fopen(binfile_pathname, "r"); if (!inf) { perror(binfile_pathname); exit(1); } if (fread(&hdr, sizeof hdr, 1, inf) != 1) { fprintf(stderr, "error reading header from %s\n", binfile_pathname); exit(1); } printf("Count of owned NANP numbers: %u\n", hdr.owned_number_count); printf("Count of defined short numbers: %u\n", hdr.short_number_count); dump_owned_numbers(); dump_short_numbers(); exit(0); }