]> andersk Git - moira.git/blobdiff - server/cache.dc
Diane Delgado's changes for a fixed table-locking order
[moira.git] / server / cache.dc
index 85b0688be729c23c53e85a8e2681fd9c7e7ea3dc..6ee13326251aab7a76a2e0a32c40c96b75394bd2 100644 (file)
@@ -30,6 +30,7 @@ extern int ingres_errno, mr_errcode;
  *             List
  *             String
  *             Machine
+ *             Subnet
  *             Cluster
  *             Filesystem
  *    then we will have to rework the code that only looks at the first
@@ -113,6 +114,7 @@ int *id;
     char *iname;
     int j, rowcount;
     EXEC SQL END DECLARE SECTION;
+    char key;
     int h, ctr;
 
     h = hashname(name, type);
@@ -134,8 +136,12 @@ int *id;
 
     cachemisses++;
     iname = name;
+    key = *type;
 
-    switch (*type) {
+    if (!strcasecmp(type, "subnet"))
+      key = 'N';
+
+    switch (key) {
     case 'U':
     case 'u':
        if (index(iname, '@') || (strlen(iname) > 8)) {
@@ -152,6 +158,10 @@ int *id;
     case 'm':
        EXEC SQL SELECT mach_id INTO :j FROM machine WHERE name=UPPERCASE(:iname);
        break;
+    case 'N':
+    case 'n':
+       EXEC SQL SELECT snet_id INTO :j FROM subnet WHERE name=UPPERCASE(:iname);
+       break;
     case 'C':
     case 'c':
        EXEC SQL SELECT clu_id INTO :j FROM cluster WHERE name=:iname;
@@ -217,6 +227,7 @@ char **name;
     char iname[NAMESZ];
     int j, rowcount;
     EXEC SQL END DECLARE SECTION;
+    char key;
     int ctr;
 
     for (i = cachehead.next; i != &cachehead; i = i->next) {
@@ -235,8 +246,11 @@ char **name;
 
     cachemisses++;
     j = id;
+    key = *type;
+    if (!strcasecmp(type, "subnet"))
+      key = 'N';
 
-    switch (*type) {
+    switch (key) {
     case 'U':
     case 'u':
        EXEC SQL SELECT CHAR(login) INTO :iname FROM users WHERE users_id=:j;
@@ -249,6 +263,10 @@ char **name;
     case 'm':
        EXEC SQL SELECT CHAR(name) INTO :iname FROM machine WHERE mach_id=:j;
        break;
+    case 'N':
+    case 'n':
+       EXEC SQL SELECT CHAR(name) INTO :iname FROM subnet WHERE snet_id=:j;
+       break;
     case 'C':
     case 'c':
        EXEC SQL SELECT CHAR(name) INTO :iname FROM cluster WHERE clu_id=:j;
This page took 0.038087 seconds and 4 git commands to generate.