source: libpacketdump/ip_89.c @ 756b8f9

4.0.1-hotfixescachetimestampsdevelopdpdk-ndagetsilivelibtrace4ndag_formatpfringrc-4.0.1rc-4.0.2rc-4.0.3rc-4.0.4ringdecrementfixringperformanceringtimestampfixes
Last change on this file since 756b8f9 was 387d299, checked in by Shane Alcock <salcock@…>, 7 years ago

Remove duplicate macros in libpacketdump

Ensure OSPF libpacketdump module won't segfault or print garbage
if a truncated OSPF header is passed into it.

Renamed 'len' field in OSPF header to 'ospf_len' to avoid
potential conflict with variables named len in libpacketdump
code.

  • Property mode set to 100644
File size: 1.5 KB
RevLine 
[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
10static 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
44DLLEXPORT 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}
Note: See TracBrowser for help on using the repository browser.