domainpolicy.c File Reference

Domain Policy related functions. More...

#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"

Include dependency graph for domainpolicy.c:

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_tdb_handle = 0
static db_func_t domainpolicy_dbf


Detailed Description

Domain Policy related functions.

Definition in file domainpolicy.c.


Define Documentation

#define AVPMAXSIZE   120

Definition at line 63 of file domainpolicy.c.

Referenced by stack_push().

#define AVPSTACKSIZE   32

Definition at line 64 of file domainpolicy.c.

Referenced by stack_push().

#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().


Function Documentation

static int check_rule ( str rule,
char *  service,
int  service_len,
struct avp_stack stack 
) [static]

int domainpolicy_db_bind ( const str db_url  ) 

Bind the database interface.

Parameters:
db_url database url
Returns:
-1 on failure, 0 on success

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.

Parameters:
db_url database url
Returns:
-1 on failure, 0 on success

Definition at line 225 of file domainpolicy.c.

References db_func::init, and LM_CRIT.

Referenced by child_init().

int domainpolicy_db_ver ( const str db_url,
const str name 
)

Check the database table version.

Parameters:
db_url database URL
name table name
Returns:
-1 on failure, positive database version on success

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

Parameters:
_msg SIP message
_s1 unused
_s2 unused
Returns:
negative on failure, positive on succes

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.

Parameters:
_msg SIP message
_s1 unused
_s2 unused
Returns:
negative on failure, positive on success

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 
)

static int naptr_greater ( struct rdata a,
struct rdata b 
) [inline, static]

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]

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]


Variable Documentation

db_con_t* db_handle = 0 [static]

Definition at line 53 of file domainpolicy.c.

Definition at line 54 of file domainpolicy.c.


Generated on Tue May 22 16:00:39 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6