Module Name: src
Committed By: roy
Date: Fri Apr 14 09:56:32 UTC 2017
Modified Files:
src/external/bsd/dhcpcd/dist/src: bpf.c dhcpcd.c if-options.c
Removed Files:
src/external/bsd/dhcpcd/dist/test: GNUmakefile Makefile test.c test.h
test_hmac_md5.c
Log Message:
Sync
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/external/bsd/dhcpcd/dist/src/bpf.c \
src/external/bsd/dhcpcd/dist/src/dhcpcd.c \
src/external/bsd/dhcpcd/dist/src/if-options.c
cvs rdiff -u -r1.1.1.1 -r0 src/external/bsd/dhcpcd/dist/test/GNUmakefile \
src/external/bsd/dhcpcd/dist/test/Makefile \
src/external/bsd/dhcpcd/dist/test/test.c \
src/external/bsd/dhcpcd/dist/test/test.h \
src/external/bsd/dhcpcd/dist/test/test_hmac_md5.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/bsd/dhcpcd/dist/src/bpf.c
diff -u src/external/bsd/dhcpcd/dist/src/bpf.c:1.2 src/external/bsd/dhcpcd/dist/src/bpf.c:1.3
--- src/external/bsd/dhcpcd/dist/src/bpf.c:1.2 Mon Apr 3 00:42:20 2017
+++ src/external/bsd/dhcpcd/dist/src/bpf.c Fri Apr 14 09:56:32 2017
@@ -48,13 +48,13 @@
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
-#include <syslog.h>
#include "common.h"
#include "arp.h"
#include "bpf.h"
#include "dhcp.h"
#include "if.h"
+#include "logerr.h"
#define ARP_ADDRS_MAX 3
@@ -150,7 +150,7 @@ bpf_open(struct interface *ifp, int (*fi
goto eexit;
if (pv.bv_major != BPF_MAJOR_VERSION ||
pv.bv_minor < BPF_MINOR_VERSION) {
- syslog(LOG_ERR, "BPF version mismatch - recompile");
+ logerrx("BPF version mismatch - recompile");
goto eexit;
}
@@ -174,7 +174,6 @@ bpf_open(struct interface *ifp, int (*fi
goto eexit;
state->buffer = nb;
state->buffer_size = buf_len;
- state->buffer_len = state->buffer_pos = 0;
}
#ifdef BIOCIMMEDIATE
@@ -222,8 +221,6 @@ bpf_read(struct interface *ifp, int fd,
bytes = -1;
memcpy(&packet, state->buffer + state->buffer_pos,
sizeof(packet));
- if (packet.bh_caplen != packet.bh_datalen)
- goto next; /* Incomplete packet, drop. */
if (state->buffer_pos + packet.bh_caplen + packet.bh_hdrlen >
state->buffer_len)
goto next; /* Packet beyond buffer, drop. */
@@ -288,6 +285,16 @@ bpf_send(const struct interface *ifp, in
}
#endif
+int
+bpf_close(struct interface *ifp, int fd)
+{
+ struct ipv4_state *state = IPV4_STATE(ifp);
+
+ /* Rewind the buffer on closing. */
+ state->buffer_len = state->buffer_pos = 0;
+ return close(fd);
+}
+
static unsigned int
bpf_cmp_hwaddr(struct bpf_insn *bpf, size_t bpf_len, size_t off,
bool equal, uint8_t *hwaddr, size_t hwaddr_len)
@@ -428,6 +435,7 @@ bpf_arp(struct interface *ifp, int fd)
struct bpf_insn bpf[3+ bpf_arp_filter_len + bpf_arp_hw + bpf_arp_extra];
struct bpf_insn *bp;
struct iarp_state *state;
+ uint16_t arp_len;
if (fd == -1)
return 0;
@@ -438,6 +446,7 @@ bpf_arp(struct interface *ifp, int fd)
case ARPHRD_ETHER:
memcpy(bp, bpf_arp_ether, sizeof(bpf_arp_ether));
bp += bpf_arp_ether_len;
+ arp_len = sizeof(struct ether_header)+sizeof(struct ether_arp);
break;
default:
errno = EINVAL;
@@ -465,13 +474,13 @@ bpf_arp(struct interface *ifp, int fd)
TAILQ_FOREACH(astate, &state->arp_states, next) {
if (++naddrs > ARP_ADDRS_MAX) {
errno = ENOBUFS;
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
break;
}
BPF_SET_JUMP(bp, BPF_JMP + BPF_JEQ + BPF_K,
htonl(astate->addr.s_addr), 0, 1);
bp++;
- BPF_SET_STMT(bp, BPF_RET + BPF_K, BPF_WHOLEPACKET);
+ BPF_SET_STMT(bp, BPF_RET + BPF_K, arp_len);
bp++;
}
@@ -496,8 +505,7 @@ bpf_arp(struct interface *ifp, int fd)
BPF_SET_JUMP(bp, BPF_JMP + BPF_JEQ + BPF_K,
htonl(astate->addr.s_addr), 0, 1);
bp++;
- BPF_SET_STMT(bp, BPF_RET + BPF_K,
- BPF_WHOLEPACKET);
+ BPF_SET_STMT(bp, BPF_RET + BPF_K, arp_len);
bp++;
}
Index: src/external/bsd/dhcpcd/dist/src/dhcpcd.c
diff -u src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.2 src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.3
--- src/external/bsd/dhcpcd/dist/src/dhcpcd.c:1.2 Thu Apr 6 14:00:34 2017
+++ src/external/bsd/dhcpcd/dist/src/dhcpcd.c Fri Apr 14 09:56:32 2017
@@ -44,7 +44,6 @@ const char dhcpcd_copyright[] = "Copyrig
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <syslog.h>
#include <unistd.h>
#include <time.h>
@@ -63,6 +62,7 @@ const char dhcpcd_copyright[] = "Copyrig
#include "ipv4ll.h"
#include "ipv6.h"
#include "ipv6nd.h"
+#include "logerr.h"
#include "script.h"
#ifdef HAVE_UTIL_H
@@ -173,7 +173,7 @@ handle_exit_timeout(void *arg)
struct dhcpcd_ctx *ctx;
ctx = arg;
- syslog(LOG_ERR, "timed out");
+ logerrx("timed out");
if (!(ctx->options & DHCPCD_MASTER)) {
eloop_exit(ctx->eloop, EXIT_FAILURE);
return;
@@ -258,16 +258,14 @@ dhcpcd_ipwaited(struct dhcpcd_ctx *ctx)
TAILQ_FOREACH(ifp, ctx->ifaces, next) {
if ((af = dhcpcd_ifafwaiting(ifp)) != AF_MAX) {
- syslog(LOG_DEBUG,
- "%s: waiting for an %s address",
+ logdebugx("%s: waiting for an %s address",
ifp->name, dhcpcd_af(af));
return 0;
}
}
if ((af = dhcpcd_afwaiting(ctx)) != AF_MAX) {
- syslog(LOG_DEBUG,
- "waiting for an %s address",
+ logdebugx("waiting for an %s address",
dhcpcd_af(af));
return 0;
}
@@ -296,7 +294,7 @@ dhcpcd_daemonise(struct dhcpcd_ctx *ctx)
}
if (ctx->options & DHCPCD_ONESHOT) {
- syslog(LOG_INFO, "exiting due to oneshot");
+ loginfox("exiting due to oneshot");
eloop_exit(ctx->eloop, EXIT_SUCCESS);
return 0;
}
@@ -305,11 +303,11 @@ dhcpcd_daemonise(struct dhcpcd_ctx *ctx)
if (ctx->options & DHCPCD_DAEMONISED ||
!(ctx->options & DHCPCD_DAEMONISE))
return 0;
- syslog(LOG_DEBUG, "forking to background");
+ logdebugx("forking to background");
/* Setup a signal pipe so parent knows when to exit. */
if (pipe(sidpipe) == -1) {
- syslog(LOG_ERR, "pipe: %m");
+ logerr("%s: pipe", __func__);
return 0;
}
@@ -322,22 +320,21 @@ dhcpcd_daemonise(struct dhcpcd_ctx *ctx)
switch (pid = fork()) {
case -1:
- syslog(LOG_ERR, "fork: %m");
+ logerr("%s: fork", __func__);
return 0;
case 0:
if ((lpid = pidfile_lock(ctx->pidfile)) != 0)
- syslog(LOG_ERR, "%s: pidfile_lock %d: %m",
- __func__, lpid);
+ logerr("%s: pidfile_lock %d", __func__, lpid);
setsid();
/* Notify parent it's safe to exit as we've detached. */
close(sidpipe[0]);
if (write(sidpipe[1], &buf, 1) == -1)
- syslog(LOG_ERR, "failed to notify parent: %m");
+ logerr("%s: write", __func__);
close(sidpipe[1]);
/* Some polling methods don't survive after forking,
* so ensure we can requeue all our events. */
if (eloop_requeue(ctx->eloop) == -1) {
- syslog(LOG_ERR, "eloop_requeue: %m");
+ logerr("%s: eloop_requeue", __func__);
eloop_exit(ctx->eloop, EXIT_FAILURE);
}
if ((fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
@@ -352,9 +349,9 @@ dhcpcd_daemonise(struct dhcpcd_ctx *ctx)
/* Wait for child to detach */
close(sidpipe[1]);
if (read(sidpipe[0], &buf, 1) == -1)
- syslog(LOG_ERR, "failed to read child: %m");
+ logerr("%s: read", __func__);
close(sidpipe[0]);
- syslog(LOG_INFO, "forked to background, child pid %d", pid);
+ loginfox("forked to background, child pid %d", pid);
ctx->options |= DHCPCD_FORKED;
eloop_exit(ctx->eloop, EXIT_SUCCESS);
return pid;
@@ -380,7 +377,7 @@ stop_interface(struct interface *ifp)
struct dhcpcd_ctx *ctx;
ctx = ifp->ctx;
- syslog(LOG_INFO, "%s: removing interface", ifp->name);
+ loginfox("%s: removing interface", ifp->name);
ifp->options->options |= DHCPCD_STOPPING;
dhcpcd_drop(ifp, 1);
@@ -518,7 +515,7 @@ configure_interface1(struct interface *i
{
ifo->ia = malloc(sizeof(*ifo->ia));
if (ifo->ia == NULL)
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
else {
ifo->ia_len = 1;
ifo->ia->ia_type = D6_OPTION_IA_NA;
@@ -553,20 +550,19 @@ dhcpcd_selectprofile(struct interface *i
r = print_string(pssid, sizeof(pssid), OT_ESCSTRING,
ifp->ssid, ifp->ssid_len);
if (r == -1) {
- syslog(LOG_ERR, "%s: %s: %m", ifp->name, __func__);
+ logerr(__func__);
pssid[0] = '\0';
}
} else
pssid[0] = '\0';
ifo = read_config(ifp->ctx, ifp->name, pssid, profile);
if (ifo == NULL) {
- syslog(LOG_DEBUG, "%s: no profile %s", ifp->name, profile);
+ logdebugx("%s: no profile %s", ifp->name, profile);
return -1;
}
if (profile != NULL) {
strlcpy(ifp->profile, profile, sizeof(ifp->profile));
- syslog(LOG_INFO, "%s: selected profile %s",
- ifp->name, profile);
+ loginfox("%s: selected profile %s", ifp->name, profile);
} else
*ifp->profile = '\0';
@@ -599,8 +595,8 @@ configure_interface(struct interface *if
/* If the mtime has changed drop any old lease */
if (old != 0 && ifp->options->mtime != old) {
- syslog(LOG_WARNING,
- "%s: confile file changed, expiring leases", ifp->name);
+ logwarnx("%s: confile file changed, expiring leases",
+ ifp->name);
dhcpcd_drop(ifp, 0);
}
}
@@ -631,7 +627,7 @@ dhcpcd_initstate2(struct interface *ifp,
if (options) {
if ((ifo = default_config(ifp->ctx)) == NULL) {
- syslog(LOG_ERR, "%s: %s: %m", ifp->name, __func__);
+ logerr(__func__);
return;
}
ifo->options |= options;
@@ -641,7 +637,7 @@ dhcpcd_initstate2(struct interface *ifp,
ifo = ifp->options;
if (ifo->options & DHCPCD_IPV6 && ipv6_init(ifp->ctx) == -1) {
- syslog(LOG_ERR, "ipv6_init: %m");
+ logerr(__func__);
ifo->options &= ~DHCPCD_IPV6;
}
}
@@ -700,11 +696,11 @@ dhcpcd_handlecarrier(struct dhcpcd_ctx *
if (carrier == LINK_UNKNOWN) {
if (errno != ENOTTY) /* For example a PPP link on BSD */
- syslog(LOG_ERR, "%s: carrier_status: %m", ifname);
+ logerr("%s: %s", ifp->name, __func__);
} else if (carrier == LINK_DOWN || (ifp->flags & IFF_UP) == 0) {
if (ifp->carrier != LINK_DOWN) {
if (ifp->carrier == LINK_UP)
- syslog(LOG_INFO, "%s: carrier lost", ifp->name);
+ loginfox("%s: carrier lost", ifp->name);
ifp->carrier = LINK_DOWN;
script_runreason(ifp, "NOCARRIER");
#ifdef NOCARRIER_PRESERVE_IP
@@ -719,7 +715,7 @@ dhcpcd_handlecarrier(struct dhcpcd_ctx *
}
} else if (carrier == LINK_UP && ifp->flags & IFF_UP) {
if (ifp->carrier != LINK_UP) {
- syslog(LOG_INFO, "%s: carrier acquired", ifp->name);
+ loginfox("%s: carrier acquired", ifp->name);
ifp->carrier = LINK_UP;
#if !defined(__linux__) && !defined(__NetBSD__)
/* BSD does not emit RTM_NEWADDR or RTM_CHGADDR when the
@@ -779,8 +775,7 @@ warn_iaid_conflict(struct interface *ifp
/* This is only a problem if the interfaces are on the same network. */
if (ifn)
- syslog(LOG_ERR,
- "%s: IAID conflicts with one assigned to %s",
+ logerr("%s: IAID conflicts with one assigned to %s",
ifp->name, ifn->name);
}
@@ -799,7 +794,7 @@ dhcpcd_startinterface(void *arg)
case LINK_UP:
break;
case LINK_DOWN:
- syslog(LOG_INFO, "%s: waiting for carrier", ifp->name);
+ loginfox("%s: waiting for carrier", ifp->name);
return;
case LINK_UNKNOWN:
/* No media state available.
@@ -821,7 +816,7 @@ dhcpcd_startinterface(void *arg)
if (ifp->ctx->duid == NULL) {
if (duid_init(ifp) == 0)
return;
- syslog(LOG_INFO, "DUID %s",
+ loginfox("DUID %s",
hwaddr_ntoa(ifp->ctx->duid,
ifp->ctx->duid_len,
buf, sizeof(buf)));
@@ -830,7 +825,7 @@ dhcpcd_startinterface(void *arg)
if (ifo->options & (DHCPCD_DUID | DHCPCD_IPV6)) {
/* Report IAIDs */
- syslog(LOG_INFO, "%s: IAID %s", ifp->name,
+ loginfox("%s: IAID %s", ifp->name,
hwaddr_ntoa(ifo->iaid, sizeof(ifo->iaid),
buf, sizeof(buf)));
warn_iaid_conflict(ifp, ifo->iaid);
@@ -838,7 +833,7 @@ dhcpcd_startinterface(void *arg)
if (memcmp(ifo->iaid, ifo->ia[i].iaid,
sizeof(ifo->iaid)))
{
- syslog(LOG_INFO, "%s: IAID %s",
+ loginfox("%s: IAID %s",
ifp->name, hwaddr_ntoa(ifo->ia[i].iaid,
sizeof(ifo->ia[i].iaid),
buf, sizeof(buf)));
@@ -848,7 +843,7 @@ dhcpcd_startinterface(void *arg)
}
if (ifo->options & DHCPCD_IPV6 && ipv6_start(ifp) == -1) {
- syslog(LOG_ERR, "%s: ipv6_start: %m", ifp->name);
+ logerr("%s: ipv6_start", ifp->name);
ifo->options &= ~DHCPCD_IPV6;
}
if (ifo->options & DHCPCD_IPV6) {
@@ -886,8 +881,7 @@ dhcpcd_startinterface(void *arg)
#endif
}
if (nolease == -1)
- syslog(LOG_ERR, "%s: dhcp6_start: %m",
- ifp->name);
+ logerr("%s: dhcp6_start", ifp->name);
}
}
@@ -908,7 +902,7 @@ dhcpcd_prestartinterface(void *arg)
if ((!(ifp->ctx->options & DHCPCD_MASTER) ||
ifp->options->options & DHCPCD_IF_UP) &&
if_up(ifp) == -1)
- syslog(LOG_ERR, "%s: if_up: %m", ifp->name);
+ logerr("%s: %s", __func__, ifp->name);
if (ifp->options->options & DHCPCD_LINK &&
ifp->carrier == LINK_UNKNOWN)
@@ -920,8 +914,7 @@ dhcpcd_prestartinterface(void *arg)
ifp->flags, ifp->name);
return;
}
- syslog(LOG_INFO,
- "%s: unknown carrier, waiting for interface flags",
+ loginfox("%s: unknown carrier, waiting for interface flags",
ifp->name);
}
@@ -966,7 +959,7 @@ dhcpcd_handlelink(void *arg)
ctx = arg;
if (if_handlelink(ctx) == -1) {
- syslog(LOG_ERR, "if_handlelink: %m");
+ logerr(__func__);
eloop_event_delete(ctx->eloop, ctx->link_fd);
close(ctx->link_fd);
ctx->link_fd = -1;
@@ -990,8 +983,7 @@ dhcpcd_handleinterface(void *arg, int ac
return -1;
}
if (ifp->active) {
- syslog(LOG_DEBUG, "%s: interface departed",
- ifp->name);
+ logdebugx("%s: interface departed", ifp->name);
ifp->options->options |= DHCPCD_DEPARTED;
stop_interface(ifp);
}
@@ -1003,7 +995,7 @@ dhcpcd_handleinterface(void *arg, int ac
i = -1;
ifs = if_discover(ctx, -1, UNCONST(argv));
if (ifs == NULL) {
- syslog(LOG_ERR, "%s: if_discover: %m", __func__);
+ logerr(__func__);
return -1;
}
TAILQ_FOREACH_SAFE(ifp, ifs, next, ifn) {
@@ -1026,8 +1018,7 @@ dhcpcd_handleinterface(void *arg, int ac
iff = if_find(ctx->ifaces, ifp->name);
if (iff) {
if (iff->active)
- syslog(LOG_DEBUG, "%s: interface updated",
- iff->name);
+ logdebugx("%s: interface updated", iff->name);
/* The flags and hwaddr could have changed */
iff->flags = ifp->flags;
iff->hwlen = ifp->hwlen;
@@ -1038,7 +1029,7 @@ dhcpcd_handleinterface(void *arg, int ac
TAILQ_INSERT_TAIL(ctx->ifaces, ifp, next);
if (!ifp->active)
continue;
- syslog(LOG_DEBUG, "%s: interface added", ifp->name);
+ logdebugx("%s: interface added", ifp->name);
dhcpcd_initstate(ifp, 0);
run_preinit(ifp);
iff = ifp;
@@ -1072,14 +1063,14 @@ dhcpcd_handlehwaddr(struct dhcpcd_ctx *c
if (hwlen > sizeof(ifp->hwaddr)) {
errno = ENOBUFS;
- syslog(LOG_ERR, "%s: %s: %m", ifp->name, __func__);
+ logerr("%s: %s", __func__, ifp->name);
return;
}
if (ifp->hwlen == hwlen && memcmp(ifp->hwaddr, hwaddr, hwlen) == 0)
return;
- syslog(LOG_INFO, "%s: new hardware address: %s", ifp->name,
+ loginfox("%s: new hardware address: %s", ifp->name,
hwaddr_ntoa(hwaddr, hwlen, buf, sizeof(buf)));
ifp->hwlen = hwlen;
memcpy(ifp->hwaddr, hwaddr, hwlen);
@@ -1202,19 +1193,19 @@ signal_cb(int sig, void *arg)
exit_code = EXIT_FAILURE;
switch (sig) {
case SIGINT:
- syslog(LOG_INFO, sigmsg, "SIGINT", "stopping");
+ loginfox(sigmsg, "SIGINT", "stopping");
break;
case SIGTERM:
- syslog(LOG_INFO, sigmsg, "SIGTERM", "stopping");
+ loginfox(sigmsg, "SIGTERM", "stopping");
exit_code = EXIT_SUCCESS;
break;
case SIGALRM:
- syslog(LOG_INFO, sigmsg, "SIGALRM", "releasing");
+ loginfox(sigmsg, "SIGALRM", "releasing");
opts |= DHCPCD_RELEASE;
exit_code = EXIT_SUCCESS;
break;
case SIGHUP:
- syslog(LOG_INFO, sigmsg, "SIGHUP", "rebinding");
+ loginfox(sigmsg, "SIGHUP", "rebinding");
reload_config(ctx);
/* Preserve any options passed on the commandline
* when we were started. */
@@ -1222,20 +1213,20 @@ signal_cb(int sig, void *arg)
ctx->argc - ctx->ifc);
return;
case SIGUSR1:
- syslog(LOG_INFO, sigmsg, "SIGUSR1", "renewing");
+ loginfox(sigmsg, "SIGUSR1", "renewing");
dhcpcd_renew(ctx);
return;
case SIGUSR2:
- closelog();
- openlog(NULL, ctx->log_opts, LOG_DAEMON);
- syslog(LOG_INFO, sigmsg, "SIGUSR2", "reopened syslog");
+ loginfox(sigmsg, "SIGUSR2", "reopening log");
+ logclose();
+ if (logopen(ctx->logfile) == -1)
+ logerr(__func__);
return;
case SIGPIPE:
- syslog(LOG_WARNING, "received SIGPIPE");
+ logwarnx("received SIGPIPE");
return;
default:
- syslog(LOG_ERR, "received signal %d, "
- "but don't know what to do with it",
+ logerrx("received signal %d but don't know what to do with it",
sig);
return;
}
@@ -1276,7 +1267,7 @@ dhcpcd_getinterfaces(void *arg)
if (!ifp->active)
continue;
if (send_interface(fd, ifp) == -1)
- syslog(LOG_ERR, "send_interface %d: %m", fd->fd);
+ logerr(__func__);
}
}
@@ -1331,7 +1322,7 @@ dhcpcd_handleargs(struct dhcpcd_ctx *ctx
*p++ = ' ';
}
*--p = '\0';
- syslog(LOG_INFO, "control command: %s", tmp);
+ loginfox("control command: %s", tmp);
free(tmp);
optind = 0;
@@ -1408,6 +1399,7 @@ main(int argc, char **argv)
struct interface *ifp;
uint16_t family = 0;
int opt, oi = 0, i;
+ unsigned int logopts;
time_t t;
ssize_t len;
#if defined(USE_SIGNALS) || !defined(THERE_IS_NO_FORK)
@@ -1469,13 +1461,7 @@ main(int argc, char **argv)
#ifdef INET
ctx.udp_fd = -1;
#endif
- ctx.log_opts = LOG_PID;
-#ifdef LOG_PERROR
- ctx.log_opts |= LOG_PERROR;
-#endif
-#ifdef LOG_PTRIM
- ctx.log_opts |= LOG_PTRIM;
-#endif
+ logopts = LOGERR_ERR|LOGERR_LOG|LOGERR_LOG_DATE|LOGERR_LOG_PID;
i = 0;
while ((opt = getopt_long(argc, argv,
ctx.options & DHCPCD_PRINT_PIDFILE ? NOERR_IF_OPTS : IF_OPTS,
@@ -1491,6 +1477,10 @@ main(int argc, char **argv)
case 'f':
ctx.cffile = optarg;
break;
+ case 'j':
+ free(ctx.logfile);
+ ctx.logfile = strdup(optarg);
+ break;
#ifdef USE_SIGNALS
case 'k':
sig = SIGALRM;
@@ -1507,10 +1497,8 @@ main(int argc, char **argv)
i = 4;
break;
case 'q':
-#ifdef LOG_PERROR
- ctx.log_opts &= ~LOG_PERROR;
+ logopts |= LOGERR_QUIET;
break;
-#endif
case 'x':
sig = SIGTERM;
siga = "TERM";
@@ -1525,9 +1513,7 @@ main(int argc, char **argv)
break;
case 'T':
i = 1;
-#ifdef LOG_NLOG
- ctx.log_opts |= LOG_NLOG;
-#endif
+ logopts &= ~LOGERR_LOG;
break;
case 'U':
i = 3;
@@ -1543,8 +1529,8 @@ main(int argc, char **argv)
}
}
- openlog(NULL, ctx.log_opts, LOG_DAEMON);
- setlogmask(LOG_UPTO(LOG_INFO));
+ logsetopts(logopts);
+ logopen(ctx.logfile);
ctx.argv = argv;
ctx.argc = argc;
@@ -1609,7 +1595,7 @@ main(int argc, char **argv)
#endif
if (ctx.options & DHCPCD_DEBUG)
- setlogmask(LOG_UPTO(LOG_DEBUG));
+ logsetopts(logopts | LOGERR_DEBUG);
if (!(ctx.options & (DHCPCD_TEST | DHCPCD_DUMPLEASE))) {
printpidfile:
@@ -1619,8 +1605,7 @@ printpidfile:
const char *per;
if (strlen(argv[optind]) > IF_NAMESIZE) {
- syslog(LOG_ERR,
- "%s: interface name too long",
+ logerrx("%s: interface name too long",
argv[optind]);
goto exit_failure;
}
@@ -1649,21 +1634,27 @@ printpidfile:
}
if (chdir("/") == -1)
- syslog(LOG_ERR, "chdir `/': %m");
+ logerr("%s: chdir `/'", __func__);
/* Freeing allocated addresses from dumping leases can trigger
* eloop removals as well, so init here. */
if ((ctx.eloop = eloop_new()) == NULL) {
- syslog(LOG_ERR, "%s: eloop_init: %m", __func__);
+ logerr("%s: eloop_init", __func__);
goto exit_failure;
}
/* Open our persistent sockets.
* This is needed early for dumping leases on valid interfaces. */
- if (if_opensockets(&ctx) == -1) {
- syslog(LOG_ERR, "if_opensockets: %m");
- goto exit_failure;
+#ifdef USE_SIGNALS
+ if (sig == 0) {
+#endif
+ if (if_opensockets(&ctx) == -1) {
+ logerr("%s: if_opensockets", __func__);
+ goto exit_failure;
+ }
+#ifdef USE_SIGNALS
}
+#endif
if (ctx.options & DHCPCD_DUMPLEASE) {
if (optind != argc) {
@@ -1676,14 +1667,14 @@ printpidfile:
TAILQ_INIT(ctx.ifaces);
}
if (ctx.ifaces == NULL) {
- syslog(LOG_ERR, "if_discover: %m");
+ logerr("%s: if_discover", __func__);
goto exit_failure;
}
ifp = if_find(ctx.ifaces, argv[optind]);
if (ifp == NULL) {
ifp = calloc(1, sizeof(*ifp));
if (ifp == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
goto exit_failure;
}
if (optind != argc)
@@ -1727,20 +1718,19 @@ printpidfile:
if (ctx.control_fd == -1)
ctx.control_fd = control_open(NULL);
if (ctx.control_fd != -1) {
- syslog(LOG_INFO,
- "sending commands to master dhcpcd process");
+ loginfox("sending commands to master dhcpcd process");
len = control_send(&ctx, argc, argv);
control_close(&ctx);
if (len > 0) {
- syslog(LOG_DEBUG, "send OK");
+ logdebugx("send OK");
goto exit_success;
} else {
- syslog(LOG_ERR, "failed to send commands");
+ logerr("%s: control_send", __func__);
goto exit_failure;
}
} else {
if (errno != ENOENT)
- syslog(LOG_ERR, "control_open: %m");
+ logerr("%s: control_open", __func__);
}
#ifdef USE_SIGNALS
}
@@ -1750,13 +1740,12 @@ printpidfile:
if (sig != 0) {
pid = pidfile_read(ctx.pidfile);
if (pid != 0 && pid != -1)
- syslog(LOG_INFO, "sending signal %s to pid %d",
- siga, pid);
+ loginfox("sending signal %s to pid %d", siga, pid);
if (pid == 0 || pid == -1 || kill(pid, sig) != 0) {
if (sig != SIGHUP && sig != SIGUSR1 && errno != EPERM)
- syslog(LOG_ERR, ""PACKAGE" not running");
+ logerrx(PACKAGE" not running");
if (pid != 0 && pid != -1 && errno != ESRCH) {
- syslog(LOG_ERR, "kill: %m");
+ logerr("kill");
goto exit_failure;
}
unlink(ctx.pidfile);
@@ -1768,7 +1757,7 @@ printpidfile:
if (sig == SIGHUP || sig == SIGUSR1)
goto exit_success;
/* Spin until it exits */
- syslog(LOG_INFO, "waiting for pid %d to exit", pid);
+ loginfox("waiting for pid %d to exit", pid);
ts.tv_sec = 0;
ts.tv_nsec = 100000000; /* 10th of a second */
for(i = 0; i < 100; i++) {
@@ -1776,7 +1765,7 @@ printpidfile:
if (pidfile_read(ctx.pidfile) == -1)
goto exit_success;
}
- syslog(LOG_ERR, "pid %d failed to exit", pid);
+ logerrx("pid %d failed to exit", pid);
goto exit_failure;
}
}
@@ -1784,16 +1773,15 @@ printpidfile:
if (!(ctx.options & DHCPCD_TEST)) {
/* Ensure we have the needed directories */
if (mkdir(RUNDIR, 0755) == -1 && errno != EEXIST)
- syslog(LOG_ERR, "mkdir `%s': %m", RUNDIR);
+ logerr("%s: mkdir `%s'", __func__, RUNDIR);
if (mkdir(DBDIR, 0755) == -1 && errno != EEXIST)
- syslog(LOG_ERR, "mkdir `%s': %m", DBDIR);
+ logerr("%s: mkdir `%s'", __func__, DBDIR);
if ((pid = pidfile_lock(ctx.pidfile)) != 0) {
if (pid == -1)
- syslog(LOG_ERR, "%s: pidfile_lock: %m",
- __func__);
+ logerr("%s: pidfile_lock", __func__);
else
- syslog(LOG_ERR, ""PACKAGE
+ logerrx(PACKAGE
" already running on pid %d (%s)",
pid, ctx.pidfile);
goto exit_failure;
@@ -1802,30 +1790,30 @@ printpidfile:
if (ctx.options & DHCPCD_MASTER) {
if (control_start(&ctx, NULL) == -1)
- syslog(LOG_ERR, "control_start: %m");
+ logerr("%s: control_start", __func__);
}
#else
if (control_start(&ctx,
ctx.options & DHCPCD_MASTER ? NULL : argv[optind]) == -1)
{
- syslog(LOG_ERR, "control_start: %m");
+ logerr("%s: control_start", __func__);
goto exit_failure;
}
#endif
- syslog(LOG_DEBUG, PACKAGE "-" VERSION " starting");
+ logdebugx(PACKAGE "-" VERSION " starting");
ctx.options |= DHCPCD_STARTED;
#ifdef USE_SIGNALS
if (eloop_signal_set_cb(ctx.eloop,
dhcpcd_signals, dhcpcd_signals_len,
signal_cb, &ctx) == -1)
{
- syslog(LOG_ERR, "eloop_signal_set_cb: %m");
+ logerr("%s: eloop_signal_set_cb", __func__);
goto exit_failure;
}
/* Save signal mask, block and redirect signals to our handler */
if (eloop_signal_mask(ctx.eloop, &ctx.sigset) == -1) {
- syslog(LOG_ERR, "eloop_signal_mask: %m");
+ logerr("%s: eloop_signal_mask", __func__);
goto exit_failure;
}
#endif
@@ -1847,13 +1835,13 @@ printpidfile:
ctx.ifaces = if_discover(&ctx, ctx.ifc, ctx.ifv);
if (ctx.ifaces == NULL) {
- syslog(LOG_ERR, "if_discover: %m");
+ logerr("%s: if_discover", __func__);
goto exit_failure;
}
for (i = 0; i < ctx.ifc; i++) {
if ((ifp = if_find(ctx.ifaces, ctx.ifv[i])) == NULL ||
!ifp->active)
- syslog(LOG_ERR, "%s: interface not found or invalid",
+ logerrx("%s: interface not found or invalid",
ctx.ifv[i]);
}
TAILQ_FOREACH(ifp, ctx.ifaces, next) {
@@ -1861,15 +1849,16 @@ printpidfile:
break;
}
if (ifp == NULL) {
- if (ctx.ifc == 0)
- syslog(ctx.options & DHCPCD_INACTIVE ?
- LOG_DEBUG : LOG_ERR,
- "no valid interfaces found");
- else
+ if (ctx.ifc == 0) {
+ logfunc_t *logfunc;
+
+ logfunc = ctx.options & DHCPCD_INACTIVE ?
+ logdebugx : logerrx;
+ logfunc("no valid interfaces found");
+ } else
goto exit_failure;
if (!(ctx.options & DHCPCD_LINK)) {
- syslog(LOG_ERR,
- "aborting as link detection is disabled");
+ logerr("aborting as link detection is disabled");
goto exit_failure;
}
}
@@ -1910,9 +1899,11 @@ printpidfile:
ctx.options & DHCPCD_LINK &&
!(ctx.options & DHCPCD_WAITIP))
{
- syslog(ctx.options & DHCPCD_INACTIVE ?
- LOG_DEBUG : LOG_WARNING,
- "no interfaces have a carrier");
+ logfunc_t *logfunc;
+
+ logfunc = ctx.options & DHCPCD_INACTIVE ?
+ logdebugx : logwarnx;
+ logfunc("no interfaces have a carrier");
if (dhcpcd_daemonise(&ctx))
goto exit_success;
} else if (t > 0 &&
@@ -1935,7 +1926,7 @@ printpidfile:
i = eloop_start(ctx.eloop, &ctx.sigset);
if (i < 0) {
- syslog(LOG_ERR, "eloop_start: %m");
+ logerr("%s: eloop_start", __func__);
goto exit_failure;
}
goto exit1;
@@ -1949,7 +1940,7 @@ exit_failure:
exit1:
if (control_stop(&ctx) == -1)
- syslog(LOG_ERR, "control_stop: %m:");
+ logerr("%s: control_stop", __func__);
/* Free memory and close fd's */
if (ctx.ifaces) {
while ((ifp = TAILQ_FIRST(ctx.ifaces))) {
@@ -1973,8 +1964,9 @@ exit1:
free(ctx.iov[0].iov_base);
if (ctx.options & DHCPCD_STARTED && !(ctx.options & DHCPCD_FORKED))
- syslog(LOG_INFO, PACKAGE " exited");
- closelog();
+ loginfox(PACKAGE " exited");
+ logclose();
+ free(ctx.logfile);
#ifdef USE_SIGNALS
if (ctx.options & DHCPCD_FORKED)
_exit(i); /* so atexit won't remove our pidfile */
Index: src/external/bsd/dhcpcd/dist/src/if-options.c
diff -u src/external/bsd/dhcpcd/dist/src/if-options.c:1.2 src/external/bsd/dhcpcd/dist/src/if-options.c:1.3
--- src/external/bsd/dhcpcd/dist/src/if-options.c:1.2 Thu Apr 6 14:01:27 2017
+++ src/external/bsd/dhcpcd/dist/src/if-options.c Fri Apr 14 09:56:32 2017
@@ -41,7 +41,6 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include <syslog.h>
#include <unistd.h>
#include <time.h>
@@ -53,6 +52,7 @@
#include "if.h"
#include "if-options.h"
#include "ipv4.h"
+#include "logerr.h"
#include "sa.h"
/* These options only make sense in the config file, so don't use any
@@ -115,6 +115,7 @@ const struct option cf_options[] = {
{"reconfigure", no_argument, NULL, 'g'},
{"hostname", optional_argument, NULL, 'h'},
{"vendorclassid", optional_argument, NULL, 'i'},
+ {"logfile", required_argument, NULL, 'j'},
{"release", no_argument, NULL, 'k'},
{"leasetime", required_argument, NULL, 'l'},
{"metric", required_argument, NULL, 'm'},
@@ -215,12 +216,12 @@ add_environ(struct if_options *ifo, cons
match = strdup(value);
if (match == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return NULL;
}
p = strchr(match, '=');
if (p == NULL) {
- syslog(LOG_ERR, "%s: no assignment: %s", __func__, value);
+ logerrx("%s: no assignment: %s", __func__, value);
free(match);
return NULL;
}
@@ -232,7 +233,7 @@ add_environ(struct if_options *ifo, cons
if (uniq) {
n = strdup(value);
if (n == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(match);
return NULL;
}
@@ -244,7 +245,7 @@ add_environ(struct if_options *ifo, cons
lv = strlen(p);
n = realloc(lst[i], l + lv + 2);
if (n == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(match);
return NULL;
}
@@ -262,12 +263,12 @@ add_environ(struct if_options *ifo, cons
free(match);
n = strdup(value);
if (n == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return NULL;
}
- newlist = realloc(lst, sizeof(char *) * (i + 2));
+ newlist = reallocarray(lst, i + 2, sizeof(char *));
if (newlist == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(n);
return NULL;
}
@@ -440,20 +441,20 @@ splitv(int *argc, char **argv, const cha
char *o = strdup(arg), *p, *t, *nt;
if (o == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return v;
}
p = o;
while ((t = strsep(&p, ", "))) {
nt = strdup(t);
if (nt == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(o);
return v;
}
- n = realloc(v, sizeof(char *) * ((size_t)(*argc) + 1));
+ n = reallocarray(v, (size_t)(*argc) + 1, sizeof(char *));
if (n == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(o);
free(nt);
return v;
@@ -487,13 +488,13 @@ parse_addr(struct in_addr *addr, struct
if (e != 0 ||
(net != NULL && inet_cidrtoaddr((int)i, net) != 0))
{
- syslog(LOG_ERR, "`%s' is not a valid CIDR", p);
+ logerrx("`%s' is not a valid CIDR", p);
return -1;
}
}
if (addr != NULL && inet_aton(arg, addr) == 0) {
- syslog(LOG_ERR, "`%s' is not a valid IP address", arg);
+ logerrx("`%s' is not a valid IP address", arg);
return -1;
}
if (p != NULL)
@@ -508,7 +509,7 @@ parse_addr(__unused struct in_addr *addr
__unused const char *arg)
{
- syslog(LOG_ERR, "No IPv4 support");
+ logerrx("No IPv4 support");
return -1;
}
#endif
@@ -705,7 +706,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
free(ifo->script);
ifo->script = strdup(arg);
if (ifo->script == NULL)
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
break;
case 'd':
ifo->options |= DHCPCD_DEBUG;
@@ -721,11 +722,11 @@ parse_option(struct dhcpcd_ctx *ctx, con
}
s = parse_string(ifo->hostname, HOSTNAME_MAX_LEN, arg);
if (s == -1) {
- syslog(LOG_ERR, "hostname: %m");
+ logerr("%s: hostname", __func__);
return -1;
}
if (s != 0 && ifo->hostname[0] == '.') {
- syslog(LOG_ERR, "hostname cannot begin with .");
+ logerrx("hostname cannot begin with .");
return -1;
}
ifo->hostname[s] = '\0';
@@ -741,11 +742,21 @@ parse_option(struct dhcpcd_ctx *ctx, con
else
s = 0;
if (s == -1) {
- syslog(LOG_ERR, "vendorclassid: %m");
+ logerr("vendorclassid");
return -1;
}
*ifo->vendorclassid = (uint8_t)s;
break;
+ case 'j':
+ ARG_REQUIRED;
+ /* per interface logging is not supported
+ * don't want to overide the commandline */
+ if (ifname == NULL && ctx->logfile == NULL) {
+ logclose();
+ ctx->logfile = strdup(arg);
+ logopen(ctx->logfile);
+ }
+ break;
case 'k':
ifo->options |= DHCPCD_RELEASE;
break;
@@ -754,7 +765,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ifo->leasetime = (uint32_t)strtou(arg, NULL,
0, 0, UINT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "failed to convert leasetime %s", arg);
+ logerrx("failed to convert leasetime %s", arg);
return -1;
}
break;
@@ -762,7 +773,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ARG_REQUIRED;
ifo->metric = (int)strtoi(arg, NULL, 0, 0, INT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "failed to convert metric %s", arg);
+ logerrx("failed to convert metric %s", arg);
return -1;
}
break;
@@ -774,7 +785,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
make_option_mask(d, dl, od, odl, no, arg, -1) != 0 ||
make_option_mask(d, dl, od, odl, reject, arg, -1) != 0)
{
- syslog(LOG_ERR, "unknown option `%s'", arg);
+ logerrx("unknown option `%s'", arg);
return -1;
}
break;
@@ -786,7 +797,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
make_option_mask(d, dl, od, odl, request, arg, -1) != 0 ||
make_option_mask(d, dl, od, odl, require, arg, -1) != 0)
{
- syslog(LOG_ERR, "unknown option `%s'", arg);
+ logerrx("unknown option `%s'", arg);
return -1;
}
break;
@@ -818,7 +829,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ARG_REQUIRED;
ifo->timeout = (time_t)strtoi(arg, NULL, 0, 0, INT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "failed to convert timeout");
+ logerrx("failed to convert timeout %s", arg);
return -1;
}
break;
@@ -827,7 +838,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
s = parse_string((char *)ifo->userclass +
ifo->userclass[0] + 2, (size_t)s, arg);
if (s == -1) {
- syslog(LOG_ERR, "userclass: %m");
+ logerr("userclass");
return -1;
}
if (s != 0) {
@@ -839,7 +850,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ARG_REQUIRED;
p = strchr(arg, ',');
if (!p || !p[1]) {
- syslog(LOG_ERR, "invalid vendor format: %s", arg);
+ logerrx("invalid vendor format: %s", arg);
return -1;
}
@@ -849,7 +860,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
s = parse_string((char *)ifo->vendor + 1,
VENDOR_MAX_LEN, arg);
if (s == -1) {
- syslog(LOG_ERR, "vendor: %m");
+ logerr("vendor");
return -1;
}
ifo->vendor[0] = (uint8_t)s;
@@ -868,7 +879,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
i = (int)strtoi(arg, NULL, 0, 1, 254, &e);
*p = ',';
if (e) {
- syslog(LOG_ERR, "vendor option should be between"
+ logerrx("vendor option should be between"
" 1 and 254 inclusive");
return -1;
}
@@ -889,7 +900,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ifo->vendor[0] + 3, (size_t)s, arg);
}
if (s == -1) {
- syslog(LOG_ERR, "vendor: %m");
+ logerr("vendor");
return -1;
}
if (s != 0) {
@@ -911,7 +922,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ARG_REQUIRED;
ifo->reboot = (time_t)strtoi(arg, NULL, 0, 0, UINT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "failed to convert reboot %s", arg);
+ logerr("failed to convert reboot %s", arg);
return -1;
}
break;
@@ -936,7 +947,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
dl = strlen("skip_hooks=") + strlen(arg) + 1;
p = malloc(sizeof(char) * dl);
if (p == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
snprintf(p, dl, "skip_hooks=%s", arg);
@@ -963,7 +974,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
else if (strcmp(arg, "disable") == 0)
ifo->fqdn = FQDN_DISABLE;
else {
- syslog(LOG_ERR, "invalid value `%s' for FQDN", arg);
+ logerrx("invalid value `%s' for FQDN", arg);
return -1;
}
break;
@@ -979,7 +990,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
else
s = 0;
if (s == -1) {
- syslog(LOG_ERR, "clientid: %m");
+ logerr("clientid");
return -1;
}
ifo->options |= DHCPCD_CLIENTID;
@@ -1005,7 +1016,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
make_option_mask(d, dl, od, odl, require, arg, -1) != 0 ||
make_option_mask(d, dl, od, odl, no, arg, 1) != 0)
{
- syslog(LOG_ERR, "unknown option `%s'", arg);
+ logerrx("unknown option `%s'", arg);
return -1;
}
break;
@@ -1018,7 +1029,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
make_option_mask(d, dl, od, odl, no, arg, -1) != 0 ||
make_option_mask(d, dl, od, odl, reject, arg, -1) != 0)
{
- syslog(LOG_ERR, "unknown option `%s'", arg);
+ logerrx("unknown option `%s'", arg);
return -1;
}
break;
@@ -1026,7 +1037,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ARG_REQUIRED;
p = strchr(arg, '=');
if (p == NULL) {
- syslog(LOG_ERR, "static assignment required");
+ logerrx("static assignment required");
return -1;
}
p++;
@@ -1055,7 +1066,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
fp = np = strwhite(p);
if (np == NULL) {
- syslog(LOG_ERR, "all routes need a gateway");
+ logerrx("all routes need a gateway");
return -1;
}
*np++ = '\0';
@@ -1092,7 +1103,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ifo->mtu = (unsigned int)strtou(p, NULL, 0,
MTU_MIN, MTU_MAX, &e);
if (e) {
- syslog(LOG_ERR, "invalid MTU %s", p);
+ logerrx("invalid MTU %s", p);
return -1;
}
} else if (strncmp(arg, "ip6_address=", strlen("ip6_address=")) == 0) {
@@ -1104,8 +1115,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
ifo->req_prefix_len = (uint8_t)strtou(np,
NULL, 0, 0, 128, &e);
if (e) {
- syslog(LOG_ERR,
- "%s: failed to "
+ logerrx("%s: failed to "
"convert prefix len",
ifname);
return -1;
@@ -1122,8 +1132,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
{
p = strdup(arg);
if (p == NULL) {
- syslog(LOG_ERR,
- "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
free(ifo->config[dl]);
@@ -1135,12 +1144,12 @@ parse_option(struct dhcpcd_ctx *ctx, con
}
p = strdup(arg);
if (p == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
- nconf = realloc(ifo->config, sizeof(char *) * (dl + 2));
+ nconf = reallocarray(ifo->config, dl+2, sizeof(char *));
if (nconf == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(p);
return -1;
}
@@ -1154,10 +1163,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
return -1;
if (strchr(arg, '/') == NULL)
addr2.s_addr = INADDR_BROADCAST;
- naddr = realloc(ifo->whitelist,
- sizeof(in_addr_t) * (ifo->whitelist_len + 2));
+ naddr = reallocarray(ifo->whitelist,
+ ifo->whitelist_len + 2, sizeof(in_addr_t));
if (naddr == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
ifo->whitelist = naddr;
@@ -1169,10 +1178,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
return -1;
if (strchr(arg, '/') == NULL)
addr2.s_addr = INADDR_BROADCAST;
- naddr = realloc(ifo->blacklist,
- sizeof(in_addr_t) * (ifo->blacklist_len + 2));
+ naddr = reallocarray(ifo->blacklist,
+ ifo->blacklist_len + 2, sizeof(in_addr_t));
if (naddr == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
ifo->blacklist = naddr;
@@ -1215,10 +1224,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
*fp++ = '\0';
if (parse_addr(&addr, NULL, arg) != 0)
return -1;
- naddr = realloc(ifo->arping,
- sizeof(in_addr_t) * ((size_t)ifo->arping_len + 1));
+ naddr = reallocarray(ifo->arping,
+ (size_t)ifo->arping_len + 1, sizeof(in_addr_t));
if (naddr == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
ifo->arping = naddr;
@@ -1234,10 +1243,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
ifo->dstmask, arg, 2) != 0)
{
if (errno == EINVAL)
- syslog(LOG_ERR, "option `%s' does not take"
+ logerrx("option `%s' does not take"
" an IPv4 address", arg);
else
- syslog(LOG_ERR, "unknown option `%s'", arg);
+ logerrx("unknown option `%s'", arg);
return -1;
}
break;
@@ -1246,7 +1255,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
free(ifo->fallback);
ifo->fallback = strdup(arg);
if (ifo->fallback == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerrx(__func__);
return -1;
}
break;
@@ -1254,12 +1263,11 @@ parse_option(struct dhcpcd_ctx *ctx, con
case O_IAID:
ARG_REQUIRED;
if (ifname == NULL) {
- syslog(LOG_ERR,
- "IAID must belong in an interface block");
+ logerrx("IAID must belong in an interface block");
return -1;
}
if (parse_iaid(ifo->iaid, arg, sizeof(ifo->iaid)) == -1) {
- syslog(LOG_ERR, "invalid IAID %s", arg);
+ logerrx("invalid IAID %s", arg);
return -1;
}
ifo->options |= DHCPCD_IAID;
@@ -1293,15 +1301,15 @@ parse_option(struct dhcpcd_ctx *ctx, con
case O_IA_PD:
if (i == 0) {
if (ifname == NULL) {
- syslog(LOG_ERR,
- "IA PD must belong in an interface block");
+ logerr("IA PD must belong in an "
+ "interface block");
return -1;
}
i = D6_OPTION_IA_PD;
}
if (ifname == NULL && arg) {
- syslog(LOG_ERR,
- "IA with IAID must belong in an interface block");
+ logerrx("IA with IAID must belong in an "
+ "interface block");
return -1;
}
ifo->options |= DHCPCD_IA_FORCED;
@@ -1315,7 +1323,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
if (p)
*p++ = '\0';
if (parse_iaid(iaid, arg, sizeof(iaid)) == -1) {
- syslog(LOG_ERR, "invalid IAID: %s", arg);
+ logerr("invalid IAID: %s", arg);
return -1;
}
}
@@ -1333,14 +1341,14 @@ parse_option(struct dhcpcd_ctx *ctx, con
}
}
if (ia && ia->ia_type != (uint16_t)i) {
- syslog(LOG_ERR, "Cannot mix IA for the same IAID");
+ logerrx("Cannot mix IA for the same IAID");
break;
}
if (ia == NULL) {
- ia = realloc(ifo->ia,
- sizeof(*ifo->ia) * (ifo->ia_len + 1));
+ ia = reallocarray(ifo->ia,
+ ifo->ia_len + 1, sizeof(*ifo->ia));
if (ia == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
ifo->ia = ia;
@@ -1366,15 +1374,14 @@ parse_option(struct dhcpcd_ctx *ctx, con
if (p)
*p++ = '\0';
if (inet_pton(AF_INET6, arg, &ia->addr) == -1) {
- syslog(LOG_ERR, "%s: %m", arg);
+ logerr("%s", arg);
memset(&ia->addr, 0, sizeof(ia->addr));
}
if (p && ia->ia_type == D6_OPTION_IA_PD) {
ia->prefix_len = (uint8_t)strtou(p,
NULL, 0, 8, 120, &e);
if (e) {
- syslog(LOG_ERR,
- "%s: failed to convert"
+ logerrx("%s: failed to convert"
" prefix len",
p);
ia->prefix_len = 0;
@@ -1393,10 +1400,10 @@ parse_option(struct dhcpcd_ctx *ctx, con
*fp++ = '\0';
fp = strskipwhite(fp);
}
- sla = realloc(ia->sla,
- sizeof(*ia->sla) * (ia->sla_len + 1));
+ sla = reallocarray(ia->sla,
+ ia->sla_len + 1, sizeof(*ia->sla));
if (sla == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
ia->sla = sla;
@@ -1407,8 +1414,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
if (strlcpy(sla->ifname, p,
sizeof(sla->ifname)) >= sizeof(sla->ifname))
{
- syslog(LOG_ERR,
- "%s: interface name too long", arg);
+ logerrx("%s: interface name too long", arg);
goto err_sla;
}
sla->sla_set = 0;
@@ -1424,8 +1430,8 @@ parse_option(struct dhcpcd_ctx *ctx, con
0, 0, UINT32_MAX, &e);
sla->sla_set = 1;
if (e) {
- syslog(LOG_ERR,
- "%s: failed to convert sla",
+ logerrx("%s: failed to convert "
+ "sla",
ifname);
goto err_sla;
}
@@ -1440,8 +1446,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
sla->prefix_len = (uint8_t)strtou(p,
NULL, 0, 0, 120, &e);
if (e) {
- syslog(LOG_ERR,
- "%s: failed to "
+ logerrx("%s: failed to "
"convert prefix len",
ifname);
goto err_sla;
@@ -1457,8 +1462,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
sla->suffix = (uint64_t)strtou(p, NULL,
0, 0, UINT64_MAX, &e);
if (e) {
- syslog(LOG_ERR,
- "%s: failed to "
+ logerrx("%s: failed to "
"convert suffix",
ifname);
goto err_sla;
@@ -1469,8 +1473,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
for (sl = 0; sl < ia->sla_len - 1; sl++) {
slap = &ia->sla[sl];
if (slap->sla_set != sla->sla_set) {
- syslog(LOG_ERR,
- "%s: cannot mix automatic "
+ logerrx("%s: cannot mix automatic "
"and fixed SLA",
sla->ifname);
goto err_sla;
@@ -1479,8 +1482,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
(sla->prefix_len == ia->prefix_len ||
slap->prefix_len == ia->prefix_len))
{
- syslog(LOG_ERR,
- "%s: cannot delegte the same"
+ logerrx("%s: cannot delegte the same"
"prefix length more than once",
sla->ifname);
goto err_sla;
@@ -1488,8 +1490,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
if (sla->sla_set == 0 &&
strcmp(slap->ifname, sla->ifname) == 0)
{
- syslog(LOG_WARNING,
- "%s: cannot specify the "
+ logwarnx("%s: cannot specify the "
"same interface twice with "
"an automatic SLA",
sla->ifname);
@@ -1498,7 +1499,7 @@ parse_option(struct dhcpcd_ctx *ctx, con
if (slap->sla_set && sla->sla_set &&
slap->sla == sla->sla)
{
- syslog(LOG_ERR, "%s: cannot"
+ logerrx("%s: cannot"
" assign the same SLA %u"
" more than once",
sla->ifname, sla->sla);
@@ -1559,8 +1560,8 @@ err_sla:
dop = &(*ldop)->embopts;
dop_len = &(*ldop)->embopts_len;
} else {
- syslog(LOG_ERR,
- "embed must be after a define or encap");
+ logerrx("embed must be after a define "
+ "or encap");
return -1;
}
}
@@ -1569,7 +1570,7 @@ err_sla:
ARG_REQUIRED;
if (dop == NULL) {
if (*ldop == NULL) {
- syslog(LOG_ERR, "encap must be after a define");
+ logerrx("encap must be after a define");
return -1;
}
dop = &(*ldop)->encopts;
@@ -1584,18 +1585,18 @@ err_sla:
else {
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "invalid syntax: %s", arg);
+ logerrx("invalid syntax: %s", arg);
return -1;
}
*fp++ = '\0';
u = (uint32_t)strtou(arg, NULL, 0, 0, UINT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "invalid code: %s", arg);
+ logerrx("invalid code: %s", arg);
return -1;
}
arg = strskipwhite(fp);
if (arg == NULL) {
- syslog(LOG_ERR, "invalid syntax");
+ logerrx("invalid syntax");
return -1;
}
}
@@ -1610,7 +1611,7 @@ err_sla:
bp = NULL; /* No bitflag */
l = (long)strtou(np, NULL, 0, 0, LONG_MAX, &e);
if (e) {
- syslog(LOG_ERR, "failed to convert length");
+ logerrx("failed to convert length");
return -1;
}
} else {
@@ -1625,7 +1626,7 @@ err_sla:
arg = strskipwhite(fp);
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "incomplete request type");
+ logerrx("incomplete request type");
return -1;
}
*fp++ = '\0';
@@ -1634,7 +1635,7 @@ err_sla:
arg = strskipwhite(fp);
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "incomplete request type");
+ logerrx("incomplete request type");
return -1;
}
*fp++ = '\0';
@@ -1644,7 +1645,7 @@ err_sla:
arg = strskipwhite(fp);
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "incomplete optional type");
+ logerrx("incomplete optional type");
return -1;
}
*fp++ = '\0';
@@ -1654,7 +1655,7 @@ err_sla:
arg = strskipwhite(fp);
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "incomplete index type");
+ logerrx("incomplete index type");
return -1;
}
*fp++ = '\0';
@@ -1664,7 +1665,7 @@ err_sla:
arg = strskipwhite(fp);
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "incomplete array type");
+ logerrx("incomplete array type");
return -1;
}
*fp++ = '\0';
@@ -1714,30 +1715,28 @@ err_sla:
else if (strcasecmp(arg, "option") == 0)
t |= OT_OPTION;
else {
- syslog(LOG_ERR, "unknown type: %s", arg);
+ logerrx("unknown type: %s", arg);
return -1;
}
if (l && !(t & (OT_STRING | OT_BINHEX))) {
- syslog(LOG_WARNING,
- "ignoring length for type `%s'", arg);
+ logwarnx("ignoring length for type `%s'", arg);
l = 0;
}
if (t & OT_ARRAY && t & (OT_STRING | OT_BINHEX) &&
!(t & (OT_RFC1035 | OT_DOMAIN)))
{
- syslog(LOG_WARNING, "ignoring array for strings");
+ logwarnx("ignoring array for strings");
t &= ~OT_ARRAY;
}
if (t & OT_BITFLAG) {
if (bp == NULL)
- syslog(LOG_WARNING,
- "missing bitflag assignment");
+ logwarnx("missing bitflag assignment");
}
/* variable */
if (!fp) {
if (!(t & OT_OPTION)) {
- syslog(LOG_ERR,
- "type %s requires a variable name", arg);
+ logerrx("type %s requires a variable name",
+ arg);
return -1;
}
np = NULL;
@@ -1749,7 +1748,7 @@ err_sla:
if (strcasecmp(arg, "reserved")) {
np = strdup(arg);
if (np == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
} else {
@@ -1770,10 +1769,9 @@ err_sla:
} else
ndop = NULL;
if (ndop == NULL) {
- if ((ndop = realloc(*dop,
- sizeof(**dop) * ((*dop_len) + 1))) == NULL)
- {
- syslog(LOG_ERR, "%s: %m", __func__);
+ ndop = reallocarray(*dop, *dop_len + 1, sizeof(**dop));
+ if (ndop == NULL) {
+ logerr(__func__);
free(np);
return -1;
}
@@ -1816,23 +1814,23 @@ err_sla:
*fp++ = '\0';
u = (uint32_t)strtou(arg, NULL, 0, 0, UINT32_MAX, &e);
if (e) {
- syslog(LOG_ERR, "invalid code: %s", arg);
+ logerrx("invalid code: %s", arg);
return -1;
}
if (fp) {
s = parse_string(NULL, 0, fp);
if (s == -1) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
dl = (size_t)s;
if (dl + (sizeof(uint16_t) * 2) > UINT16_MAX) {
- syslog(LOG_ERR, "vendor class is too big");
+ logerrx("vendor class is too big");
return -1;
}
np = malloc(dl);
if (np == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return -1;
}
parse_string(np, dl, fp);
@@ -1840,10 +1838,10 @@ err_sla:
dl = 0;
np = NULL;
}
- vivco = realloc(ifo->vivco, sizeof(*ifo->vivco) *
- (ifo->vivco_len + 1));
+ vivco = reallocarray(ifo->vivco,
+ ifo->vivco_len + 1, sizeof(*ifo->vivco));
if (vivco == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr( __func__);
return -1;
}
ifo->vivco = vivco;
@@ -1865,7 +1863,7 @@ err_sla:
else if (strcasecmp(arg, "delayedrealm") == 0)
ifo->auth.protocol = AUTH_PROTO_DELAYEDREALM;
else {
- syslog(LOG_ERR, "%s: unsupported protocol", arg);
+ logerrx("%s: unsupported protocol", arg);
return -1;
}
arg = strskipwhite(fp);
@@ -1885,7 +1883,7 @@ err_sla:
strcasecmp(arg, "hmac-md5") == 0)
ifo->auth.algorithm = AUTH_ALG_HMAC_MD5;
else {
- syslog(LOG_ERR, "%s: unsupported algorithm", arg);
+ logerrx("%s: unsupported algorithm", arg);
return 1;
}
arg = fp;
@@ -1901,13 +1899,13 @@ err_sla:
strcasecmp(arg, "monotime") == 0)
ifo->auth.rdm = AUTH_RDM_MONOTONIC;
else {
- syslog(LOG_ERR, "%s: unsupported RDM", arg);
+ logerrx("%s: unsupported RDM", arg);
return -1;
}
ifo->auth.options |= DHCPCD_AUTH_SEND;
break;
#else
- syslog(LOG_ERR, "no authentication support");
+ logerrx("no authentication support");
return -1;
#endif
case O_AUTHTOKEN:
@@ -1915,32 +1913,32 @@ err_sla:
#ifdef AUTH
fp = strwhite(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "authtoken requires a realm");
+ logerrx("authtoken requires a realm");
return -1;
}
*fp++ = '\0';
token = malloc(sizeof(*token));
if (token == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(token);
return -1;
}
if (parse_uint32(&token->secretid, arg) == -1) {
- syslog(LOG_ERR, "%s: not a number", arg);
+ logerrx("%s: not a number", arg);
free(token);
return -1;
}
arg = fp;
fp = strend(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "authtoken requies an a key");
+ logerrx("authtoken requies an a key");
free(token);
return -1;
}
*fp++ = '\0';
s = parse_string(NULL, 0, arg);
if (s == -1) {
- syslog(LOG_ERR, "realm_len: %m");
+ logerr("realm_len");
free(token);
return -1;
}
@@ -1948,8 +1946,8 @@ err_sla:
token->realm_len = (size_t)s;
token->realm = malloc(token->realm_len);
if (token->realm == NULL) {
+ logerr(__func__);
free(token);
- syslog(LOG_ERR, "%s: %m", __func__);
return -1;
}
parse_string((char *)token->realm, token->realm_len,
@@ -1961,7 +1959,7 @@ err_sla:
arg = fp;
fp = strend(arg);
if (fp == NULL) {
- syslog(LOG_ERR, "authtoken requies an an expiry date");
+ logerrx("authtoken requies an an expiry date");
free(token->realm);
free(token);
return -1;
@@ -1980,13 +1978,13 @@ err_sla:
memset(&tm, 0, sizeof(tm));
if (strptime(arg, "%Y-%m-%d %H:%M", &tm) == NULL) {
- syslog(LOG_ERR, "%s: invalid date time", arg);
+ logerrx("%s: invalid date time", arg);
free(token->realm);
free(token);
return -1;
}
if ((token->expire = mktime(&tm)) == (time_t)-1) {
- syslog(LOG_ERR, "%s: mktime: %m", __func__);
+ logerr("%s: mktime", __func__);
free(token->realm);
free(token);
return -1;
@@ -1995,8 +1993,10 @@ err_sla:
arg = fp;
s = parse_string(NULL, 0, arg);
if (s == -1 || s == 0) {
- syslog(LOG_ERR, s == -1 ? "token_len: %m" :
- "authtoken needs a key");
+ if (s == -1)
+ logerr("token_len");
+ else
+ logerrx("authtoken needs a key");
free(token->realm);
free(token);
return -1;
@@ -2006,7 +2006,7 @@ err_sla:
parse_string((char *)token->key, token->key_len, arg);
TAILQ_INSERT_TAIL(&ifo->auth.tokens, token, next);
#else
- syslog(LOG_ERR, "no authentication support");
+ logerrx("no authentication support");
return -1;
#endif
break;
@@ -2035,7 +2035,7 @@ err_sla:
dl = (size_t)l;
p = malloc(dl);
if (p == NULL) {
- syslog(LOG_ERR, "%s: malloc: %m", __func__);
+ logerr(__func__);
return -1;
}
while ((i = getgrnam_r(arg, &grpbuf, p, (size_t)l, &grp)) ==
@@ -2043,14 +2043,14 @@ err_sla:
{
size_t nl = dl * 2;
if (nl < dl) {
- syslog(LOG_ERR, "control_group: out of buffer");
+ logerrx("control_group: out of buffer");
free(p);
return -1;
}
dl = nl;
np = realloc(p, dl);
if (np == NULL) {
- syslog(LOG_ERR, "control_group: realloc: %m");
+ logerr(__func__);
free(p);
return -1;
}
@@ -2058,12 +2058,12 @@ err_sla:
}
if (i != 0) {
errno = i;
- syslog(LOG_ERR, "getgrnam_r: %m");
+ logerr("getgrnam_r");
free(p);
return -1;
}
if (grp == NULL) {
- syslog(LOG_ERR, "controlgroup: %s: not found", arg);
+ logerrx("controlgroup: %s: not found", arg);
free(p);
return -1;
}
@@ -2072,7 +2072,7 @@ err_sla:
#else
grp = getgrnam(arg);
if (grp == NULL) {
- syslog(LOG_ERR, "controlgroup: %s: not found", arg);
+ logerrx("controlgroup: %s: not found", arg);
return -1;
}
ctx->control_group = grp->gr_gid;
@@ -2106,7 +2106,7 @@ err_sla:
ARG_REQUIRED;
s = parse_string((char *)ifo->mudurl + 1, MUDURL_MAX_LEN, arg);
if (s == -1) {
- syslog(LOG_ERR, "mudurl: %m");
+ logerr("mudurl");
return -1;
}
*ifo->mudurl = (uint8_t)s;
@@ -2119,7 +2119,7 @@ err_sla:
#ifdef ARG_REQUIRED
arg_required:
- syslog(LOG_ERR, "option %d requires an argument", opt);
+ logerrx("option %d requires an argument", opt);
return -1;
#undef ARG_REQUIRED
#endif
@@ -2138,9 +2138,7 @@ parse_config_line(struct dhcpcd_ctx *ctx
continue;
if (cf_options[i].has_arg == required_argument && !line) {
- syslog(LOG_ERR,
- PACKAGE ": option requires an argument -- %s",
- opt);
+ logerrx("option requires an argument -- %s", opt);
return -1;
}
@@ -2148,7 +2146,7 @@ parse_config_line(struct dhcpcd_ctx *ctx
ldop, edop);
}
- syslog(LOG_ERR, "unknown option: %s", opt);
+ logerrx("unknown option: %s", opt);
return -1;
}
@@ -2213,7 +2211,7 @@ default_config(struct dhcpcd_ctx *ctx)
/* Seed our default options */
if ((ifo = calloc(1, sizeof(*ifo))) == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
return NULL;
}
ifo->options |= DHCPCD_IF_UP | DHCPCD_LINK | DHCPCD_INITIAL_DELAY;
@@ -2286,7 +2284,7 @@ read_config(struct dhcpcd_ctx *ctx,
ifo->dhcp_override =
calloc(INITDEFINES, sizeof(*ifo->dhcp_override));
if (ifo->dhcp_override == NULL)
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
else
ifo->dhcp_override_len = INITDEFINES;
#endif
@@ -2295,7 +2293,7 @@ read_config(struct dhcpcd_ctx *ctx,
ifo->nd_override =
calloc(INITDEFINENDS, sizeof(*ifo->nd_override));
if (ifo->nd_override == NULL)
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
else
ifo->nd_override_len = INITDEFINENDS;
#endif
@@ -2303,7 +2301,7 @@ read_config(struct dhcpcd_ctx *ctx,
ifo->dhcp6_override =
calloc(INITDEFINE6S, sizeof(*ifo->dhcp6_override));
if (ifo->dhcp6_override == NULL)
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
else
ifo->dhcp6_override_len = INITDEFINE6S;
#endif
@@ -2312,14 +2310,14 @@ read_config(struct dhcpcd_ctx *ctx,
#ifdef EMBEDDED_CONFIG
fp = fopen(EMBEDDED_CONFIG, "r");
if (fp == NULL)
- syslog(LOG_ERR, "fopen `%s': %m", EMBEDDED_CONFIG);
+ logerr("%s: fopen `%s'", __func__, EMBEDDED_CONFIG);
while (fp && (line = get_line(&buf, &buflen, fp))) {
#else
buflen = 80;
buf = malloc(buflen);
if (buf == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free_options(ifo);
return NULL;
}
@@ -2332,7 +2330,7 @@ read_config(struct dhcpcd_ctx *ctx,
buflen = ol;
nbuf = realloc(buf, buflen);
if (nbuf == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
free(buf);
free_options(ifo);
return NULL;
@@ -2408,7 +2406,7 @@ read_config(struct dhcpcd_ctx *ctx,
if (fp == NULL) {
/* dhcpcd can continue without it, but no DNS options
* would be requested ... */
- syslog(LOG_WARNING, "fopen `%s': %m", ctx->cffile);
+ logwarn("%s: fopen `%s'", __func__, ctx->cffile);
free(buf);
return ifo;
}
@@ -2455,13 +2453,13 @@ read_config(struct dhcpcd_ctx *ctx,
n = reallocarray(ctx->ifcv,
(size_t)ctx->ifcc + 1, sizeof(char *));
if (n == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
continue;
}
ctx->ifcv = n;
ctx->ifcv[ctx->ifcc] = strdup(line);
if (ctx->ifcv[ctx->ifcc] == NULL) {
- syslog(LOG_ERR, "%s: %m", __func__);
+ logerr(__func__);
continue;
}
ctx->ifcc++;