X-Git-Url: https://git.llucax.com/z.facultad/75.74/practicos.git/blobdiff_plain/c4bef2a8143ddaf4ab2a57084455f5617bc39399..f17a708ff0e870baf2709bb0d63f32f166e082d3:/practicas/pipi/src/ip.cpp?ds=sidebyside diff --git a/practicas/pipi/src/ip.cpp b/practicas/pipi/src/ip.cpp index db99e1a..6bffcfd 100644 --- a/practicas/pipi/src/ip.cpp +++ b/practicas/pipi/src/ip.cpp @@ -3,6 +3,7 @@ #include "ipin.h" #include "ipaddr.h" #include "routetable.h" +#include "devtcp.h" #include "devque.h" #include #include @@ -17,7 +18,7 @@ #include #include -// 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); @@ -27,13 +28,13 @@ int main(int argc, char* argv[]) { bool router = false; bool forward = false; - unsigned proto = 0; - key_t queue_id = DEVQUE_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 " - "queue_id proto]\n"; + "port proto]\n"; return 1; } IPAddr addr(argv[1]); @@ -44,16 +45,15 @@ int main(int argc, char* argv[]) 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]); - // Creo colas - int que_id = msgget(queue_id, IPC_CREAT | 0666); assert(que_id != -1); - que_id = msgget(DEVQUE_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 - DevQue dev(addr, queue_id); + DevTCP dev(addr, port); DevQue fwque(addr, DEVQUE_DEFAULT_KEY-1); // Creo procesos pid_t pid_send = fork(); @@ -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 " - << src << " para " << dst << " (proto = " << proto << ")\n"; + << src << " para " << dst << " (proto = " << unsigned(proto) + << ")\n"; } 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"; - rt.add(net.c_str(), gw.c_str(), metric, mtu, dev); + rt.add(net, gw, metric, mtu, dev); } }