1 /* SPDX-License-Identifier: LGPL-2.1-or-later */ 2 #pragma once 3 4 #include "missing_sched.h" 5 6 /* The combination of all namespace flags defined by the kernel. The right type for this isn't clear. setns() and 7 * unshare() expect these flags to be passed as (signed) "int", while clone() wants them as "unsigned long". The latter 8 * is definitely more appropriate for a flags parameter, and also the larger type of the two, hence let's stick to that 9 * here. */ 10 #define NAMESPACE_FLAGS_ALL \ 11 ((unsigned long) (CLONE_NEWCGROUP| \ 12 CLONE_NEWIPC| \ 13 CLONE_NEWNET| \ 14 CLONE_NEWNS| \ 15 CLONE_NEWPID| \ 16 CLONE_NEWUSER| \ 17 CLONE_NEWUTS)) 18 19 #define NAMESPACE_FLAGS_INITIAL ULONG_MAX 20 21 int namespace_flags_from_string(const char *name, unsigned long *ret); 22 int namespace_flags_to_string(unsigned long flags, char **ret); 23 const char *namespace_single_flag_to_string(unsigned long flag); 24 25 struct namespace_flag_map { 26 unsigned long flag; 27 const char *name; 28 }; 29 30 extern const struct namespace_flag_map namespace_flag_map[]; 31