I've been working with routers, switches and other CISCO’s peripherals for a long time ago. The Operating System of these peripherals is IOS (InterNetwork Operating System). I've always been using IOS without knowing the inner working of it. However, I recently read an article about CISCO’s IOS going open soon with an API for third party developers (http://www.networkworld.com/news/2007/121207-cisco-ios.html). I thought, hey ! That would be interesting to know how the inner works take place inside this O.S. Embedded Event Manager (http://forums.cisco.com/eforum/servlet/EEM?page=main) is already an API that enables developers to react on specific events of the IOS: image
Figure from Cisco IOS Network Management Configuration Guide, Release 12.4T (source)
As we can see on the figure above, we can react to an event (CLI, SYSLOG, OIR, TIMER, …) or we can enhance the CLI by registering our script/applet as a command:

Router(config)#alias exec my_cli_command event manager run my_eem_applet Router#ma_cli_command will execute my_eem_applet

But with the IOS’s opening, we will be able to interact with the whole pieces of the IOS (not only events) and perhaps act as a process. We may be able to register as an Interrupt Handler … In the next post, I’ll detail the inner working of the IOS.