]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
dhcp-client-send: use dhcp_message_send_{udp,raw}()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 4 May 2026 07:19:17 +0000 (16:19 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 17 May 2026 13:44:17 +0000 (22:44 +0900)
src/libsystemd-network/dhcp-client-send.c

index 5fe804db60fc9a7ca0afc5b39f772e3a3a442e78..89bae11a691e40d57864f610f258fb18d41d8379 100644 (file)
@@ -10,9 +10,7 @@
 #include "dhcp-message.h"
 #include "dhcp-network.h"
 #include "fd-util.h"
-#include "iovec-wrapper.h"
 #include "ip-util.h"
-#include "socket-util.h"
 
 static int client_get_socket(sd_dhcp_client *client, int domain) {
         int r, d, fd;
@@ -116,39 +114,16 @@ static int client_send_raw(
                 fd_close = fd;
         }
 
-        _cleanup_(iovw_done_free) struct iovec_wrapper payload = {};
-        r = dhcp_message_build(message, &payload);
-        if (r < 0)
-                return r;
-
-        struct iphdr ip;
-        struct udphdr udp;
-        r = udp_packet_build(
+        r = dhcp_message_send_raw(
+                        message,
+                        fd,
+                        client->ifindex,
                         INADDR_ANY,
                         client->port,
+                        &client->bcast_addr,
                         INADDR_BROADCAST,
                         client->server_port,
-                        client->ip_service_type,
-                        &payload,
-                        &ip,
-                        &udp);
-        if (r < 0)
-                return r;
-
-        _cleanup_(iovw_done) struct iovec_wrapper iovw = {};
-        r = iovw_put(&iovw, &ip, sizeof(struct iphdr));
-        if (r < 0)
-                return r;
-
-        r = iovw_put(&iovw, &udp, sizeof(struct udphdr));
-        if (r < 0)
-                return r;
-
-        r = iovw_put_iovw(&iovw, &payload);
-        if (r < 0)
-                return r;
-
-        r = dhcp_network_send_raw_socket(fd, &client->link, &iovw);
+                        client->ip_service_type);
         if (r < 0)
                 return r;
 
@@ -196,16 +171,12 @@ static int client_send_udp(
                 fd_close = fd;
         }
 
-        _cleanup_(iovw_done_free) struct iovec_wrapper payload = {};
-        r = dhcp_message_build(message, &payload);
-        if (r < 0)
-                return r;
-
-        r = dhcp_network_send_udp_socket(
+        r = dhcp_message_send_udp(
+                        message,
                         fd,
+                        INADDR_ANY,
                         client->lease->server_address,
-                        client->server_port,
-                        &payload);
+                        client->server_port);
         if (r < 0)
                 return r;