mirror of
https://github.com/systemd/systemd.git
synced 2026-08-04 23:20:32 +00:00
libsystemd-network: make constant addresses type-safe
No functional change, just refactoring.
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -12,13 +12,17 @@
|
||||
|
||||
#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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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 } } };
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user