[systemd-commits] src/libsystemd-network

Tom Gundersen tomegun at kemper.freedesktop.org
Fri Apr 11 09:44:34 PDT 2014


 src/libsystemd-network/sd-dhcp-client.c |    6 ++++++
 1 file changed, 6 insertions(+)

New commits:
commit eb105b96d58a3ebfeedb76a5d421b13748e0395c
Author: Tom Gundersen <teg at jklm.no>
Date:   Fri Apr 11 18:02:54 2014 +0200

    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.

diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c
index afad776..4be37a2 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:



More information about the systemd-commits mailing list