Start 1.33.0 development cycle
[oweals/busybox.git] / networking / udhcp / dhcpc.h
index 808e919244134fca652a88d993238659e3fe98a2..b407a6cdbf7f01d3b82d3ac3d8b16f2d37a3781c 100644 (file)
@@ -1,39 +1,46 @@
-/* dhcpc.h */
-#ifndef _DHCPC_H
-#define _DHCPC_H
+/* vi: set sw=4 ts=4: */
+/*
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+#ifndef UDHCP_DHCPC_H
+#define UDHCP_DHCPC_H 1
 
-#ifndef DEFAULT_SCRIPT
-#define DEFAULT_SCRIPT  "/usr/share/udhcpc/default.script"
-#endif
+PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
+
+struct client_data_t {
+       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) */
+// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TODO: DHCPv6 has 16-bit option numbers
+       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 */
+       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 */
+
+       unsigned first_secs;
+       unsigned last_secs;
 
-#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
-
-
-struct client_config_t {
-       char foreground;                /* Do not fork */
-       char quit_after_lease;          /* Quit after obtaining lease */
-       char abort_if_no_lease;         /* Abort if no lease */
-       char background_if_no_lease;    /* Fork to background if no lease */
-       char *interface;                /* The name of the interface to use */
-       char *pidfile;                  /* Optionally store the process ID */
-       char *script;                   /* User script to run at dhcp events */
-       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 */        
-       uint8_t arp[6];                 /* Our arp address */
-};
-
-extern struct client_config_t client_config;
+       int sockfd;
+       smallint listen_mode;
+       smallint state;
+} FIX_ALIASING;
+
+/* server_config sits in 1st half of bb_common_bufsiz1 */
+#define client_data (*(struct client_data_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
+
+#if ENABLE_FEATURE_UDHCP_PORT
+#define CLIENT_PORT  (client_data.port)
+#define CLIENT_PORT6 (client_data.port)
+#else
+#define CLIENT_PORT  68
+#define CLIENT_PORT6 546
+#endif
 
+POP_SAVED_FUNCTION_VISIBILITY
 
 #endif