diff options
author | David Timber <mieabby@gmail.com> | 2020-09-14 19:11:36 +0930 |
---|---|---|
committer | David Timber <mieabby@gmail.com> | 2020-09-14 19:11:36 +0930 |
commit | d06a39d44741355e96ee96d8f760b995f35abaed (patch) | |
tree | b41b2ef0f2138e52af7f2a958daf0ea4e41b58eb /src/inet.h | |
parent | cf3c9ef8b5255033e9527541c3dc61fc491670f1 (diff) |
* Remove <linux/ip*.h> includes
Diffstat (limited to 'src/inet.h')
-rw-r--r-- | src/inet.h | 38 |
1 files changed, 33 insertions, 5 deletions
@@ -1,22 +1,50 @@ +#pragma once #include <stdint.h> #include <stdbool.h> #include <stddef.h> -// TODO: don't use these -#include <linux/ip.h> -#include <linux/ipv6.h> +#include "protocol.h" +// Workaround for header issues in uClibc +typedef struct prne_iphdr4 prne_iphdr4_t; +typedef struct prne_iphdr6 prne_iphdr6_t; + +struct prne_iphdr4 { + uint8_t saddr[4]; + uint8_t daddr[4]; + uint16_t total_len; + uint16_t id; + uint8_t ttl; + uint8_t protocol; + uint8_t ihl; +}; + +struct prne_iphdr6 { + uint8_t saddr[16]; + uint8_t daddr[16]; + uint32_t flow_label; + uint16_t payload_len; + uint8_t next_hdr; + uint8_t hop_limit; +}; + void prne_netmask_from_cidr (uint8_t *out, size_t cidr); uint16_t prne_calc_tcp_chksum4 ( - const struct iphdr *ih, + const prne_iphdr4_t *ih, const uint8_t *th, size_t th_len, const uint8_t *data, size_t data_len); uint16_t prne_calc_tcp_chksum6 ( - const struct ipv6hdr *ih, + const prne_iphdr6_t *ih, const uint8_t *th, size_t th_len, const uint8_t *data, size_t data_len); + +void prne_ser_iphdr4 (uint8_t *mem, const prne_iphdr4_t *in); +void prne_ser_iphdr6 (uint8_t *mem, const prne_iphdr6_t *in); + +void prne_dser_iphdr4 (const uint8_t *data, prne_iphdr4_t *out); +void prne_dser_iphdr6 (const uint8_t *data, prne_iphdr6_t *out); |