|
|
|
@ -2,11 +2,40 @@
|
|
|
|
|
#define LLARP_IP_HPP
|
|
|
|
|
#include <llarp/buffer.h>
|
|
|
|
|
#include <llarp/time.h>
|
|
|
|
|
#ifndef _WIN32
|
|
|
|
|
#include <netinet/in.h>
|
|
|
|
|
#include <netinet/ip.h>
|
|
|
|
|
#else
|
|
|
|
|
#include <winsock2.h>
|
|
|
|
|
// Apparently this does not seem to be located _anywhere_ in the windows sdk??? -despair86
|
|
|
|
|
typedef struct ip_hdr
|
|
|
|
|
{
|
|
|
|
|
unsigned char ip_header_len:4; // 4-bit header length (in 32-bit words) normally=5 (Means 20 Bytes may be 24 also)
|
|
|
|
|
unsigned char ip_version :4; // 4-bit IPv4 version
|
|
|
|
|
unsigned char ip_tos; // IP type of service
|
|
|
|
|
unsigned short ip_total_length; // Total length
|
|
|
|
|
unsigned short ip_id; // Unique identifier
|
|
|
|
|
|
|
|
|
|
unsigned char ip_frag_offset :5; // Fragment offset field
|
|
|
|
|
|
|
|
|
|
unsigned char ip_more_fragment :1;
|
|
|
|
|
unsigned char ip_dont_fragment :1;
|
|
|
|
|
unsigned char ip_reserved_zero :1;
|
|
|
|
|
|
|
|
|
|
unsigned char ip_frag_offset1; //fragment offset
|
|
|
|
|
|
|
|
|
|
unsigned char ip_ttl; // Time to live
|
|
|
|
|
unsigned char ip_protocol; // Protocol(TCP,UDP etc)
|
|
|
|
|
unsigned short ip_checksum; // IP checksum
|
|
|
|
|
unsigned int ip_srcaddr; // Source address
|
|
|
|
|
unsigned int ip_destaddr; // Source address
|
|
|
|
|
} IPV4_HDR;
|
|
|
|
|
#define iphdr IPV4_HDR
|
|
|
|
|
#define saddr ip_srcaddr;
|
|
|
|
|
#define daddr ip_destaddr;
|
|
|
|
|
#endif
|
|
|
|
|
#include <memory>
|
|
|
|
|
#ifndef __linux__
|
|
|
|
|
// slightly different type names on sunos
|
|
|
|
|
#if !defined(__linux__) && !defined(_WIN32)
|
|
|
|
|
#define iphdr ip
|
|
|
|
|
#define saddr ip_src.s_addr
|
|
|
|
|
#define daddr ip_dst.s_addr
|
|
|
|
|