Guidelines about how to add features / modules


I am currently considering adding some features/module/code to Asterisk in order to guarantee some QoS parameters. In a few words :

  • I want to reconfigure linux’s QoS parameters dynamically, each time a SIP session is created / finished
  • I want to reject some session creations if we cannot meet the QoS parameters.

So, the thing that I am wondering about is wether it is easy to add this feature set to asterisk. Has asterisk a modular architecture, that allows me to create a separate module, that registers to asterisk events (beforeSessionCreation(), sessionCreationDone(), etc… ) ?
Or do I have to directly modify the code ?

Another open question… Is there a way to tell, from the Asterisk point of view, which codec/voice protocol is being used ? Since QoS parameters would be different w/ the misc. codecs, I am wondering about a way to detect these codecs…

Thanks a lot for your information.
Sami Dalouche