Dan Smith <danms@xxxxxxxxxx> wrote: > JM> Please remove the #ifdef. Simply arrange for CLONE_NEWNET to be 0 > JM> when HAVE_NETNS is not defined. Then you can use it without the > JM> ugly #ifdef. > > So what happens if CLONE_NEWNET is present on the system (and > supported by the kernel) but the 'ip' binary doesn't support it? > Unless we #undef CLONE_NEWNET, you would create a new network > namespace and not be able to move anything into it. Would that be > your preference? My suggestion was to eliminate the in-function #ifdef without changing semantics, by adding something like this outside the function: #ifndef HAVE_NETNS # undef CLONE_NEWNET # define CLONE_NEWNET 0 #endif ... int flags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS|CLONE_NEWUSER| CLONE_NEWNET|CLONE_NEWIPC|SIGCHLD; That will work just like the original code. ... >>> + /* check this rc */ >>> + >>> rc = lxcStartContainer(conn, driver, vm); >>> + >>> +#ifdef HAVE_NETNS > > JM> BTW, what's the point of saving return value in "rc" if the very > JM> next statement is going to overwrite that value? Either test it, > JM> or add a comment saying why it's ok to ignore failure, in which > JM> case don't clobber the previous value. > > I think the comment above that code is supposed justify it :) The way I read it, "check this rc" sounds like it must be a TODO or FIXME item, because that particular "rc" value is the one that's being clobbered. > I'll just fix up the checking instead and remove the comment. Thanks. -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list