chiark / gitweb /
sd-rtnl: use SO_PASSCRED
[elogind.git] / src / libsystemd / sd-rtnl / sd-rtnl.c
index 816018a6c4c92ae3b4a85bbb6b89be62f0f59e87..367f165a1c46aa2d7148beae26d89e44b42c8b6b 100644 (file)
@@ -72,7 +72,7 @@ static bool rtnl_pid_changed(sd_rtnl *rtnl) {
 int sd_rtnl_open(sd_rtnl **ret, uint32_t groups) {
         _cleanup_rtnl_unref_ sd_rtnl *rtnl = NULL;
         socklen_t addrlen;
-        int r;
+        int r, one = 1;
 
         assert_return(ret, -EINVAL);
 
@@ -84,6 +84,9 @@ int sd_rtnl_open(sd_rtnl **ret, uint32_t groups) {
         if (rtnl->fd < 0)
                 return -errno;
 
+        if (setsockopt(rtnl->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)) < 0)
+                return -errno;
+
         rtnl->sockaddr.nl.nl_groups = groups;
 
         addrlen = sizeof(rtnl->sockaddr);