aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Tan <samueltan@google.com>2015-08-13 17:12:30 -0700
committerSamuel Tan <samueltan@google.com>2015-08-18 13:47:22 -0700
commit24aa62eefd9284fb94820093f6088607d42c4249 (patch)
tree64bc689e7d8103765570ae2d10568c2fdb4e90df
parent4b053192e86198125efc190c846ef642f3671af3 (diff)
downloaddhcpcd-6.8.2-24aa62eefd9284fb94820093f6088607d42c4249.tar.gz
[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
-rw-r--r--arp.c2
-rw-r--r--dhcp.c23
-rw-r--r--if.c8
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 f2a5899..32bced4 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);