blob: 679a4dd8d43b994cbdef9e44c31fcb5a3247f489 [file] [log] [blame]
From dc83fbda74ed7f2680b8970109446d0153feac8c Mon Sep 17 00:00:00 2001
From: Peter Qiu <zqiu@chromium.org>
Date: Wed, 27 May 2015 16:14:42 -0700
Subject: [PATCH] Improve debugability
Increase log level for certain log messages and add more log messages
to improve debugability.
Author: Paul Stewart <pstew@chromium.org>
Author: mukesh agrawal <quiche@chromium.org>
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
---
arp.c | 2 +-
dhcp.c | 23 +++++++++++++++++++----
if.c | 8 ++++++++
3 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/arp.c b/arp.c
index 96cf40c..1db1e89 100644
--- a/arp.c
+++ b/arp.c
@@ -282,7 +282,7 @@ arp_probe1(void *arg)
tv.tv_nsec = 0;
eloop_timeout_add_tv(ifp->ctx->eloop, &tv, arp_probed, astate);
}
- logger(ifp->ctx, LOG_DEBUG,
+ logger(ifp->ctx, LOG_INFO,
"%s: ARP probing %s (%d of %d), next in %0.1f seconds",
ifp->name, inet_ntoa(astate->addr),
astate->probes ? astate->probes : PROBE_NUM, PROBE_NUM,
diff --git a/dhcp.c b/dhcp.c
index 7047ac1..f674ff2 100644
--- a/dhcp.c
+++ b/dhcp.c
@@ -1654,7 +1654,7 @@ send_message(struct interface *ifp, uint8_t type,
#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 @@ send_message(struct interface *ifp, uint8_t type,
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 @@ dhcp_request(void *arg)
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 @@ dhcp_renew(void *arg)
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 @@ dhcp_inform(struct interface *ifp)
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 @@ dhcp_handledhcp(struct interface *ifp, struct dhcp_message **dhcpp,
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 @@ dhcp_handledhcp(struct interface *ifp, struct dhcp_message **dhcpp,
}
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 @@ valid_udp_packet(const uint8_t *data, size_t data_len, struct in_addr *from,
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 @@ valid_udp_packet(const uint8_t *data, size_t data_len, struct in_addr *from,
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 @@ valid_udp_packet(const uint8_t *data, size_t data_len, struct in_addr *from,
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;
}
diff --git a/if.c b/if.c
index 683021f..ddd03ff 100644
--- a/if.c
+++ b/if.c
@@ -566,6 +566,14 @@ if_discover(struct dhcpcd_ctx *ctx, int argc, char * const *argv)
TAILQ_INSERT_TAIL(ifs, ifp, next);
}
+ if (!ifs) {
+ logger(ctx, LOG_INFO, "%s: no matching interfaces", __func__);
+ for (ifa = ifaddrs; ifa; ifa = ifa->ifa_next) {
+ logger(ctx, LOG_INFO, "%s: considered %s",
+ __func__, ifa->ifa_name);
+ }
+ }
+
if_learnaddrs1(ctx, ifs, ifaddrs);
freeifaddrs(ifaddrs);
--
2.2.0.rc0.207.ga3a616c