aboutsummaryrefslogtreecommitdiff
path: root/networking/udhcp/options.h
diff options
context:
space:
mode:
Diffstat (limited to 'networking/udhcp/options.h')
-rw-r--r--networking/udhcp/options.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/networking/udhcp/options.h b/networking/udhcp/options.h
new file mode 100644
index 000000000..4948bac00
--- /dev/null
+++ b/networking/udhcp/options.h
@@ -0,0 +1,38 @@
+/* options.h */
+#ifndef _OPTIONS_H
+#define _OPTIONS_H
+
+#include "packet.h"
+
+#define TYPE_MASK 0x0F
+
+enum {
+ OPTION_IP=1,
+ OPTION_IP_PAIR,
+ OPTION_STRING,
+ OPTION_BOOLEAN,
+ OPTION_U8,
+ OPTION_U16,
+ OPTION_S16,
+ OPTION_U32,
+ OPTION_S32
+};
+
+#define OPTION_REQ 0x10 /* have the client request this option */
+#define OPTION_LIST 0x20 /* There can be a list of 1 or more of these */
+
+struct dhcp_option {
+ char name[10];
+ char flags;
+ uint8_t code;
+};
+
+extern struct dhcp_option dhcp_options[];
+extern int option_lengths[];
+
+uint8_t *get_option(struct dhcpMessage *packet, int code);
+int end_option(uint8_t *optionptr);
+int add_option_string(uint8_t *optionptr, uint8_t *string);
+int add_simple_option(uint8_t *optionptr, uint8_t code, uint32_t data);
+
+#endif