annotate libnumdb/check_nanp.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 960ffce6c542
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * The library function implemented in this module consults ThemWi number db
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * to see if a given NANP number is owned by us or not.
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <stdio.h>
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdint.h>
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdlib.h>
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include "../include/number_db_file.h"
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 extern struct numdb_file_hdr numdb_hdr;
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 extern uint64_t *numdb_owned_numbers;
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 static int
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 compare_owned_num(p1, p2)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 uint64_t *p1, *p2;
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 {
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 if (*p1 < *p2)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 return(-1);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 else if (*p1 > *p2)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 return(1);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 else
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 return(0);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 }
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 is_nanp_locally_owned(numstr)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 char *numstr;
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 {
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 uint64_t key, *res;
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 if (!numdb_owned_numbers || !numdb_hdr.owned_number_count)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 return(0);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 key = strtoull(numstr, 0, 10);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 res = bsearch(&key, numdb_owned_numbers, numdb_hdr.owned_number_count,
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 sizeof(uint64_t), compare_owned_num);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 if (res)
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 return(1);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 else
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 return(0);
960ffce6c542 libnumdb: implement NANP lookup
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 }