int netns_fd,
int userns_fd,
int root_fd,
+ bool delegated,
PidRef *ret) {
_cleanup_(pidref_done_sigkill_wait) PidRef pidref_outer = PIDREF_NULL;
errno_pipe_fd[0] = safe_close(errno_pipe_fd[0]);
- r = namespace_enter(pidns_fd, mntns_fd, netns_fd, userns_fd, root_fd);
+ if (delegated)
+ r = namespace_enter_delegated(userns_fd, pidns_fd, mntns_fd, netns_fd, root_fd);
+ else
+ r = namespace_enter(pidns_fd, mntns_fd, netns_fd, userns_fd, root_fd);
if (r < 0) {
log_full_errno(prio, r, "Failed to join namespace: %m");
report_errno_and_exit(errno_pipe_fd[1], r);
int netns_fd,
int userns_fd,
int root_fd,
+ bool delegated,
PidRef *ret);
static inline int namespace_fork(
PidRef *ret) {
return namespace_fork_full(outer_name, inner_name, NULL, 0, flags,
- pidns_fd, mntns_fd, netns_fd, userns_fd, root_fd,
+ pidns_fd, mntns_fd, netns_fd, userns_fd, root_fd, false,
ret);
}