]> git.proxmox.com Git - mirror_lxc.git/commitdiff
lxc-user-nic: specify config and db files in autoconf
authorSerge Hallyn <serge.hallyn@ubuntu.com>
Sat, 10 Aug 2013 02:08:28 +0000 (21:08 -0500)
committerSerge Hallyn <serge.hallyn@ubuntu.com>
Wed, 14 Aug 2013 15:50:46 +0000 (10:50 -0500)
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
configure.ac
src/lxc/Makefile.am
src/lxc/lxc_user_nic.c

index 1131f8bfcd969657868b5d128fbf50904910e86c..cdf529041d7457cf8f4ad74d46a4e9c999fdd576 100644 (file)
@@ -189,6 +189,18 @@ AC_ARG_WITH([global-conf],
                [global lxc configuration file]
        )], [], [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
 AC_ARG_WITH([rootfs-path],
        [AC_HELP_STRING(
@@ -231,6 +243,8 @@ AS_AC_EXPAND(LXC_DISTRO_CONF, "$distroconf")
 AS_AC_EXPAND(LXC_GENERATE_DATE, "$(date)")
 AS_AC_EXPAND(LXCPATH, "$with_config_path")
 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(LXCTEMPLATEDIR, "$datadir/lxc/templates")
 AS_AC_EXPAND(LXCHOOKDIR, "$datadir/lxc/hooks")
index 611917c0b267c9d578b5cb785c72ed3941dd914d..9d6b5b4f41ac6e1769e5f8ef7498c1991df6895e 100644 (file)
@@ -95,7 +95,9 @@ AM_CFLAGS=-I$(top_srcdir)/src \
        -DLXCINITDIR=\"$(LXCINITDIR)\" \
        -DLXCTEMPLATEDIR=\"$(LXCTEMPLATEDIR)\" \
        -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
 AM_CFLAGS += -DHAVE_APPARMOR
index 757e0269de9529ff1f2f60bfaa7eddbbfcd8d826..26bae54226882c2d6b396a8c6ac7f0f7b4419a0e 100644 (file)
@@ -45,9 +45,8 @@
 #define CONF_FILE "/tmp/lxc-usernet"
 #define DB_FILE "/tmp/nics"
 #else
-/* TODO These should be set through configure.ac */
-#define CONF_FILE "/etc/lxc/lxc-usernet"
-#define DB_FILE "/var/lib/lxc/nics"
+#define CONF_FILE LXC_USERNIC_CONF
+#define DB_FILE LXC_USERNIC_DB
 #endif
 
 
@@ -87,7 +86,7 @@
 
 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);
 }
 
@@ -716,6 +715,27 @@ bool get_nic_if_avail(int fd, char *me, char *pid, char *intype, char *br, int a
        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 n, fd;
@@ -724,15 +744,20 @@ int main(int argc, char *argv[])
        char *nicname = alloca(40);
 
        if ((me = get_username(&buf)) == NULL) {
-               printf("Failed to get username\n");
+               fprintf(stderr, "Failed to get username\n");
                exit(1);
        }
 
        if (argc != 4)
                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) {
-               printf("Failed to lock %s\n", DB_FILE);
+               fprintf(stderr, "Failed to lock %s\n", DB_FILE);
                exit(1);
        }
 
@@ -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);
        close(fd);
        if (!gotone) {
-               printf("Quota reached\n");
+               fprintf(stderr, "Quota reached\n");
                exit(1);
        }
-       printf("got nic name %s\n", nicname);
 
        // Now create the link