]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/test_ipout.cpp
acdb77fb3000f92ae5c2e3afda252be1a71416ad
[z.facultad/75.74/practicos.git] / practicas / pipi / src / test_ipout.cpp
1
2 #include "ipout.h"
3 #include "ipaddr.h"
4 #include "routetable.h"
5 #include "dev.h"
6 #include <iostream>
7 #include <string>
8 #include <cassert>
9 #include <unistd.h>
10 #include <fcntl.h>
11 #include <sys/types.h>
12 #include <sys/ipc.h>
13 #include <sys/msg.h>
14
15 // Uso: ./test_ipout ip dst msg mtu proto queue_id
16
17 int main(int argc, char* argv[])
18 {
19     IPAddr addr("10.10.10.2");
20     IPAddr dst("10.10.10.1");
21     std::string msg = "hola mundo";
22     unsigned mtu = 25;
23     unsigned proto = 0;
24     key_t queue_id = DEV_DEFAULT_KEY;
25     if (argc > 1)
26         addr = IPAddr(argv[1]);
27     if (argc > 2)
28         dst = IPAddr(argv[2]);
29     if (argc > 3)
30         msg = argv[3];
31     if (argc > 4)
32         mtu = atoi(argv[4]);
33     if (argc > 5)
34         proto = atoi(argv[5]);
35     if (argc > 6)
36         queue_id = atoi(argv[6]);
37     int que_id = msgget(queue_id, IPC_CREAT | 0666);
38     assert(que_id != -1);
39     Dev dev(addr, mtu, queue_id);
40     RouteTable table(dev);
41     table.add("10.10.10.1", 0, 0, dev);
42     table.add("10.10.10.2", 0, 0, dev);
43     table.add("10.10.10.3", "10.10.10.10", 0, dev);
44     IPOut ipout(addr, table);
45     if (ipout.send(msg, proto, dst))
46         std::cout << "Enviado '" << msg << "' a " << dst << "\n";
47     else
48         std::cout << "NO SE PUDO ENVIAR '" << msg << "' a " << dst << "\n";
49     return 0;
50 }
51
52 // vim: set et sw=4 sts=4 :