• D
    Introduce an LXC specific public API & library · 3d1596b0
    Daniel P. Berrange 提交于
    This patch introduces support for LXC specific public APIs. In
    common with what was done for QEMU, this creates a libvirt_lxc.so
    library and libvirt/libvirt-lxc.h header file.
    
    The actual APIs are
    
      int virDomainLxcOpenNamespace(virDomainPtr domain,
                                    int **fdlist,
                                    unsigned int flags);
    
      int virDomainLxcEnterNamespace(virDomainPtr domain,
                                     unsigned int nfdlist,
                                     int *fdlist,
                                     unsigned int *noldfdlist,
                                     int **oldfdlist,
                                     unsigned int flags);
    
    which provide a way to use the setns() system call to move the
    calling process into the container's namespace. It is not
    practical to write in a generically applicable manner. The
    nearest that we could get to such an API would be an API which
    allows to pass a command + argv to be executed inside a
    container. Even if we had such a generic API, this LXC specific
    API is still useful, because it allows the caller to maintain
    the current process context, in particular any I/O streams they
    have open.
    
    NB the virDomainLxcEnterNamespace() API is special in that it
    runs client side, so does not involve the internal driver API.
    Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    3d1596b0
lxc_driver.c 133.5 KB