reg-proxy: Added configuration parameter for setting registration expiry time
This commit is contained in:
parent
e5e251c396
commit
2d9f39ec43
|
@ -12,5 +12,5 @@ int tx_ss_handle(struct sip_client *sip_client, osip_t *osip, struct ss_request
|
|||
int tx_sip_register(struct sip_client *sip_client, osip_t *osip, char *imsi);
|
||||
|
||||
int sip_client_init(struct reg_proxy *reg, const char *src_ip, u_int16_t src_port,
|
||||
const char *dst_ip, u_int16_t dst_port);
|
||||
const char *dst_ip, u_int16_t dst_port, int expires_time);
|
||||
#endif /* _SIP_H */
|
||||
|
|
|
@ -23,11 +23,13 @@ struct sip_client {
|
|||
char *dst_ip;
|
||||
u_int16_t src_port;
|
||||
u_int16_t dst_port;
|
||||
int expires_time;
|
||||
};
|
||||
|
||||
struct sip_client *sip_client_create(const char *src_ip, u_int16_t src_port,
|
||||
const char *dst_ip, u_int16_t dst_port,
|
||||
sip_read_cb_t read_cb, void *data);
|
||||
int expires_time, sip_read_cb_t read_cb,
|
||||
void *data);
|
||||
|
||||
void sip_client_destroy(struct sip_client *sip_client);
|
||||
int sip_client_send(struct sip_client *sip_client, struct msgb *msg);
|
||||
|
|
|
@ -54,6 +54,7 @@ static const char *sip_src_ip = "127.0.0.1";
|
|||
static const char *sip_dst_ip = "127.0.0.1";
|
||||
static u_int16_t src_port = 5150;
|
||||
static u_int16_t dst_port = 5060;
|
||||
static int expires_time = 3600;
|
||||
|
||||
struct log_info_cat ipa_proxy_test_cat[] = {
|
||||
[DIPA_PROXY_TEST] = {
|
||||
|
@ -84,6 +85,7 @@ static void print_help()
|
|||
printf(" -s --src-port port Sip client port (source).\n");
|
||||
printf(" -D --sip-dst-ip ip-addr Sip server IP address (destination).\n");
|
||||
printf(" -d --dst-port port Sip server port (destination).\n");
|
||||
printf(" -t --expires-time Registration expiry time in seconds.\n");
|
||||
}
|
||||
|
||||
static void handle_options(int argc, char **argv)
|
||||
|
@ -96,10 +98,11 @@ static void handle_options(int argc, char **argv)
|
|||
{"src-port", 1, 0, 's'},
|
||||
{"sip-dst-ip", 1, 0, 'D'},
|
||||
{"dst-port", 1, 0, 'd'},
|
||||
{"expires-time", 1, 0, 't'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
c = getopt_long(argc, argv, "hS:s:D:d:",
|
||||
c = getopt_long(argc, argv, "hS:s:D:d:t:",
|
||||
long_options, &option_index);
|
||||
if (c == -1)
|
||||
break;
|
||||
|
@ -121,6 +124,9 @@ static void handle_options(int argc, char **argv)
|
|||
case 'd':
|
||||
dst_port = atoi(optarg);
|
||||
break;
|
||||
case 't':
|
||||
expires_time = atoi(optarg);
|
||||
break;
|
||||
default:
|
||||
/* ignore */
|
||||
break;
|
||||
|
@ -254,7 +260,7 @@ int main(int argc, char **argv)
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
rc = sip_client_init(reg, sip_src_ip, src_port, sip_dst_ip, dst_port);
|
||||
rc = sip_client_init(reg, sip_src_ip, src_port, sip_dst_ip, dst_port, expires_time);
|
||||
if (rc < 0) {
|
||||
LOGP(DSUP, LOGL_FATAL, "Cannot set up SIP\n");
|
||||
exit(2);
|
||||
|
|
|
@ -145,7 +145,7 @@ int tx_sip_register(struct sip_client *sip_client, osip_t *osip, char *imsi)
|
|||
sprintf(tmp, "<sip:%s@%s:%s>", imsi, sip_client->src_ip, src_port);
|
||||
osip_message_set_contact(reg_msg, tmp);
|
||||
|
||||
sprintf(tmp, "%i", EXPIRES_TIME_INSECS);
|
||||
sprintf(tmp, "%i", sip_client->expires_time);
|
||||
osip_message_set_expires(reg_msg, tmp);
|
||||
|
||||
osip_message_set_content_length(reg_msg, "0");
|
||||
|
@ -493,10 +493,10 @@ void sip_set_cbs(osip_t *osip)
|
|||
|
||||
|
||||
int sip_client_init(struct reg_proxy *reg, const char *src_ip, u_int16_t src_port,
|
||||
const char *dst_ip, u_int16_t dst_port)
|
||||
const char *dst_ip, u_int16_t dst_port, int expires_time)
|
||||
{
|
||||
|
||||
reg->sip_client = sip_client_create(src_ip, src_port, dst_ip, dst_port,
|
||||
reg->sip_client = sip_client_create(src_ip, src_port, dst_ip, dst_port, expires_time,
|
||||
&sip_read_cb, reg);
|
||||
if (!reg->sip_client)
|
||||
return -1;
|
||||
|
|
|
@ -191,7 +191,8 @@ int ipa_client_write_cb(struct ipa_client_conn *link)
|
|||
*/
|
||||
struct sip_client *sip_client_create(const char *src_ip, u_int16_t src_port,
|
||||
const char *dst_ip, u_int16_t dst_port,
|
||||
sip_read_cb_t read_cb, void *data)
|
||||
int expires_time, sip_read_cb_t read_cb,
|
||||
void *data)
|
||||
{
|
||||
struct sip_client *sip_client;
|
||||
int rc;
|
||||
|
@ -216,6 +217,7 @@ struct sip_client *sip_client_create(const char *src_ip, u_int16_t src_port,
|
|||
sip_client->src_ip = src_ip;
|
||||
sip_client->dst_port = dst_port;
|
||||
sip_client->src_port = src_port;
|
||||
sip_client->expires_time = expires_time;
|
||||
|
||||
rc = sip_client_connect(sip_client);
|
||||
|
||||
|
|
Loading…
Reference in New Issue