Gestion de la table de routage

Une station passive maintient à jour une table regroupant les informations de routage envoyées par le routeur dans les annonces RIP. Nous allons décrire dans cette section l'implémentation que nous avons réalisée de cette table de routage.

Cette implémentation se base sur les adresses de la classe Libemu_Address de la bibliothèque Libemu et utilise les mécanismes de listes chaînées de la bibliothèque STL.

Nous avons créé un objet C++ RIP_Routing_Table_Entry qui consiste en une entrée dans la table de routage. Un tel objet contient les champs suivants :

Libemu_Address dest;        /* the network destination */
Libemu_Address netmask;     /* the destination network netmask */
Libemu_Address router;      /* the next router */
int metric;                 /* the metric in number of hops */
time_t validity;            /* the timer for the entry validity */

Comme la station passive ne dispose que d'une seule interface réseau, nous ne l'avons pas intégrée à une telle entrée dans la table.

En utilisant la bibliothèque STL et cet objet représentant une entrée dans la table, nous avons défini un nouveau type, le type Routing_Table, qui consiste en une liste chaînée d'entrées de la table, ce qui nous permet un plus grand dynamisme dans la gestion de cette table qu'une structure basée sur un tableau. Cette liste est définie de la manière suivante :

typedef list<RIP_Routing_Table_Entry> Routing_Table;

Nous pouvons alors enfin définir l'objet RIP_Routing_Table lui-même qui ne comporte qu'un seul champ de type Routing_Table. Nous définissons ensuite toutes les opérations d'ajout, de retrait, de mise à jour et d'affichage des entrées de la table.

Frédéric Beck 2004-02-18