9914d8b861
Duplicate options are currently overridden (only the last option is kept). This leads to unexpected behavior when using long options. The patch adds support for long options in compliance with RFC 3396. Fixes #13136. function old new delta udhcp_run_script 601 725 +124 optitem_unset_env_and_free - 38 +38 putenvp 46 59 +13 static.xmalloc_optname_optval 718 717 -1 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/1 up/down: 175/-1) Total: 174 bytes Signed-off-by: Martin Lewis <martin.lewis.x84@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
48 lines
1.6 KiB
C
48 lines
1.6 KiB
C
/* 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
|
|
|
|
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 */
|
|
llist_t *envp; /* list of DHCP options used for env vars */
|
|
|
|
unsigned first_secs;
|
|
unsigned last_secs;
|
|
|
|
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
|