tools: move lxc-device to API symbols only

Closes #2073. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent e3347eef
...@@ -31,7 +31,6 @@ ...@@ -31,7 +31,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <lxc/lxccontainer.h> #include <lxc/lxccontainer.h>
#define TOOL_MAXPATHLEN 4096
struct lxc_arguments; struct lxc_arguments;
typedef int (*lxc_arguments_parser_t)(struct lxc_arguments *, int, char *); typedef int (*lxc_arguments_parser_t)(struct lxc_arguments *, int, char *);
......
/*
* Copyright (c) 1995, 1999
* Berkeley Software Design, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp
*/
#ifndef _IFADDRS_H_
#define _IFADDRS_H_
struct ifaddrs {
struct ifaddrs *ifa_next;
char *ifa_name;
unsigned int ifa_flags;
struct sockaddr *ifa_addr;
struct sockaddr *ifa_netmask;
struct sockaddr *ifa_dstaddr;
void *ifa_data;
};
/*
* This may have been defined in <net/if.h>. Note that if <net/if.h> is
* to be included it must be included before this header file.
*/
#ifndef ifa_broadaddr
#define ifa_broadaddr ifa_dstaddr /* broadcast address interface */
#endif
#include <sys/cdefs.h>
__BEGIN_DECLS
extern int getifaddrs(struct ifaddrs **ifap);
extern void freeifaddrs(struct ifaddrs *ifa);
__END_DECLS
#endif
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <lxc/lxccontainer.h> #include <lxc/lxccontainer.h>
#include "arguments.h" #include "arguments.h"
#include "tool_utils.h"
static int my_checker(const struct lxc_arguments* args) static int my_checker(const struct lxc_arguments* args)
{ {
......
...@@ -18,25 +18,24 @@ ...@@ -18,25 +18,24 @@
* License along with this library; if not, write to the Free Software * License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#define _GNU_SOURCE
#include <libgen.h>
#include <limits.h>
#include <stdio.h> #include <stdio.h>
#include <string.h>
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <libgen.h>
#include <string.h>
#include <limits.h>
#include <lxc/lxccontainer.h> #include <lxc/lxccontainer.h>
#include "utils.h"
#include "lxc.h"
#include "log.h"
#include "arguments.h" #include "arguments.h"
#include "tool_utils.h"
#if HAVE_IFADDRS_H #if HAVE_IFADDRS_H
#include <ifaddrs.h> #include <ifaddrs.h>
#else #else
#include <../include/ifaddrs.h> #include "include/ifaddrs.h"
#endif #endif
static const struct option my_longopts[] = { static const struct option my_longopts[] = {
...@@ -123,7 +122,6 @@ int main(int argc, char *argv[]) ...@@ -123,7 +122,6 @@ int main(int argc, char *argv[])
if (lxc_log_init(&log)) if (lxc_log_init(&log))
goto err; goto err;
lxc_log_options_no_override();
/* REMOVE IN LXC 3.0 */ /* REMOVE IN LXC 3.0 */
setenv("LXC_UPDATE_CONFIG_FORMAT", "1", 0); setenv("LXC_UPDATE_CONFIG_FORMAT", "1", 0);
......
...@@ -21,7 +21,9 @@ ...@@ -21,7 +21,9 @@
#define __STDC_FORMAT_MACROS /* Required for PRIu64 to work. */ #define __STDC_FORMAT_MACROS /* Required for PRIu64 to work. */
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h>
#include <limits.h> #include <limits.h>
#include <sched.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
...@@ -603,3 +605,28 @@ bool file_exists(const char *f) ...@@ -603,3 +605,28 @@ bool file_exists(const char *f)
return stat(f, &statbuf) == 0; return stat(f, &statbuf) == 0;
} }
bool switch_to_ns(pid_t pid, const char *ns) {
int fd, ret;
char nspath[TOOL_MAXPATHLEN];
/* Switch to new ns */
ret = snprintf(nspath, TOOL_MAXPATHLEN, "/proc/%d/ns/%s", pid, ns);
if (ret < 0 || ret >= TOOL_MAXPATHLEN)
return false;
fd = open(nspath, O_RDONLY);
if (fd < 0) {
fprintf(stderr, "Failed to open %s\n", nspath);
return false;
}
ret = setns(fd, 0);
if (ret) {
fprintf(stderr, "Failed to set process %d to %s of %d\n", pid, ns, fd);
close(fd);
return false;
}
close(fd);
return true;
}
...@@ -145,4 +145,6 @@ extern int is_dir(const char *path); ...@@ -145,4 +145,6 @@ extern int is_dir(const char *path);
extern char *get_template_path(const char *t); extern char *get_template_path(const char *t);
extern bool switch_to_ns(pid_t pid, const char *ns);
#endif /* __LXC_UTILS_H */ #endif /* __LXC_UTILS_H */
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