Smart Home firewall
Profile-based Smart Home firewall
header.h
Go to the documentation of this file.
1 
19 #ifndef _PROTOCOL_PARSERS_HEADER_
20 #define _PROTOCOL_PARSERS_HEADER_
21 
22 #include <stdlib.h>
23 #include <stdio.h>
24 #include <stdint.h>
25 #include <string.h>
26 #include <arpa/inet.h>
27 #include "packet_utils.h"
28 
29 #define IPV6_HEADER_LENGTH 40
30 #define UDP_HEADER_LENGTH 8
31 
32 
36 typedef enum {
37  ICMP = 1,
38  IGMP = 2,
39  TCP = 6,
40  UDP = 17
42 
49 size_t get_ipv4_header_length(uint8_t *data);
50 
57 size_t get_ipv6_header_length(uint8_t *data);
58 
65 size_t get_udp_header_length(uint8_t *data);
66 
73 size_t get_tcp_header_length(uint8_t *data);
74 
81 size_t get_l3_header_length(uint8_t *data);
82 
89 size_t get_headers_length(uint8_t* data);
90 
97 uint16_t get_udp_payload_length(uint8_t *data);
98 
105 uint16_t get_dst_port(uint8_t* data);
106 
113 uint32_t get_ipv4_src_addr(uint8_t *data);
114 
121 uint32_t get_ipv4_dst_addr(uint8_t *data);
122 
129 uint8_t* get_ipv6_src_addr(uint8_t *data);
130 
137 uint8_t* get_ipv6_dst_addr(uint8_t *data);
138 
139 
140 #endif /* _PROTOCOL_PARSERS_HEADER_ */
uint16_t get_udp_payload_length(uint8_t *data)
Retrieve the length of a UDP payload.
Definition: header.c:140
size_t get_ipv4_header_length(uint8_t *data)
Definition: header.c:29
size_t get_l3_header_length(uint8_t *data)
Definition: header.c:79
ip_protocol_t
Definition: header.h:36
uint32_t get_ipv4_src_addr(uint8_t *data)
Retrieve the source address from an IPv4 header.
Definition: header.c:164
size_t get_udp_header_length(uint8_t *data)
Definition: header.c:54
size_t get_ipv6_header_length(uint8_t *data)
Definition: header.c:43
uint8_t * get_ipv6_src_addr(uint8_t *data)
Retrieve the source address from an IPv6 header.
Definition: header.c:186
size_t get_headers_length(uint8_t *data)
Definition: header.c:100
uint8_t * get_ipv6_dst_addr(uint8_t *data)
Retrieve the destination address from an IPv6 header.
Definition: header.c:199
uint16_t get_dst_port(uint8_t *data)
Retrieve the source port from a layer 4 header.
Definition: header.c:153
size_t get_tcp_header_length(uint8_t *data)
Definition: header.c:65
uint32_t get_ipv4_dst_addr(uint8_t *data)
Retrieve the destination address from an IPv4 header.
Definition: header.c:175
Utilitaries for payload manipulation and display.