Depuis déjà longtemps je travaille sur des routeurs, switches, et autres périphériques CISCO. L’Operating System de ces périphériques est l’IOS (InterNetwork Operating System). Bien que j’utilise cet IOS depuis le départ je ne me suis jamais vraiment attardé sur son fonctionnement interne. Or, il y a peu, j’ai lu un article sur le fait que CISCO allait probablement ouvrir l’accès à l’IOS aux développeurs tiers via une API (http://www.networkworld.com/news/2007/121207-cisco-ios.html), je me suis dit qu’il serait donc intéressant de décortiquer un peu le fonctionnement de cet O.S. Embedded Event Manager (http://forums.cisco.com/eforum/servlet/EEM?page=main) est déjà une API qui permet aux développeurs de réagir sur certains évènements de l’IOS : clip_image001
Schéma provenant du Cisco IOS Network Management Configuration Guide, Release 12.4T (source)
Comme on peut le voir, soit on réagit à un évènement (CLI, SYSLOG, OIR, TIMER, …) soit on enrichit le CLI en enregistrant son script/applet comme commande :

Router(config)#alias exec ma_commande_cli event manager run mon_applet_eem Router#ma_commande_cli à exécution de l’applet mon_applet_eem

Mais avec l’ouverture de l’IOS on va théoriquement pouvoir interagir avec l’ensemble des éléments de l’IOS, plus seulement avec des events, mais sans doute en tant que processus. On pourra peut-être aussi s’enregistrer en tant qu’Interrupt Handler… Dans les prochains posts je détaillerai le fonctionnement de l’IOS.