source: libpacketdump/ip_17.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.1 KB
RevLine 
[950d54a]1#include <stdio.h>
2#include <inttypes.h>
3#include <dlfcn.h>
4#include "libpacketdump.h"
[e3b0188]5#include "libtrace.h"
[950d54a]6#include <netinet/udp.h>
7#include <netinet/in.h>
[010fafb]8#include <netdb.h>
[950d54a]9
10
[c7062df]11DLLEXPORT void decode(int link_type UNUSED,const char *packet,unsigned len)
[950d54a]12{
[e3b0188]13        struct libtrace_udp *udp = (struct libtrace_udp*)packet;
[950d54a]14        printf(" UDP:");
[387d299]15        if (SAFE(udp, source)) {
[010fafb]16                struct servent *ent=getservbyport(udp->source,"udp");
17                if(ent) {
18                        printf(" Source %i (%s)",htons(udp->source),ent->s_name);
19                } else {
20                        printf(" Source %i",htons(udp->source));
21                }
22        }
23        else {
24                printf("\n");
25                return;
26        }
[387d299]27        if (SAFE(udp, dest)) {
[010fafb]28                struct servent *ent=getservbyport(udp->dest,"udp");
29                if(ent) {
30                        printf(" Dest %i (%s)",htons(udp->dest),ent->s_name);
31                } else {
32                        printf(" Dest %i",htons(udp->dest));
33                }
34        }
35        else {
36                printf("\n");
37                return;
38        }
[950d54a]39        printf("\n UDP:");
[387d299]40        DISPLAYS(udp, len," Len %u");
41        DISPLAYS(udp, check," Checksum %u");
[950d54a]42        printf("\n");
43        if (htons(udp->source) < htons(udp->dest)) 
44                decode_next(packet+sizeof(*udp),len-sizeof(*udp),"udp",htons(udp->source));
45        else
46                decode_next(packet+sizeof(*udp),len-sizeof(*udp),"udp",htons(udp->dest));
47        return;
48}
Note: See TracBrowser for help on using the repository browser.