]> git.llucax.com Git - z.facultad/75.74/practicos.git/blob - practicas/pipi/src/routetable.h
Ruteo básico aparentemente andando. Se parametrizan las pruebas para poder
[z.facultad/75.74/practicos.git] / practicas / pipi / src / routetable.h
1 #ifndef _ROUTETABLE_H_
2 #define _ROUTETABLE_H_
3
4 #include "dev.h"
5 #include "ipaddr.h"
6 #include <map>
7
8 /// Tabla de ruteo
9 struct RouteTable
10 {
11
12     /// Ruta
13     struct Route
14     {
15         IPAddr gateway;
16         unsigned metric;
17         Dev* iface;
18         Route(): gateway(0), metric(0), iface(0) {}
19         Route(const IPAddr& gateway, unsigned metric, Dev& iface):
20             gateway(gateway), metric(metric), iface(&iface) {}
21     };
22
23     /// Tabla
24     std::map< IPAddr, Route > table;
25
26     /// Interfaz por default
27     Dev& default_iface;
28
29     /// Constructor
30     RouteTable(Dev& default_iface);
31
32     /// Agrega ruta
33     void add(const IPAddr& net, const IPAddr& gw, unsigned metric, Dev& iface);
34
35     /// Borra ruta
36     void del(const IPAddr& net);
37
38     /// Obtiene dirección e interfaz por la cual salir para un destino
39     Route* get(const IPAddr& dst);
40
41 };
42
43 #endif // _ROUTETABLE_H_
44
45 // vim: set et sw=4 sts=4 :