[systemd-commits] 2 commits - src/libsystemd-network src/network
Tom Gundersen
tomegun at kemper.freedesktop.org
Tue Apr 8 12:25:47 PDT 2014
src/libsystemd-network/dhcp-internal.h | 2 -
src/libsystemd-network/dhcp-packet.c | 34 ++++++++++++++++-----------------
src/network/networkd-link.c | 9 ++++++--
3 files changed, 25 insertions(+), 20 deletions(-)
New commits:
commit 7ff8f4b53c158833b87899090552b18c922596de
Author: Tom Gundersen <teg at jklm.no>
Date: Tue Apr 8 21:26:19 2014 +0200
networkd: guard against NULL pointers
This should never be a problem, but better be safe than sorry.
diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
index 63d253d..f076525 100644
--- a/src/network/networkd-link.c
+++ b/src/network/networkd-link.c
@@ -1299,6 +1299,7 @@ static int link_getlink_handler(sd_rtnl *rtnl, sd_rtnl_message *m,
int r;
assert(link);
+ assert(link->ifname);
if (link->state == LINK_STATE_FAILED)
return 1;
@@ -1510,11 +1511,16 @@ int link_update(Link *link, sd_rtnl_message *m) {
int link_save(Link *link) {
_cleanup_free_ char *temp_path = NULL;
_cleanup_fclose_ FILE *f = NULL;
+ const char *state;
int r;
assert(link);
assert(link->state_file);
+ state = link_state_to_string(link->state);
+ if (!state)
+ goto finish;
+
r = fopen_temporary(link->state_file, &f, &temp_path);
if (r < 0)
goto finish;
@@ -1523,8 +1529,7 @@ int link_save(Link *link) {
fprintf(f,
"# This is private data. Do not parse.\n"
- "STATE=%s\n",
- link_state_to_string(link->state));
+ "STATE=%s\n", state);
if (link->dhcp_lease) {
_cleanup_free_ char *lease_file = NULL;
commit aa6fc9b8c823834f262ab5ab2ac094a3775370a9
Author: Tom Gundersen <teg at jklm.no>
Date: Mon Apr 7 20:00:53 2014 +0200
sd-dhcp-client: include client id in debug messages
diff --git a/src/libsystemd-network/dhcp-internal.h b/src/libsystemd-network/dhcp-internal.h
index 2188a7f..c0cfa83 100644
--- a/src/libsystemd-network/dhcp-internal.h
+++ b/src/libsystemd-network/dhcp-internal.h
@@ -56,4 +56,4 @@ void dhcp_packet_append_ip_headers(DHCPPacket *packet, be32_t source_addr,
int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum);
-#define log_dhcp_client(client, fmt, ...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP CLIENT: " fmt, ##__VA_ARGS__)
+#define log_dhcp_client(client, fmt, ...) log_meta(LOG_DEBUG, __FILE__, __LINE__, __func__, "DHCP CLIENT (0x%x): " fmt, client->xid, ##__VA_ARGS__)
diff --git a/src/libsystemd-network/dhcp-packet.c b/src/libsystemd-network/dhcp-packet.c
index fba9c46..b012e63 100644
--- a/src/libsystemd-network/dhcp-packet.c
+++ b/src/libsystemd-network/dhcp-packet.c
@@ -141,48 +141,48 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
/* IP */
if (packet->ip.version != IPVERSION) {
- log_dhcp_client(client, "ignoring packet: not IPv4");
+ log_debug("ignoring packet: not IPv4");
return -EINVAL;
}
if (packet->ip.ihl < 5) {
- log_dhcp_client(client, "ignoring packet: IPv4 IHL (%u words) invalid",
- packet->ip.ihl);
+ log_debug("ignoring packet: IPv4 IHL (%u words) invalid",
+ packet->ip.ihl);
return -EINVAL;
}
hdrlen = packet->ip.ihl * 4;
if (hdrlen < 20) {
- log_dhcp_client(client, "ignoring packet: IPv4 IHL (%zu bytes) "
- "smaller than minimum (20 bytes)", hdrlen);
+ log_debug("ignoring packet: IPv4 IHL (%zu bytes) "
+ "smaller than minimum (20 bytes)", hdrlen);
return -EINVAL;
}
if (len < hdrlen) {
- log_dhcp_client(client, "ignoring packet: packet (%zu bytes) "
- "smaller than expected (%zu) by IP header", len,
- hdrlen);
+ log_debug("ignoring packet: packet (%zu bytes) "
+ "smaller than expected (%zu) by IP header", len,
+ hdrlen);
return -EINVAL;
}
/* UDP */
if (packet->ip.protocol != IPPROTO_UDP) {
- log_dhcp_client(client, "ignoring packet: not UDP");
+ log_debug("ignoring packet: not UDP");
return -EINVAL;
}
if (len < hdrlen + be16toh(packet->udp.len)) {
- log_dhcp_client(client, "ignoring packet: packet (%zu bytes) "
- "smaller than expected (%zu) by UDP header", len,
- hdrlen + be16toh(packet->udp.len));
+ log_debug("ignoring packet: packet (%zu bytes) "
+ "smaller than expected (%zu) by UDP header", len,
+ hdrlen + be16toh(packet->udp.len));
return -EINVAL;
}
if (be16toh(packet->udp.dest) != DHCP_PORT_CLIENT) {
- log_dhcp_client(client, "ignoring packet: to port %u, which "
- "is not the DHCP client port (%u)",
- be16toh(packet->udp.dest), DHCP_PORT_CLIENT);
+ log_debug("ignoring packet: to port %u, which "
+ "is not the DHCP client port (%u)",
+ be16toh(packet->udp.dest), DHCP_PORT_CLIENT);
return -EINVAL;
}
@@ -191,7 +191,7 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
*/
if (dhcp_packet_checksum(&packet->ip, hdrlen)) {
- log_dhcp_client(client, "ignoring packet: invalid IP checksum");
+ log_debug("ignoring packet: invalid IP checksum");
return -EINVAL;
}
@@ -201,7 +201,7 @@ int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum) {
if (dhcp_packet_checksum(&packet->ip.ttl,
be16toh(packet->udp.len) + 12)) {
- log_dhcp_client(client, "ignoring packet: invalid UDP checksum");
+ log_debug("ignoring packet: invalid UDP checksum");
return -EINVAL;
}
}
More information about the systemd-commits
mailing list