00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef _T_FWD_H
00037 #define _T_FWD_H
00038
00039 #include "defs.h"
00040
00041 #include "../../proxy.h"
00042 #include "h_table.h"
00043
00044
00045 #define E2E_CANCEL_HOP_BY_HOP
00046
00047 enum unmatched_cancel_t { UM_CANCEL_STATEFULL=0, UM_CANCEL_STATELESS,
00048 UM_CANCEL_DROP };
00049
00050 typedef int (*tfwd_f)(struct sip_msg* p_msg , struct proxy_l * proxy );
00051 typedef int (*taddblind_f)( void);
00052 typedef int (*treplicate_uri_f)(struct sip_msg* p_msg , str *suri );
00053
00054 void t_on_branch(unsigned int go_to);
00055 unsigned int get_on_branch(void);
00056 int t_replicate_uri(struct sip_msg *p_msg, str *suri);
00057 int t_replicate(struct sip_msg *p_msg, struct proxy_l * proxy, int proto);
00058
00059
00060
00061
00062 void e2e_cancel( struct sip_msg *cancel_msg, struct cell *t_cancel, struct cell *t_invite );
00063 int e2e_cancel_branch( struct sip_msg *cancel_msg, struct cell *t_cancel, struct cell *t_invite, int branch );
00064
00065
00066
00067
00068 #ifdef USE_DNS_FAILOVER
00069 int add_uac_dns_fallback( struct cell *t, struct sip_msg* msg,
00070 struct ua_client* old_uac,
00071 int lock_replies);
00072 #endif
00073 int add_blind_uac( void);
00074 int t_forward_nonack( struct cell *t, struct sip_msg* p_msg,
00075 struct proxy_l * p, int proto);
00076 int t_forward_cancel(struct sip_msg* p_msg , struct proxy_l * proxy,
00077 int proto, struct cell** tran);
00078 int t_forward_ack( struct sip_msg* p_msg );
00079 int t_send_branch( struct cell *t, int branch, struct sip_msg* p_msg ,
00080 struct proxy_l * proxy, int lock_replies);
00081 int t_relay_cancel(struct sip_msg* p_msg);
00082
00083 int reparse_on_dns_failover_fixup(void *handle, str *gname, str *name, void **val);
00084
00085 #endif
00086
00087