]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
libsystemd-network: make constant addresses type-safe
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 14 Apr 2024 05:42:58 +0000 (14:42 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 14 Apr 2024 21:23:11 +0000 (06:23 +0900)
No functional change, just refactoring.

src/libsystemd-network/dhcp6-protocol.h
src/libsystemd-network/fuzz-ndisc-rs.c
src/libsystemd-network/icmp6-util.c
src/libsystemd-network/icmp6-util.h
src/libsystemd-network/sd-dhcp6-client.c
src/libsystemd-network/sd-ndisc.c
src/libsystemd-network/sd-radv.c
src/libsystemd-network/test-dhcp6-client.c
src/libsystemd-network/test-ndisc-send.c

index c70f93203d199b985311af2334a9d3c598f273e9..ab75bad434a9b9839049404679ab8aeba0a85b42 100644 (file)
@@ -28,9 +28,11 @@ typedef struct DHCP6Message DHCP6Message;
 #define DHCP6_MIN_OPTIONS_SIZE \
         1280 - sizeof(struct ip6_hdr) - sizeof(struct udphdr)
 
-#define IN6ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS_INIT                 \
-        { { { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,           \
-              0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02 } } }
+#define IN6_ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS                 \
+        ((const struct in6_addr) { { {                              \
+                0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     \
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02,     \
+         } } } )
 
 enum {
         DHCP6_PORT_SERVER                       = 547,
index c52043a13b35ae5eb6003d8499d21fb9f5c0619f..ae780f4382f3d4e642fa792e81b494cf44eef0b1 100644 (file)
@@ -37,7 +37,7 @@ static void test_with_sd_ndisc(const uint8_t *data, size_t size) {
 static void test_with_icmp6_packet(const uint8_t *data, size_t size) {
         static const struct sockaddr_in6 dst = {
                 .sin6_family = AF_INET6,
-                .sin6_addr = IN6ADDR_ALL_ROUTERS_MULTICAST_INIT,
+                .sin6_addr = IN6_ADDR_ALL_ROUTERS_MULTICAST,
         };
 
         _cleanup_close_pair_ int fd_pair[2] = EBADF_PAIR;
index d4b7ae58558b5b545984c9fa9582733cca7eefc8..804da7652e67e81f3a58826a1602efb19a666eae 100644 (file)
@@ -33,13 +33,13 @@ int icmp6_bind(int ifindex, bool is_router) {
         ICMP6_FILTER_SETBLOCKALL(&filter);
         if (is_router) {
                 mreq = (struct ipv6_mreq) {
-                        .ipv6mr_multiaddr = IN6ADDR_ALL_ROUTERS_MULTICAST_INIT,
+                        .ipv6mr_multiaddr = IN6_ADDR_ALL_ROUTERS_MULTICAST,
                         .ipv6mr_interface = ifindex,
                 };
                 ICMP6_FILTER_SETPASS(ND_ROUTER_SOLICIT, &filter);
         } else {
                 mreq = (struct ipv6_mreq) {
-                        .ipv6mr_multiaddr = IN6ADDR_ALL_NODES_MULTICAST_INIT,
+                        .ipv6mr_multiaddr = IN6_ADDR_ALL_NODES_MULTICAST,
                         .ipv6mr_interface = ifindex,
                 };
                 ICMP6_FILTER_SETPASS(ND_ROUTER_ADVERT, &filter);
index 49cdcba3ff711f89d80f8eff57f58af98fc02e47..74acd4124c01f44368b41787a74b9951b55a544a 100644 (file)
 
 #include "time-util.h"
 
-#define IN6ADDR_ALL_ROUTERS_MULTICAST_INIT \
-        { { { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
-              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 } } }
+#define IN6_ADDR_ALL_ROUTERS_MULTICAST                                  \
+        ((const struct in6_addr) { { {                                  \
+                0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,         \
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,         \
+         } } } )
 
-#define IN6ADDR_ALL_NODES_MULTICAST_INIT \
-        { { { 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
-              0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } } }
+#define IN6_ADDR_ALL_NODES_MULTICAST                                    \
+        ((const struct in6_addr) { { {                                  \
+                0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,         \
+                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,         \
+         } } } )
 
 int icmp6_bind(int ifindex, bool is_router);
 int icmp6_send(int fd, const struct sockaddr_in6 *dst, const struct iovec *iov, size_t n_iov);
index 229ceef78362bf4f08fb5498f5bddd3d04ede8df..9f14a32896da4c822ef428429a623b4765e509ee 100644 (file)
@@ -743,8 +743,6 @@ static int client_append_mudurl(sd_dhcp6_client *client, uint8_t **buf, size_t *
 
 int dhcp6_client_send_message(sd_dhcp6_client *client) {
         _cleanup_free_ uint8_t *buf = NULL;
-        struct in6_addr all_servers =
-                IN6ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS_INIT;
         struct sd_dhcp6_option *j;
         usec_t elapsed_usec, time_now;
         be16_t elapsed_time;
@@ -839,7 +837,7 @@ int dhcp6_client_send_message(sd_dhcp6_client *client) {
         if (r < 0)
                 return r;
 
-        r = dhcp6_network_send_udp_socket(client->fd, &all_servers, buf, offset);
+        r = dhcp6_network_send_udp_socket(client->fd, &IN6_ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS, buf, offset);
         if (r < 0)
                 return r;
 
index cba9470ce077005f03554e4f1b77a112776a2a99..faa0ea2701066334d2d726c987b3538158da65aa 100644 (file)
@@ -343,7 +343,7 @@ static int ndisc_recv(sd_event_source *s, int fd, uint32_t revents, void *userda
 static int ndisc_send_router_solicitation(sd_ndisc *nd) {
         static const struct sockaddr_in6 dst = {
                 .sin6_family = AF_INET6,
-                .sin6_addr = IN6ADDR_ALL_ROUTERS_MULTICAST_INIT,
+                .sin6_addr = IN6_ADDR_ALL_ROUTERS_MULTICAST,
         };
         static const struct nd_router_solicit header = {
                 .nd_rs_type = ND_ROUTER_SOLICIT,
index cde45388b7ce763f6caf34136ab8a395abf58568..316fcf1d2bfce4552922f029e98e0cfb02c14f1b 100644 (file)
@@ -134,7 +134,7 @@ static int radv_send_router(sd_radv *ra, const struct in6_addr *dst, usec_t life
 
         struct sockaddr_in6 dst_addr = {
                 .sin6_family = AF_INET6,
-                .sin6_addr = IN6ADDR_ALL_NODES_MULTICAST_INIT,
+                .sin6_addr = IN6_ADDR_ALL_NODES_MULTICAST,
         };
         struct nd_router_advert adv = {
                 .nd_ra_type = ND_ROUTER_ADVERT,
index a987a178064ebd3d5c28a88725eb4e9e0a4caf19..37d5a0cf6c739bc62d8eb8ceb807eaf796a2016b 100644 (file)
@@ -59,8 +59,7 @@
 
 static const struct in6_addr local_address =
         { { { 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, } } };
-static const struct in6_addr mcast_address =
-        IN6ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS_INIT;
+static const struct in6_addr mcast_address = IN6_ADDR_ALL_DHCP6_RELAY_AGENTS_AND_SERVERS;
 static const struct in6_addr ia_na_address1 = { { { IA_NA_ADDRESS1_BYTES } } };
 static const struct in6_addr ia_na_address2 = { { { IA_NA_ADDRESS2_BYTES } } };
 static const struct in6_addr ia_pd_prefix1 = { { { IA_PD_PREFIX1_BYTES } } };
index 71e445c7e734bdd98095def1e84dd852685ca1eb..7b9c0e5f17681912fe6cb8088d8f942d43d91035 100644 (file)
@@ -289,9 +289,9 @@ static int parse_argv(int argc, char *argv[]) {
 
         if (in6_addr_is_null(&arg_dest.in6)) {
                 if (IN_SET(arg_icmp6_type, ND_ROUTER_ADVERT, ND_NEIGHBOR_ADVERT, ND_REDIRECT))
-                        arg_dest.in6 = (struct in6_addr) IN6ADDR_ALL_NODES_MULTICAST_INIT;
+                        arg_dest.in6 = IN6_ADDR_ALL_NODES_MULTICAST;
                 else
-                        arg_dest.in6 = (struct in6_addr) IN6ADDR_ALL_ROUTERS_MULTICAST_INIT;
+                        arg_dest.in6 = IN6_ADDR_ALL_ROUTERS_MULTICAST;
         }
 
         if (arg_set_source_mac) {