Commit d1673d63 by 2xsec

tools: lxc-unshare: replace converting standard identifiers of namespaces to api

Signed-off-by: 's avatar2xsec <dh48.jeong@samsung.com>
parent 2d33090f
...@@ -244,8 +244,7 @@ static int write_id_mapping(pid_t pid, const char *buf, size_t buf_size) ...@@ -244,8 +244,7 @@ static int write_id_mapping(pid_t pid, const char *buf, size_t buf_size)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
char *del; char **args;
char **it, **args;
int opt; int opt;
int ret; int ret;
char *namespaces = NULL; char *namespaces = NULL;
...@@ -308,31 +307,9 @@ int main(int argc, char *argv[]) ...@@ -308,31 +307,9 @@ int main(int argc, char *argv[])
if (ret) if (ret)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
/* The identifiers for namespaces used with lxc-unshare as given on the if (lxc_namespace_2_std_identifiers(namespaces) < 0)
* manpage do not align with the standard identifiers. This affects
* network, mount, and uts namespaces. The standard identifiers are:
* "mnt", "uts", and "net" whereas lxc-unshare uses "MOUNT", "UTSNAME",
* and "NETWORK". So let's use some cheap memmove()s to replace them by
* their standard identifiers. Let's illustrate this with an example:
* Assume the string:
*
* "IPC|MOUNT|PID"
*
* then we memmove()
*
* dest: del + 1 == OUNT|PID
* src: del + 3 == NT|PID
*/
if (!namespaces)
usage(argv[0]); usage(argv[0]);
while ((del = strstr(namespaces, "MOUNT")))
memmove(del + 1, del + 3, strlen(del) - 2);
for (it = (char *[]){"NETWORK", "UTSNAME", NULL}; it && *it; it++)
while ((del = strstr(namespaces, *it)))
memmove(del + 3, del + 7, strlen(del) - 6);
ret = lxc_fill_namespace_flags(namespaces, &flags); ret = lxc_fill_namespace_flags(namespaces, &flags);
if (ret) if (ret)
usage(argv[0]); usage(argv[0]);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment