[PATCH] Improve debugability
Cherry-picked from
https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/
master/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Improve-debugability.patch.
Increase log level for certain log messages and add more log messages
to improve debugability.
BUG: 22956197
Change-Id: Idec6362a13d946831c8f0837a4cfe31c2671665e
Reviewed-on: https://gerrit.chromium.org/gerrit/42622
Reviewed-on: https://chromium-review.googlesource.com/185511
Reviewed-on: https://chromium-review.googlesource.com/186593
Reviewed-on: https://chromium-review.googlesource.com/206143
Reviewed-on: https://gerrit.chromium.org/gerrit/24835
diff --git a/dhcp.c b/dhcp.c
index f2a5899..32bced4 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -1654,7 +1654,7 @@
#endif
if (!callback)
- logger(ifp->ctx, LOG_DEBUG, "%s: sending %s with xid 0x%x",
+ logger(ifp->ctx, LOG_INFO, "%s: sending %s with xid 0x%x",
ifp->name,
ifo->options & DHCPCD_BOOTP ? "BOOTP" : get_dhcp_op(type),
state->xid);
@@ -1670,7 +1670,7 @@
tv.tv_nsec = (suseconds_t)arc4random_uniform(
(DHCP_RAND_MAX - DHCP_RAND_MIN) * NSEC_PER_SEC);
timespecnorm(&tv);
- logger(ifp->ctx, LOG_DEBUG,
+ logger(ifp->ctx, LOG_INFO,
"%s: sending %s (xid 0x%x), next in %0.1f seconds",
ifp->name,
ifo->options & DHCPCD_BOOTP ? "BOOTP" : get_dhcp_op(type),
@@ -1851,6 +1851,9 @@
struct interface *ifp = arg;
struct dhcp_state *state = D_STATE(ifp);
+ logger(ifp->ctx, LOG_INFO, "%s: requesting lease of %s",
+ ifp->name, inet_ntoa(state->lease.addr));
+
rpc_signal_status("Request");
state->state = DHS_REQUEST;
state->nak_receive_count = 0;
@@ -1886,7 +1889,7 @@
struct dhcp_lease *lease = &state->lease;
rpc_signal_status("Renew");
- logger(ifp->ctx, LOG_DEBUG, "%s: renewing lease of %s",
+ logger(ifp->ctx, LOG_INFO, "%s: renewing lease of %s",
ifp->name, inet_ntoa(lease->addr));
logger(ifp->ctx, LOG_DEBUG, "%s: rebind in %"PRIu32" seconds,"
" expire in %"PRIu32" seconds",
@@ -2285,6 +2288,8 @@
state = D_STATE(ifp);
ifo = ifp->options;
+ logger(ifp->ctx, LOG_INFO, "%s: informing peers of local address",
+ ifp->name);
if (ifp->ctx->options & DHCPCD_TEST) {
state->addr.s_addr = ifo->req_addr.s_addr;
state->net.s_addr = ifo->req_mask.s_addr;
@@ -2840,6 +2845,9 @@
return;
}
+ logger(ifp->ctx, LOG_INFO, "%s: received %s with xid 0x%x",
+ ifp->name, get_dhcp_op(type), state->xid);
+
/* Authenticate the message */
auth = get_option(ifp->ctx, dhcp, DHO_AUTHENTICATION, &auth_len);
if (auth) {
@@ -3102,7 +3110,7 @@
}
if (!(ifo->options & DHCPCD_INFORM))
- log_dhcp(LOG_DEBUG, "acknowledged", ifp, dhcp, from);
+ log_dhcp(LOG_INFO, "acknowledged", ifp, dhcp, from);
else
ifo->options &= ~DHCPCD_STATIC;
}
@@ -3184,6 +3192,8 @@
uint16_t bytes, udpsum;
if (data_len < sizeof(p.ip)) {
+ syslog(LOG_WARNING, "packet short than an ip header "
+ "(len=%zd)", data_len);
if (from)
from->s_addr = INADDR_ANY;
errno = EINVAL;
@@ -3193,16 +3203,20 @@
if (from)
from->s_addr = p.ip.ip_src.s_addr;
if (data_len > sizeof(p)) {
+ syslog(LOG_WARNING, "packet too long (%zd bytes)", data_len);
errno = EINVAL;
return -1;
}
if (checksum(&p.ip, sizeof(p.ip)) != 0) {
+ syslog(LOG_WARNING, "packet failed ip header checksum");
errno = EINVAL;
return -1;
}
bytes = ntohs(p.ip.ip_len);
if (data_len < bytes) {
+ syslog(LOG_WARNING, "packet appears truncated "
+ "(len=%zd, ip_len=%zd)", data_len, bytes);
errno = EINVAL;
return -1;
}
@@ -3219,6 +3233,7 @@
p.ip.ip_ttl = 0;
p.ip.ip_sum = 0;
if (udpsum && checksum(&p, bytes) != udpsum) {
+ syslog(LOG_WARNING, "packet failed udp checksum");
errno = EINVAL;
return -1;
}