Index: trunk/Ohana/src/opihi/pcontrol/HostOps.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 17476)
+++ trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 18098)
@@ -1,3 +1,5 @@
 # include "pcontrol.h"
+
+Stack *HostPool_AllHosts;  // virtual pool for user status queries
 
 Stack *HostPool_Idle; // these hosts are waiting for something to do
@@ -9,4 +11,6 @@
 
 void InitHostStacks () {
+  HostPool_AllHosts = InitStack ();
+
   HostPool_Idle = InitStack ();
   HostPool_Busy = InitStack ();
@@ -26,4 +30,7 @@
 
 void FreeHostStacks () {
+  // AllHosts is a virtual stack : all hosts are references
+  FreeStack (HostPool_AllHosts);
+
   FreeHostStack (HostPool_Idle);
   FreeHostStack (HostPool_Busy);
@@ -36,4 +43,5 @@
 char *GetHostStackName (int StackID) {
   switch (StackID) {
+    case PCONTROL_HOST_ALLHOSTS: return ("ALLHOSTS");
     case PCONTROL_HOST_IDLE: return ("IDLE");
     case PCONTROL_HOST_DOWN: return ("DOWN");
@@ -50,4 +58,5 @@
 Stack *GetHostStack (int StackID) {
   switch (StackID) {
+    case PCONTROL_HOST_ALLHOSTS: return (HostPool_AllHosts);
     case PCONTROL_HOST_IDLE: return (HostPool_Idle);
     case PCONTROL_HOST_DOWN: return (HostPool_Down);
@@ -63,4 +72,5 @@
 
 Stack *GetHostStackByName (char *name) {
+  if (!strcasecmp (name, "all")) return (HostPool_AllHosts);
   if (!strcasecmp (name, "idle")) return (HostPool_Idle);
   if (!strcasecmp (name, "down")) return (HostPool_Down);
@@ -202,4 +212,6 @@
   host[0].markoff  = FALSE;
   host[0].job      = NULL;
+
+  PutHost (host, PCONTROL_HOST_ALLHOSTS, STACK_BOTTOM);
   PutHost (host, PCONTROL_HOST_DOWN, STACK_BOTTOM);
   return (host[0].HostID);
@@ -207,4 +219,10 @@
 
 void DelHost (Host *host) {
+
+  Host *copy;
+
+  copy = PullStackByID (HostPool_AllHosts, host[0].HostID);
+  ASSERT (copy == host, "programming error: ALLHOSTS entry does not match");
+
   FreeIOBuffer (&host[0].comms_buffer);
   FREE (host[0].hostname);
