Smart Home firewall
Profile-based Smart Home firewall
Classes | Macros | Typedefs | Enumerations | Functions
dhcp.h File Reference

DHCP message parser. More...

#include <stdlib.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <arpa/inet.h>
Include dependency graph for dhcp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  dhcp_option
 
struct  dhcp_options
 
struct  dhcp_message
 

Macros

#define MAX_HW_LEN   16
 
#define DHCP_HEADER_LEN   236
 
#define DHCP_MAX_OPTION_COUNT   20
 
#define DHCP_MAGIC_COOKIE   0x63825363
 

Typedefs

typedef struct dhcp_option dhcp_option_t
 
typedef struct dhcp_options dhcp_options_t
 
typedef struct dhcp_message dhcp_message_t
 

Enumerations

enum  dhcp_opcode_t { DHCP_BOOTREQUEST = 1 , DHCP_BOOTREPLY = 2 }
 
enum  dhcp_option_code_t { DHCP_PAD = 0 , DHCP_MESSAGE_TYPE = 53 , DHCP_END = 255 }
 
enum  dhcp_message_type_t {
  DHCP_DISCOVER = 1 , DHCP_OFFER = 2 , DHCP_REQUEST = 3 , DHCP_DECLINE = 4 ,
  DHCP_ACK = 5 , DHCP_NAK = 6 , DHCP_RELEASE = 7 , DHCP_INFORM = 8
}
 

Functions

dhcp_message_t dhcp_parse_header (uint8_t *data)
 Parse the header of a DHCP message (not including options) More...
 
dhcp_option_t dhcp_parse_option (uint8_t *data, uint16_t *offset)
 Parse a DHCP option. More...
 
dhcp_options_t dhcp_parse_options (uint8_t *data)
 Parse DHCP options. More...
 
dhcp_message_t dhcp_parse_message (uint8_t *data)
 Parse a DHCP message. More...
 
void dhcp_free_message (dhcp_message_t message)
 Free the memory allocated for a DHCP message. More...
 
void dhcp_print_header (dhcp_message_t message)
 Print the header of a DHCP message. More...
 
void dhcp_print_option (dhcp_option_t option)
 Print a DHCP option. More...
 
void dhcp_print_message (dhcp_message_t message)
 Print a DHCP message. More...
 

Detailed Description

DHCP message parser.

Date
2022-09-12

Typedef Documentation

◆ dhcp_message_t

typedef struct dhcp_message dhcp_message_t

DHCP Message

◆ dhcp_option_t

typedef struct dhcp_option dhcp_option_t

DHCP Option

◆ dhcp_options_t

typedef struct dhcp_options dhcp_options_t

DHCP Options

Enumeration Type Documentation

◆ dhcp_message_type_t

DHCP message type

◆ dhcp_opcode_t

DHCP opcode

◆ dhcp_option_code_t

Useful DHCP option codes

Function Documentation

◆ dhcp_free_message()

void dhcp_free_message ( dhcp_message_t  message)

Free the memory allocated for a DHCP message.

Parameters
messagethe DHCP message to free

◆ dhcp_parse_header()

dhcp_message_t dhcp_parse_header ( uint8_t *  data)

Parse the header of a DHCP message (not including options)

Parameters
dataa pointer to the start of the DHCP message
Returns
the parsed DHCP message with the header fields filled in

Parse the header of a DHCP message (not including options)

Parameters
dataa pointer to the start of the DHCP message
Returns
the parsed DHCP message with the header fields filled in

◆ dhcp_parse_message()

dhcp_message_t dhcp_parse_message ( uint8_t *  data)

Parse a DHCP message.

Parameters
dataa pointer to the start of the DHCP message
Returns
the parsed DHCP message

◆ dhcp_parse_option()

dhcp_option_t dhcp_parse_option ( uint8_t *  data,
uint16_t *  offset 
)

Parse a DHCP option.

Parameters
dataa pointer to the start of the DHCP option
offseta pointer to the current offset inside the DHCP message Its value will be updated to point to the next option
Returns
the parsed DHCP option

◆ dhcp_parse_options()

dhcp_options_t dhcp_parse_options ( uint8_t *  data)

Parse DHCP options.

Parameters
dataa pointer to the start of the DHCP options list
Returns
a pointer to the start of the parsed DHCP options

◆ dhcp_print_header()

void dhcp_print_header ( dhcp_message_t  message)

Print the header of a DHCP message.

Parameters
messagethe DHCP message to print the header of

◆ dhcp_print_message()

void dhcp_print_message ( dhcp_message_t  message)

Print a DHCP message.

Parameters
messagethe DHCP message to print

◆ dhcp_print_option()

void dhcp_print_option ( dhcp_option_t  option)

Print a DHCP option.

Parameters
optionthe DHCP option to print