#include "domainpolicy_mod.h"
#include "domainpolicy.h"
#include "../../db/db.h"
#include "../../parser/parse_uri.h"
#include "../../parser/parse_from.h"
#include "../../ut.h"
#include "../../dset.h"
#include "../../route.h"
#include "../../ip_addr.h"
#include "../../socket_info.h"
#include "../../resolve.h"
#include "../../regexp.h"

Go to the source code of this file.
Data Structures | |
| struct | avp |
| struct | avp_stack |
Defines | |
| #define | AVPMAXSIZE 120 |
| #define | AVPSTACKSIZE 32 |
| #define | IS_D2PNAPTR(naptr) ((naptr->services_len >= 7) && (!strncasecmp("D2P+SIP", naptr->services, 7))) |
Functions | |
| static int | check_rule (str *rule, char *service, int service_len, struct avp_stack *stack) |
| int | domainpolicy_db_bind (const str *db_url) |
| Bind the database interface. | |
| void | domainpolicy_db_close (void) |
| Close the database connection. | |
| int | domainpolicy_db_init (const str *db_url) |
| Initialize the database connection. | |
| int | domainpolicy_db_ver (const str *db_url, const str *name) |
| Check the database table version. | |
| int | dp_apply_policy (struct sip_msg *_msg, char *_s1, char *_s2) |
| Apply DP-DDDS policy to current SIP message. | |
| int | dp_can_connect (struct sip_msg *_msg, char *_s1, char *_s2) |
| Check if host in Request URI has DP-DDDS NAPTRs and if we can connect to them. | |
| int | dp_can_connect_str (str *domain, int rec_level) |
| static int | naptr_greater (struct rdata *a, struct rdata *b) |
| static void | naptr_sort (struct rdata **head) |
| static int | parse_naptr_regexp (char *first, int len, str *pattern, str *replacement) |
| static int | stack_push (struct avp_stack *stack, char *att, char *val) |
| static void | stack_reset (struct avp_stack *stack) |
| static int | stack_succeeded (struct avp_stack *stack) |
| static void | stack_to_avp (struct avp_stack *stack) |
Variables | |
| static db_con_t * | db_handle = 0 |
| static db_func_t | domainpolicy_dbf |
Definition in file domainpolicy.c.
| #define AVPMAXSIZE 120 |
| #define AVPSTACKSIZE 32 |
| #define IS_D2PNAPTR | ( | naptr | ) | ((naptr->services_len >= 7) && (!strncasecmp("D2P+SIP", naptr->services, 7))) |
Definition at line 51 of file domainpolicy.c.
Referenced by dp_can_connect_str(), and naptr_greater().
| static int check_rule | ( | str * | rule, | |
| char * | service, | |||
| int | service_len, | |||
| struct avp_stack * | stack | |||
| ) | [static] |
Definition at line 416 of file domainpolicy.c.
References DB_STR, DB_STRING, domainpolicy_col_att, domainpolicy_col_rule, domainpolicy_col_type, domainpolicy_col_val, domainpolicy_table, db_func::free_result, _str::len, LM_DBG, LM_ERR, LM_INFO, db_func::query, RES_ROW_N, RES_ROWS, ROW_N, ROW_VALUES, _str::s, stack_push(), rdata::type, db_func::use_table, VAL_NULL, VAL_STR, VAL_STRING, VAL_TYPE, vals, and ZSW.
Referenced by dp_can_connect_str().
| int domainpolicy_db_bind | ( | const str * | db_url | ) |
Bind the database interface.
| db_url | database url |
Definition at line 209 of file domainpolicy.c.
References db_bind_mod(), and LM_CRIT.
Referenced by mod_init().
| void domainpolicy_db_close | ( | void | ) |
Close the database connection.
Definition at line 245 of file domainpolicy.c.
References db_func::close.
| int domainpolicy_db_init | ( | const str * | db_url | ) |
Initialize the database connection.
| db_url | database url |
Definition at line 225 of file domainpolicy.c.
References db_func::init, and LM_CRIT.
Referenced by child_init().
Check the database table version.
| db_url | database URL | |
| name | table name |
Definition at line 260 of file domainpolicy.c.
References db_func::close, db_table_version(), db_func::init, and LM_CRIT.
Referenced by mod_init().
| int dp_apply_policy | ( | struct sip_msg * | _msg, | |
| char * | _s1, | |||
| char * | _s2 | |||
| ) |
Apply DP-DDDS policy to current SIP message.
Apply DP-DDDS policy to current SIP message. This means build a new destination URI from the policy AVP and export it as AVP. Then in kamailio.cfg this new target AVP can be pushed into the destination URI $duri
| _msg | SIP message | |
| _s1 | unused | |
| _s2 | unused |
Definition at line 811 of file domainpolicy.c.
References AVP_VAL_STR, domain, domain_prefix_avp_name_str, domain_prefix_name, domain_replacement_avp_name_str, domain_replacement_name, domain_suffix_avp_name_str, domain_suffix_name, usr_avp::flags, sip_msg::force_send_socket, grep_sock_info(), sip_uri::host, _str::len, len, LM_DBG, LM_ERR, LM_WARN, MAX_URI_SIZE, parse_phostport(), parse_sip_msg_uri(), sip_msg::parsed_uri, sip_uri::port, port, port_override_avp_name_str, port_override_name, REQUEST_ROUTE, route_type, _str::s, int_str::s, search_first_avp(), send_socket_avp_name_str, send_socket_name, set_dst_uri(), sip_uri::transport, transport_override_avp_name_str, transport_override_name, and ZSW.
| int dp_can_connect | ( | struct sip_msg * | _msg, | |
| char * | _s1, | |||
| char * | _s2 | |||
| ) |
Check if host in Request URI has DP-DDDS NAPTRs and if we can connect to them.
| _msg | SIP message | |
| _s1 | unused | |
| _s2 | unused |
Definition at line 762 of file domainpolicy.c.
References domain, dp_can_connect_str(), sip_uri::host, _str::len, LM_DBG, LM_ERR, MAX_DOMAIN_SIZE, parse_sip_msg_uri(), sip_msg::parsed_uri, REQUEST_ROUTE, route_type, _str::s, and ZSW.
| int dp_can_connect_str | ( | str * | domain, | |
| int | rec_level | |||
| ) |
Definition at line 519 of file domainpolicy.c.
References check_rule(), domain_replacement_name, DP_DDDS_RET_DNSERROR, DP_DDDS_RET_NEGATIVE, DP_DDDS_RET_NOTFOUND, DP_DDDS_RET_POSITIVE, naptr_rdata::flags, naptr_rdata::flags_len, get_record(), IS_D2PNAPTR, _str::len, LM_CRIT, LM_DBG, LM_ERR, LM_INFO, LM_NOTICE, MAX_DDDS_RECURSIONS, MAX_URI_SIZE, naptr_sort(), rdata::next, NULL, naptr_rdata::order, parse_naptr_regexp(), naptr_rdata::pref, rdata::rdata, reg_replace(), naptr_rdata::regexp, naptr_rdata::regexp_len, naptr_rdata::repl, _str::s, int_str::s, naptr_rdata::services, naptr_rdata::services_len, stack_push(), stack_reset(), stack_succeeded(), stack_to_avp(), avp_stack::succeeded, rdata::type, and ZSW.
Referenced by dp_can_connect().
Definition at line 343 of file domainpolicy.c.
References IS_D2PNAPTR, naptr_rdata::order, naptr_rdata::pref, rdata::rdata, and rdata::type.
Referenced by naptr_sort().
| static void naptr_sort | ( | struct rdata ** | head | ) | [inline, static] |
Definition at line 371 of file domainpolicy.c.
References naptr_greater(), rdata::next, NULL, and s.
Referenced by do_query(), dp_can_connect_str(), and enum_pv_query_3().
| static int parse_naptr_regexp | ( | char * | first, | |
| int | len, | |||
| str * | pattern, | |||
| str * | replacement | |||
| ) | [inline, static] |
Definition at line 293 of file domainpolicy.c.
References _str::len, LM_ERR, _str::s, and second.
Referenced by do_query(), dp_can_connect_str(), enum_pv_query_3(), and is_from_user_enum_2().
| static int stack_push | ( | struct avp_stack * | stack, | |
| char * | att, | |||
| char * | val | |||
| ) | [static] |
Definition at line 82 of file domainpolicy.c.
References avp::att, avp_stack::avp, AVPMAXSIZE, AVPSTACKSIZE, avp_stack::i, LM_ERR, avp_stack::succeeded, and avp::val.
Referenced by check_rule(), and dp_can_connect_str().
| static void stack_reset | ( | struct avp_stack * | stack | ) | [static] |
Definition at line 99 of file domainpolicy.c.
References avp_stack::i, and avp_stack::succeeded.
Referenced by dp_can_connect_str().
| static int stack_succeeded | ( | struct avp_stack * | stack | ) | [static] |
Definition at line 104 of file domainpolicy.c.
References avp_stack::succeeded.
Referenced by dp_can_connect_str().
| static void stack_to_avp | ( | struct avp_stack * | stack | ) | [static] |
Definition at line 108 of file domainpolicy.c.
References add_avp(), avp::att, avp_stack::avp, AVP_NAME_STR, AVP_VAL_STR, avp_stack::i, _str::len, LM_DBG, LM_ERR, int_str::n, _str::s, int_str::s, str2int(), avp::val, and ZSW.
Referenced by dp_can_connect_str().
Definition at line 53 of file domainpolicy.c.
db_func_t domainpolicy_dbf [static] |
Definition at line 54 of file domainpolicy.c.
1.5.6