diff --git a/doc/lxc-ls.sgml.in b/doc/lxc-ls.sgml.in
index 2b2823779..7f55f4f9e 100644
--- a/doc/lxc-ls.sgml.in
+++ b/doc/lxc-ls.sgml.in
@@ -55,6 +55,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
--frozen--running--stopped
+ --defined-f-F format-g groups
@@ -129,6 +130,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+
+
+
+
+ List only defined containers.
+
+
+
+
diff --git a/src/lxc/arguments.h b/src/lxc/arguments.h
index 8ace559fb..d51db4559 100644
--- a/src/lxc/arguments.h
+++ b/src/lxc/arguments.h
@@ -130,6 +130,7 @@ struct lxc_arguments {
bool ls_line;
bool ls_running;
bool ls_stopped;
+ bool ls_defined;
/* lxc-copy */
bool tmpfs;
diff --git a/src/lxc/tools/lxc_ls.c b/src/lxc/tools/lxc_ls.c
index 63053b110..33ba470ad 100644
--- a/src/lxc/tools/lxc_ls.c
+++ b/src/lxc/tools/lxc_ls.c
@@ -53,6 +53,7 @@ lxc_log_define(lxc_ls, lxc);
#define LS_RUNNING 4
#define LS_NESTING 5
#define LS_FILTER 6
+#define LS_DEFINED 7
#ifndef SOCK_CLOEXEC
# define SOCK_CLOEXEC 02000000
@@ -167,6 +168,7 @@ static const struct option my_longopts[] = {
{"running", no_argument, 0, LS_RUNNING},
{"frozen", no_argument, 0, LS_FROZEN},
{"stopped", no_argument, 0, LS_STOPPED},
+ {"defined", no_argument, 0, LS_DEFINED},
{"nesting", optional_argument, 0, LS_NESTING},
{"groups", required_argument, 0, 'g'},
{"filter", required_argument, 0, LS_FILTER},
@@ -192,6 +194,7 @@ Options :\n\
--running list only running containers\n\
--frozen list only frozen containers\n\
--stopped list only stopped containers\n\
+ --defined list only defined containers\n\
--nesting=NUM list nested containers up to NUM (default is 5) levels of nesting\n\
--filter=REGEX filter container names by regular expression\n\
-g --groups comma separated list of groups a container must have to be displayed\n",
@@ -395,8 +398,9 @@ static int ls_get(struct ls **m, size_t *size, const struct lxc_arguments *args,
else if (!c)
continue;
- if (!c->is_defined(c))
+ if (args->ls_defined && !c->is_defined(c)){
goto put_and_next;
+ }
/* This does not allocate memory so no worries about freeing it
* when we goto next or out. */
@@ -928,6 +932,9 @@ static int my_parser(struct lxc_arguments *args, int c, char *arg)
case LS_STOPPED:
args->ls_stopped = true;
break;
+ case LS_DEFINED:
+ args->ls_defined = true;
+ break;
case LS_NESTING:
/* In case strtoul() receives a string that represents a
* negative number it will return ULONG_MAX - the number that