]> andersk Git - moira.git/blobdiff - server/queries2.c
Diane Delgado's changes for a fixed table-locking order
[moira.git] / server / queries2.c
index 42b48beccf7cbc33adb82b08975b57b00f99af4d..5e0954add3b942a2b98b5e7b8e5ec444a0f58d39 100644 (file)
@@ -23,6 +23,9 @@ int access_member();
 int access_qgli();
 int access_service();
 int access_filesys();
+int access_host();
+int access_ahal();
+int access_snt();
 
 /* Query Setup Routines */
 int prefetch_value();
@@ -32,6 +35,7 @@ int setup_dusr();
 int setup_spop();
 int setup_dpob();
 int setup_dmac();
+int setup_dsnet();
 int setup_dclu();
 int setup_alis();
 int setup_dlis();
@@ -45,6 +49,9 @@ int setup_dnfp();
 int setup_dqot();
 int setup_sshi();
 int setup_akum();
+int setup_dsnt();
+int setup_ahst();
+int setup_ahal();
 
 /* Query Followup Routines */
 int followup_fix_modby();
@@ -59,6 +66,8 @@ int followup_gqot();
 int followup_gpce();
 int followup_guax();
 int followup_uuac();
+int followup_gsnt();
+int followup_ghst();
 
 int set_modtime();
 int set_modtime_by_id();
@@ -98,6 +107,8 @@ int _sdl_followup();
 
 static char ACE_NAME[] = "ace_name";
 static char ACE_TYPE[] = "ace_type";
+static char ADDRESS[] = "address";
+static char ALIAS[] = "alias";
 static char CLASS[] = "class";
 static char CLU_ID[] = "clu_id";
 static char CLUSTER[] = "cluster";
@@ -108,6 +119,7 @@ static char DIR[] = "dir";
 static char FILESYS[] = "filesys";
 static char FILSYS_ID[] = "filsys_id";
 static char FIRST[] = "firstname";
+static char HOSTACCESS[] = "hostaccess";
 static char LABEL[] = "label";
 static char LAST[] = "lastname";
 static char LIST[] = "list";
@@ -122,18 +134,23 @@ static char MOD1[] = "modtime";
 static char MOD2[] = "modby";
 static char MOD3[] = "modwith";
 static char NAME[] = "name";
+static char PRINTCAP[] = "printcap";
 static char QUOTA[] = "quota";
 static char QUOTA_TYPE[] = "quota_type";
 static char SECURE[] = "secure";
 static char SERVICE[] = "service";
+static char SERVERS[] = "servers";
 static char SHELL[] = "shell";
 static char SIGNATURE[] = "signature";
+static char SNET_ID[] = "snet_id";
+static char SUBNET[] = "subnet";
 static char STATUS[] = "status";
 static char TYPE[] = "type";
 static char USERS[] = "users";
 static char USERS_ID[] = "users_id";
 static char UID[] = "uid";
-
+static char ZEPH[] = "zephyr";
+static char ZEPH_ID[] = "xmt_id";
 
 
 /* VALOBJS
@@ -141,6 +158,14 @@ static char UID[] = "uid";
  * can be shared.
  */
 
+/*
+ * A word about validation objects and locking:  The validation object
+ * for a query should also request locks on behalf of the pre-processing
+ * and post-processing routines.  This helps to ensure that tables are
+ * accessed and locked in the proper order and thus avoids deadlock 
+ * situations
+ */
+
 static struct valobj VOsort0[] = {
   {V_SORT, 0},
 };
@@ -183,14 +208,12 @@ static struct valobj VOwild012sort0[] = {  /* get_alias */
   {V_SORT, 0},
 };
 
