From 825607e09b022ce56f7b5ccac03cd0dbf042396c Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 11 Oct 2012 15:49:02 +0000 Subject: Don't make chan_sip export global symbols. During testing, it was discovered that having chan_sip export global symbols was problematic. The biggest problem was that load order was affected. Trying to use realtime could be problematic since in all likelihood the necessary realtime driver(s) would not be loaded before chan_sip. In addition, it was found that it was impossible to use the Digium Phone Module for Asterisk since it must be loaded before chan_sip since it must hook into chan_sip's configuration parsing. The solution is to use a virtual table in the same manner that other modules in Asterisk do, like app_voicemail. (closes issue ASTERISK-20545) Reported by: kmoore ........ Merged revisions 374842 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@374849 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/sip_api.h | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'include/asterisk') diff --git a/include/asterisk/sip_api.h b/include/asterisk/sip_api.h index 392456758..2b8a3f2a1 100644 --- a/include/asterisk/sip_api.h +++ b/include/asterisk/sip_api.h @@ -26,6 +26,16 @@ extern "C" { #include "asterisk/optional_api.h" #include "asterisk/config.h" +#define AST_SIP_API_VERSION 1 + +struct ast_sip_api_tech { + const int version; + const char *name; + int (*sipinfo_send)(struct ast_channel *chan, + struct ast_variable *headers, const char *content_type, + const char *content, const char *useragent_filter); +}; + /*! * \brief Send a customized SIP INFO request * @@ -45,6 +55,23 @@ int ast_sipinfo_send(struct ast_channel *chan, const char *content, const char *useragent_filter); +/*! + * \brief Register a SIP API provider + * + * This will fail if a provider has already registered or if the + * provider is using an incorrect version. + * + * \param provider The provider to register + * \retval 0 Success + * \retval -1 Failure + */ +int ast_sip_api_provider_register(const struct ast_sip_api_tech *provider); + +/*! + * \brief Unregister a SIP API provider + */ +void ast_sip_api_provider_unregister(void); + #if defined(__cplusplus) || defined(c_plusplus) } #endif -- cgit v1.2.3