udhcp: add PXELINUX config file option (code 209) definition
[oweals/busybox.git] / networking / udhcp / dhcpc.h
index fa091bf7287881f89c93499e83b302c7a059af37..9f423a5b241f2f75acbc77e34da7a4c3e5fe9474 100644 (file)
@@ -1,50 +1,41 @@
 /* vi: set sw=4 ts=4: */
-/* dhcpc.h */
-#ifndef _DHCPC_H
-#define _DHCPC_H
+/*
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+#ifndef UDHCP_DHCPC_H
+#define UDHCP_DHCPC_H 1
 
-#define INIT_SELECTING 0
-#define REQUESTING     1
-#define BOUND          2
-#define RENEWING       3
-#define REBINDING      4
-#define INIT_REBOOT    5
-#define RENEW_REQUESTED 6
-#define RELEASED       7
+PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
 
 struct client_config_t {
-       /* TODO: combine flag fields into single "unsigned opt" */
-       /* (can be set directly to the result of getopt32) */
-       char foreground;                /* Do not fork */
-       char quit_after_lease;          /* Quit after obtaining lease */
-       char release_on_quit;           /* perform release on quit */
-       char abort_if_no_lease;         /* Abort if no lease */
-       char background_if_no_lease;    /* Fork to background if no lease */
-       const char *interface;                /* The name of the interface to use */
+       uint8_t client_mac[6];          /* Our mac address */
+       IF_FEATURE_UDHCP_PORT(uint16_t port;)
+       int ifindex;                    /* Index number of the interface to use */
+       uint8_t opt_mask[256 / 8];      /* Bitmask of options to send (-O option) */
+       const char *interface;          /* The name of the interface to use */
        char *pidfile;                  /* Optionally store the process ID */
-       const char *script;                   /* User script to run at dhcp events */
+       const char *script;             /* User script to run at dhcp events */
+       struct option_set *options;     /* list of DHCP options to send to server */
        uint8_t *clientid;              /* Optional client id to use */
        uint8_t *vendorclass;           /* Optional vendor class-id to use */
        uint8_t *hostname;              /* Optional hostname to use */
        uint8_t *fqdn;                  /* Optional fully qualified domain name to use */
-       int ifindex;                    /* Index number of the interface to use */
-       int retries;                    /* Max number of request packets */
-       int timeout;                    /* Number of seconds to try to get a lease */
-       uint8_t arp[6];                 /* Our arp address */
-};
 
-extern struct client_config_t client_config;
+       uint16_t first_secs;
+       uint16_t last_secs;
+} FIX_ALIASING;
 
+/* server_config sits in 1st half of bb_common_bufsiz1 */
+#define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
 
-/*** clientpacket.h ***/
-
-unsigned random_xid(void);
-int send_discover(unsigned long xid, unsigned long requested);
-int send_selecting(unsigned long xid, unsigned long server, unsigned long requested);
-int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr);
-int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr);
-int send_release(unsigned long server, unsigned long ciaddr);
-int get_raw_packet(struct dhcpMessage *payload, int fd);
+#if ENABLE_FEATURE_UDHCP_PORT
+#define CLIENT_PORT  (client_config.port)
+#define CLIENT_PORT6 (client_config.port)
+#else
+#define CLIENT_PORT  68
+#define CLIENT_PORT6 546
+#endif
 
+POP_SAVED_FUNCTION_VISIBILITY
 
 #endif