dhcpv4: fix DHCP packet size
[project/odhcpd.git] / src / dhcpv4.h
index cd6c978431e54e4c4245a0ca1c751dc48d16bc7d..505346f6b605d646d74da69e700e47d4061891b0 100644 (file)
@@ -1,5 +1,6 @@
 /**
  *   Copyright (C) 2012 Steven Barth <steven@midlink.org>
+ *   Copyright (C) 2016 Hans Dedecker <dedeckeh@gmail.com>
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License version 2
@@ -18,6 +19,8 @@
 
 #define DHCPV4_FLAG_BROADCAST  0x8000
 
+#define DHCPV4_MIN_PACKET_SIZE 300
+
 enum dhcpv4_op {
        DHCPV4_BOOTREQUEST = 1,
        DHCPV4_BOOTREPLY = 2
@@ -32,9 +35,11 @@ enum dhcpv4_msg {
        DHCPV4_MSG_NAK = 6,
        DHCPV4_MSG_RELEASE = 7,
        DHCPV4_MSG_INFORM = 8,
+       DHCPV4_MSG_FORCERENEW = 9,
 };
 
 enum dhcpv4_opt {
+       DHCPV4_OPT_PAD = 0,
        DHCPV4_OPT_NETMASK = 1,
        DHCPV4_OPT_ROUTER = 3,
        DHCPV4_OPT_DNSSERVER = 6,
@@ -51,7 +56,9 @@ enum dhcpv4_opt {
        DHCPV4_OPT_HOSTNAME = 12,
        DHCPV4_OPT_REQUEST = 17,
        DHCPV4_OPT_USER_CLASS = 77,
+       DHCPV4_OPT_AUTHENTICATION = 90,
        DHCPV4_OPT_SEARCH_DOMAIN = 119,
+       DHCPV4_OPT_FORCERENEW_NONCE_CAPABLE = 145,
        DHCPV4_OPT_END = 255,
 };
 
@@ -73,15 +80,14 @@ struct dhcpv4_message {
        uint8_t options[312];
 };
 
-struct dhcpv4_assignment {
-       struct list_head head;
-       uint32_t addr;
-       time_t valid_until;
-       uint8_t hwaddr[6];
-       uint32_t leasetime;
-       unsigned int flags;
-       char hostname[];
-};
+struct dhcpv4_auth_forcerenew {
+       uint8_t protocol;
+       uint8_t algorithm;
+       uint8_t rdm;
+       uint32_t replay[2];
+       uint8_t type;
+       uint8_t key[16];
+} _packed;
 
 struct dhcpv4_option {
        uint8_t type;