dhcp/ip4.h

41 lines
961 B
C++

#pragma once
#include <stdint.h>
namespace ip4 {
struct header {
uint8_t version_ihl;
uint8_t type_of_service;
uint16_t total_length;
uint16_t identification;
uint16_t fragment_offset;
uint8_t time_to_live;
uint8_t protocol;
uint16_t header_checksum;
uint32_t source_address;
uint32_t destination_address;
};
static_assert((sizeof (header)) == 20);
char const * tostr(uint32_t a);
uint32_t fromstr(char const * s);
uint32_t checksum_partial(uint32_t sum, void const * src, int length);
uint32_t checksum_finish(uint32_t sum);
uint32_t checksum(void const * src, int length);
header * make_header(void * buf,
uint16_t payload_length,
uint16_t identification,
uint32_t source_address, // big endian
uint32_t destination_address); // big endian
struct protocol {
enum {
udp = 17,
};
};
}