osmo-tetra/src/pcap.h
2016-08-28 08:47:30 +02:00

50 lines
1.7 KiB
C

#ifndef PCAP_H
#define PCAP_H
#include <inttypes.h>
typedef uint32_t guint32;
typedef uint16_t guint16;
typedef int32_t gint32;
typedef struct __attribute__ ((__packed__)) pcap_hdr_s {
guint32 magic_number; /* magic number */
guint16 version_major; /* major version number */
guint16 version_minor; /* minor version number */
gint32 thiszone; /* GMT to local correction */
guint32 sigfigs; /* accuracy of timestamps */
guint32 snaplen; /* max length of captured packets, in octets */
guint32 network; /* data link type */
} pcap_hdr_t;
typedef struct __attribute__ ((__packed__)) pcaprec_hdr_s {
guint32 ts_sec; /* timestamp seconds */
guint32 ts_usec; /* timestamp microseconds */
guint32 incl_len; /* number of octets of packet saved in file */
guint32 orig_len; /* actual length of packet */
} pcaprec_hdr_t;
#define PCAP_MAGIC 0xa1b2c3d4
#define PCAP_MAJOR 2
#define PCAP_MINOR 4
#define PCAP_SNAPLEN 65535
#define PCAP_ETHERNET 1
unsigned char fake_frame_header[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Ethernet frame, dst and src MAC
0x08, 0x00, // EtherType 0800 = IPv4
0x45, // IPv4 (0x4_), 20B header (0x_5)
0x00, // no diffserv
0x00, 0xff, // length
0xc6, 0xd1, // some random frag
0x40, 0x00, // don't frag
0x3f, // TTL
0x11, // IP proto = UDP
0x00, 0x00, // checksum
0x7f, 0x00, 0x00, 0x01, // src = 127.0.0.1
0x7f, 0x00, 0x00, 0x01, // dst = 127.0.0.1
0xbb, 0x13, // source port
0x12, 0x79, // dst port = 4729
0x00, 0xeb, // length = iplen-20
0x00, 0x00 // checksum
};
#endif