Commit 070a4b8e by Serge Hallyn

lxc-user-nic: specify config and db files in autoconf

parent 20ab58c7
...@@ -189,6 +189,18 @@ AC_ARG_WITH([global-conf], ...@@ -189,6 +189,18 @@ AC_ARG_WITH([global-conf],
[global lxc configuration file] [global lxc configuration file]
)], [], [with_global_conf=['${sysconfdir}/lxc/lxc.conf']]) )], [], [with_global_conf=['${sysconfdir}/lxc/lxc.conf']])
AC_ARG_WITH([usernic-conf],
[AC_HELP_STRING(
[--with-usernic-conf],
[user network interface configuration file]
)], [], [with_usernic_conf=['${sysconfdir}/lxc/lxc-usernet']])
AC_ARG_WITH([usernic-db],
[AC_HELP_STRING(
[--with-usernic-db],
[lxc user nic database]
)], [], [with_usernic_db=['/run/lxc/nics']])
# Rootfs path, where the container mount structure is assembled # Rootfs path, where the container mount structure is assembled
AC_ARG_WITH([rootfs-path], AC_ARG_WITH([rootfs-path],
[AC_HELP_STRING( [AC_HELP_STRING(
...@@ -231,6 +243,8 @@ AS_AC_EXPAND(LXC_DISTRO_CONF, "$distroconf") ...@@ -231,6 +243,8 @@ AS_AC_EXPAND(LXC_DISTRO_CONF, "$distroconf")
AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)") AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
AS_AC_EXPAND(LXCPATH, "$with_config_path") AS_AC_EXPAND(LXCPATH, "$with_config_path")
AS_AC_EXPAND(LXC_GLOBAL_CONF, "$with_global_conf") AS_AC_EXPAND(LXC_GLOBAL_CONF, "$with_global_conf")
AS_AC_EXPAND(LXC_USERNIC_CONF, "$with_usernic_conf")
AS_AC_EXPAND(LXC_USERNIC_DB, "$with_usernic_db")
AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path") AS_AC_EXPAND(LXCROOTFSMOUNT, "$with_rootfs_path")
AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates") AS_AC_EXPAND(LXCTEMPLATEDIR, "$datadir/lxc/templates")
AS_AC_EXPAND(LXCHOOKDIR, "$datadir/lxc/hooks") AS_AC_EXPAND(LXCHOOKDIR, "$datadir/lxc/hooks")
......
...@@ -95,7 +95,9 @@ AM_CFLAGS=-I$(top_srcdir)/src \ ...@@ -95,7 +95,9 @@ AM_CFLAGS=-I$(top_srcdir)/src \
-DLXCINITDIR=\"$(LXCINITDIR)\" \ -DLXCINITDIR=\"$(LXCINITDIR)\" \
-DLXCTEMPLATEDIR=\"$(LXCTEMPLATEDIR)\" \ -DLXCTEMPLATEDIR=\"$(LXCTEMPLATEDIR)\" \
-DLOGPATH=\"$(LOGPATH)\" \ -DLOGPATH=\"$(LOGPATH)\" \
-DLXC_DEFAULT_CONFIG=\"$(LXC_DEFAULT_CONFIG)\" -DLXC_DEFAULT_CONFIG=\"$(LXC_DEFAULT_CONFIG)\" \
-DLXC_USERNIC_DB=\"$(LXC_USERNIC_DB)\" \
-DLXC_USERNIC_CONF=\"$(LXC_USERNIC_CONF)\"
if ENABLE_APPARMOR if ENABLE_APPARMOR
AM_CFLAGS += -DHAVE_APPARMOR AM_CFLAGS += -DHAVE_APPARMOR
......
...@@ -45,9 +45,8 @@ ...@@ -45,9 +45,8 @@
#define CONF_FILE "/tmp/lxc-usernet" #define CONF_FILE "/tmp/lxc-usernet"
#define DB_FILE "/tmp/nics" #define DB_FILE "/tmp/nics"
#else #else
/* TODO These should be set through configure.ac */ #define CONF_FILE LXC_USERNIC_CONF
#define CONF_FILE "/etc/lxc/lxc-usernet" #define DB_FILE LXC_USERNIC_DB
#define DB_FILE "/var/lib/lxc/nics"
#endif #endif
...@@ -87,7 +86,7 @@ ...@@ -87,7 +86,7 @@
void usage(char *me, bool fail) void usage(char *me, bool fail)
{ {
printf("Usage: %s pid type bridge\n", me); fprintf(stderr, "Usage: %s pid type bridge\n", me);
exit(fail ? 1 : 0); exit(fail ? 1 : 0);
} }
...@@ -716,6 +715,27 @@ bool get_nic_if_avail(int fd, char *me, char *pid, char *intype, char *br, int a ...@@ -716,6 +715,27 @@ bool get_nic_if_avail(int fd, char *me, char *pid, char *intype, char *br, int a
return true; return true;
} }
bool create_db_dir(char *fnam)
{
char *p = alloca(strlen(fnam)+1);
strcpy(p, fnam);
fnam = p;
p = p + 1;
again:
while (*p && *p != '/') p++;
if (!*p)
return true;
*p = '\0';
if (mkdir(fnam, 0755) && errno != EEXIST) {
fprintf(stderr, "failed to create %s\n", fnam);
*p = '/';
return false;
}
*(p++) = '/';
goto again;
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int n, fd; int n, fd;
...@@ -724,15 +744,20 @@ int main(int argc, char *argv[]) ...@@ -724,15 +744,20 @@ int main(int argc, char *argv[])
char *nicname = alloca(40); char *nicname = alloca(40);
if ((me = get_username(&buf)) == NULL) { if ((me = get_username(&buf)) == NULL) {
printf("Failed to get username\n"); fprintf(stderr, "Failed to get username\n");
exit(1); exit(1);
} }
if (argc != 4) if (argc != 4)
usage(argv[0], true); usage(argv[0], true);
if (!create_db_dir(DB_FILE)) {
fprintf(stderr, "Failed to create directory for db file\n");
exit(1);
}
if ((fd = open_and_lock(DB_FILE)) < 0) { if ((fd = open_and_lock(DB_FILE)) < 0) {
printf("Failed to lock %s\n", DB_FILE); fprintf(stderr, "Failed to lock %s\n", DB_FILE);
exit(1); exit(1);
} }
...@@ -741,10 +766,9 @@ int main(int argc, char *argv[]) ...@@ -741,10 +766,9 @@ int main(int argc, char *argv[])
gotone = get_nic_if_avail(fd, me, argv[1], argv[2], argv[3], n, &nicname); gotone = get_nic_if_avail(fd, me, argv[1], argv[2], argv[3], n, &nicname);
close(fd); close(fd);
if (!gotone) { if (!gotone) {
printf("Quota reached\n"); fprintf(stderr, "Quota reached\n");
exit(1); exit(1);
} }
printf("got nic name %s\n", nicname);
// Now create the link // Now create the link
......
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