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:
parent
a3d19f5d99
commit
43007b302e
@ -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,
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user