diff options
author | Philipp Tölke <toelke@in.tum.de> | 2010-06-28 12:37:37 +0000 |
---|---|---|
committer | Philipp Tölke <toelke@in.tum.de> | 2010-06-28 12:37:37 +0000 |
commit | 9da3a783a66c1d1bf57cd838625c95e5ba083c62 (patch) | |
tree | 1dfa0adf1f4f654ffcb7643aca5741d52f301098 /src/vpn | |
parent | 09c43b4598f40f2bf3ebfe7593f9ed10502b3574 (diff) | |
download | gnunet-9da3a783a66c1d1bf57cd838625c95e5ba083c62.tar.gz gnunet-9da3a783a66c1d1bf57cd838625c95e5ba083c62.zip |
some improvements in the test-code for the vpn-functionality
-print continously
-print the complete hexdump
Diffstat (limited to 'src/vpn')
-rw-r--r-- | src/vpn/packet.c | 40 | ||||
-rw-r--r-- | src/vpn/test.c | 10 |
2 files changed, 38 insertions, 12 deletions
diff --git a/src/vpn/packet.c b/src/vpn/packet.c index c4c7dc290..9a895224a 100644 --- a/src/vpn/packet.c +++ b/src/vpn/packet.c | |||
@@ -193,41 +193,67 @@ static void pp_ip6adr(unsigned char* adr, char* dest) {{{ | |||
193 | memcpy(dest+37, tmp, 2); | 193 | memcpy(dest+37, tmp, 2); |
194 | }}} | 194 | }}} |
195 | 195 | ||
196 | void pp_hexdump(unsigned char* data, char* dest, int max) { | 196 | void pp_hexdump(unsigned char* data, char* dest, int max) {{{ |
197 | char tmp[3]; | 197 | char tmp[3]; |
198 | int to = max > 8 ? 8 : max; | 198 | char tmp2[2]; |
199 | int off = 0; | ||
200 | int to = max > 16 ? 16 : max; | ||
199 | for (int i = 0; i < to; i++) { | 201 | for (int i = 0; i < to; i++) { |
202 | if (i == 8) off = 1; | ||
200 | sprintf(tmp, "%02x", data[i]); | 203 | sprintf(tmp, "%02x", data[i]); |
201 | memcpy(dest+(3*i), tmp, 2); | 204 | memcpy(dest+(3*i)+off, tmp, 2); |
205 | if (isprint(data[i])) { | ||
206 | sprintf(tmp2, "%c", data[i]); | ||
207 | memcpy(dest+51+i, tmp2, 1); | ||
208 | } | ||
209 | } | ||
210 | }}} | ||
211 | |||
212 | void pp_write_header(char* dest, struct ip6_pkt* pkt) { | ||
213 | switch (pkt->nxthdr) { | ||
214 | case 0x3a: | ||
215 | memcpy(dest, "ICMPv6)", 7); | ||
216 | break; | ||
217 | default: | ||
218 | memcpy(dest, "unknown)", 8); | ||
219 | break; | ||
202 | } | 220 | } |
203 | } | 221 | } |
204 | 222 | ||
205 | void pkt_printf(struct ip6_pkt* pkt) { | 223 | void pkt_printf(struct ip6_pkt* pkt) { |
206 | char* buf = (char*)malloc(strlen(pretty)+1); | 224 | char* buf = (char*)malloc(strlen(pretty)+1); |
207 | char tmp[4]; | 225 | char tmp[9]; |
208 | 226 | ||
209 | memcpy(buf, pretty, strlen(pretty)+1); | 227 | memcpy(buf, pretty, strlen(pretty)+1); |
210 | 228 | ||
211 | pp_ip6adr(pkt->sadr, buf+16); | 229 | pp_ip6adr(pkt->sadr, buf+16); |
212 | pp_ip6adr(pkt->dadr, buf+76); | 230 | pp_ip6adr(pkt->dadr, buf+76); |
213 | 231 | ||
214 | sprintf(tmp, "%03x", (pkt->flowlbl[0] << 16) + (pkt->flowlbl[1] << 8) + (pkt->flowlbl[2])); | 232 | int flow = (pkt->flowlbl[0] << 16) + (pkt->flowlbl[1] << 8) + (pkt->flowlbl[2]); |
233 | sprintf(tmp, "%03x", flow); | ||
215 | memcpy(buf+138, tmp, 3); | 234 | memcpy(buf+138, tmp, 3); |
235 | sprintf(tmp, "%-8d", flow); | ||
236 | memcpy(buf+143, tmp, 8); | ||
216 | 237 | ||
217 | sprintf(tmp, "%02x", (pkt->paylgth[0] << 8) + (pkt->paylgth[1])); | 238 | int length = (pkt->paylgth[0] << 8) + (pkt->paylgth[1]); |
239 | sprintf(tmp, "%02x", length); | ||
218 | memcpy(buf+198, tmp, 2); | 240 | memcpy(buf+198, tmp, 2); |
241 | sprintf(tmp, "%-3d", length); | ||
242 | memcpy(buf+203, tmp, 3); | ||
219 | 243 | ||
220 | sprintf(tmp, "%02x", pkt->nxthdr); | 244 | sprintf(tmp, "%02x", pkt->nxthdr); |
221 | memcpy(buf+258, tmp, 2); | 245 | memcpy(buf+258, tmp, 2); |
246 | pp_write_header(buf+263, pkt); | ||
222 | 247 | ||
223 | sprintf(tmp, "%02x", pkt->hoplmt); | 248 | sprintf(tmp, "%02x", pkt->hoplmt); |
224 | memcpy(buf+318, tmp, 2); | 249 | memcpy(buf+318, tmp, 2); |
250 | sprintf(tmp, "%-3d", pkt->hoplmt); | ||
251 | memcpy(buf+323, tmp, 3); | ||
225 | 252 | ||
226 | int size = payload(pkt); | 253 | int size = payload(pkt); |
227 | for(int i = 0; i < 8; i++) { | 254 | for(int i = 0; i < 8; i++) { |
228 | if (16*i > size) break; | 255 | if (16*i > size) break; |
229 | pp_hexdump(pkt->data + (16*i), buf + 420 + (i*70), size - 16*i); | 256 | pp_hexdump(pkt->data + (16*i), buf + 420 + (i*70), size - 16*i); |
230 | pp_hexdump(pkt->data + (16*i) + 8, buf + 445 + (i*70), size - (16*i + 8)); | ||
231 | } | 257 | } |
232 | 258 | ||
233 | printf(buf); | 259 | printf(buf); |
diff --git a/src/vpn/test.c b/src/vpn/test.c index 7b1182126..7f6aab860 100644 --- a/src/vpn/test.c +++ b/src/vpn/test.c | |||
@@ -17,9 +17,9 @@ int main(int c, char** v) { | |||
17 | 17 | ||
18 | struct pkt_tun* pkt; | 18 | struct pkt_tun* pkt; |
19 | 19 | ||
20 | printf("read %d bytes from socket, now to parse'em\n", recv_pkt(fd, &pkt)); | 20 | for(;;) { |
21 | 21 | printf("read %d bytes from socket, now to parse'em\n", recv_pkt(fd, &pkt)); | |
22 | struct ip6_pkt* pkt6 = parse_ip6(pkt); | 22 | struct ip6_pkt* pkt6 = parse_ip6(pkt); |
23 | 23 | pkt_printf(pkt6); | |
24 | pkt_printf(pkt6); | 24 | } |
25 | } | 25 | } |