#include "ipout.h"
#include "ipaddr.h"
+#include "routetable.h"
#include "dev.h"
#include <iostream>
+#include <string>
#include <cassert>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ipc.h>
#include <sys/msg.h>
-int main()
+// Uso: ./test_ipout ip dst msg mtu proto queue_id
+
+int main(int argc, char* argv[])
{
- int que_id = msgget(DEV_DEFAULT_KEY, IPC_CREAT | 0666);
- assert(que_id != -1);
IPAddr addr("10.10.10.2");
- Dev dev(addr);
- IPOut ipout(addr, dev);
- if (ipout.send("hola mundo", 0, IPAddr("10.10.10.1")))
- std::cout << "Enviado 'hola mundo' a 10.10.10.1\n";
+ IPAddr dst("10.10.10.1");
+ std::string msg = "hola mundo";
+ unsigned mtu = 25;
+ unsigned proto = 0;
+ key_t queue_id = DEV_DEFAULT_KEY;
+ if (argc > 1)
+ addr = IPAddr(argv[1]);
+ if (argc > 2)
+ dst = IPAddr(argv[2]);
+ if (argc > 3)
+ msg = argv[3];
+ if (argc > 4)
+ mtu = atoi(argv[4]);
+ if (argc > 5)
+ proto = atoi(argv[5]);
+ if (argc > 6)
+ queue_id = atoi(argv[6]);
+ int que_id = msgget(queue_id, IPC_CREAT | 0666);
+ assert(que_id != -1);
+ Dev dev(addr, mtu, queue_id);
+ RouteTable table(dev);
+ table.add("10.10.10.1", 0, 0, dev);
+ table.add("10.10.10.2", 0, 0, dev);
+ table.add("10.10.10.3", "10.10.10.10", 0, dev);
+ IPOut ipout(addr, table);
+ if (ipout.send(msg, proto, dst))
+ std::cout << "Enviado '" << msg << "' a " << dst << "\n";
else
- std::cout << "NO SE PUDO ENVIAR 'hola mundo' a 10.10.10.1\n";
+ std::cout << "NO SE PUDO ENVIAR '" << msg << "' a " << dst << "\n";
return 0;
}