diff options
author | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2015-12-07 18:04:39 +0300 |
---|---|---|
committer | Ivan Kluchnikov <kluchnikovi@gmail.com> | 2017-02-07 18:59:54 +0300 |
commit | 2d9f39ec43254589c6487698d067774199ae7bcd (patch) | |
tree | 32e82d488ecf64efae20d2bf4f879f9a0b872613 | |
parent | e5e251c396a802cf53eb1716639ed128b6a470b7 (diff) |
reg-proxy: Added configuration parameter for setting registration expiry time
-rw-r--r-- | openbsc/include/openbsc/sip.h | 2 | ||||
-rw-r--r-- | openbsc/include/openbsc/sip_client.h | 4 | ||||
-rw-r--r-- | openbsc/src/reg-proxy/reg_proxy.c | 10 | ||||
-rw-r--r-- | openbsc/src/reg-proxy/sip.c | 6 | ||||
-rw-r--r-- | openbsc/src/reg-proxy/sip_client.c | 4 |
5 files changed, 18 insertions, 8 deletions
diff --git a/openbsc/include/openbsc/sip.h b/openbsc/include/openbsc/sip.h index 581f3f3c5..e750e9765 100644 --- a/openbsc/include/openbsc/sip.h +++ b/openbsc/include/openbsc/sip.h @@ -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 */ diff --git a/openbsc/include/openbsc/sip_client.h b/openbsc/include/openbsc/sip_client.h index 23eaa7f75..d705ecc98 100644 --- a/openbsc/include/openbsc/sip_client.h +++ b/openbsc/include/openbsc/sip_client.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); diff --git a/openbsc/src/reg-proxy/reg_proxy.c b/openbsc/src/reg-proxy/reg_proxy.c index 9444df7e1..6b3487b30 100644 --- a/openbsc/src/reg-proxy/reg_proxy.c +++ b/openbsc/src/reg-proxy/reg_proxy.c @@ -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); diff --git a/openbsc/src/reg-proxy/sip.c b/openbsc/src/reg-proxy/sip.c index e09f452f0..7f74831da 100644 --- a/openbsc/src/reg-proxy/sip.c +++ b/openbsc/src/reg-proxy/sip.c @@ -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; diff --git a/openbsc/src/reg-proxy/sip_client.c b/openbsc/src/reg-proxy/sip_client.c index f161fa9df..28a9d225f 100644 --- a/openbsc/src/reg-proxy/sip_client.c +++ b/openbsc/src/reg-proxy/sip_client.c @@ -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); |