]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/test_ipin.cpp
Se cambia el logueo de paquetes dropeados a std::cerr para diferenciar de
[z.facultad/75.74/practicos.git] / practicas / pipi / src / test_ipin.cpp
index 01b19aa97e7731d31047586330e20027cf641895..eb15d0f37d13cdd9c85a3dcaec0ee2f5f7afcf57 100644 (file)
 #include <sys/ipc.h>
 #include <sys/msg.h>
 
 #include <sys/ipc.h>
 #include <sys/msg.h>
 
-// Uso: ./test_ipin ip mtu proto queue_id
+// Uso: ./test_ipin ip mtu router forward proto queue_id
 
 int main(int argc, char* argv[])
 {
     IPAddr addr("10.10.10.1");
     unsigned mtu = 25;
 
 int main(int argc, char* argv[])
 {
     IPAddr addr("10.10.10.1");
     unsigned mtu = 25;
+    bool router = false;
+    bool forward = false;
     unsigned proto = 0;
     key_t queue_id = DEV_DEFAULT_KEY;
     if (argc > 1)
     unsigned proto = 0;
     key_t queue_id = DEV_DEFAULT_KEY;
     if (argc > 1)
@@ -23,11 +25,18 @@ int main(int argc, char* argv[])
     if (argc > 2)
         mtu = atoi(argv[2]);
     if (argc > 3)
     if (argc > 2)
         mtu = atoi(argv[2]);
     if (argc > 3)
-        proto = atoi(argv[3]);
+        router = atoi(argv[3]);
     if (argc > 4)
     if (argc > 4)
-        queue_id = atoi(argv[4]);
+        forward = atoi(argv[4]);
+    if (argc > 5)
+        proto = atoi(argv[5]);
+    if (argc > 6)
+        queue_id = atoi(argv[6]);
     Dev dev(addr, mtu, queue_id);
     Dev dev(addr, mtu, queue_id);
-    IPIn ipin(addr, dev);
+    int que_id = msgget(queue_id+1, IPC_CREAT | 0666);
+    assert(que_id != -1);
+    Dev fwque(addr, DEV_MAX_MTU, queue_id+1);
+    IPIn ipin(addr, dev, fwque, router, forward, std::cerr);
     struct msqid_ds minfo;
     for (msgctl(dev.que_id, IPC_STAT, &minfo); minfo.msg_qnum;
             msgctl(dev.que_id, IPC_STAT, &minfo))
     struct msqid_ds minfo;
     for (msgctl(dev.que_id, IPC_STAT, &minfo); minfo.msg_qnum;
             msgctl(dev.que_id, IPC_STAT, &minfo))