diff options
Diffstat (limited to 'trunk/include/asterisk/enum.h')
-rw-r--r-- | trunk/include/asterisk/enum.h | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/trunk/include/asterisk/enum.h b/trunk/include/asterisk/enum.h new file mode 100644 index 000000000..d6bbea294 --- /dev/null +++ b/trunk/include/asterisk/enum.h @@ -0,0 +1,90 @@ +/* + * Asterisk -- An open source telephony toolkit. + * + * Copyright (C) 1999 - 2005, Digium, Inc. + * + * Mark Spencer <markster@digium.com> + * + * See http://www.asterisk.org for more information about + * the Asterisk project. Please do not directly contact + * any of the maintainers of this project for assistance; + * the project provides a web site, mailing lists and IRC + * channels for your use. + * + * This program is free software, distributed under the terms of + * the GNU General Public License Version 2. See the LICENSE file + * at the top of the source tree. + */ + +/*! \file enum.h + \brief DNS and ENUM functions +*/ + +#ifndef _ASTERISK_ENUM_H +#define _ASTERISK_ENUM_H + +#include "asterisk/channel.h" + +struct naptr { + unsigned short order; + unsigned short pref; +} __attribute__ ((__packed__)); + +struct enum_naptr_rr { + struct naptr naptr; /*!< order and preference of RR */ + char *result; /*!< result of naptr parsing,e.g.: tel:+5553 */ + char *tech; /*!< Technology (from URL scheme) */ + int sort_pos; /*!< sort position */ +}; + +struct enum_context { + char *dst; /*!< Destination part of URL from ENUM */ + int dstlen; /*!< Length */ + char *tech; /*!< Technology (from URL scheme) */ + int techlen; /*!< Length */ + char *txt; /*!< TXT record in TXT lookup */ + int txtlen; /*!< Length */ + char *naptrinput; /*!< The number to lookup */ + int position; /*!< used as counter for RRs or specifies position of required RR */ + int options; /*!< options , see ENUMLOOKUP_OPTIONS_* defined above */ + struct enum_naptr_rr *naptr_rrs; /*!< array of parsed NAPTR RRs */ + int naptr_rrs_count; /*!< Size of array naptr_rrs */ +}; + + +/*! \brief Lookup entry in ENUM + \param chan Channel + \param number E164 number with or without the leading + + \param location Number returned (or SIP uri) + \param maxloc Max length + \param technology Technology (from url scheme in response) + You can set it to get particular answer RR, if there are many techs in DNS response, example: "sip" + If you need any record, then set it to empty string + \param maxtech Max length + \param suffix Zone suffix (if is NULL then use enum.conf 'search' variable) + \param options Options ('c' to count number of NAPTR RR) + \param record The position of required RR in the answer list + \param argcontext Argument for caching results into an enum_context pointer (NULL is used for not caching) + \retval 1 if found + \retval 0 if not found + \retval -1 on hangup +*/ +int ast_get_enum(struct ast_channel *chan, const char *number, char *location, int maxloc, char *technology, + int maxtech, char* suffix, char* options, unsigned int record, struct enum_context **argcontext); + +/*! \brief Lookup DNS TXT record (used by app TXTCIDnum + \param chan Channel + \param number E164 number with or without the leading + + \param location Number returned (or SIP uri) + \param maxloc Max length of number + \param technology Technology (not used in TXT records) + \param maxtech Max length + \param txt Text string (return value) + \param maxtxt Max length of "txt" +*/ +int ast_get_txt(struct ast_channel *chan, const char *number, char *location, int maxloc, char *technology, int maxtech, char *txt, int maxtxt); + +int ast_enum_init(void); +int ast_enum_reload(void); + +#endif /* _ASTERISK_ENUM_H */ |