From 4aca87515a5083ae0e31ce3177189fd43b6d05ac Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Sat, 3 Jan 2015 13:58:15 +0100 Subject: patch to Vanilla Tomato 1.28 --- .../src/router/busybox/networking/udhcp/dhcpc.h | 65 ++++++++++++++-------- 1 file changed, 42 insertions(+), 23 deletions(-) (limited to 'release/src/router/busybox/networking/udhcp/dhcpc.h') diff --git a/release/src/router/busybox/networking/udhcp/dhcpc.h b/release/src/router/busybox/networking/udhcp/dhcpc.h index e23d9d4f..7b779426 100644 --- a/release/src/router/busybox/networking/udhcp/dhcpc.h +++ b/release/src/router/busybox/networking/udhcp/dhcpc.h @@ -1,32 +1,51 @@ +/* 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 +#ifndef UDHCP_DHCPC_H +#define UDHCP_DHCPC_H 1 +PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN 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 */ - unsigned char *clientid; /* Optional client id to use */ - unsigned char *hostname; /* Optional hostname to use */ - int ifindex; /* Index number of the interface to use */ - unsigned char arp[6]; /* Our arp address */ + 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 no_default_options; /* Do not include default optins in request */ + USE_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 */ + 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 */ }; -extern struct client_config_t client_config; +/* server_config sits in 1st half of bb_common_bufsiz1 */ +#define client_config (*(struct client_config_t*)(&bb_common_bufsiz1[COMMON_BUFSIZE / 2])) + +#if ENABLE_FEATURE_UDHCP_PORT +#define CLIENT_PORT (client_config.port) +#else +#define CLIENT_PORT 68 +#endif + + +/*** clientpacket.h ***/ + +uint32_t random_xid(void) FAST_FUNC; +int send_discover(uint32_t xid, uint32_t requested) FAST_FUNC; +int send_select(uint32_t xid, uint32_t server, uint32_t requested) FAST_FUNC; +#if ENABLE_FEATURE_UDHCPC_ARPING +int send_decline(uint32_t xid, uint32_t server, uint32_t requested) FAST_FUNC; +#endif +int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr) FAST_FUNC; +int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr) FAST_FUNC; +int send_release(uint32_t server, uint32_t ciaddr) FAST_FUNC; + +int udhcp_recv_raw_packet(struct dhcpMessage *payload, int fd) FAST_FUNC; +POP_SAVED_FUNCTION_VISIBILITY #endif -- cgit v1.2.3-54-g00ecf