aboutsummaryrefslogtreecommitdiff
path: root/src/dns/gnunet-dns-redirector.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
committerChristian Grothoff <christian@grothoff.org>2019-10-05 15:09:28 +0200
commitc4e9ba925ffd758aaa3feee2ccfc0b76f26fe207 (patch)
treecac3ce030d77b4cbe7c7dc62ed58cfe6d24f73e1 /src/dns/gnunet-dns-redirector.c
parentfbb71d527c7d6babf269a8fefce1db291b9f7068 (diff)
downloadgnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.tar.gz
gnunet-c4e9ba925ffd758aaa3feee2ccfc0b76f26fe207.zip
global reindent, now with uncrustify hook enabled
Diffstat (limited to 'src/dns/gnunet-dns-redirector.c')
-rw-r--r--src/dns/gnunet-dns-redirector.c227
1 files changed, 114 insertions, 113 deletions
diff --git a/src/dns/gnunet-dns-redirector.c b/src/dns/gnunet-dns-redirector.c
index f1978ce92..6a3899a46 100644
--- a/src/dns/gnunet-dns-redirector.c
+++ b/src/dns/gnunet-dns-redirector.c
@@ -61,51 +61,51 @@ static unsigned int verbosity;
61 * @param record record to modify 61 * @param record record to modify
62 */ 62 */
63static void 63static void
64modify_record(const struct GNUNET_DNSPARSER_Record *record) 64modify_record (const struct GNUNET_DNSPARSER_Record *record)
65{ 65{
66 char buf[INET6_ADDRSTRLEN]; 66 char buf[INET6_ADDRSTRLEN];
67 67
68 switch (record->type) 68 switch (record->type)
69 {
70 case GNUNET_DNSPARSER_TYPE_A:
71 if (record->data.raw.data_len != sizeof(struct in_addr))
72 return;
73 if (NULL != n4)
74 {
75 if (verbosity > 1)
76 fprintf (stderr,
77 "Changing A record from `%s' to `%s'\n",
78 inet_ntop (AF_INET, record->data.raw.data, buf, sizeof(buf)),
79 n4);
80 GNUNET_assert (1 == inet_pton (AF_INET, n4, record->data.raw.data));
81 }
82 break;
83
84 case GNUNET_DNSPARSER_TYPE_AAAA:
85 if (record->data.raw.data_len != sizeof(struct in6_addr))
86 return;
87 if (NULL != n6)
69 { 88 {
70 case GNUNET_DNSPARSER_TYPE_A: 89 if (verbosity > 1)
71 if (record->data.raw.data_len != sizeof(struct in_addr)) 90 fprintf (stderr,
72 return; 91 "Changing AAAA record from `%s' to `%s'\n",
73 if (NULL != n4) 92 inet_ntop (AF_INET6, record->data.raw.data, buf, sizeof(buf)),
74 { 93 n6);
75 if (verbosity > 1) 94 GNUNET_assert (1 == inet_pton (AF_INET6, n6, record->data.raw.data));
76 fprintf(stderr,
77 "Changing A record from `%s' to `%s'\n",
78 inet_ntop(AF_INET, record->data.raw.data, buf, sizeof(buf)),
79 n4);
80 GNUNET_assert(1 == inet_pton(AF_INET, n4, record->data.raw.data));
81 }
82 break;
83
84 case GNUNET_DNSPARSER_TYPE_AAAA:
85 if (record->data.raw.data_len != sizeof(struct in6_addr))
86 return;
87 if (NULL != n6)
88 {
89 if (verbosity > 1)
90 fprintf(stderr,
91 "Changing AAAA record from `%s' to `%s'\n",
92 inet_ntop(AF_INET6, record->data.raw.data, buf, sizeof(buf)),
93 n6);
94 GNUNET_assert(1 == inet_pton(AF_INET6, n6, record->data.raw.data));
95 }
96 break;
97
98 case GNUNET_DNSPARSER_TYPE_NS:
99 case GNUNET_DNSPARSER_TYPE_CNAME:
100 case GNUNET_DNSPARSER_TYPE_PTR:
101 case GNUNET_DNSPARSER_TYPE_SOA:
102 case GNUNET_DNSPARSER_TYPE_MX:
103 case GNUNET_DNSPARSER_TYPE_TXT:
104 break;
105
106 default:
107 break;
108 } 95 }
96 break;
97
98 case GNUNET_DNSPARSER_TYPE_NS:
99 case GNUNET_DNSPARSER_TYPE_CNAME:
100 case GNUNET_DNSPARSER_TYPE_PTR:
101 case GNUNET_DNSPARSER_TYPE_SOA:
102 case GNUNET_DNSPARSER_TYPE_MX:
103 case GNUNET_DNSPARSER_TYPE_TXT:
104 break;
105
106 default:
107 break;
108 }
109} 109}
110 110
111 111
@@ -133,10 +133,10 @@ modify_record(const struct GNUNET_DNSPARSER_Record *record)
133 * @param request udp payload of the DNS request 133 * @param request udp payload of the DNS request
134 */ 134 */
135static void 135static void
136modify_request(void *cls, 136modify_request (void *cls,
137 struct GNUNET_DNS_RequestHandle *rh, 137 struct GNUNET_DNS_RequestHandle *rh,
138 size_t request_length, 138 size_t request_length,
139 const char *request) 139 const char *request)
140{ 140{
141 struct GNUNET_DNSPARSER_Packet *p; 141 struct GNUNET_DNSPARSER_Packet *p;
142 unsigned int i; 142 unsigned int i;
@@ -144,35 +144,35 @@ modify_request(void *cls,
144 size_t len; 144 size_t len;
145 int ret; 145 int ret;
146 146
147 p = GNUNET_DNSPARSER_parse(request, request_length); 147 p = GNUNET_DNSPARSER_parse (request, request_length);
148 if (NULL == p) 148 if (NULL == p)
149 { 149 {
150 fprintf(stderr, "Received malformed DNS packet, leaving it untouched\n"); 150 fprintf (stderr, "Received malformed DNS packet, leaving it untouched\n");
151 GNUNET_DNS_request_forward(rh); 151 GNUNET_DNS_request_forward (rh);
152 return; 152 return;
153 } 153 }
154 for (i = 0; i < p->num_answers; i++) 154 for (i = 0; i < p->num_answers; i++)
155 modify_record(&p->answers[i]); 155 modify_record (&p->answers[i]);
156 buf = NULL; 156 buf = NULL;
157 ret = GNUNET_DNSPARSER_pack(p, 1024, &buf, &len); 157 ret = GNUNET_DNSPARSER_pack (p, 1024, &buf, &len);
158 GNUNET_DNSPARSER_free_packet(p); 158 GNUNET_DNSPARSER_free_packet (p);
159 if (GNUNET_OK != ret) 159 if (GNUNET_OK != ret)
160 { 160 {
161 if (GNUNET_NO == ret) 161 if (GNUNET_NO == ret)
162 fprintf(stderr, 162 fprintf (stderr,
163 "Modified DNS response did not fit, keeping old response\n"); 163 "Modified DNS response did not fit, keeping old response\n");
164 else 164 else
165 GNUNET_break(0); /* our modifications should have been sane! */ 165 GNUNET_break (0); /* our modifications should have been sane! */
166 GNUNET_DNS_request_forward(rh); 166 GNUNET_DNS_request_forward (rh);
167 } 167 }
168 else 168 else
169 { 169 {
170 if (verbosity > 0) 170 if (verbosity > 0)
171 fprintf(stdout, 171 fprintf (stdout,
172 "Injecting modified DNS response\n"); 172 "Injecting modified DNS response\n");
173 GNUNET_DNS_request_answer(rh, len, buf); 173 GNUNET_DNS_request_answer (rh, len, buf);
174 } 174 }
175 GNUNET_free_non_null(buf); 175 GNUNET_free_non_null (buf);
176} 176}
177 177
178 178
@@ -180,13 +180,13 @@ modify_request(void *cls,
180 * Shutdown. 180 * Shutdown.
181 */ 181 */
182static void 182static void
183do_disconnect(void *cls) 183do_disconnect (void *cls)
184{ 184{
185 if (NULL != handle) 185 if (NULL != handle)
186 { 186 {
187 GNUNET_DNS_disconnect(handle); 187 GNUNET_DNS_disconnect (handle);
188 handle = NULL; 188 handle = NULL;
189 } 189 }
190} 190}
191 191
192 192
@@ -199,67 +199,68 @@ do_disconnect(void *cls)
199 * @param cfg configuration 199 * @param cfg configuration
200 */ 200 */
201static void 201static void
202run(void *cls, char *const *args, const char *cfgfile, 202run (void *cls, char *const *args, const char *cfgfile,
203 const struct GNUNET_CONFIGURATION_Handle *cfg) 203 const struct GNUNET_CONFIGURATION_Handle *cfg)
204{ 204{
205 struct in_addr i4; 205 struct in_addr i4;
206 struct in6_addr i6; 206 struct in6_addr i6;
207 207
208 if ((n4 != NULL) && 208 if ((n4 != NULL) &&
209 (1 != inet_pton(AF_INET, n4, &i4))) 209 (1 != inet_pton (AF_INET, n4, &i4)))
210 { 210 {
211 fprintf(stderr, 211 fprintf (stderr,
212 "`%s' is nto a valid IPv4 address!\n", 212 "`%s' is nto a valid IPv4 address!\n",
213 n4); 213 n4);
214 return; 214 return;
215 } 215 }
216 if ((n6 != NULL) && 216 if ((n6 != NULL) &&
217 (1 != inet_pton(AF_INET6, n6, &i6))) 217 (1 != inet_pton (AF_INET6, n6, &i6)))
218 { 218 {
219 fprintf(stderr, 219 fprintf (stderr,
220 "`%s' is nto a valid IPv6 address!\n", 220 "`%s' is nto a valid IPv6 address!\n",
221 n6); 221 n6);
222 return; 222 return;
223 } 223 }
224 224
225 handle = 225 handle =
226 GNUNET_DNS_connect(cfg, 226 GNUNET_DNS_connect (cfg,
227 GNUNET_DNS_FLAG_POST_RESOLUTION, 227 GNUNET_DNS_FLAG_POST_RESOLUTION,
228 &modify_request, 228 &modify_request,
229 NULL); 229 NULL);
230 GNUNET_SCHEDULER_add_shutdown(&do_disconnect, NULL); 230 GNUNET_SCHEDULER_add_shutdown (&do_disconnect, NULL);
231} 231}
232 232
233 233
234int 234int
235main(int argc, char *const *argv) 235main (int argc, char *const *argv)
236{ 236{
237 struct GNUNET_GETOPT_CommandLineOption options[] = { 237 struct GNUNET_GETOPT_CommandLineOption options[] = {
238 GNUNET_GETOPT_option_string('4', 238 GNUNET_GETOPT_option_string ('4',
239 "ipv4", 239 "ipv4",
240 "IPV4", 240 "IPV4",
241 gettext_noop("set A records"), 241 gettext_noop ("set A records"),
242 &n4), 242 &n4),
243 243
244 GNUNET_GETOPT_option_string('6', 244 GNUNET_GETOPT_option_string ('6',
245 "ipv4", 245 "ipv4",
246 "IPV6", 246 "IPV6",
247 gettext_noop("set AAAA records"), 247 gettext_noop ("set AAAA records"),
248 &n6), 248 &n6),
249 249
250 GNUNET_GETOPT_option_verbose(&verbosity), 250 GNUNET_GETOPT_option_verbose (&verbosity),
251 GNUNET_GETOPT_OPTION_END 251 GNUNET_GETOPT_OPTION_END
252 }; 252 };
253 253
254 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args(argc, argv, &argc, &argv)) 254 if (GNUNET_OK != GNUNET_STRINGS_get_utf8_args (argc, argv, &argc, &argv))
255 return 2; 255 return 2;
256 256
257 ret = (GNUNET_OK == 257 ret = (GNUNET_OK ==
258 GNUNET_PROGRAM_run(argc, argv, "gnunet-dns-redirector", 258 GNUNET_PROGRAM_run (argc, argv, "gnunet-dns-redirector",
259 gettext_noop 259 gettext_noop
260 ("Change DNS replies to point elsewhere."), options, 260 ("Change DNS replies to point elsewhere."),
261 &run, NULL)) ? ret : 1; 261 options,
262 GNUNET_free((void*)argv); 262 &run, NULL)) ? ret : 1;
263 GNUNET_free ((void*) argv);
263 return ret; 264 return ret;
264} 265}
265 266