]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/ip.cpp
Se saca TCP por abajo del protocolo de resolución (que estaba de más porque va
[z.facultad/75.74/practicos.git] / practicas / pipi / src / ip.cpp
index dd38b9b13306014f7bda5a5d3113acd411a4f432..6bffcfdbbb29718db2e5bfed85e2eec668d339ca 100644 (file)
@@ -3,7 +3,8 @@
 #include "ipin.h"
 #include "ipaddr.h"
 #include "routetable.h"
 #include "ipin.h"
 #include "ipaddr.h"
 #include "routetable.h"
-#include "dev.h"
+#include "devtcp.h"
+#include "devque.h"
 #include <iostream>
 #include <fstream>
 #include <sstream>
 #include <iostream>
 #include <fstream>
 #include <sstream>
@@ -17,7 +18,7 @@
 #include <sys/msg.h>
 #include <signal.h>
 
 #include <sys/msg.h>
 #include <signal.h>
 
-// Uso: ./test_ipout ip [router forward routes_file queue_id proto]
+// Uso: ./test_ipout ip [router forward routes_file port proto]
 
 void send_loop(IPOut& ipout, unsigned proto);
 
 
 void send_loop(IPOut& ipout, unsigned proto);
 
@@ -27,13 +28,13 @@ int main(int argc, char* argv[])
 {
     bool router = false;
     bool forward = false;
 {
     bool router = false;
     bool forward = false;
-    unsigned proto = 0;
-    key_t queue_id = DEV_DEFAULT_KEY;
+    uint8_t proto = 0;
+    uint16_t port = DEVTCP_DEFAULT_PORT;
     std::string fname = "route.txt";
     if (argc < 2)
     {
         std::cerr << "Uso: ./test_ipout ip [router forward routes_file "
     std::string fname = "route.txt";
     if (argc < 2)
     {
         std::cerr << "Uso: ./test_ipout ip [router forward routes_file "
-            "queue_id proto]\n";
+            "port proto]\n";
         return 1;
     }
     IPAddr addr(argv[1]);
         return 1;
     }
     IPAddr addr(argv[1]);
@@ -44,17 +45,16 @@ int main(int argc, char* argv[])
     if (argc > 4)
         fname = argv[4];
     if (argc > 5)
     if (argc > 4)
         fname = argv[4];
     if (argc > 5)
-        queue_id = atoi(argv[5]);
+        port = atoi(argv[5]);
     if (argc > 6)
         proto = atoi(argv[6]);
     if (argc > 6)
         proto = atoi(argv[6]);
-    // Creo colas
-    int que_id = msgget(queue_id, IPC_CREAT | 0666); assert(que_id != -1);
-    que_id = msgget(DEV_DEFAULT_KEY-1, IPC_CREAT | 0666); assert(que_id != -1);
+    // Creo cola para comunicar el IPIn con IPOut
+    int que_id = msgget(DEVQUE_DEFAULT_KEY-1, IPC_CREAT | 0666); assert(que_id != -1);
     // Abro archivo con rutas
     std::ifstream ifs(fname.c_str()); assert(ifs);
     // Creo medio físico y cola para forwarding
     // Abro archivo con rutas
     std::ifstream ifs(fname.c_str()); assert(ifs);
     // Creo medio físico y cola para forwarding
-    Dev dev(addr, queue_id);
-    Dev fwque(addr, DEV_DEFAULT_KEY-1);
+    DevTCP dev(addr, port);
+    DevQue fwque(addr, DEVQUE_DEFAULT_KEY-1);
     // Creo procesos
     pid_t pid_send = fork();
     if (pid_send == -1)
     // Creo procesos
     pid_t pid_send = fork();
     if (pid_send == -1)
@@ -97,7 +97,8 @@ int main(int argc, char* argv[])
             IPAddr src, dst;
             std::string s = ipin.recv(proto, src, dst);
             std::cout << "Recibido '" << s << "' (len " << s.size() << ") de "
             IPAddr src, dst;
             std::string s = ipin.recv(proto, src, dst);
             std::cout << "Recibido '" << s << "' (len " << s.size() << ") de "
-                << src << " para " << dst << " (proto = " << proto << ")\n";
+                << src << " para " << dst << " (proto = " << unsigned(proto)
+                << ")\n";
         }
         return 0;
     }
         }
         return 0;
     }
@@ -132,7 +133,7 @@ void add_routes(RouteTable& rt, std::istream& is, Dev& dev)
         iss >> net >> gw >> mtu >> metric;
         if (net == "0") net = "0.0.0.0";
         if (gw == "0") gw = "0.0.0.0";
         iss >> net >> gw >> mtu >> metric;
         if (net == "0") net = "0.0.0.0";
         if (gw == "0") gw = "0.0.0.0";
-        rt.add(net.c_str(), gw.c_str(), metric, mtu, dev);
+        rt.add(net, gw, metric, mtu, dev);
     }
 }
 
     }
 }