annotate mtctest/setup.c @ 267:81958b35f74d

NANP validation: allow made-up area codes of N9X form
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 13 Nov 2023 15:28:09 -0800
parents 74dae755f85a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we compose the MNCC_SETUP_REQ message
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * initiating our test MT call.
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 */
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <sys/types.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <sys/socket.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <ctype.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdio.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdint.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <stdlib.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <string.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <strings.h>
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 #include "../include/mncc.h"
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "../include/gsm48_const.h"
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
16 #include "../include/number_db_v2.h"
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
17 #include "../libnumdb2/lookup_func.h"
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 struct gsm_mncc setup_msg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 set_called_number(arg)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 char *arg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 int rc, ndig;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 char short_num[5], long_num[12];
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
27 struct short_number_rec *snum;
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 if (!strncmp(arg, "imsi:", 5)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 rc = grok_imsi_user_arg(arg, setup_msg.imsi);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 if (rc < 0) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 "error: call-by-IMSI destination \"%s\" is invalid\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 arg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 if (arg[0] == '+') {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 if (arg[1] != '1') {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 "error: plus-format call destination number must begin with 1\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 if (grok_number_string(arg+1, 1) != 11) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 bad_plus1: fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 "error: malformed +1 call destination number\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 dehyphen_number_string(arg+1, setup_msg.called.number);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
51 if (!is_nanp_valid_prefix(setup_msg.called.number+1))
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
52 goto bad_plus1;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
53 setup_msg.called.type = GSM48_TON_INTERNATIONAL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
54 setup_msg.called.plan = GSM48_NPI_ISDN_E164;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
55 setup_msg.fields |= MNCC_F_CALLED;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
56 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
57 }
31
08d7794cdd0a themwi-test-mtc: fix bug in called number parsing
Mychaela Falconia <falcon@freecalypso.org>
parents: 21
diff changeset
58 ndig = grok_number_string(arg, 1);
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
59 switch (ndig) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
60 case 4:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
61 dehyphen_number_string(arg, short_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
62 if (read_number_db() < 0) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
63 fprintf(stderr, "error reading number database\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
64 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
65 }
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
66 snum = numdb_lookup_short(short_num);
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
67 if (!snum) {
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
68 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
69 "error: short dial number %s is not valid\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
70 short_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
71 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
72 }
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
73 switch (snum->short_num_type) {
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
74 case SHORT_NUM_TYPE_ABBREV:
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
75 setup_msg.called.type = GSM48_TON_INTERNATIONAL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
76 setup_msg.called.plan = GSM48_NPI_ISDN_E164;
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
77 sprintf(setup_msg.called.number, "1%03u%03u%04u",
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
78 snum->fullnum_prefix[0],
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
79 snum->fullnum_prefix[1], snum->short_num);
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
80 break;
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
81 case SHORT_NUM_TYPE_ITN:
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
82 setup_msg.called.type = GSM48_TON_NET_SPEC;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
83 setup_msg.called.plan = GSM48_NPI_PRIVATE;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
84 strcpy(setup_msg.called.number, short_num);
246
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
85 break;
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
86 default:
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
87 fprintf(stderr,
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
88 "error: short dial number %s is not abbrev or ITN\n",
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
89 short_num);
74dae755f85a themwi-test-mtc: convert to libnumdb2
Mychaela Falconia <falcon@freecalypso.org>
parents: 245
diff changeset
90 exit(1);
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
91 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
92 setup_msg.fields |= MNCC_F_CALLED;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
93 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 case 10:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95 dehyphen_number_string(arg, long_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 if (!is_nanp_valid_prefix(long_num))
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 break;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 setup_msg.called.type = GSM48_TON_INTERNATIONAL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 setup_msg.called.plan = GSM48_NPI_ISDN_E164;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 setup_msg.called.number[0] = '1';
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
101 strcpy(setup_msg.called.number+1, long_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 setup_msg.fields |= MNCC_F_CALLED;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
104 case 11:
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 dehyphen_number_string(arg, long_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 if (long_num[0] != '1')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 break;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 if (!is_nanp_valid_prefix(long_num+1))
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 break;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 setup_msg.called.type = GSM48_TON_INTERNATIONAL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 setup_msg.called.plan = GSM48_NPI_ISDN_E164;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 strcpy(setup_msg.called.number, long_num);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 setup_msg.fields |= MNCC_F_CALLED;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 fprintf(stderr, "error: call destination number \"%s\" is invalid\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
117 arg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
118 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
119 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
120
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
121 static void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
122 set_calling_number(arg)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
123 char *arg;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
124 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
125 unsigned ndig;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
126 int c;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
127
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
128 if (!strcmp(arg, "unavail")) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
129 setup_msg.calling.present = GSM48_PRES_UNAVAIL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
130 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
131 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
132 if (!strcmp(arg, "blocked")) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
133 setup_msg.calling.present = GSM48_PRES_RESTR;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
134 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
135 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
136 if (*arg == '+') {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
137 setup_msg.calling.type = GSM48_TON_INTERNATIONAL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
138 arg++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
139 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
140 for (ndig = 0; *arg; ) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
141 c = *arg++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
142 if (c == ',')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
143 break;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
144 if (c == '-')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
145 continue;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
146 if (!is_valid_ext_digit(c)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
147 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
148 "error: calling number argument contains invalid digit \'%c\'\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
149 c);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
150 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
151 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
152 if (ndig >= 32) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
153 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
154 "error: calling number argument is too long\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
155 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
156 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
157 setup_msg.calling.number[ndig] = c;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
158 ndig++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
159 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
160 if (!ndig) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
161 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
162 "error: calling number argument has no digits\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
163 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
164 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
165 setup_msg.calling.plan = GSM48_NPI_ISDN_E164;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
166 for (;;) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
167 while (*arg == ',')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
168 arg++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
169 if (!*arg)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
170 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
171 if (!strncmp(arg, "ton=", 4)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
172 arg += 4;
245
5141e21596bb themwi-test-mtc: fix ancient bug in From number setting
Mychaela Falconia <falcon@freecalypso.org>
parents: 31
diff changeset
173 if (arg[0] >= '0' && arg[0] <= '7' && !isdigit(arg[1])){
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
174 setup_msg.calling.type = *arg - '0';
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
175 arg++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
176 } else {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
177 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
178 "error: calling number argument contains invalid ton= part\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
179 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
180 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
181 } else if (!strncmp(arg, "npi=", 4)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
182 arg += 4;
245
5141e21596bb themwi-test-mtc: fix ancient bug in From number setting
Mychaela Falconia <falcon@freecalypso.org>
parents: 31
diff changeset
183 if (arg[0] >= '0' && arg[0] <= '9' && !isdigit(arg[1])){
21
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
184 setup_msg.calling.plan = *arg - '0';
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
185 arg++;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
186 } else if (arg[0] == '1' && arg[1] >= '0' &&
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
187 arg[1] <= '5' && !isdigit(arg[2])) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
188 setup_msg.calling.plan = atoi(arg);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
189 arg += 2;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
190 } else {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
191 fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
192 "error: calling number argument contains invalid npi= part\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
193 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
194 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
195 } else if (!strncmp(arg, "restr", 5)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
196 arg += 5;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
197 setup_msg.calling.present = GSM48_PRES_RESTR;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
198 } else if (!strncmp(arg, "vp", 2)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
199 arg += 2;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
200 setup_msg.calling.screen = GSM48_SCRN_USER_PASS;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
201 } else if (!strncmp(arg, "vf", 2)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
202 arg += 2;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
203 setup_msg.calling.screen = GSM48_SCRN_USER_FAIL;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
204 } else if (!strncmp(arg, "net", 3)) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
205 arg += 3;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
206 setup_msg.calling.screen = GSM48_SCRN_NETWORK;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
207 } else {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
208 inv_qual: fprintf(stderr,
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
209 "error: calling number argument contains invalid qualifier\n");
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
210 exit(1);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
211 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
212 if (!*arg)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
213 return;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
214 if (*arg != ',')
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
215 goto inv_qual;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
216 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
217 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
218
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
219 void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
220 init_setup_msg(from, to)
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
221 char *from, *to;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
222 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
223 setup_msg.msg_type = MNCC_SETUP_REQ;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
224 setup_msg.callref = 1;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
225 set_called_number(to);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
226 if (from) {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
227 set_calling_number(from);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
228 setup_msg.fields |= MNCC_F_CALLING;
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
229 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
230 }
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
231
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
232 void
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
233 send_setup_msg()
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
234 {
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
235 if (setup_msg.imsi[0])
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
236 printf("Calling IMSI %s\n", setup_msg.imsi);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
237 else
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
238 printf("Calling %s%s\n",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
239 setup_msg.called.type == GSM48_TON_INTERNATIONAL ? "+"
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
240 : "",
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
241 setup_msg.called.number);
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
242 send_mncc_to_gsm(&setup_msg, sizeof(struct gsm_mncc));
cc0e1c6e33c3 themwi-test-mtc utility written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
243 }