Réception d’une notification des modifications
De nombreux clients peuvent mettre à jour simultanément la table de routage, et les clients doivent être avertis lorsque des modifications apportées aux informations de routage se produisent. Par exemple, un client qui n’est pas informé des modifications apportées par un autre client à la table de routage peut publier des informations de routage obsolètes. Cela peut être évité en programmant les clients pour qu’ils s’inscrivent auprès du gestionnaire de table de routage pour être avertis des modifications apportées à la table de routage. Le gestionnaire de tables de routage envoie des notifications de modifications à tous les clients qui s’inscrivent pour les recevoir.
La notification de modification s’applique uniquement aux destinations. Il n’existe aucun moyen d’interroger le gestionnaire de tables de routage pour les modifications apportées à un itinéraire particulier.
Lorsqu’une modification est apportée à l’un des itinéraires vers une destination, le gestionnaire de tables de routage envoie une notification indiquant qu’une modification s’est produite. Cette notification s’adresse uniquement aux clients qui se sont inscrits auprès du gestionnaire de tables de routage pour le type de modification qui s’est produite. Toutes les modifications apportées aux informations de routage dans le gestionnaire de tables de routage se produisent dans une ou plusieurs vues, et des messages de notification de modification peuvent être demandés dans n’importe quel sous-ensemble de vues prises en charge.
Il existe actuellement trois types de notifications de modification pour lesquels un client peut s’inscrire :
Notification de toute modification apportée aux itinéraires pour la destination. Cette requête est effectuée à l’aide de l’indicateur RTM_CHANGE_TYPE_ALL.
Notification si la meilleure route vers la destination change, ou l’une des informations suivantes pour les modifications actuelles les plus importantes :
- Préférence
- Tronçons suivants
- Indicateurs de routage
Cette requête est effectuée à l’aide de l’indicateur RTM_CHANGE_TYPE_BEST.
Notification de toutes les modifications du type RTM_CHANGE_TYPE_BEST, à l’exception des modifications apportées aux indicateurs de non-transfert dans le meilleur itinéraire. Par exemple, le gestionnaire de routeur attend les modifications de ce type dans la vue de monodiffusion et met à jour les informations dans le redirecteur de monodiffusion. Cette requête est effectuée à l’aide de l’indicateur RTM_CHANGE_TYPE_FORWARDING.
Les demandes de notifications de modifications peuvent également être limitées à un sous-ensemble de destinations en s’inscrivant aux notifications de modifications uniquement pour les destinations « marquées ». Le client peut marquer une destination pour la notification de modification en appelant RtmMarkDestForChangeNotification.
Lorsqu’une modification se produit, le gestionnaire de tables de routage vérifie s’il existe des clients qui doivent être avertis de cette modification. Un client doit être averti d’une modification si toutes les conditions suivantes sont remplies :
- Le type de modification qui s’est produit est un type pour lequel le client s’est inscrit pour la notification
- Des modifications apportées à une destination marquée par le client ont eu lieu ou à une destination, si le client a demandé des modifications pour toutes les destinations
- Le client a demandé une notification de modification pour l’affichage dans lequel cette modification s’est produite
Si la modification répond à tous les critères ci-dessus, la modification est mise en cache et le client est averti.
La notification ne spécifie pas quelles sont les modifications réelles, mais seulement qu’elles se sont produites. Le client doit récupérer les modifications en appelant RtmGetChangedDests à l’aide du handle de notification obtenu à partir d’un appel précédent à RtmRegisterForChangeNotification.