]> git.llucax.com Git - z.facultad/75.74/practicos.git/commitdiff
Se mejora el redireccionado al padre, se usan solo padres no nulos.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 23 Jun 2006 03:24:16 +0000 (03:24 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 23 Jun 2006 03:24:16 +0000 (03:24 +0000)
practicas/pipi/src/nameserver.cpp
practicas/pipi/src/test_nameserver_zones.txt

index 822f6f645adf2d424a068e8380a9a859af65d2ad..cf7dac33208141847e82138977b0f5d2902c326c 100644 (file)
@@ -248,17 +248,29 @@ ResolvProtoResponse NameServer::resolv_direct(const Name& n)
     }
     if (zones.size())
     {
+        // Busco una zona con padre para ver si puedo "trepar"
+        for (zones_t::const_iterator i = zones.begin(); i != zones.end(); ++i)
+        {
 #ifdef DEBUG_RESOLV
-        std::cerr << "resolv_direct found (al padre): " << zones.front().parent
+            std::cerr << "resolv_direct -> evaluando padre " << i->parent
                 << "\n";
-        ResolvProtoResponse rpr(ResolvProtoResponse::R_NS, zones.front().ttl);
-        rpr.ips.push_back(zones.front().parent);
-        return rpr;
 #endif
+            if (i->parent != IPAddr(0))
+            {
+#ifdef DEBUG_RESOLV
+                std::cerr << "resolv_direct found (al padre): "
+                    << i->parent << "\n";
+#endif
+                ResolvProtoResponse rpr(ResolvProtoResponse::R_NS, i->ttl);
+                rpr.ips.push_back(i->parent);
+                return rpr;
+            }
+        }
     }
 #ifdef DEBUG_RESOLV
     std::cerr << "resolv_direct NOT FOUND (no hay padre)\n";
 #endif
+    // No hay padre, no puedo hacer nada más
     return ResolvProtoResponse(ResolvProtoResponse::R_NOTFOUND);
 }
 
index 4752260032e4387dd6217497ce6ac6edb1420517..655bd40c107b670575f6648da5a4bac6ea2588c0 100644 (file)
@@ -1,4 +1,4 @@
-mi.super.nombre        600     10.10.10.1
+mi.super.nombre        600     0.0.0.0
 tito   A       10.10.100.1
 juan   A       10.10.100.2
 juan   A       10.10.100.3
@@ -10,7 +10,7 @@ otro  NS      10.10.100.101
 mas    NS      10.10.200.1
 otro   NS      10.10.200.2
 
-mas.super.nombres      9500    10.10.1.100
+mas.super.nombres      9500    10.10.10.1
 tito   A       10.1.100.1
 juan   A       10.1.100.2
 juan   A       10.1.100.3