summaryrefslogtreecommitdiffstats
path: root/freebsd/sbin/dhclient/dhclient.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-08-21 09:39:55 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-21 10:29:40 +0200
commit2df56dbd60bb5d925d2ce0ddbdefdbe6107ea783 (patch)
treebd7bad558534db4a1f400bc38a2c9aa7ea4f411e /freebsd/sbin/dhclient/dhclient.c
parentUpdate to FreeBSD head 2018-02-01 (diff)
downloadrtems-libbsd-2df56dbd60bb5d925d2ce0ddbdefdbe6107ea783.tar.bz2
Update to FreeBSD head 2018-04-01
Git mirror commit 8dfb1ccc26d1cea7e2529303003ff61f9f1784c4. Update #3472.
Diffstat (limited to 'freebsd/sbin/dhclient/dhclient.c')
-rw-r--r--freebsd/sbin/dhclient/dhclient.c58
1 files changed, 27 insertions, 31 deletions
diff --git a/freebsd/sbin/dhclient/dhclient.c b/freebsd/sbin/dhclient/dhclient.c
index 51fa6081..d9bae19c 100644
--- a/freebsd/sbin/dhclient/dhclient.c
+++ b/freebsd/sbin/dhclient/dhclient.c
@@ -93,7 +93,7 @@ cap_channel_t *capsyslog;
time_t cur_time;
time_t default_lease_time = 43200; /* 12 hours... */
-char *path_dhclient_conf = _PATH_DHCLIENT_CONF;
+const char *path_dhclient_conf = _PATH_DHCLIENT_CONF;
char *path_dhclient_db = NULL;
int log_perror = 1;
@@ -133,10 +133,10 @@ void routehandler(struct protocol *);
void usage(void);
int check_option(struct client_lease *l, int option);
int check_classless_option(unsigned char *data, int len);
-int ipv4addrs(char * buf);
+int ipv4addrs(const char * buf);
int res_hnok(const char *dn);
int check_search(const char *srch);
-char *option_as_string(unsigned int code, unsigned char *data, int len);
+const char *option_as_string(unsigned int code, unsigned char *data, int len);
int fork_privchld(int, int);
#define ROUNDUP(a) \
@@ -203,26 +203,25 @@ uint8_t curbssid[6];
static void
disassoc(void *arg)
{
- struct interface_info *ifi = arg;
+ struct interface_info *_ifi = arg;
/*
* Clear existing state.
*/
- if (ifi->client->active != NULL) {
+ if (_ifi->client->active != NULL) {
script_init("EXPIRE", NULL);
script_write_params("old_",
- ifi->client->active);
- if (ifi->client->alias)
+ _ifi->client->active);
+ if (_ifi->client->alias)
script_write_params("alias_",
- ifi->client->alias);
+ _ifi->client->alias);
script_go();
}
- ifi->client->state = S_INIT;
+ _ifi->client->state = S_INIT;
}
-/* ARGSUSED */
void
-routehandler(struct protocol *p)
+routehandler(struct protocol *p __unused)
{
char msg[2048], *addr;
struct rt_msghdr *rtm;
@@ -232,7 +231,7 @@ routehandler(struct protocol *p)
struct ieee80211_join_event *jev;
struct client_lease *l;
time_t t = time(NULL);
- struct sockaddr *sa;
+ struct sockaddr_in *sa;
struct iaddr a;
ssize_t n;
int linkstat;
@@ -256,13 +255,13 @@ routehandler(struct protocol *p)
if (scripttime == 0 || t < scripttime + 10)
break;
- sa = get_ifa((char *)(ifam + 1), ifam->ifam_addrs);
+ sa = (struct sockaddr_in*)get_ifa((char *)(ifam + 1), ifam->ifam_addrs);
if (sa == NULL)
break;
if ((a.len = sizeof(struct in_addr)) > sizeof(a.iabuf))
error("king bula sez: len mismatch");
- memcpy(a.iabuf, &((struct sockaddr_in *)sa)->sin_addr, a.len);
+ memcpy(a.iabuf, &sa->sin_addr, a.len);
if (addr_eq(a, defaddr))
break;
@@ -273,7 +272,7 @@ routehandler(struct protocol *p)
if (l == NULL) /* added/deleted addr is not the one we set */
break;
- addr = inet_ntoa(((struct sockaddr_in *)sa)->sin_addr);
+ addr = inet_ntoa(sa->sin_addr);
if (rtm->rtm_type == RTM_NEWADDR) {
/*
* XXX: If someone other than us adds our address,
@@ -948,7 +947,7 @@ dhcp(struct packet *packet)
{
struct iaddrlist *ap;
void (*handler)(struct packet *);
- char *type;
+ const char *type;
switch (packet->packet_type) {
case DHCPOFFER:
@@ -986,7 +985,7 @@ dhcpoffer(struct packet *packet)
struct client_lease *lease, *lp;
int i;
int arp_timeout_needed, stop_selecting;
- char *name = packet->options[DHO_DHCP_MESSAGE_TYPE].len ?
+ const char *name = packet->options[DHO_DHCP_MESSAGE_TYPE].len ?
"DHCPOFFER" : "BOOTREPLY";
/* If we're not receptive to an offer right now, or if the offer
@@ -1516,7 +1515,8 @@ cancel:
memcpy(&to.s_addr, ip->client->destination.iabuf,
sizeof(to.s_addr));
- if (ip->client->state != S_REQUESTING)
+ if (ip->client->state != S_REQUESTING &&
+ ip->client->state != S_REBOOTING)
memcpy(&from, ip->client->active->address.iabuf,
sizeof(from));
else
@@ -1995,7 +1995,7 @@ write_client_lease(struct interface_info *ip, struct client_lease *lease,
}
void
-script_init(char *reason, struct string_list *medium)
+script_init(const char *reason, struct string_list *medium)
{
size_t len, mediumlen = 0;
struct imsg_hdr hdr;
@@ -2030,7 +2030,7 @@ script_init(char *reason, struct string_list *medium)
}
void
-priv_script_init(char *reason, char *medium)
+priv_script_init(const char *reason, char *medium)
{
struct interface_info *ip = ifi;
@@ -2058,7 +2058,7 @@ priv_script_init(char *reason, char *medium)
}
void
-priv_script_write_params(char *prefix, struct client_lease *lease)
+priv_script_write_params(const char *prefix, struct client_lease *lease)
{
struct interface_info *ip = ifi;
u_int8_t dbuf[1500], *dp = NULL;
@@ -2198,7 +2198,7 @@ supersede:
}
void
-script_write_params(char *prefix, struct client_lease *lease)
+script_write_params(const char *prefix, struct client_lease *lease)
{
size_t fn_len = 0, sn_len = 0, pr_len = 0;
struct imsg_hdr hdr;
@@ -2432,7 +2432,7 @@ go_daemon(void)
/* Stop logging to stderr... */
log_perror = 0;
- if (daemon(1, 1) == -1)
+ if (daemonfd(-1, nullfd) == -1)
error("daemon");
cap_rights_init(&rights);
@@ -2445,11 +2445,7 @@ go_daemon(void)
}
}
- /* we are chrooted, daemon(3) fails to open /dev/null */
if (nullfd != -1) {
- dup2(nullfd, STDIN_FILENO);
- dup2(nullfd, STDOUT_FILENO);
- dup2(nullfd, STDERR_FILENO);
close(nullfd);
nullfd = -1;
}
@@ -2466,8 +2462,8 @@ go_daemon(void)
int
check_option(struct client_lease *l, int option)
{
- char *opbuf;
- char *sbuf;
+ const char *opbuf;
+ const char *sbuf;
/* we use this, since this is what gets passed to dhclient-script */
@@ -2727,7 +2723,7 @@ check_search(const char *srch)
* otherwise, return 0
*/
int
-ipv4addrs(char * buf)
+ipv4addrs(const char * buf)
{
struct in_addr jnk;
int count = 0;
@@ -2745,7 +2741,7 @@ ipv4addrs(char * buf)
}
-char *
+const char *
option_as_string(unsigned int code, unsigned char *data, int len)
{
static char optbuf[32768]; /* XXX */