1/* vi: set sw=4 ts=4: */ 2/* dhcpc.h */ 3#ifndef _DHCPC_H 4#define _DHCPC_H 5 6#define INIT_SELECTING 0 7#define REQUESTING 1 8#define BOUND 2 9#define RENEWING 3 10#define REBINDING 4 11#define INIT_REBOOT 5 12#define RENEW_REQUESTED 6 13#define RELEASED 7 14 15struct client_config_t { 16 /* TODO: combine flag fields into single "unsigned opt" */ 17 /* (can be set directly to the result of getopt32) */ 18 char foreground; /* Do not fork */ 19 char quit_after_lease; /* Quit after obtaining lease */ 20 char release_on_quit; /* Perform release on quit */ 21 char abort_if_no_lease; /* Abort if no lease */ 22 char background_if_no_lease; /* Fork to background if no lease */ 23 const char *interface; /* The name of the interface to use */ 24 char *pidfile; /* Optionally store the process ID */ 25 const char *script; /* User script to run at dhcp events */ 26 uint8_t *clientid; /* Optional client id to use */ 27 uint8_t *vendorclass; /* Optional vendor class-id to use */ 28 uint8_t *hostname; /* Optional hostname to use */ 29 uint8_t *fqdn; /* Optional fully qualified domain name to use */ 30 int ifindex; /* Index number of the interface to use */ 31 int retries; /* Max number of request packets */ 32 int timeout; /* Number of seconds to try to get a lease */ 33 uint8_t arp[6]; /* Our arp address */ 34}; 35 36extern struct client_config_t client_config; 37 38 39/*** clientpacket.h ***/ 40 41uint32_t random_xid(void); 42int send_discover(uint32_t xid, uint32_t requested); 43int send_selecting(uint32_t xid, uint32_t server, uint32_t requested); 44int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr); 45int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr); 46int send_release(uint32_t server, uint32_t ciaddr); 47int get_raw_packet(struct dhcpMessage *payload, int fd); 48 49 50#endif 51