Skip to content

File syn_dhcp.c

FileList > net > syn_dhcp.c

Go to the source code of this file

Zero-Heap Native DHCP Client Protocol Engine Implementation.

  • #include "syntropic/net/syn_dhcp.h"
  • #include <string.h>

Public Functions

Type Name
SYN_Status syn_dhcp_build_discover (SYN_DHCP * dhcp, const uint8_t mac_addr, uint8_t * buf_out, size_t buf_size, size_t * len_out)
Build a DHCPDISCOVER UDP packet payload.
SYN_Status syn_dhcp_build_request (SYN_DHCP * dhcp, const uint8_t mac_addr, uint8_t * buf_out, size_t buf_size, size_t * len_out)
Build a DHCPREQUEST UDP packet payload.
SYN_Status syn_dhcp_init (SYN_DHCP * dhcp, uint32_t xid)
Initialize DHCP Client Context.
SYN_Status syn_dhcp_process_packet (SYN_DHCP * dhcp, SYN_ETH * eth, const uint8_t * dhcp_pkt, size_t len)
Process incoming DHCP response packet payload (DHCPOFFER or DHCPACK).

Public Static Functions

Type Name
void pack_uint32 (uint8_t * buf, uint32_t val)
Pack 32-bit integer in big-endian byte order.
uint32_t unpack_uint32 (const uint8_t * buf)
Unpack 32-bit integer from big-endian byte order.

Public Functions Documentation

function syn_dhcp_build_discover

Build a DHCPDISCOVER UDP packet payload.

SYN_Status syn_dhcp_build_discover (
    SYN_DHCP * dhcp,
    const uint8_t mac_addr,
    uint8_t * buf_out,
    size_t buf_size,
    size_t * len_out
) 

Parameters:

  • dhcp Pointer to DHCP context.
  • mac_addr 6-byte client MAC address.
  • buf_out Output buffer (must hold at least 250 bytes).
  • buf_size Output buffer capacity.
  • len_out Pointer to receive byte length of generated payload.

Returns:

SYN_OK on success.


function syn_dhcp_build_request

Build a DHCPREQUEST UDP packet payload.

SYN_Status syn_dhcp_build_request (
    SYN_DHCP * dhcp,
    const uint8_t mac_addr,
    uint8_t * buf_out,
    size_t buf_size,
    size_t * len_out
) 

Parameters:

  • dhcp Pointer to DHCP context.
  • mac_addr 6-byte client MAC address.
  • buf_out Output buffer (must hold at least 260 bytes).
  • buf_size Output buffer capacity.
  • len_out Pointer to receive byte length of generated payload.

Returns:

SYN_OK on success.


function syn_dhcp_init

Initialize DHCP Client Context.

SYN_Status syn_dhcp_init (
    SYN_DHCP * dhcp,
    uint32_t xid
) 

Parameters:

  • dhcp Pointer to DHCP context.
  • xid 32-bit transaction ID (e.g. random value or tick count).

Returns:

SYN_OK on success.


function syn_dhcp_process_packet

Process incoming DHCP response packet payload (DHCPOFFER or DHCPACK).

SYN_Status syn_dhcp_process_packet (
    SYN_DHCP * dhcp,
    SYN_ETH * eth,
    const uint8_t * dhcp_pkt,
    size_t len
) 

Parameters:

  • dhcp Pointer to DHCP context.
  • eth Pointer to Ethernet context (updated automatically when BOUND).
  • dhcp_pkt Pointer to incoming DHCP UDP payload.
  • len Payload byte length.

Returns:

SYN_OK on success, SYN_BUSY if still waiting/in-progress.


Public Static Functions Documentation

function pack_uint32

Pack 32-bit integer in big-endian byte order.

static void pack_uint32 (
    uint8_t * buf,
    uint32_t val
) 

Parameters:

  • buf Output byte buffer.
  • val 32-bit value to pack.

function unpack_uint32

Unpack 32-bit integer from big-endian byte order.

static uint32_t unpack_uint32 (
    const uint8_t * buf
) 

Parameters:

  • buf Input byte buffer.

Returns:

Unpacked 32-bit integer.



The documentation for this class was generated from the following file src/syntropic/net/syn_dhcp.c