[e224862] | 1 | #include <stdio.h> |
---|
| 2 | #include <inttypes.h> |
---|
| 3 | #include <dlfcn.h> |
---|
| 4 | #include <sys/socket.h> |
---|
| 5 | #include <netinet/in.h> |
---|
| 6 | #include <arpa/inet.h> |
---|
| 7 | |
---|
| 8 | #include "libpacketdump.h" |
---|
| 9 | |
---|
| 10 | static void dump_ospf_v2_header(libtrace_ospf_v2_t *hdr, unsigned len) { |
---|
| 11 | |
---|
[387d299] | 12 | DISPLAY(hdr, ospf_v, " OSPF Header: Version %u"); |
---|
| 13 | DISPLAY(hdr, type, " Type %u "); |
---|
[e224862] | 14 | switch(hdr->type) { |
---|
| 15 | case TRACE_OSPF_HELLO: |
---|
| 16 | printf("(Hello)"); |
---|
| 17 | break; |
---|
| 18 | case TRACE_OSPF_DATADESC: |
---|
| 19 | printf("(Database Desc)"); |
---|
| 20 | break; |
---|
| 21 | case TRACE_OSPF_LSREQ: |
---|
| 22 | printf("(Link State Request)"); |
---|
| 23 | break; |
---|
| 24 | case TRACE_OSPF_LSUPDATE: |
---|
| 25 | printf("(Link State Update)"); |
---|
| 26 | break; |
---|
| 27 | case TRACE_OSPF_LSACK: |
---|
| 28 | printf("(Link State Ack.)"); |
---|
| 29 | break; |
---|
| 30 | } |
---|
[387d299] | 31 | printf("\n"); |
---|
| 32 | |
---|
| 33 | DISPLAYS(hdr, ospf_len, "OSPF Header: Length %u \n"); |
---|
| 34 | DISPLAYIP(hdr, router, " OSPF Header: Router Id %s "); |
---|
| 35 | DISPLAYIP(hdr, area, "Area Id %s\n"); |
---|
| 36 | DISPLAYS(hdr, sum, " OSPF Header: Checksum %u "); |
---|
| 37 | DISPLAYS(hdr, au_type, "Auth Type %u\n"); |
---|
| 38 | DISPLAY(hdr, au_key_id, " OSPF Header: Auth Key ID %u "); |
---|
| 39 | DISPLAY(hdr, au_data_len, "Auth Data Len %u\n"); |
---|
| 40 | DISPLAYL(hdr, au_seq_num, " OSPF Header: Auth Crypto Seq %u\n"); |
---|
[e224862] | 41 | |
---|
| 42 | } |
---|
| 43 | |
---|
| 44 | DLLEXPORT void decode(int link_type UNUSED, const char *packet, unsigned len) { |
---|
| 45 | |
---|
| 46 | libtrace_ospf_v2_t *hdr = (libtrace_ospf_v2_t *)packet; |
---|
| 47 | |
---|
| 48 | if (hdr->ospf_v == 2) { |
---|
| 49 | dump_ospf_v2_header(hdr, len); |
---|
| 50 | decode_next(packet + sizeof(libtrace_ospf_v2_t), |
---|
| 51 | len - sizeof(libtrace_ospf_v2_t), "ospf2", |
---|
| 52 | hdr->type); |
---|
| 53 | } |
---|
| 54 | |
---|
| 55 | return; |
---|
| 56 | |
---|
| 57 | } |
---|