Start 1.33.0 development cycle
[oweals/busybox.git] / networking / udhcp / dhcpc.h
index 72a8bd94f53656b20b248a0a3d2c2383b6507f97..b407a6cdbf7f01d3b82d3ac3d8b16f2d37a3781c 100644 (file)
@@ -1,51 +1,46 @@
 /* vi: set sw=4 ts=4: */
-/* dhcpc.h */
-#ifndef _DHCPC_H
-#define _DHCPC_H
-
-#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 {
-       /* 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 */
+/*
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+#ifndef UDHCP_DHCPC_H
+#define UDHCP_DHCPC_H 1
+
+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 */
-       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 */
-       int tryagain;                   /* Number of seconds to try to get a lease */
-       uint8_t arp[6];                 /* Our arp address */
-};
 
-#define client_config (*(struct client_config_t*)&bb_common_bufsiz1)
+       unsigned first_secs;
+       unsigned last_secs;
 
+       int sockfd;
+       smallint listen_mode;
+       smallint state;
+} FIX_ALIASING;
 
-/*** clientpacket.h ***/
+/* server_config sits in 1st half of bb_common_bufsiz1 */
+#define client_data (*(struct client_data_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2]))
 
-uint32_t random_xid(void);
-int send_discover(uint32_t xid, uint32_t requested);
-int send_selecting(uint32_t xid, uint32_t server, uint32_t requested);
-int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr);
-int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr);
-int send_release(uint32_t server, uint32_t ciaddr);
-int get_raw_packet(struct dhcpMessage *payload, int fd);
+#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