summaryrefslogtreecommitdiff
path: root/src/libsystemd-network/dhcp6-protocol.h
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2014-06-19 15:39:42 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2014-06-19 15:44:44 +0300
commit631bbe71298ec892f77f44f94feb612646fe6853 (patch)
treeed581fa6f5a5166fa1f46a8d371c958231302b90 /src/libsystemd-network/dhcp6-protocol.h
parentc6affce8740bb0cee42eebf6d1d44dd518035e88 (diff)
sd-dhcp6-client: Receive and parse Advertise messages
When receiving DHCPv6 messages, discard the ones that are not meant for DHCPv6 clients and verify the transaction id. Once that is done, process the Advertise message and select the Advertise with the highest preference. Create a separate function for lease information parsing so that it can be reused in other parts of the protocol. Verify both DUID and IAID in the received message and store other necessary information with the lease structure.
Diffstat (limited to 'src/libsystemd-network/dhcp6-protocol.h')
-rw-r--r--src/libsystemd-network/dhcp6-protocol.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libsystemd-network/dhcp6-protocol.h b/src/libsystemd-network/dhcp6-protocol.h
index c58a07b176..1303a55a82 100644
--- a/src/libsystemd-network/dhcp6-protocol.h
+++ b/src/libsystemd-network/dhcp6-protocol.h
@@ -21,6 +21,9 @@
along with systemd; If not, see <http://www.gnu.org/licenses/>.
***/
+#include <netinet/ip6.h>
+#include <netinet/udp.h>
+
#include "macro.h"
#include "sparse-endian.h"
@@ -36,6 +39,9 @@ struct DHCP6Message {
typedef struct DHCP6Message DHCP6Message;
+#define DHCP6_MIN_OPTIONS_SIZE \
+ 1280 - sizeof(struct ip6_hdr) - sizeof(struct udphdr)
+
#define IN6ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS_INIT \
{ { { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02 } } }