]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/routetable.cpp
Bugfix al mostrar request/response para debug en send_loop().
[z.facultad/75.74/practicos.git] / practicas / pipi / src / routetable.cpp
index 4a043cd79a30ed4bbc256e71612da96066fd0478..f8e6cbd6fa8d78d7df7030c7c9e5e4a1853b24b5 100644 (file)
@@ -1,4 +1,6 @@
 #include "routetable.h"
+#include <string>
+#include <sstream>
 #ifdef DEBUG
 #include <iostream>
 #endif
@@ -7,10 +9,11 @@ RouteTable::RouteTable(Dev& default_iface): default_iface(default_iface)
 {
 }
 
-void RouteTable::add(const IPAddr& net, const IPAddr& gw, unsigned metric, Dev& iface)
+void RouteTable::add(const IPAddr& net, const IPAddr& gw, unsigned mtu,
+        unsigned metric, Dev& iface)
 {
-    table[net] = Route(gw, metric, iface);
-#ifdef DEBUG
+    table[net] = Route(gw, metric, mtu, iface);
+#ifdef DEBUG_ROUTE
     std::cout << "Se agregó tabla para " << net << ": gw = " << gw
         << ", metric = " << metric << "\n";
 #endif
@@ -29,4 +32,21 @@ RouteTable::Route* RouteTable::get(const IPAddr& dst)
     return &table[dst];
 }
 
+void add_routes(RouteTable& rt, std::istream& is, Dev& dev)
+{
+    std::string line;
+    while (std::getline(is, line))
+    {
+        std::istringstream iss(line);
+        std::string net;
+        std::string gw;
+        unsigned mtu;
+        unsigned metric;
+        iss >> net >> gw >> mtu >> metric;
+        if (net == "0") net = "0.0.0.0";
+        if (gw == "0") gw = "0.0.0.0";
+        rt.add(net, gw, metric, mtu, dev);
+    }
+}
+
 // vim: set et sw=4 sts=4 :