]> git.llucax.com Git - z.facultad/75.74/practicos.git/blobdiff - practicas/pipi/src/ipin.h
Se generaliza el devque para seguir (ab)usándolo como cola y poder pedir de
[z.facultad/75.74/practicos.git] / practicas / pipi / src / ipin.h
index 5d0d7a82cc279b056df1f874bdc475eaa743392f..8a452b2cd4dcb17ec6554e96e46fd9cff884fd24 100644 (file)
@@ -19,6 +19,15 @@ struct IPIn
     /// Dispositivo de red
     Dev& dev;
 
+    /// Cola para forwardear paquetes
+    Dev& forward_que;
+
+    /// Indica si es un router
+    bool router;
+
+    /// Indica si hace forwarding
+    bool forward;
+
     /// Dispositivo de logging
     std::ostream& log;
 
@@ -39,14 +48,15 @@ struct IPIn
     buffer_type buffer;
 
     /// Constructor
-    IPIn(const IPAddr& ip, Dev& dev, std::ostream& log = std::cout);
+    IPIn(const IPAddr& ip, Dev& dev, Dev& forward_que, bool router = false,
+        bool forward = false, std::ostream& log = std::cout);
 
     /// Descarta un paquete
     void drop(const std::string& msg, const std::string& buf);
     void drop(const std::string& msg, const IPHeader& iph);
 
     /// Recibe un paquete IP
-    std::string recv(uint8_t proto, IPAddr& src, IPAddr& dst)
+    std::string recv(uint8_t& proto, IPAddr& src, IPAddr& dst)
         throw (std::runtime_error);
 
     // Nada de andar copiando placas...