From eb105b96d58a3ebfeedb76a5d421b13748e0395c Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Fri, 11 Apr 2014 18:02:54 +0200 Subject: [PATCH] sd-dhcp-client: rebind raw socket when resetting transaction id As we are now filtering the raw socket based on the transaction id, we must reset the BPF when we reset the transaction id. --- src/libsystemd-network/sd-dhcp-client.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index afad776d1..4be37a238 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -473,7 +473,13 @@ static int client_timeout_resend(sd_event_source *s, uint64_t usec, /* start over as we did not receive a timely ack or nak */ client->state = DHCP_STATE_INIT; client->attempt = 1; + + client->fd = safe_close(client->fd); client->xid = random_u32(); + r = dhcp_network_bind_raw_socket(client->index, &client->link, client->xid); + if (r < 0) + goto error; + client->fd = r; /* fall through */ case DHCP_STATE_INIT: -- 2.30.2