1
0
mirror of https://github.com/systemd/systemd.git synced 2025-02-23 13:57:33 +03:00

networkd: clean up NETLINK_PKTINFO vs. SO_PASSCRED confusion

We actually care for NETLINK_PKTINFO, not for SO_PASSCRED, hence when
allocating the netlink socket, configure things accordingly.

Tracked down by Benjamin Robin, see:

https://github.com/systemd/systemd/pull/15571#issuecomment-633213747
This commit is contained in:
Lennart Poettering 2020-05-27 19:37:19 +02:00
parent a3d19f5d99
commit 43007b302e
2 changed files with 2 additions and 6 deletions

View File

@ -16,10 +16,6 @@
#include "socket-util.h" #include "socket-util.h"
#include "util.h" #include "util.h"
/* For some reason we need some extra cmsg space on some kernels. It's not clear why, and one of those days
* we need to track this down. See: https://github.com/systemd/systemd/pull/15457 */
#define EXTRA_CMSG_SPACE 1024
int socket_open(int family) { int socket_open(int family) {
int fd; int fd;
@ -244,7 +240,7 @@ int socket_write_message(sd_netlink *nl, sd_netlink_message *m) {
static int socket_recv_message(int fd, struct iovec *iov, uint32_t *ret_mcast_group, bool peek) { static int socket_recv_message(int fd, struct iovec *iov, uint32_t *ret_mcast_group, bool peek) {
union sockaddr_union sender; union sockaddr_union sender;
CMSG_BUFFER_TYPE(CMSG_SPACE(sizeof(struct nl_pktinfo)) + EXTRA_CMSG_SPACE) control; CMSG_BUFFER_TYPE(CMSG_SPACE(sizeof(struct nl_pktinfo))) control;
struct msghdr msg = { struct msghdr msg = {
.msg_iov = iov, .msg_iov = iov,
.msg_iovlen = 1, .msg_iovlen = 1,

View File

@ -17,7 +17,7 @@ Before=sockets.target
[Socket] [Socket]
ReceiveBuffer=128M ReceiveBuffer=128M
ListenNetlink=route 1361 ListenNetlink=route 1361
PassCredentials=yes PassPacketInfo=yes
[Install] [Install]
WantedBy=sockets.target WantedBy=sockets.target