24 #ifndef LXCPP_CONTAINER_HPP
25 #define LXCPP_CONTAINER_HPP
32 #include <sys/types.h>
46 const std::vector<InetAddr>
addrs;
65 virtual const std::string&
getName()
const = 0;
67 virtual void setHostName(
const std::string& hostname) = 0;
72 virtual const std::vector<std::string>&
getInit() = 0;
73 virtual void setInit(
const std::vector<std::string> &init) = 0;
77 const std::string &arg =
"") = 0;
81 virtual void addUIDMap(
unsigned min,
unsigned max,
unsigned num) = 0;
82 virtual void addGIDMap(
unsigned min,
unsigned max,
unsigned num) = 0;
87 virtual void start() = 0;
88 virtual void stop() = 0;
103 virtual int attach(
const std::vector<std::string>& argv,
106 const std::string& ttyPath,
107 const std::vector<gid_t>& supplementaryGids,
108 const int capsToKeep,
109 const std::string& workDirInContainer,
110 const std::vector<std::string>& envToKeep,
111 const std::vector<std::pair<std::string, std::string>>& envToSet) = 0;
118 const std::string& zoneif,
120 const std::vector<InetAddr>& addrs,
130 const std::string& zoneif,
144 const std::string& path,
146 const int32_t mode) = 0;
151 const std::string& target,
152 const std::string& type,
154 const std::string&
data) = 0;
158 virtual void declareLink(
const std::string& source,
159 const std::string& target) = 0;
166 virtual void addSubsystem(
const std::string& name,
const std::string& path) = 0;
167 virtual void addCGroup(
const std::string& subsys,
168 const std::string& grpname,
169 const std::vector<CGroupParam>& comm,
170 const std::vector<CGroupParam>& params) = 0;
175 virtual void setEnv(
const std::vector<std::pair<std::string, std::string>>& variables) = 0;
180 virtual void setCaps(
const int caps) = 0;
185 virtual void setSystemProperty(
const std::string& name,
const std::string& value) = 0;
190 virtual void setRlimit(
const std::string& type,
const uint64_t hard,
const uint64_t soft) = 0;
202 virtual void setUser(
const int uid,
const int gid,
const std::vector<int> additionalGids) = 0;
207 virtual void addDevice(
const std::string& path,
211 const std::string& permissions,
212 const uint32_t fileMode,
214 const uint32_t gid) = 0;
219 virtual void addHook(
const std::string& type,
220 const std::vector<std::string>& hook,
221 const std::vector<std::pair<std::string, std::string>>& env) = 0;
227 #endif // LXCPP_CONTAINER_HPP
virtual void setHostName(const std::string &hostname)=0
virtual void addInetAddr(const std::string &ifname, const InetAddr &addr)=0
virtual void start()=0
Execution actions.
const NetStatus status
Definition: container.hpp:42
virtual void setDownInterface(const std::string &ifname)=0
std::function< void(void)> Callback
Definition: container.hpp:51
const std::vector< InetAddr > addrs
Definition: container.hpp:46
Provision configuration items.
Definition: provision-config.hpp:43
virtual pid_t getInitPid() const =0
virtual void declareFile(const provision::File::Type type, const std::string &path, const int32_t flags, const int32_t mode)=0
Provisioning.
virtual void setLogger(const logger::LogType type, const logger::LogLevel level, const std::string &arg="")=0
virtual void moveInterface(const std::string &ifname)=0
Type
Definition: provision-config.hpp:45
Unified ip address.
Definition: network.hpp:56
virtual void removeLink(const provision::Link &item)=0
Definition: container.hpp:49
virtual void addUIDMap(unsigned min, unsigned max, unsigned num)=0
virtual void addGIDMap(unsigned min, unsigned max, unsigned num)=0
virtual const std::string & getName() const =0
Configuration.
Definition: provision-config.hpp:115
virtual void removeFile(const provision::File &item)=0
virtual void setNamespaces(const int namespaces)=0
Namespaces TODO Needed to implement application container.
const int mtu
Definition: container.hpp:44
std::vector< provision::Mount > MountVector
Definition: provision-config.hpp:139
Definition: provision-config.hpp:81
const int flags
Definition: container.hpp:45
Definition: container.hpp:40
virtual void addInetConfig(const std::string &ifname, const InetAddr &addr)=0
virtual void removeMount(const provision::Mount &item)=0
virtual void addHook(const std::string &type, const std::vector< std::string > &hook, const std::vector< std::pair< std::string, std::string >> &env)=0
Hooks.
char data[368]
Definition: initctl.cpp:41
LogLevel
Available log levels.
Definition: level.hpp:36
virtual void setCaps(const int caps)=0
Linux capabilities.
virtual State getState()=0
States.
virtual void destroyInterface(const std::string &ifname)=0
virtual ~Container()
Definition: container.hpp:60
std::vector< provision::File > FileVector
Definition: provision-config.hpp:138
Network configuration classes.
State
Definition: container.hpp:53
virtual void setUpInterface(const std::string &ifname)=0
virtual void setTerminalCount(const unsigned int count)=0
virtual void setEnv(const std::vector< std::pair< std::string, std::string >> &variables)=0
Environment variables.
virtual void setSystemProperty(const std::string &name, const std::string &value)=0
System Property (sysctl)
virtual const MountVector & getMounts() const =0
virtual void addInterfaceConfig(const std::string &hostif, const std::string &zoneif, InterfaceType type, const std::vector< InetAddr > &addrs, MacVLanMode mode=MacVLanMode::PRIVATE)=0
Network interfaces setup/config.
virtual const FileVector & getFiles() const =0
virtual std::vector< std::string > getInterfaces() const =0
Network interfaces (runtime)
virtual void addDevice(const std::string &path, const char type, const int64_t major, const int64_t minor, const std::string &permissions, const uint32_t fileMode, const uint32_t uid, const uint32_t gid)=0
Device.
virtual void setUser(const int uid, const int gid, const std::vector< int > additionalGids)=0
UID/GIDS TODO Needed to implement application container.
virtual void setRlimit(const std::string &type, const uint64_t hard, const uint64_t soft)=0
Rlimit.
virtual NetworkInterfaceInfo getInterfaceInfo(const std::string &ifname) const =0
Provisioning configuration.
NetStatus
Definition: network.hpp:195
virtual const std::string & getRootPath() const =0
virtual void setStoppedCallback(const Callback &callback)=0
virtual pid_t getGuardPid() const =0
virtual void setInit(const std::vector< std::string > &init)=0
virtual const LinkVector & getLinks() const =0
virtual void declareMount(const std::string &source, const std::string &target, const std::string &type, const int64_t flags, const std::string &data)=0
virtual int attach(const std::vector< std::string > &argv, const uid_t uid, const gid_t gid, const std::string &ttyPath, const std::vector< gid_t > &supplementaryGids, const int capsToKeep, const std::string &workDirInContainer, const std::vector< std::string > &envToKeep, const std::vector< std::pair< std::string, std::string >> &envToSet)=0
Other.
MacVLanMode
Suported MacVLan modes.
Definition: network.hpp:188
virtual void setStartedCallback(const Callback &callback)=0
virtual void delInetAddr(const std::string &ifname, const InetAddr &addr)=0
LogType
Definition: logger.hpp:82
Control-groups configuration.
virtual void addSubsystem(const std::string &name, const std::string &path)=0
CGroups.
virtual void addCGroup(const std::string &subsys, const std::string &grpname, const std::vector< CGroupParam > &comm, const std::vector< CGroupParam > ¶ms)=0
const std::string ifname
Definition: container.hpp:41
virtual void declareLink(const std::string &source, const std::string &target)=0
virtual void createInterface(const std::string &hostif, const std::string &zoneif, InterfaceType type, MacVLanMode mode)=0
virtual void unfreeze()=0
virtual const std::vector< std::string > & getInit()=0
const std::string macaddr
Definition: container.hpp:43
InterfaceType
Created interface type.
Definition: network.hpp:179
std::vector< provision::Link > LinkVector
Definition: provision-config.hpp:140