X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=networking%2Fudhcp%2Fdhcpc.h;h=8da1dd8e1726deaaf37dd1dc75f1cfe3a918f4ea;hb=96e1b38586e80a0f014038bf4fdf4689c668fbd6;hp=e2e14feba7f96ab6f04bfab2b8d3bc74c6845c9b;hpb=b628409b1e18aa6cdcf485077a3a64276e817db9;p=oweals%2Fbusybox.git diff --git a/networking/udhcp/dhcpc.h b/networking/udhcp/dhcpc.h index e2e14feba..8da1dd8e1 100644 --- a/networking/udhcp/dhcpc.h +++ b/networking/udhcp/dhcpc.h @@ -1,11 +1,8 @@ +/* vi: set sw=4 ts=4: */ /* dhcpc.h */ #ifndef _DHCPC_H #define _DHCPC_H -#ifndef DEFAULT_SCRIPT -#define DEFAULT_SCRIPT "/usr/share/udhcpc/default.script" -#endif - #define INIT_SELECTING 0 #define REQUESTING 1 #define BOUND 2 @@ -15,24 +12,39 @@ #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 */ - uint8_t arp[6]; /* Our arp address */ + /* 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 */ + char *pidfile; /* Optionally store the process ID */ + const 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 */ + 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; +#define client_config (*(struct client_config_t*)&bb_common_bufsiz1) + + +/*** clientpacket.h ***/ + +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); #endif