mirror of
https://github.com/systemd/systemd.git
synced 2025-02-14 05:57:40 +03:00
tree-wide: introduce setsockopt_int() helper and make use of it everywhere
As suggested by @heftig:
6d5e65f645 (commitcomment-30938667)
This commit is contained in:
parent
0fef958361
commit
2ff48e981e
@ -62,10 +62,9 @@ int socket_address_listen(
|
||||
return r;
|
||||
|
||||
if (socket_address_family(a) == AF_INET6 && only != SOCKET_ADDRESS_DEFAULT) {
|
||||
int flag = only == SOCKET_ADDRESS_IPV6_ONLY;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, sizeof(flag)) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IPV6, IPV6_V6ONLY, only == SOCKET_ADDRESS_IPV6_ONLY);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
if (IN_SET(socket_address_family(a), AF_INET, AF_INET6)) {
|
||||
@ -74,23 +73,27 @@ int socket_address_listen(
|
||||
return -errno;
|
||||
|
||||
if (reuse_port) {
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_warning_errno(errno, "SO_REUSEPORT failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEPORT, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "SO_REUSEPORT failed: %m");
|
||||
}
|
||||
|
||||
if (free_bind) {
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_FREEBIND, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_warning_errno(errno, "IP_FREEBIND failed: %m");
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_FREEBIND, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "IP_FREEBIND failed: %m");
|
||||
}
|
||||
|
||||
if (transparent) {
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_TRANSPARENT, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_warning_errno(errno, "IP_TRANSPARENT failed: %m");
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_TRANSPARENT, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(r, "IP_TRANSPARENT failed: %m");
|
||||
}
|
||||
}
|
||||
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
p = socket_address_get_path(a);
|
||||
if (p) {
|
||||
|
@ -190,3 +190,10 @@ struct cmsghdr* cmsg_find(struct msghdr *mh, int level, int type, socklen_t leng
|
||||
int socket_ioctl_fd(void);
|
||||
|
||||
int sockaddr_un_set_path(struct sockaddr_un *ret, const char *path);
|
||||
|
||||
static inline int setsockopt_int(int fd, int level, int optname, int value) {
|
||||
if (setsockopt(fd, level, optname, &value, sizeof(value)) < 0)
|
||||
return -errno;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -900,9 +900,9 @@ static int manager_setup_notify(Manager *m) {
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "bind(%s) failed: %m", m->notify_socket);
|
||||
|
||||
r = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_PASSCRED failed: %m");
|
||||
return log_error_errno(r, "SO_PASSCRED failed: %m");
|
||||
|
||||
m->notify_fd = TAKE_FD(fd);
|
||||
|
||||
|
@ -1014,8 +1014,9 @@ static void socket_apply_socket_options(Socket *s, int fd) {
|
||||
assert(fd >= 0);
|
||||
|
||||
if (s->keep_alive) {
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "SO_KEEPALIVE failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_KEEPALIVE, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "SO_KEEPALIVE failed: %m");
|
||||
}
|
||||
|
||||
if (s->keep_alive_time > 0) {
|
||||
@ -1044,27 +1045,32 @@ static void socket_apply_socket_options(Socket *s, int fd) {
|
||||
|
||||
if (s->no_delay) {
|
||||
if (s->socket_protocol == IPPROTO_SCTP) {
|
||||
if (setsockopt(fd, SOL_SCTP, SCTP_NODELAY, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "SCTP_NODELAY failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SCTP, SCTP_NODELAY, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "SCTP_NODELAY failed: %m");
|
||||
} else {
|
||||
if (setsockopt(fd, SOL_TCP, TCP_NODELAY, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "TCP_NODELAY failed: %m");
|
||||
r = setsockopt_int(fd, SOL_TCP, TCP_NODELAY, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "TCP_NODELAY failed: %m");
|
||||
}
|
||||
}
|
||||
|
||||
if (s->broadcast) {
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "SO_BROADCAST failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_BROADCAST, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "SO_BROADCAST failed: %m");
|
||||
}
|
||||
|
||||
if (s->pass_cred) {
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "SO_PASSCRED failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "SO_PASSCRED failed: %m");
|
||||
}
|
||||
|
||||
if (s->pass_sec) {
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
log_unit_warning_errno(UNIT(s), errno, "SO_PASSSEC failed: %m");
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_PASSSEC, true);
|
||||
if (r < 0)
|
||||
log_unit_warning_errno(UNIT(s), r, "SO_PASSSEC failed: %m");
|
||||
}
|
||||
|
||||
if (s->priority >= 0)
|
||||
|
@ -612,8 +612,9 @@ static int manager_new(Manager **ret) {
|
||||
if (bind(m->notify_fd, &sa.sa, SOCKADDR_UN_LEN(sa.un)) < 0)
|
||||
return -errno;
|
||||
|
||||
if (setsockopt(m->notify_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(m->notify_fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_event_add_io(m->event, &m->notify_event_source, m->notify_fd, EPOLLIN, manager_on_notify, m);
|
||||
if (r < 0)
|
||||
|
@ -527,9 +527,9 @@ int server_open_audit(Server *s) {
|
||||
} else
|
||||
(void) fd_nonblock(s->audit_fd, true);
|
||||
|
||||
r = setsockopt(s->audit_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->audit_fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "Failed to set SO_PASSCRED on audit socket: %m");
|
||||
return log_error_errno(r, "Failed to set SO_PASSCRED on audit socket: %m");
|
||||
|
||||
r = sd_event_add_io(s->event, &s->audit_event_source, s->audit_fd, EPOLLIN, server_process_datagram, s);
|
||||
if (r < 0)
|
||||
|
@ -462,21 +462,21 @@ int server_open_native_socket(Server*s) {
|
||||
} else
|
||||
(void) fd_nonblock(s->native_fd, true);
|
||||
|
||||
r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_PASSCRED failed: %m");
|
||||
return log_error_errno(r, "SO_PASSCRED failed: %m");
|
||||
|
||||
#if HAVE_SELINUX
|
||||
if (mac_selinux_use()) {
|
||||
r = setsockopt(s->native_fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_PASSSEC, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(errno, "SO_PASSSEC failed: %m");
|
||||
log_warning_errno(r, "SO_PASSSEC failed: %m");
|
||||
}
|
||||
#endif
|
||||
|
||||
r = setsockopt(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->native_fd, SOL_SOCKET, SO_TIMESTAMP, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_TIMESTAMP failed: %m");
|
||||
return log_error_errno(r, "SO_TIMESTAMP failed: %m");
|
||||
|
||||
r = sd_event_add_io(s->event, &s->native_event_source, s->native_fd, EPOLLIN, server_process_datagram, s);
|
||||
if (r < 0)
|
||||
|
@ -466,21 +466,21 @@ int server_open_syslog_socket(Server *s) {
|
||||
} else
|
||||
(void) fd_nonblock(s->syslog_fd, true);
|
||||
|
||||
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_PASSCRED failed: %m");
|
||||
return log_error_errno(r, "SO_PASSCRED failed: %m");
|
||||
|
||||
#if HAVE_SELINUX
|
||||
if (mac_selinux_use()) {
|
||||
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_PASSSEC, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(errno, "SO_PASSSEC failed: %m");
|
||||
log_warning_errno(r, "SO_PASSSEC failed: %m");
|
||||
}
|
||||
#endif
|
||||
|
||||
r = setsockopt(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s->syslog_fd, SOL_SOCKET, SO_TIMESTAMP, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_TIMESTAMP failed: %m");
|
||||
return log_error_errno(r, "SO_TIMESTAMP failed: %m");
|
||||
|
||||
r = sd_event_add_io(s->event, &s->syslog_event_source, s->syslog_fd, EPOLLIN, server_process_datagram, s);
|
||||
if (r < 0)
|
||||
|
@ -87,9 +87,9 @@ static int _bind_raw_socket(int ifindex, union sockaddr_union *link,
|
||||
if (s < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(s, SOL_PACKET, PACKET_AUXDATA, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_PACKET, PACKET_AUXDATA, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog));
|
||||
if (r < 0)
|
||||
@ -159,9 +159,9 @@ int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port) {
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
if (ifindex > 0) {
|
||||
if (if_indextoname(ifindex, ifname) == 0)
|
||||
@ -173,18 +173,18 @@ int dhcp_network_bind_udp_socket(int ifindex, be32_t address, uint16_t port) {
|
||||
}
|
||||
|
||||
if (address == INADDR_ANY) {
|
||||
r = setsockopt(s, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, SOL_SOCKET, SO_BROADCAST, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_SOCKET, SO_BROADCAST, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
} else {
|
||||
r = setsockopt(s, IPPROTO_IP, IP_FREEBIND, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, IPPROTO_IP, IP_FREEBIND, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
}
|
||||
|
||||
r = bind(s, &src.sa, sizeof(src.in));
|
||||
|
@ -36,17 +36,17 @@ int dhcp6_network_bind_udp_socket(int index, struct in6_addr *local_address) {
|
||||
if (s < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, IPPROTO_IPV6, IPV6_V6ONLY, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_zero, sizeof(const_int_zero));
|
||||
r = setsockopt_int(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, false);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = bind(s, &src.sa, sizeof(src.in6));
|
||||
if (r < 0)
|
||||
|
@ -56,9 +56,9 @@ static int icmp6_bind_router_message(const struct icmp6_filter *filter,
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_zero, sizeof(const_int_zero));
|
||||
r = setsockopt_int(s, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, false);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, &hops, sizeof(hops));
|
||||
if (r < 0)
|
||||
@ -68,13 +68,13 @@ static int icmp6_bind_router_message(const struct icmp6_filter *filter,
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(s, SOL_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_IPV6, IPV6_RECVHOPLIMIT, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
r = setsockopt(s, SOL_SOCKET, SO_TIMESTAMP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(s, SOL_SOCKET, SO_TIMESTAMP, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
if (if_indextoname(index, ifname) == 0)
|
||||
return -errno;
|
||||
|
@ -293,8 +293,9 @@ int device_monitor_enable_receiving(sd_device_monitor *m) {
|
||||
return log_debug_errno(r, "Failed to set address: %m");
|
||||
|
||||
/* enable receiving of sender credentials */
|
||||
if (setsockopt(m->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
return log_debug_errno(errno, "Failed to set socket option SO_PASSCRED: %m");
|
||||
r = setsockopt_int(m->sock, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_debug_errno(r, "Failed to set socket option SO_PASSCRED: %m");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -90,9 +90,9 @@ int socket_bind(sd_netlink *nl) {
|
||||
socklen_t addrlen;
|
||||
int r;
|
||||
|
||||
r = setsockopt(nl->fd, SOL_NETLINK, NETLINK_PKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(nl->fd, SOL_NETLINK, NETLINK_PKTINFO, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
addrlen = sizeof(nl->sockaddr);
|
||||
|
||||
|
@ -2834,9 +2834,9 @@ static int setup_sd_notify_child(void) {
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to chown " NSPAWN_NOTIFY_SOCKET_PATH ": %m");
|
||||
|
||||
r = setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "SO_PASSCRED failed: %m");
|
||||
return log_error_errno(r, "SO_PASSCRED failed: %m");
|
||||
|
||||
return TAKE_FD(fd);
|
||||
}
|
||||
|
@ -378,9 +378,9 @@ static int dns_scope_socket(
|
||||
return -errno;
|
||||
|
||||
if (type == SOCK_STREAM) {
|
||||
r = setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, IPPROTO_TCP, TCP_NODELAY, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
}
|
||||
|
||||
if (s->link) {
|
||||
@ -401,21 +401,21 @@ static int dns_scope_socket(
|
||||
/* RFC 4795, section 2.5 requires the TTL to be set to 1 */
|
||||
|
||||
if (sa.sa.sa_family == AF_INET) {
|
||||
r = setsockopt(fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_TTL, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
} else if (sa.sa.sa_family == AF_INET6) {
|
||||
r = setsockopt(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
if (type == SOCK_DGRAM) {
|
||||
/* Set IP_RECVERR or IPV6_RECVERR to get ICMP error feedback. See discussion in #10345. */
|
||||
r = setsockopt(fd, SOL_IP, sa.sa.sa_family == AF_INET ? IP_RECVERR : IPV6_RECVERR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd, SOL_IP, sa.sa.sa_family == AF_INET ? IP_RECVERR : IPV6_RECVERR, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
}
|
||||
|
||||
if (ret_socket_address)
|
||||
|
@ -407,14 +407,17 @@ static int manager_dns_stub_udp_fd(Manager *m) {
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_RECVTTL, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* Make sure no traffic from outside the local host can leak to onto this socket */
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, "lo", 3) < 0)
|
||||
@ -493,17 +496,21 @@ static int manager_dns_stub_tcp_fd(Manager *m) {
|
||||
if (fd < 0)
|
||||
return -errno;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_TTL, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (setsockopt(fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof const_int_one) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, IPPROTO_IP, IP_RECVTTL, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* Make sure no traffic from outside the local host can leak to onto this socket */
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_BINDTODEVICE, "lo", 3) < 0)
|
||||
|
@ -140,21 +140,21 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_MULTICAST_LOOP, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_MULTICAST_LOOP: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_MULTICAST_LOOP: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_PKTINFO: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_PKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_udp_fd, IPPROTO_IP, IP_RECVTTL, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set IP_RECVTTL: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set IP_RECVTTL: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -176,9 +176,9 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) {
|
||||
log_warning("LLMNR-IPv4(UDP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -189,9 +189,9 @@ int manager_llmnr_ipv4_udp_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */
|
||||
r = setsockopt(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_udp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@ -239,27 +239,27 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_MULTICAST_LOOP: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_MULTICAST_LOOP: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_V6ONLY, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_V6ONLY: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_V6ONLY: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVPKTINFO: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVPKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -274,9 +274,9 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) {
|
||||
log_warning("LLMNR-IPv6(UDP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -287,9 +287,9 @@ int manager_llmnr_ipv6_udp_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */
|
||||
r = setsockopt(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_udp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(UDP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@ -368,21 +368,21 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) {
|
||||
return log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to create socket: %m");
|
||||
|
||||
/* RFC 4795, section 2.5. requires setting the TTL of TCP streams to 1 */
|
||||
r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_TTL, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_TTL, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_TTL: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_TTL: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_PKTINFO: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_PKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_tcp_fd, IPPROTO_IP, IP_RECVTTL, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set IP_RECVTTL: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set IP_RECVTTL: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -404,9 +404,9 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) {
|
||||
log_warning("LLMNR-IPv4(TCP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -417,9 +417,9 @@ int manager_llmnr_ipv4_tcp_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */
|
||||
r = setsockopt(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv4_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv4(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@ -460,27 +460,27 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) {
|
||||
return log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to create socket: %m");
|
||||
|
||||
/* RFC 4795, section 2.5. requires setting the TTL of TCP streams to 1 */
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_UNICAST_HOPS, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_UNICAST_HOPS: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_UNICAST_HOPS: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_V6ONLY, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_V6ONLY: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_V6ONLY: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVPKTINFO: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVPKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -495,9 +495,9 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) {
|
||||
log_warning("LLMNR-IPv6(TCP): There appears to be another LLMNR responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -508,9 +508,9 @@ int manager_llmnr_ipv6_tcp_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple LLMNR responders */
|
||||
r = setsockopt(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->llmnr_ipv6_tcp_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "LLMNR-IPv6(TCP): Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
@ -363,21 +363,21 @@ int manager_mdns_ipv4_fd(Manager *m) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_MULTICAST_LOOP, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_MULTICAST_LOOP: %m");
|
||||
log_error_errno(r, "mDNS-IPv4: Failed to set IP_MULTICAST_LOOP: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_PKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_PKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_PKTINFO: %m");
|
||||
log_error_errno(r, "mDNS-IPv4: Failed to set IP_PKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv4_fd, IPPROTO_IP, IP_RECVTTL, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv4_fd, IPPROTO_IP, IP_RECVTTL, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv4: Failed to set IP_RECVTTL: %m");
|
||||
log_error_errno(r, "mDNS-IPv4: Failed to set IP_RECVTTL: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -400,9 +400,9 @@ int manager_mdns_ipv4_fd(Manager *m) {
|
||||
log_warning("mDNS-IPv4: There appears to be another mDNS responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -413,9 +413,9 @@ int manager_mdns_ipv4_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple mDNS responders */
|
||||
r = setsockopt(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv4_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "mDNS-IPv4: Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@ -461,27 +461,27 @@ int manager_mdns_ipv6_fd(Manager *m) {
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_MULTICAST_LOOP: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_MULTICAST_LOOP: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_V6ONLY, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_V6ONLY, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_V6ONLY: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_V6ONLY: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVPKTINFO, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_RECVPKTINFO: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_RECVPKTINFO: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
r = setsockopt(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, IPPROTO_IPV6, IPV6_RECVHOPLIMIT, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set IPV6_RECVHOPLIMIT: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -497,9 +497,9 @@ int manager_mdns_ipv6_fd(Manager *m) {
|
||||
log_warning("mDNS-IPv6: There appears to be another mDNS responder running, or previously systemd-resolved crashed with some outstanding transfers.");
|
||||
|
||||
/* try again with SO_REUSEADDR */
|
||||
r = setsockopt(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@ -510,9 +510,9 @@ int manager_mdns_ipv6_fd(Manager *m) {
|
||||
}
|
||||
} else {
|
||||
/* enable SO_REUSEADDR for the case that the user really wants multiple mDNS responders */
|
||||
r = setsockopt(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->mdns_ipv6_fd, SOL_SOCKET, SO_REUSEADDR, true);
|
||||
if (r < 0) {
|
||||
r = log_error_errno(errno, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m");
|
||||
log_error_errno(r, "mDNS-IPv6: Failed to set SO_REUSEADDR: %m");
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
@ -455,7 +455,7 @@ static int create_socket(char **ret) {
|
||||
_cleanup_free_ char *path = NULL;
|
||||
union sockaddr_union sa = {};
|
||||
_cleanup_close_ int fd = -1;
|
||||
int salen;
|
||||
int salen, r;
|
||||
|
||||
assert(ret);
|
||||
|
||||
@ -475,8 +475,9 @@ static int create_socket(char **ret) {
|
||||
return -errno;
|
||||
}
|
||||
|
||||
if (setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one)) < 0)
|
||||
return -errno;
|
||||
r = setsockopt_int(fd, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
*ret = TAKE_PTR(path);
|
||||
return TAKE_FD(fd);
|
||||
|
@ -650,9 +650,9 @@ static int manager_listen_setup(Manager *m) {
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
|
||||
r = setsockopt(m->server_socket, SOL_SOCKET, SO_TIMESTAMPNS, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(m->server_socket, SOL_SOCKET, SO_TIMESTAMPNS, true);
|
||||
if (r < 0)
|
||||
return -errno;
|
||||
return r;
|
||||
|
||||
(void) setsockopt(m->server_socket, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
|
||||
|
||||
|
@ -96,9 +96,9 @@ struct udev_ctrl *udev_ctrl_new_from_fd(int fd) {
|
||||
* FIXME: remove it as soon as we can depend on this:
|
||||
* http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=90c6bd34f884cd9cee21f1d152baf6c18bcac949
|
||||
*/
|
||||
r = setsockopt(uctrl->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(uctrl->sock, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(errno, "could not set SO_PASSCRED: %m");
|
||||
log_warning_errno(r, "could not set SO_PASSCRED: %m");
|
||||
|
||||
uctrl->saddr.un = (struct sockaddr_un) {
|
||||
.sun_family = AF_UNIX,
|
||||
@ -190,9 +190,9 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl) {
|
||||
}
|
||||
|
||||
/* enable receiving of the sender credentials in the messages */
|
||||
r = setsockopt(conn->sock, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(conn->sock, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
log_warning_errno(errno, "could not set SO_PASSCRED: %m");
|
||||
log_warning_errno(r, "could not set SO_PASSCRED: %m");
|
||||
|
||||
udev_ctrl_ref(uctrl);
|
||||
return conn;
|
||||
|
@ -1576,9 +1576,9 @@ static int manager_new(Manager **ret, int fd_ctrl, int fd_uevent, const char *cg
|
||||
|
||||
fd_worker = manager->worker_watch[READ_END];
|
||||
|
||||
r = setsockopt(fd_worker, SOL_SOCKET, SO_PASSCRED, &const_int_one, sizeof(const_int_one));
|
||||
r = setsockopt_int(fd_worker, SOL_SOCKET, SO_PASSCRED, true);
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "could not enable SO_PASSCRED: %m");
|
||||
return log_error_errno(r, "could not enable SO_PASSCRED: %m");
|
||||
|
||||
manager->fd_inotify = udev_watch_init();
|
||||
if (manager->fd_inotify < 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user