diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-01-04 15:17:53 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-01-04 15:17:53 +0000 |
commit | c217aa8750bebf75b4a4a0d020cc516e8efad7be (patch) | |
tree | 6147622e7fb3e893e9a4c3d4910a61d0c96f06d5 /src/dns/gnunet-dns-monitor.c | |
parent | c8fe500945cd968e37f2e6c462689e0ada061bce (diff) | |
download | gnunet-c217aa8750bebf75b4a4a0d020cc516e8efad7be.tar.gz gnunet-c217aa8750bebf75b4a4a0d020cc516e8efad7be.zip |
-dns parser works now well-enough
Diffstat (limited to 'src/dns/gnunet-dns-monitor.c')
-rw-r--r-- | src/dns/gnunet-dns-monitor.c | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/dns/gnunet-dns-monitor.c b/src/dns/gnunet-dns-monitor.c index c8fb646e5..96d2a4959 100644 --- a/src/dns/gnunet-dns-monitor.c +++ b/src/dns/gnunet-dns-monitor.c | |||
@@ -70,8 +70,6 @@ get_type (uint16_t type) | |||
70 | case GNUNET_DNSPARSER_TYPE_MX: return "MX"; | 70 | case GNUNET_DNSPARSER_TYPE_MX: return "MX"; |
71 | case GNUNET_DNSPARSER_TYPE_TXT: return "TXT"; | 71 | case GNUNET_DNSPARSER_TYPE_TXT: return "TXT"; |
72 | case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA"; | 72 | case GNUNET_DNSPARSER_TYPE_AAAA: return "AAAA"; |
73 | case GNUNET_DNSPARSER_TYPE_IXFR: return "IXFR"; | ||
74 | case GNUNET_DNSPARSER_TYPE_AXFR: return "AXFR"; | ||
75 | } | 73 | } |
76 | GNUNET_snprintf (buf, sizeof (buf), "%u", (unsigned int) type); | 74 | GNUNET_snprintf (buf, sizeof (buf), "%u", (unsigned int) type); |
77 | return buf; | 75 | return buf; |
@@ -134,16 +132,55 @@ display_record (const struct GNUNET_DNSPARSER_Record *record) | |||
134 | if (record->data_len != sizeof (struct in_addr)) | 132 | if (record->data_len != sizeof (struct in_addr)) |
135 | format = "<invalid>"; | 133 | format = "<invalid>"; |
136 | else | 134 | else |
137 | format = inet_ntop (AF_INET, record->data, buf, sizeof (buf)); | 135 | format = inet_ntop (AF_INET, record->data.raw, buf, sizeof (buf)); |
138 | break; | 136 | break; |
139 | case GNUNET_DNSPARSER_TYPE_AAAA: | 137 | case GNUNET_DNSPARSER_TYPE_AAAA: |
140 | if (record->data_len != sizeof (struct in6_addr)) | 138 | if (record->data_len != sizeof (struct in6_addr)) |
141 | format = "<invalid>"; | 139 | format = "<invalid>"; |
142 | else | 140 | else |
143 | format = inet_ntop (AF_INET6, record->data, buf, sizeof (buf)); | 141 | format = inet_ntop (AF_INET6, record->data.raw, buf, sizeof (buf)); |
144 | break; | 142 | break; |
143 | case GNUNET_DNSPARSER_TYPE_NS: | ||
145 | case GNUNET_DNSPARSER_TYPE_CNAME: | 144 | case GNUNET_DNSPARSER_TYPE_CNAME: |
146 | tmp = GNUNET_strdup ("FIXME"); | 145 | case GNUNET_DNSPARSER_TYPE_PTR: |
146 | format = record->data.hostname; | ||
147 | break; | ||
148 | case GNUNET_DNSPARSER_TYPE_SOA: | ||
149 | if (record->data.soa == NULL) | ||
150 | format = "<invalid>"; | ||
151 | else | ||
152 | { | ||
153 | GNUNET_asprintf (&tmp, | ||
154 | "origin: %s, mail: %s, serial = %u, refresh = %u s, retry = %u s, expire = %u s, minimum = %u s", | ||
155 | record->data.soa->mname, | ||
156 | record->data.soa->rname, | ||
157 | (unsigned int) record->data.soa->serial, | ||
158 | (unsigned int) record->data.soa->refresh, | ||
159 | (unsigned int) record->data.soa->retry, | ||
160 | (unsigned int) record->data.soa->expire, | ||
161 | (unsigned int) record->data.soa->minimum_ttl); | ||
162 | format = tmp; | ||
163 | } | ||
164 | break; | ||
165 | case GNUNET_DNSPARSER_TYPE_MX: | ||
166 | if (record->data.mx == NULL) | ||
167 | format = "<invalid>"; | ||
168 | else | ||
169 | { | ||
170 | GNUNET_asprintf (&tmp, | ||
171 | "%u: %s", | ||
172 | record->data.mx->preference, | ||
173 | record->data.mx->mxhost); | ||
174 | format = tmp; | ||
175 | } | ||
176 | break; | ||
177 | case GNUNET_DNSPARSER_TYPE_TXT: | ||
178 | GNUNET_asprintf (&tmp, | ||
179 | "%.*s", | ||
180 | (unsigned int) record->data_len, | ||
181 | record->data.raw); | ||
182 | format = tmp; | ||
183 | break; | ||
147 | default: | 184 | default: |
148 | format = "<payload>"; | 185 | format = "<payload>"; |
149 | break; | 186 | break; |
@@ -215,7 +252,7 @@ display_request (void *cls, | |||
215 | return; | 252 | return; |
216 | } | 253 | } |
217 | fprintf (stdout, | 254 | fprintf (stdout, |
218 | "%s with ID: %5u Flags: %s%s%s%s%s%s Return Code: %s Opcode: %s\n", | 255 | "%s with ID: %5u Flags: %s%s%s%s%s%s, Return Code: %s, Opcode: %s\n", |
219 | p->flags.query_or_response ? "Response" : "Query", | 256 | p->flags.query_or_response ? "Response" : "Query", |
220 | p->id, | 257 | p->id, |
221 | p->flags.recursion_desired ? "RD " : "", | 258 | p->flags.recursion_desired ? "RD " : "", |