24 #ifndef LXCPP_CONTAINER_IMPL_HPP
25 #define LXCPP_CONTAINER_IMPL_HPP
27 #include <sys/types.h>
46 const std::string &rootPath,
47 const std::string &workPath);
51 const std::string&
getName()
const;
58 const std::vector<std::string>&
getInit();
59 void setInit(
const std::vector<std::string> &init);
63 const std::string &arg);
67 void addUIDMap(
unsigned min,
unsigned max,
unsigned num);
68 void addGIDMap(
unsigned min,
unsigned max,
unsigned num);
83 int attach(
const std::vector<std::string>& argv,
86 const std::string& ttyPath,
87 const std::vector<gid_t>& supplementaryGids,
89 const std::string& workDirInContainer,
90 const std::vector<std::string>& envToKeep,
91 const std::vector<std::pair<std::string, std::string>>& envToSet);
100 const std::string& zoneif,
102 const std::vector<InetAddr>& addrs,
110 const std::string& zoneif,
122 const std::string& path,
129 const std::string& target,
130 const std::string& type,
132 const std::string&
data);
137 const std::string& target);
142 void addSubsystem(
const std::string& name,
const std::string& path);
143 void addCGroup(
const std::string& subsys,
144 const std::string& grpname,
145 const std::vector<CGroupParam>& comm,
146 const std::vector<CGroupParam>& params);
149 void setEnv(
const std::vector<std::pair<std::string, std::string>>& variables);
158 void setRlimit(
const std::string& type,
const uint64_t hard,
const uint64_t soft);
164 void setUser(
const int uid,
const int gid,
const std::vector<int> additionalGids);
171 const std::string& permissions,
172 const uint32_t fileMode,
177 void addHook(
const std::string& type,
178 const std::vector<std::string>& hook,
179 const std::vector<std::pair<std::string, std::string>>& env);
183 typedef std::unique_lock<std::mutex>
Lock;
205 std::shared_ptr<api::Void>&,
215 std::shared_ptr<api::ExitStatus>& data,
221 #endif // LXCPP_CONTAINER_IMPL_HPP
const LinkVector & getLinks() const
Definition: container-impl.cpp:620
const std::string & getRootPath() const
Definition: container-impl.cpp:132
std::shared_ptr< ContainerConfig > mConfig
Definition: container-impl.hpp:186
pid_t getInitPid() const
Definition: container-impl.cpp:180
std::shared_ptr< MethodResult > Pointer
Definition: method-result.hpp:47
std::function< void(void)> Callback
Definition: container.hpp:51
void setHostName(const std::string &hostname)
Definition: container-impl.cpp:140
Will dispatch poll events in a newly created thread.
Definition: thread-dispatcher.hpp:41
std::string PeerID
Definition: types.hpp:45
void setCaps(const int caps)
Linux capabilities.
Definition: container-impl.cpp:661
Provision configuration items.
Definition: provision-config.hpp:43
void addHook(const std::string &type, const std::vector< std::string > &hook, const std::vector< std::pair< std::string, std::string >> &env)
Hooks.
Definition: container-impl.cpp:698
process handling routines
void setInit(const std::vector< std::string > &init)
Definition: container-impl.cpp:152
void delInetAddr(const std::string &ifname, const InetAddr &addr)
Definition: container-impl.cpp:524
Type
Definition: provision-config.hpp:45
void addCGroup(const std::string &subsys, const std::string &grpname, const std::vector< CGroupParam > &comm, const std::vector< CGroupParam > ¶ms)
Definition: container-impl.cpp:646
const FileVector & getFiles() const
Definition: container-impl.cpp:549
void setRlimit(const std::string &type, const uint64_t hard, const uint64_t soft)
Rlimit.
Definition: container-impl.cpp:671
Unified ip address.
Definition: network.hpp:56
cargo::ipc::epoll::ThreadDispatcher mDispatcher
Definition: container-impl.hpp:188
void onWorkFileEvent(const std::string &name, const uint32_t mask)
Definition: container-impl.cpp:110
void setEnv(const std::vector< std::pair< std::string, std::string >> &variables)
Environment variables.
Definition: container-impl.cpp:656
Definition: container.hpp:49
std::vector< std::string > getInterfaces() const
Network interfaces (runtime)
Definition: container-impl.cpp:438
Definition: container-impl.hpp:43
IPC messages declaration.
void declareMount(const std::string &source, const std::string &target, const std::string &type, const int64_t flags, const std::string &data)
Definition: container-impl.cpp:568
Definition: provision-config.hpp:115
std::unique_lock< std::mutex > Lock
Definition: container-impl.hpp:183
NetworkInterfaceInfo getInterfaceInfo(const std::string &ifname) const
Definition: container-impl.cpp:445
void moveInterface(const std::string &ifname)
Definition: container-impl.cpp:492
utils::Inotify mInotify
Definition: container-impl.hpp:191
void unfreeze()
Definition: container-impl.cpp:340
void removeLink(const provision::Link &item)
Definition: container-impl.cpp:627
std::vector< provision::Mount > MountVector
Definition: provision-config.hpp:139
Definition: provision-config.hpp:81
void setNamespaces(const int namespaces)
Namespaces TODO Needed to implement application container.
Definition: container-impl.cpp:676
void freeze()
Definition: container-impl.cpp:332
Definition: container.hpp:40
void setSystemProperty(const std::string &name, const std::string &value)
System Property (sysctl)
Definition: container-impl.cpp:666
Container::Callback mStoppedCallback
Definition: container-impl.hpp:195
const std::string & getName() const
Configuration.
Definition: container-impl.cpp:125
void removeMount(const provision::Mount &item)
Definition: container-impl.cpp:593
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)
Device.
Definition: container-impl.cpp:686
char data[368]
Definition: initctl.cpp:41
LogLevel
Available log levels.
Definition: level.hpp:36
void setStartedCallback(const Container::Callback &callback)
Definition: container-impl.cpp:362
~ContainerImpl()
Definition: container-impl.cpp:100
void addInterfaceConfig(const std::string &hostif, const std::string &zoneif, InterfaceType type, const std::vector< InetAddr > &addrs, MacVLanMode mode)
adds interface configration.
Definition: container-impl.cpp:419
std::mutex mStateMutex
Definition: container-impl.hpp:184
std::vector< provision::File > FileVector
Definition: provision-config.hpp:138
void setUpInterface(const std::string &ifname)
Definition: container-impl.cpp:500
const MountVector & getMounts() const
Definition: container-impl.cpp:586
State
Definition: container.hpp:53
bool onInitStopped(const cargo::ipc::PeerID, std::shared_ptr< api::ExitStatus > &data, cargo::ipc::MethodResult::Pointer)
Guards tells that Init exited with some status.
Definition: container-impl.cpp:313
void createInterface(const std::string &hostif, const std::string &zoneif, InterfaceType type, MacVLanMode mode)
Definition: container-impl.cpp:473
void declareLink(const std::string &source, const std::string &target)
Definition: container-impl.cpp:605
void destroyInterface(const std::string &ifname)
Definition: container-impl.cpp:484
void addUIDMap(unsigned min, unsigned max, unsigned num)
Definition: container-impl.cpp:209
void addGIDMap(unsigned min, unsigned max, unsigned num)
Definition: container-impl.cpp:224
pid_t getGuardPid() const
Definition: container-impl.cpp:173
bool onGuardReady(const cargo::ipc::PeerID, std::shared_ptr< api::Void > &, cargo::ipc::MethodResult::Pointer)
Guards tells that it's ready to receive commands.
Definition: container-impl.cpp:256
Container::Callback mStartedCallback
Definition: container-impl.hpp:194
Inotify monitors a directory and when a specified file or folder is created or deleted it calls a cor...
Definition: inotify.hpp:43
void setUser(const int uid, const int gid, const std::vector< int > additionalGids)
UID/GIDS TODO Needed to implement application container.
Definition: container-impl.cpp:681
void setStoppedCallback(const Container::Callback &callback)
Definition: container-impl.cpp:369
void addSubsystem(const std::string &name, const std::string &path)
CGroups.
Definition: container-impl.cpp:639
void setDownInterface(const std::string &ifname)
Definition: container-impl.cpp:508
void console()
Definition: container-impl.cpp:411
void addInetAddr(const std::string &ifname, const InetAddr &addr)
Definition: container-impl.cpp:516
void removeFile(const provision::File &item)
Definition: container-impl.cpp:556
MacVLanMode
Suported MacVLan modes.
Definition: network.hpp:188
ContainerImpl(const std::string &name, const std::string &rootPath, const std::string &workPath)
Definition: container-impl.cpp:55
void stop()
Definition: container-impl.cpp:296
LogType
Definition: logger.hpp:82
Container::State getState()
States.
Definition: container-impl.cpp:355
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)
Other.
Definition: container-impl.cpp:376
void reboot()
Definition: container-impl.cpp:347
InterfaceType
Created interface type.
Definition: network.hpp:179
void declareFile(const provision::File::Type type, const std::string &path, const int32_t flags, const int32_t mode)
Provisioning.
Definition: container-impl.cpp:532
void setLogger(const logger::LogType type, const logger::LogLevel level, const std::string &arg)
Definition: container-impl.cpp:187
void setTerminalCount(const unsigned int count)
Definition: container-impl.cpp:196
void start()
Execution actions.
Definition: container-impl.cpp:239
A definition of a ContainerConfig struct.
std::shared_ptr< cargo::ipc::Client > mClient
Definition: container-impl.hpp:190
const std::vector< std::string > & getInit()
Definition: container-impl.cpp:145
void addInetConfig(const std::string &ifname, const InetAddr &addr)
Definition: container-impl.cpp:431
std::vector< provision::Link > LinkVector
Definition: provision-config.hpp:140