-static struct valobj VOdate1[] = {
-  {V_DATE, 1, 0, 0, 0, MR_DATE},
-};
 
 static struct valobj VOuser0[] = {
   {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
 };
 
+
 static struct valobj VOuser0lock[] = {
   {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
@@ -208,23 +231,12 @@ static struct valobj VOlist0[] = {
   {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
 };
 
-static struct valobj VOfilsys0[] = {
-  {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
-};
 
 static struct valobj VOchar0[] = {
   {V_CHAR, 0},
 };
 
-static struct valobj VOsort01[] = {
-  {V_SORT, 1},
-  {V_SORT, 0},
-};
 
-static struct valobj VOuser0sort[] = {
-  {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
-  {V_SORT, 0},
-};
 
 static struct valobj VOfilsys0user1[] = {
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
@@ -239,10 +251,8 @@ static struct valobj VOfilsys0user1[] = {
  */
 
 static struct validate VDmach = { VOmach0, 1 };
-static struct validate VDsort0= { VOsort0, 1 };
 static struct validate VDwild0= { VOwild0, 1 };
 static struct validate VDupwild0= { VOupwild0, 1 };
-static struct validate VDsort2= { VOsort01,2 };
 static struct validate VDwild2sort2 = { VOwild01sort01,4 };
 static struct validate VDwild3sort1 = { VOwild012sort0,4 };
 static struct validate VDsortf = { 
@@ -268,20 +278,10 @@ static struct validate VDwildsortf = {
   0,
   followup_fix_modby,
 };
+static struct validate VDsort0= { VOsort0, 1 };
 
-static struct validate VDwild2sortf = { 
-  VOwild01sort01,
-  4,
-  0,
-  0,
-  0,
-  0,
-  0,
-  0,
-  followup_fix_modby,
-};
 
-static struct validate VDupwildsortf = { 
+static struct validate VDupwildsortf = {
   VOupwild0sort,
   2,
   0,
@@ -292,9 +292,6 @@ static struct validate VDupwildsortf = {
   0,
   followup_fix_modby,
 };
-
-
-\f
 /* Query data */
 
 static char *galo_fields[] = {
@@ -338,6 +335,19 @@ static char *guan_fields[] = {
   MIT_ID, CLASS, COMMENTS, SIGNATURE, SECURE, MOD1, MOD2, MOD3,
 };
 
+static struct validate guan_validate = 
+{
+  VOwild01sort01,
+  4,
+  0,
+  0,
+  0,
+  0,
+  0,
+  0,
+  followup_guax,
+};
+
 static char *guac_fields[] = {
   CLASS,
   LOGIN, UID, SHELL, LAST, FIRST, MIDDLE, STATUS,
@@ -445,15 +455,19 @@ static char *rusr_fields[] = {
     };
 
 static struct valobj rusr_valobj[] = {
+  {V_LOCK, 0, "imembers", 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
   {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE,0,MACH_ID, MR_DEADLOCK},
   {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
-  {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
   {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_LOCK, 0, QUOTA,0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK,0, "serverhosts",0, MACH_ID, MR_DEADLOCK},
 };
 
 static struct validate rusr_validate = {
   rusr_valobj,
-  4,
+  8,
   0,
   0,
   0,
@@ -548,9 +562,20 @@ static char *dusr_fields[] = {
   LOGIN,
 };
 
+struct valobj dusr_valobj[]= {
+  {V_LOCK, 0, "imembers", 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, FILESYS, 0,  FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, HOSTACCESS, 0, MACH_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "krbmap", 0, "users_id", MR_DEADLOCK},
+  {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
+};
 static struct validate dusr_validate = {
-  VOuser0lock,
-  2,
+/*  VOuser0lock, */
+  dusr_valobj,
+  8,
   0,
   0,
   0,
@@ -588,14 +613,16 @@ static char *akum_fields[] = { LOGIN, "kerberos" };
 
 static struct valobj akum_valobj[] =
 {
+  {V_LOCK, 0, "krbmap", 0, "users_id", MR_DEADLOCK},
   {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
   {V_ID, 1, "strings", "string", "string_id", MR_NO_MATCH},
+
 };
 
 static struct validate akum_validate =
 {
   akum_valobj,
-  1,
+  2,
   USERS_ID,
   "users_id = %d or string_id = %d",
   2,
@@ -608,7 +635,7 @@ static struct validate akum_validate =
 static struct validate dkum_validate =
 {
   akum_valobj,
-  2,
+  3,
   USERS_ID,
   "users_id = %d and string_id = %d",
   2,
@@ -677,9 +704,14 @@ static char *gpox_fields[] = {
   LOGIN, TYPE, "box",
 };
 
+struct valobj gpox_valobj[]={
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK}
+};
+
 static struct validate gpox_validate = {
-  0,
-  0,
+  gpox_valobj,
+  2,
   0,
   0,
   0,
@@ -695,6 +727,7 @@ static char *spob_fields[] = {
 
 static struct valobj spob_valobj[] = {
   {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
   {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
   {V_TYPE, 1, "pobox", 0, 0, MR_TYPE},
 };
@@ -702,7 +735,7 @@ static struct valobj spob_valobj[] = {
 static struct validate spob_validate = /* SET_POBOX */
 {
   spob_valobj,
-  3,
+  4,
   0,
   0,
   0,
@@ -711,11 +744,16 @@ static struct validate spob_validate =    /* SET_POBOX */
   0,
   set_pobox,
 };
+struct valobj spop_valobj[] = {
+  {V_LOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_ID, 0, USERS, LOGIN, USERS_ID, MR_USER},
+};
 
 static struct validate spop_validate = /* SET_POBOX_POP */
 {
-  VOuser0lock,
-  2,
+  spop_valobj,
+  3,
   0,
   0,
   0,
@@ -727,8 +765,8 @@ static struct validate spop_validate =      /* SET_POBOX_POP */
 
 static struct validate dpob_validate = /* DELETE_POBOX */
 {
-  VOuser0lock,
-  2,
+  spop_valobj,
+  3,
   0,
   0,
   0,
@@ -743,64 +781,121 @@ static char *gmac_fields[] = {
   NAME, TYPE, MOD1, MOD2, MOD3,
 };
 
-static char *amac_fields[] = {
-  NAME, TYPE,
+static char *ghst_fields[] = {
+  NAME, ADDRESS, "location", "network",
+  NAME, "vendor", "model", "os", "location", "contact", "use", "status", "status_change", "network", ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment", "created", "creator", "inuse", MOD1, MOD2, MOD3,
 };
 
-static struct valobj amac_valobj[] = {
-  {V_CHAR, 0},
-  {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
-  {V_TYPE, 1, "mac_type", 0, 0, MR_TYPE},
+static struct valobj ghst_valobj[] = {
+  {V_UPWILD, 0},
+  {V_UPWILD, 1},
+  {V_UPWILD, 2},
+  {V_UPWILD, 3},
+  {V_SORT, 0},
 };
 
-static struct validate amac_validate = {
-  amac_valobj,
-  3,
+static struct validate ghst_validate = { 
+  ghst_valobj,
+  5,
+  0,
+  0,
+  0,
+  0,
+  access_host,
+  0,
+  followup_ghst,
+};
+
+static char *ahst_fields[] = {
+  NAME, "vendor", "model", "os", "location", "contact", "use", "status", SUBNET, ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment",
+};
+
+static struct valobj ahst_valobj[] = {
+  {V_CHAR, 0},
+  {V_CHAR, 1},
+  {V_CHAR, 2},
+  {V_CHAR, 3},
+  {V_CHAR, 4},
+  {V_RLOCK,0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "hostalias", 0, MACH_ID, MR_DEADLOCK},
+  {V_ID, 8, SUBNET, NAME, SNET_ID, MR_SUBNET},
+  {V_TYPE, 10, ACE_TYPE, 0, 0, MR_ACE},
+  {V_TYPEDATA, 11, 0, 0, 0, MR_ACE},
+  {V_ID, 12, "strings", "string", "string_id", MR_NO_MATCH},
+  {V_ID, 13, "strings", "string", "string_id", MR_NO_MATCH},
+};
+
+static struct validate ahst_validate = {
+  ahst_valobj,
+  15,
   NAME,
   "name = uppercase(LEFT('%s',SIZE(name)))",
   1,
   MACH_ID,
-  0,
-  prefetch_value,
+  access_host,
+  setup_ahst,
   set_uppercase_modtime,
 };
 
-static char *umac_fields[] = {
+static char *uhst_fields[] = {
   NAME,
-  "newname", TYPE,
+  "newname", "vendor", "model", "os", "location", "contact", "use", "status", SUBNET, ADDRESS, ACE_TYPE, ACE_NAME, "admin_comment", "ops_comment",
 };
 
-static struct valobj umac_valobj[] = {
+static struct valobj uhst_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_CHAR, 0},
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
   {V_RENAME, 1, MACHINE, NAME, MACH_ID, MR_NOT_UNIQUE},
-  {V_TYPE, 2, "mac_type", 0, 0, MR_TYPE},
+  {V_CHAR, 2},
+  {V_CHAR, 3},
+  {V_CHAR, 4},
+  {V_CHAR, 5},
+  {V_ID, 9, SUBNET, NAME, SNET_ID, MR_SUBNET},
+  {V_TYPE, 11, ACE_TYPE, 0, 0, MR_ACE},
+  {V_TYPEDATA, 12, 0, 0, 0, MR_ACE},
+  {V_ID, 13, "strings", "string", "string_id", MR_NO_MATCH},
+  {V_ID, 14, "strings", "string", "string_id", MR_NO_MATCH},
 };
 
-static struct validate umac_validate = {
-  umac_valobj,
-  4,
+static struct validate uhst_validate = {
+  uhst_valobj,
+  16,
   0,
   0,
   0,
   MACH_ID,
-  0,
-  0,
+  access_host,
+  setup_ahst,
   set_modtime_by_id,
 };
 
-static char *dmac_fields[] = {
+static char *dhst_fields[] = {
   NAME,
 };
 
-static struct valobj dmac_valobj[] = {
+static struct valobj dhst_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_RLOCK, 0, "serverhosts", 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, HOSTACCESS, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "hostalias", 0, MACH_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "mcmap", 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, PRINTCAP, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "palladium", 0, MACH_ID, MR_DEADLOCK},
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
 };
 
-static struct validate dmac_validate = {
-  dmac_valobj,
-  2,
+static struct validate dhst_validate = {
+  dhst_valobj,
+  10,
   0,
   0,
   0,
@@ -810,6 +905,167 @@ static struct validate dmac_validate = {
   0,
 };
 
+static char *ghal_fields[] = {
+    ALIAS, "canonical_hostname",
+    ALIAS, "canonical_hostname"
+};
+
+static struct valobj ghal_valobj[] = {
+  {V_UPWILD, 0},
+  {V_UPWILD, 1},
+  {V_SORT, 0},
+};
+
+static struct validate ghal_validate = {
+  ghal_valobj,
+  3,
+  0,
+  0,
+  0,
+  0,
+  access_ahal,
+  0,
+  0,
+};
+
+static struct valobj ahal_valobj[] = {
+  {V_CHAR, 0},
+  {V_UPWILD, 0},
+  {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},
+};
+
+static struct validate ahal_validate = {
+  ahal_valobj,
+  3,
+  NAME,
+  "name = LEFT('%s',SIZE(name))",
+  1,
+  MACH_ID,
+  access_ahal,
+  setup_ahal,
+  0,
+};
+
+static struct valobj dhal_valobj[] = {
+    {V_UPWILD, 0},
+    {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+    {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},
+};
+
+static struct validate dhal_validate = {
+  dhal_valobj,
+  3,
+  NAME,
+  "name = LEFT('%s',SIZE(name)) AND mach_id = %d",
+  2,
+  MACH_ID,
+  access_ahal,
+  0,
+  0,
+};
+
+static char *gsnt_fields[] = {
+    NAME,
+    NAME, DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
+    MOD1, MOD2, MOD3
+};
+
+static struct valobj gsnt_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_UPWILD, 0},
+  {V_SORT, 0},
+};
+
+static struct validate gsnt_validate = {
+  gsnt_valobj,
+  5,
+  0,
+  0,
+  0,
+  0,
+  access_snt,
+  0,
+  followup_gsnt,
+};
+
+static char *asnt_fields[] = {
+    NAME, DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
+};
+
+static struct valobj asnt_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_CHAR, 0},
+  {V_TYPE, 7, ACE_TYPE, 0, 0, MR_ACE},
+  {V_TYPEDATA, 8, 0, 0, 0, MR_ACE},
+};
+
+static struct validate asnt_validate = 
+{
+    asnt_valobj,
+    6,
+    NAME,
+    "name = uppercase(LEFT('%s',SIZE(name)))",
+    1,
+    SNET_ID,
+    0,
+    prefetch_value,
+    set_uppercase_modtime,
+};
+
+static char *usnt_fields[] = {
+    NAME,
+    "newname", DESC, ADDRESS, "mask", "low", "high", "prefix", ACE_TYPE, ACE_NAME,
+};
+
+static struct valobj usnt_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_ID, 0, SUBNET, NAME, SNET_ID, MR_NO_MATCH},
+  {V_RENAME, 1, SUBNET, NAME, SNET_ID, MR_NOT_UNIQUE},
+  {V_TYPE, 8, ACE_TYPE, 0, 0, MR_ACE},
+  {V_TYPEDATA, 9, 0, 0, 0, MR_ACE},
+};
+
+static struct validate usnt_validate = 
+{
+    usnt_valobj,
+    7,
+    NAME,
+    "snet_id = %d",
+    1,
+    SNET_ID,
+    0,
+    0,
+    set_modtime_by_id,
+};
+
+static char *dsnt_fields[] = {
+  NAME,
+};
+
+static struct valobj dsnt_valobj[] = {
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_LOCK, 0, SUBNET, 0, SNET_ID, MR_DEADLOCK},
+  {V_ID, 0, SUBNET, NAME, SNET_ID, MR_SUBNET},
+};
+
+static struct validate dsnt_validate = {
+  dsnt_valobj,
+  3,
+  0,
+  0,
+  0,
+  0,
+  0,
+  setup_dsnt,
+  0,
+};
+
 static char *gclu_fields[] = {
   NAME,
   NAME, DESC, LOCATION, MOD1, MOD2, MOD3, 
@@ -967,13 +1223,15 @@ static char *gsin_fields[] = {
 
 static struct valobj gsin_valobj[] =
 {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   { V_UPWILD, 0 },
 };
 
 static struct validate gsin_validate = 
 {
   gsin_valobj,
-  1,
+  3,
   0,
   0,
   0,
@@ -1012,7 +1270,9 @@ static char *asin_fields[] = {
 };
 
 static struct valobj asin_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   {V_CHAR, 0},
   {V_TYPE, 4, "service", 0, 0, MR_TYPE},
   {V_TYPE, 6, ACE_TYPE, 0, 0, MR_ACE},
@@ -1022,7 +1282,7 @@ static struct valobj asin_valobj[] = {
 static struct validate asin_validate = /* for asin, usin */
 {
   asin_valobj,
-  5,
+  7,
   NAME,
   "name = uppercase(LEFT('%s',SIZE(name)))",
   1,
@@ -1034,7 +1294,7 @@ static struct validate asin_validate =    /* for asin, usin */
 
 static struct validate rsve_validate = {
   asin_valobj,
-  1,
+  3,
   NAME,
   "name = uppercase('%s')",
   1,
@@ -1050,7 +1310,7 @@ static char *ssif_fields[] = {
 
 static struct validate ssif_validate = {
   asin_valobj,
-  1,
+  3,
   NAME,
   "name = uppercase('%s')",
   1,
@@ -1066,7 +1326,7 @@ static char *dsin_fields[] = {
 
 static struct validate dsin_validate = {
   asin_valobj,
-  1,
+  3,
   NAME,
   "name = uppercase('%s')",
   1,
@@ -1132,13 +1392,14 @@ static char *ashi_fields[] = {
 static struct valobj ashi_valobj[] = {
   {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
   {V_NAME, 0, "servers", NAME, 0, MR_SERVICE},
+  {V_LOCK, 0, "serverhosts",0, MACH_ID, MR_DEADLOCK},
   {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},
 };
 
 static struct validate ashi_validate = /* ashi & ushi */
 {
   ashi_valobj,
-  3,
+  4,
   SERVICE,
   "service = uppercase(LEFT('%s',SIZE(service))) AND mach_id = %d",
   2,
@@ -1151,7 +1412,7 @@ static struct validate ashi_validate = /* ashi & ushi */
 static struct validate rshe_validate = 
 {
   ashi_valobj,
-  3,
+  4,
   SERVICE,
   "service = uppercase('%s') AND mach_id = %d",
   2,
@@ -1164,7 +1425,7 @@ static struct validate rshe_validate =
 static struct validate ssho_validate = 
 {
   ashi_valobj,
-  3,
+  4,
   SERVICE,
   "service = uppercase('%s') AND mach_id = %d",
   2,
@@ -1180,6 +1441,7 @@ static char *sshi_fields[] = {
 };
 
 static struct valobj sshi_valobj[] = {
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
   {V_NAME, 0, "servers", NAME, 0, MR_SERVICE},
   {V_ID, 1, MACHINE, NAME, MACH_ID, MR_MACHINE},  /** Was this ok to add? */
 };
@@ -1187,7 +1449,7 @@ static struct valobj sshi_valobj[] = {
 static struct validate sshi_validate = 
 {
   sshi_valobj,
-  2,
+  3,
   0,
   0,
   0,
@@ -1204,7 +1466,7 @@ static char *dshi_fields[] = {
 static struct validate dshi_validate = 
 {
   ashi_valobj,
-  3,
+  4,
   SERVICE,
   "service = uppercase('%s') AND mach_id = %d",
   2,
@@ -1237,7 +1499,9 @@ static char *asha_fields[] = {
 };
 
 static struct valobj asha_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   {V_TYPE, 1, ACE_TYPE, 0, 0, MR_ACE},
   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
 };
@@ -1245,7 +1509,7 @@ static struct valobj asha_valobj[] = {
 static struct validate asha_validate = 
 {
   asha_valobj,
-  3,
+  5,
   MACH_ID,
   "mach_id = %d",
   1,
@@ -1272,9 +1536,14 @@ static char *gfsm_fields[] = {
   "create", "lockertype", MOD1, MOD2, MOD3,
 };
 
+static struct valobj gfsm_valobj[] = {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
+};
+
 static struct validate gfsm_validate = {
-  VOmach0,
-  1,
+  gfsm_valobj,
+  2,
   0,
   0,
   0,
@@ -1292,13 +1561,14 @@ static char *gfsn_fields[] = {
 
 static struct valobj gfsn_valobj[] =
 {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
   {V_WILD, 1},
 };
 
 static struct validate gfsn_validate = {
   gfsn_valobj,
-  2,
+  3,
   0,
   0,
   0,
@@ -1319,10 +1589,14 @@ static char *gfsg_fields[] = {
   LABEL, TYPE, MACHINE, NAME, "mount", "access", COMMENTS, "owner", "owners",
   "create", "lockertype", MOD1, MOD2, MOD3,
 };
+static struct valobj gfsg_valobj[] = {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST}
+};
 
 static struct validate gfsg_validate = {
-  VOlist0,
-  1,
+  gfsg_valobj,
+  2,
   0,
   0,
   0,
@@ -1338,8 +1612,11 @@ static char *afil_fields[] = {
 };
 
 static struct valobj afil_valobj[] = {
-  {V_CHAR, 0},
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_CHAR, 0},
   {V_TYPE, 1, FILESYS, 0, 0, MR_FSTYPE},
   {V_ID, 2, MACHINE, NAME, MACH_ID, MR_MACHINE},
   {V_CHAR, 3},
@@ -1350,7 +1627,7 @@ static struct valobj afil_valobj[] = {
 
 static struct validate afil_validate = {
   afil_valobj,
-  8,
+  11,
   LABEL,
   "label = LEFT('%s',SIZE(label))",
   1,
@@ -1367,6 +1644,10 @@ static char *ufil_fields[] = {
 
 static struct valobj ufil_valobj[] = {
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
   {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
   {V_RENAME, 1, FILESYS, LABEL, FILSYS_ID, MR_NOT_UNIQUE},
   {V_TYPE, 2, FILESYS, 0, 0, MR_FSTYPE},
@@ -1379,7 +1660,7 @@ static struct valobj ufil_valobj[] = {
 
 static struct validate ufil_validate = {
   ufil_valobj,
-  9,
+  13,
   LABEL,
   "filsys_id = %d",
   1,
@@ -1395,12 +1676,15 @@ static char *dfil_fields[] = {
 
 static struct valobj dfil_valobj[] = {
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_LOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "fsgroup", 0, "filsys_id", MR_DEADLOCK},
   {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
 };
 
 static struct validate dfil_validate = {
   dfil_valobj,
-  2,
+  5,
   "label",
   "filsys_id = %d",
   1,
@@ -1434,13 +1718,14 @@ static struct validate gfgm_validate = {
 
 static struct valobj aftg_valobj[] = {
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "fsgroup", 0, "filsys_id", MR_DEADLOCK},
   {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
   {V_ID, 1, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
 };
 
 static struct validate aftg_validate = {
   aftg_valobj,
-  3,
+  4,
   "group_id",
   "group_id = %d and filsys_id = %d",
   2,
@@ -1461,12 +1746,13 @@ static char *gnfp_fields[] = {
 
 static struct valobj gnfp_valobj[] = {
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
+  {V_RLOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
   {V_WILD, 1},
 };
 
 static struct validate gnfp_validate = {
   gnfp_valobj,
-  2,
+  3,
   0,
   0,
   0,
@@ -1477,13 +1763,15 @@ static struct validate gnfp_validate = {
 };
 
 static struct valobj anfp_valobj[] = {
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
   {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
   {V_CHAR, 1},
 };
 
 static struct validate anfp_validate = {
   anfp_valobj,
-  2,
+  4,
   DIR,
   "mach_id = %d and dir = LEFT('%s',SIZE(dir))",
   2,
@@ -1495,7 +1783,7 @@ static struct validate anfp_validate = {
 
 static struct validate unfp_validate = {
   anfp_valobj,
-  2,
+  4,
   DIR,
   "mach_id = %d and dir = '%s'",
   2,
@@ -1513,9 +1801,17 @@ static char *dnfp_fields[] = {
   MACHINE, DIR,
 };
 
+static struct valobj dnfp_valobj[] = {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_ID, 0, MACHINE, NAME, MACH_ID, MR_MACHINE},
+
+};
+
 static struct validate dnfp_validate = {
-  VOmach0,
-  1,
+  dnfp_valobj,
+  4,
   DIR,
   "mach_id = %d and dir = '%s'",
   2,
@@ -1531,6 +1827,11 @@ static char *gqot_fields[] = {
 };
 
 static struct valobj gqot_valobj[] = {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_RLOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
   {V_WILD, 0},
   {V_TYPE, 1, QUOTA_TYPE, 0, 0, MR_TYPE},
   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
@@ -1539,7 +1840,7 @@ static struct valobj gqot_valobj[] = {
 
 static struct validate gqot_validate = {
   gqot_valobj,
-  4,
+  9,
   0,
   0,
   0,
@@ -1572,6 +1873,10 @@ static char *aqot_fields[] = {
 
 static struct valobj aqot_valobj[] = {
   {V_LOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, "nfsphys", 0, "nfsphys_id", MR_DEADLOCK},
+  {V_LOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
   {V_ID, 0, FILESYS, LABEL, FILSYS_ID, MR_FILESYS},
   {V_TYPE, 1, QUOTA_TYPE, 0, 0, MR_TYPE},
   {V_TYPEDATA, 2, 0, 0, 0, MR_ACE},
@@ -1579,7 +1884,7 @@ static struct valobj aqot_valobj[] = {
 
 static struct validate aqot_validate = {
   aqot_valobj,
-  4,
+  8,
   FILSYS_ID,
   "filsys_id = %d and type = '%s' and entity_id = %d",
   3,
@@ -1591,7 +1896,7 @@ static struct validate aqot_validate = {
 
 static struct validate uqot_validate = {
   aqot_valobj,
-  4,
+  8,
   FILSYS_ID,
   "filsys_id = %d AND type = '%s' AND entity_id = %d",
   3,
@@ -1603,7 +1908,7 @@ static struct validate uqot_validate = {
 
 static struct validate dqot_validate = {
   aqot_valobj,
-  4,
+  8,
   FILSYS_ID,
   "filsys_id = %d AND type = '%s' AND entity_id = %d",
   3,
@@ -1706,6 +2011,7 @@ static char *alis_fields[] = {
 };
 
 static struct valobj alis_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   {V_CHAR, 0},
   {V_TYPE, 7, ACE_TYPE, 0, 0, MR_ACE},
@@ -1714,7 +2020,7 @@ static struct valobj alis_valobj[] = {
 
 static struct validate alis_validate = {
   alis_valobj,
-  4,
+  5,
   NAME,
   "name = LEFT('%s',SIZE(name))",
   1,
@@ -1731,6 +2037,7 @@ static char *ulis_fields[] = {
 };
 
 static struct valobj ulis_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
   {V_RENAME, 1, LIST, NAME, LIST_ID, MR_NOT_UNIQUE},
@@ -1740,7 +2047,7 @@ static struct valobj ulis_valobj[] = {
 
 static struct validate ulis_validate = {
   ulis_valobj,
-  5,
+  6,
   NAME,
   "list_id = %d",
   1,
@@ -1754,9 +2061,20 @@ static char *dlis_fields[] = {
   NAME,
 };
 
+static struct valobj dlis_valobj[] ={
+  {V_RLOCK, 0, "capacls", 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, "imembers", 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, QUOTA, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, ZEPH, 0, ZEPH_ID, MR_DEADLOCK},  
+  {V_RLOCK, 0, HOSTACCESS, 0, MACH_ID, MR_DEADLOCK},
+  {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST}
+};
+
 static struct validate dlis_validate = {
-  VOlist0,
-  1,
+  dlis_valobj,
+  8,
   NAME,
   "list_id = %d",
   1,
@@ -1771,6 +2089,7 @@ static char *amtl_fields[] = {
 };
 
 static struct valobj amtl_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
   {V_LOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
   {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
   {V_TYPE, 1, "member", 0, 0, MR_TYPE},
@@ -1780,7 +2099,7 @@ static struct valobj amtl_valobj[] = {
 static struct validate amtl_validate =
 {
   amtl_valobj,
-  4,
+  5,
   0,
   0,
   0,
@@ -1793,7 +2112,7 @@ static struct validate amtl_validate =
 static struct validate dmfl_validate =
 {
   amtl_valobj,
-  4,
+  5,
   0,
   0,
   0,
@@ -1809,13 +2128,18 @@ static char *gaus_fields[] = {
 };
 
 static struct valobj gaus_valobj[] = {
+  {V_RLOCK, 0, FILESYS, 0, FILSYS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, ZEPH, 0, ZEPH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, HOSTACCESS, 0, MACH_ID, MR_DEADLOCK},
   {V_TYPE, 0, "gaus", 0, 0, MR_TYPE},
   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
 };
 
 static struct validate gaus_validate = {
   gaus_valobj,
-  2,
+  7,
   0,
   0,
   0,
@@ -1855,9 +2179,15 @@ static char *gmol_fields[] = {
   "member_type", "member_name",
 };
 
+static struct valobj gmol_valobj[]={
+  {V_LOCK, 0, "imembers", 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_ID, 0, LIST, NAME, LIST_ID, MR_LIST},
+
+};
 static struct validate gmol_validate = {
 VOlist0,
-  1,
gmol_valobj,
+  3,
   0,
   0,
   0,
@@ -1868,8 +2198,8 @@ static struct validate gmol_validate = {
 };
 
 static struct validate geml_validate = {
-  VOlist0,
-  1,
+  gmol_valobj,
+  2,
   0,
   0,
   0,
@@ -1885,14 +2215,17 @@ static char *glom_fields[] = {
 };
 
 static struct valobj glom_valobj[] = {
-  {V_TYPE, 0, "rmember", 0, 0, MR_TYPE},
-  {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
-  {V_SORT, 0},
+   {V_LOCK, 0, "imembers", 0, LIST_ID, MR_DEADLOCK},
+   {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+   {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+   {V_TYPE, 0, "rmember", 0, 0, MR_TYPE},
+   {V_TYPEDATA, 1, 0, 0, 0, MR_NO_MATCH},
+   {V_SORT, 0},
 };
 
 static struct validate glom_validate = {
   glom_valobj,
-  3,
+  5,
   0,
   0,
   0,
@@ -1925,9 +2258,16 @@ static char *gzcl_fields[] = {
   "iws_type", "iws_name", "iui_type", "iui_name", MOD1, MOD2, MOD3, 
 };
 
+static struct valobj gzcl_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, ZEPH, 0, ZEPH_ID, MR_DEADLOCK},
+  {V_WILD, 0},
+  {V_SORT, 0},
+};
 static struct validate gzcl_validate = {
-  VOwild0sort,
-  2,
+  gzcl_valobj,
+  5,
   0,
   0,
   0,
@@ -1943,6 +2283,9 @@ static char *azcl_fields[] = {
 };
 
 static struct valobj azcl_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, ZEPH, 0, ZEPH_ID, MR_DEADLOCK}, 
   {V_CHAR, 0},
   {V_TYPE, 1, ACE_TYPE, 0, 0, MR_ACE},
   {V_TYPEDATA, 2, 0, 0, LIST_ID, MR_ACE},
@@ -1956,7 +2299,7 @@ static struct valobj azcl_valobj[] = {
 
 static struct validate azcl_validate = {
   azcl_valobj,
-  9,
+  12,
   CLASS,
   "class = LEFT('%s',SIZE(class))",
   1,
@@ -1972,6 +2315,9 @@ static char *uzcl_fields[] = {
 };
 
 static struct valobj uzcl_valobj[] = {
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, LIST, 0, LIST_ID, MR_DEADLOCK},
+  {V_LOCK, 0, ZEPH, 0, ZEPH_ID, MR_DEADLOCK},
   {V_RENAME, 1, "zephyr", CLASS, 0, MR_NOT_UNIQUE},
   {V_TYPE, 2, ACE_TYPE, 0, 0, MR_ACE},
   {V_TYPEDATA, 3, 0, 0, LIST_ID, MR_ACE},
@@ -1985,7 +2331,7 @@ static struct valobj uzcl_valobj[] = {
 
 static struct validate uzcl_validate = {
   uzcl_valobj,
-  9,
+  11,
   CLASS,
   "class = '%s'",
   1,
@@ -2035,9 +2381,17 @@ static char *gpce_fields[] = {
   MOD1, MOD2, MOD3,
 };
 
+static struct valobj gpce_valobj[]={
+  {V_RLOCK, 0, USERS, 0, USERS_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, MACHINE, 0, MACH_ID, MR_DEADLOCK},
+  {V_RLOCK, 0, PRINTCAP, 0, MACH_ID, MR_DEADLOCK},
+  {V_WILD, 0},
+  {V_SORT, 0},
+};
+
 static struct validate gpce_validate = {
-  VOwild0sort,
-  2,
+  gpce_valobj,
+  5,
   0,
   0,
   0,
@@ -2138,7 +2492,7 @@ static char *aali_fields[] = {
 
 static struct valobj aali_valobj[] = {
   {V_CHAR, 0},
-  {V_TYPE, 1, "alias", 0, 0, MR_TYPE},
+  {V_TYPE, 1, ALIAS, 0, 0, MR_TYPE},
   {V_CHAR, 2},
 };
 
@@ -2310,7 +2664,7 @@ struct query Queries2[] = {
     15,
     "u.first LIKE '%s' ESCAPE '*' AND u.last LIKE '%s' ESCAPE '*' AND u.users_id != 0 and u.comment = str.string_id",
     2,
-    &VDwild2sortf,
+    &guan_validate,
   },
   
   {
@@ -2755,7 +3109,7 @@ struct query Queries2[] = {
     RETRIEVE,
     "m",
     MACHINE,
-    "CHAR(m.name), m.type, CHAR(m.modtime), CHAR(m.modby), modwith FROM machine m",
+    "CHAR(m.name), m.vendor, CHAR(m.modtime), CHAR(m.modby), m.modwith FROM machine m",
     gmac_fields,
     5,
     "m.name LIKE '%s' ESCAPE '*' AND m.mach_id != 0", 
@@ -2764,48 +3118,168 @@ struct query Queries2[] = {
   },
 
   {
-    /* Q_AMAC - ADD_MACHINE */ /* uses prefetch_value() for mach_id */
-    "add_machine",
-    "amac",
+    /* Q_GHST - GET_HOST */
+    "get_host",
+    "ghst",
+    RETRIEVE,
+    "m",
+    MACHINE,
+    "CHAR(m.name), m.vendor, m.model, m.os, m.location, m.contact, CHAR(m.use), CHAR(m.status), CHAR(m.statuschange), CHAR(s.name), m.address, m.owner_type, CHAR(m.owner_id), CHAR(m.acomment), CHAR(m.ocomment), CHAR(m.created), CHAR(m.creator), CHAR(m.inuse), CHAR(m.modtime), CHAR(m.modby), m.modwith FROM machine m, subnet s",
+    ghst_fields,
+    21,
+    "m.name LIKE '%s' ESCAPE '*' AND m.address LIKE '%s' ESCAPE '*' AND m.location LIKE '%s' ESCAPE '*' AND s.name LIKE '%s' ESCAPE '*' AND m.mach_id != 0 AND s.snet_id = m.snet_id", 
+    4,
+    &ghst_validate,
+  },
+
+  {
+    /* Q_AHST - ADD_HOST */ /* uses prefetch_value() for mach_id */
+    "add_host",
+    "ahst",
     APPEND,
     "m",
     MACHINE,
-    "INTO machine (name, type, mach_id) VALUES (uppercase('%s'),'%s',%s)",
-    amac_fields,
-    2,
+    "INTO machine (name, vendor, model, os, location, contact, use, status, statuschange, snet_id, address, owner_type, owner_id, acomment, ocomment, created, inuse, mach_id, creator) VALUES (uppercase('%s'),uppercase('%s'),uppercase('%s'),uppercase('%s'),uppercase('%s'),'%s',%s,%s,date('now'),%d,'%s','%s',%d,%d,%d,date('now'),date('now'),%s,%s)",
+    ahst_fields,
+    14,
     0,
     0,
-    &amac_validate,
+    &ahst_validate,
   },
 
   {
-    /* Q_UMAC - UPDATE_MACHINE */
-    "update_machine",
-    "umac",
+    /* Q_UHST - UPDATE_HOST */
+    "update_host",
+    "uhst",
     UPDATE,
     "m",
     MACHINE,
-    "machine SET name = uppercase('%s'), type = '%s'",
-    umac_fields,
-    2,
+    "machine SET name=uppercase('%s'),vendor=uppercase('%s'),model=uppercase('%s'),os=uppercase('%s'),location=uppercase('%s'),contact='%s',use=%s,status=%s,snet_id=%d,address='%s',owner_type='%s',owner_id=%d,acomment=%d,ocomment=%d",
+    uhst_fields,
+    14,
     "mach_id = %d",
     1,
-    &umac_validate,
+    &uhst_validate,
   },
 
   {
-    /* Q_DMAC - DELETE_MACHINE */
-    "delete_machine",
-    "dmac",
+    /* Q_DHST - DELETE_HOST */
+    "delete_host",
+    "dhst",
     DELETE,
     "m",
     MACHINE,
     (char *)0,
-    dmac_fields,
+    dhst_fields,
     0,
     "mach_id = %d",
     1,
-    &dmac_validate,
+    &dhst_validate,
+  },
+
+  {
+    /* Q_GHAL - GET_HOSTALIAS */
+    "get_hostalias",
+    "ghal",
+    RETRIEVE,
+    "a",
+    "hostalias",
+    "CHAR(a.name), CHAR(m.name) FROM hostalias a, machine m",
+    ghal_fields,
+    2,
+    "m.mach_id = a.mach_id and a.name LIKE '%s' ESCAPE '*' AND m.name LIKE '%s' ESCAPE '*'",
+    2,
+    &ghal_validate,
+  },
+
+  {
+    /* Q_AHAL - ADD_HOSTALIAS */
+    "add_hostalias",
+    "ahal",
+    APPEND,
+    "a",
+    "hostalias",
+    "INTO hostalias (name, mach_id) VALUES (uppercase('%s'),%d)",
+    ghal_fields,
+    2,
+    0,
+    0,
+    &ahal_validate,
+  },
+
+  {
+    /* Q_DHAL - DELETE_HOSTALIAS */
+    "delete_hostalias",
+    "dhal",
+    DELETE,
+    "a",
+    "hostalias",
+    (char *)0,
+    ghal_fields,
+    0,
+    "name = uppercase('%s') AND mach_id = %d",
+    2,
+    &dhal_validate,
+  },
+
+  {
+    /* Q_GSNT - GET_SUBNET */
+    "get_subnet",
+    "gsnt",
+    RETRIEVE,
+    "s",
+    SUBNET,
+    "CHAR(s.name), CHAR(s.description), CHAR(s.saddr), CHAR(s.mask), CHAR(s.low), CHAR(s.high), s.prefix, s.owner_type, CHAR(s.owner_id), CHAR(s.modtime), CHAR(s.modby), s.modwith FROM subnet s",
+    gsnt_fields,
+    12,
+    "s.name LIKE '%s' ESCAPE '*' and s.snet_id != 0",
+    1,
+    &gsnt_validate,
+  },
+
+  {
+    /* Q_ASNT - ADD_SUBNET */
+    "add_subnet",
+    "asnt",
+    APPEND,
+    "s",
+    SUBNET,
+    "INTO subnet (name, description, saddr, mask, low, high, prefix, owner_type, owner_id, snet_id) VALUES (uppercase('%s'), '%s', %s, %s, %s, %s, '%s', '%s', %d, %s)",
+    asnt_fields,
+    9,
+    0,
+    0,
+    &asnt_validate,
+  },
+
+  {
+    /* Q_USNT - UPDATE_SUBNET */
+    "update_subnet",
+    "usnt",
+    UPDATE,
+    "s",
+    SUBNET,
+    "subnet SET name=uppercase('%s'), description='%s', saddr=%s, mask=%s, low=%s, high=%s, prefix='%s', owner_type='%s', owner_id=%d",
+    usnt_fields,
+    9,
+    "snet_id = %d",
+    1,
+    &usnt_validate,
+  },
+
+  {
+    /* Q_DSNT - DELETE_SUBNET */
+    "delete_subnet",
+    "dsnt",
+    DELETE,
+    "s",
+    SUBNET,
+    (char *)0,
+    dsnt_fields,
+    0,
+    "snet_id = %d",
+    1,
+    &dsnt_validate,
   },
 
   {
@@ -3189,7 +3663,7 @@ struct query Queries2[] = {
     "gsha",
     RETRIEVE,
     "ha",
-    "hostaccess",
+    HOSTACCESS,
     "CHAR(m.name), ha.acl_type, CHAR(ha.acl_id), CHAR(ha.modtime), CHAR(ha.modby), ha.modwith FROM hostaccess ha, machine m",
     gsha_fields,
     6,
@@ -3204,7 +3678,7 @@ struct query Queries2[] = {
     "asha",
     APPEND,
     "ha",
-    "hostaccess",
+    HOSTACCESS,
     "INTO hostaccess (mach_id, acl_type, acl_id) VALUES (%d,'%s',%d)",
     asha_fields,
     3,
@@ -3219,7 +3693,7 @@ struct query Queries2[] = {
     "usha",
     UPDATE,
     "ha",
-    "hostaccess",
+    HOSTACCESS,
     "hostaccess SET acl_type = '%s', acl_id = %d",
     asha_fields,
     2,
@@ -3234,7 +3708,7 @@ struct query Queries2[] = {
     "dsha",
     DELETE,
     "ha",
-    "hostaccess",
+    HOSTACCESS,
     0,
     asha_fields,
     0,
@@ -3969,7 +4443,7 @@ struct query Queries2[] = {
     "gpce",
     RETRIEVE,
     "pc",
-    "printcap",
+    PRINTCAP,
     "CHAR(pc.name), CHAR(m.name), pc.dir, pc.rp, CHAR(pc.quotaserver), CHAR(pc.auth), CHAR(pc.price), pc.comments, CHAR(pc.modtime), CHAR(pc.modby), pc.modwith FROM printcap pc, machine m",
     gpce_fields,
     11,
@@ -3984,7 +4458,7 @@ struct query Queries2[] = {
     "apce",
     APPEND,
     "pc",
-    "printcap",
+    PRINTCAP,
     "INTO printcap (name, mach_id, dir, rp, quotaserver, auth, price, comments) VALUES ('%s',%d,'%s','%s',%d,%s,%s,'%s')",
     apce_fields,
     8,
@@ -3999,7 +4473,7 @@ struct query Queries2[] = {
     "dpce",
     DELETE,
     "pc",
-    "printcap",
+    PRINTCAP,
     0,
     apce_fields,
     0,
@@ -4014,7 +4488,7 @@ struct query Queries2[] = {
     "gpcp",
     RETRIEVE,
     "pc",
-    "printcap",
+    PRINTCAP,
     "CHAR(pc.name), CHAR(m.name), pc.dir, pc.rp, pc.comments, CHAR(pc.modtime), CHAR(pc.modby), pc.modwith FROM printcap pc, machine m",
     gpcp_fields,
     8,
@@ -4029,7 +4503,7 @@ struct query Queries2[] = {
     "dpcp",
     DELETE,
     "pc",
-    "printcap",
+    PRINTCAP,
     0,
     apce_fields,
     0,
@@ -4089,7 +4563,7 @@ struct query Queries2[] = {
     "gali",
     RETRIEVE,
     "a",
-    "alias",
+    ALIAS,
     "CHAR(a.name), CHAR(a.type), CHAR(a.trans) FROM alias a",
     gali_fields,
     3,
@@ -4104,7 +4578,7 @@ struct query Queries2[] = {
     "aali",
     APPEND,
     "a",
-    "alias",
+    ALIAS,
     "INTO alias (name, type, trans) VALUES ('%s', '%s', '%s')",
     aali_fields,
     3,
@@ -4119,7 +4593,7 @@ struct query Queries2[] = {
     "dali",
     DELETE,
     "a",
-    "alias",
+    ALIAS,
     (char *)0,
     aali_fields,
     0,
This page took 0.102842 seconds and 4 git commands to generate.