]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/ipout.h
57c139bceb19f28eb064e884ef4244728b9aa5a3
[z.facultad/75.74/practicos.git] / practicas / pipi / src / ipout.h
1 #ifndef _IPOUT_H_
2 #define _IPOUT_H_
3
4 #include "ipaddr.h"
5 #include "ipheader.h"
6 #include "dev.h"
7 #include <iostream>
8 #include <string>
9 #include <stdexcept>
10
11 /// IP de envío
12 struct IPOut
13 {
14
15     /// Dirección MAC
16     IPAddr ip;
17
18     /// Dispositivo de red
19     Dev& dev;
20
21     /// Dispositivo de logging
22     std::ostream& log;
23
24     /// Constructor
25     IPOut(const IPAddr& ip, Dev& dev, std::ostream& log = std::cout);
26
27     /// Descarta un paquete
28     void drop(const std::string& msg, const std::string& buf);
29     void drop(const std::string& msg, const IPHeader& iph);
30
31     /// Envía un paquete IP
32     bool send(const std::string& data, IPAddr& src, IPAddr& dst, uint8_t proto,
33             bool df = 0, uint8_t ttl = 64, uint16_t id = 0)
34         throw (std::runtime_error);
35
36     // Nada de andar copiando...
37     private:
38     IPOut(const IPOut&);
39     IPOut& operator=(const IPOut&);
40
41 };
42
43 #endif // _IPOUT_H_
44
45 // vim: set et sw=4 sts=4 :