diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2024-10-25 16:28:08 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2024-10-25 16:28:08 -0600 |
commit | 9f4494685a29714c57cc11d62dead71f7004e061 (patch) | |
tree | 32976be279a3fd89a26f382cd3a358c66f9cd726 /libdhcp/include | |
parent | 84051eb54834ff805fee1c2e0f573d4433a254c2 (diff) |
ahhh
Diffstat (limited to 'libdhcp/include')
-rw-r--r-- | libdhcp/include/libdhcp/dhcp.h | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/libdhcp/include/libdhcp/dhcp.h b/libdhcp/include/libdhcp/dhcp.h index e6b1801..aae4a4d 100644 --- a/libdhcp/include/libdhcp/dhcp.h +++ b/libdhcp/include/libdhcp/dhcp.h @@ -70,14 +70,6 @@ #include <libmisc/net.h> #include "hw/w5500.h" -struct dhcp_lease { - struct net_ip4_addr addr; - struct net_ip4_addr subnet_mask; - struct net_ip4_addr gateway; - struct net_ip4_addr dns; - uint32_t lifetime; /* in seconds, except 0xffffffff is "infinity" */ -}; - enum dhcp_event { DHCP_ASSIGN, DHCP_UPDATE, @@ -135,4 +127,32 @@ uint8_t DHCP_run(struct w5500 *chip, uint8_t socknum, dhcp_callback_t cb); */ void DHCP_stop(implements_net_packet_conn *sock); +void xhandle(uint8_t opt_typ, uint8_t opt_len, uint8_t *opt_dat) { + switch (opt_typ) { + case DHCP_OPT_SUBNET_MASK: + if (opt_len != 4) + return; + global_lease.subnet_mask.octets[0] = opt_dat[0]; + global_lease.subnet_mask.octets[1] = opt_dat[1]; + global_lease.subnet_mask.octets[2] = opt_dat[2]; + global_lease.subnet_mask.octets[3] = opt_dat[3]; + case DHCP_OPT_ROUTER : + if (opt_len < 4) + return; + global_lease.gateway.octets[0] = opt_dat[0]; + global_lease.gateway.octets[1] = opt_dat[1]; + global_lease.gateway.octets[2] = opt_dat[2]; + global_lease.gateway.octets[3] = opt_dat[3]; + break; + case DHCP_OPT_DOMAIN_SERVER : + if (opt_len < 4) + return; + global_lease.dns.octets[0] = opt_dat[0]; + global_lease.dns.octets[1] = opt_dat[1]; + global_lease.dns.octets[2] = opt_dat[2]; + global_lease.dns.octets[3] = opt_dat[3]; + break; + } +} + #endif /* _LIBDHCP_DHCP_H_ */ |