/* Compat code so unshare and setns can be used with older libcs */
#ifndef UTIL_LINUX_NAMESPACE_H
# define UTIL_LINUX_NAMESPACE_H

# include <sched.h>

# ifndef CLONE_NEWNS
#  define CLONE_NEWNS 0x00020000
# endif
# ifndef CLONE_NEWUTS
#  define CLONE_NEWUTS 0x04000000
# endif
# ifndef CLONE_NEWIPC
#  define CLONE_NEWIPC 0x08000000
# endif
# ifndef CLONE_NEWNET
#  define CLONE_NEWNET 0x40000000
# endif
# ifndef CLONE_NEWUSER
#  define CLONE_NEWUSER 0x10000000
# endif
# ifndef CLONE_NEWPID
#  define CLONE_NEWPID 0x20000000
# endif

# if !defined(HAVE_UNSHARE) || !defined(HAVE_SETNS)
#  include <sys/syscall.h>
# endif

# if !defined(HAVE_UNSHARE) && defined(SYS_unshare)
static inline int unshare(int flags)
{
	return syscall(SYS_unshare, flags);
}
# endif

# if !defined(HAVE_SETNS) && defined(SYS_setns)
static inline int setns(int fd, int nstype)
{
	return syscall(SYS_setns, fd, nstype);
}
# endif

#endif	/* UTIL_LINUX_NAMESPACE_H */
