diff options
author | Joshua Colp <jcolp@digium.com> | 2013-07-30 14:16:41 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2013-07-30 14:16:41 +0000 |
commit | 7fded3378948b9076cc092145bb4823a50b8501c (patch) | |
tree | b9edcf279aba4267edcfa007c2a9224cfc68994d /res/res_sip/sip_configuration.c | |
parent | 7c371a1add2fd624d18b8d786d7510e6aed762a8 (diff) |
Add support for T.38 fax to chan_pjsip.
Review: https://reviewboard.asterisk.org/r/2692/
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@395731 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_sip/sip_configuration.c')
-rw-r--r-- | res/res_sip/sip_configuration.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/res/res_sip/sip_configuration.c b/res/res_sip/sip_configuration.c index 37a225f39..cb8dc9fd8 100644 --- a/res/res_sip/sip_configuration.c +++ b/res/res_sip/sip_configuration.c @@ -527,6 +527,24 @@ static int dtls_handler(const struct aco_option *opt, return ast_rtp_dtls_cfg_parse(&endpoint->dtls_cfg, var->name, var->value); } +static int t38udptl_ec_handler(const struct aco_option *opt, + struct ast_variable *var, void *obj) +{ + struct ast_sip_endpoint *endpoint = obj; + + if (!strcmp(var->value, "none")) { + endpoint->t38udptl_ec = UDPTL_ERROR_CORRECTION_NONE; + } else if (!strcmp(var->value, "fec")) { + endpoint->t38udptl_ec = UDPTL_ERROR_CORRECTION_FEC; + } else if (!strcmp(var->value, "redundancy")) { + endpoint->t38udptl_ec = UDPTL_ERROR_CORRECTION_REDUNDANCY; + } else { + return -1; + } + + return 0; +} + static void *sip_nat_hook_alloc(const char *name) { return ast_sorcery_generic_alloc(sizeof(struct ast_sip_nat_hook), NULL); @@ -667,6 +685,12 @@ int ast_res_sip_initialize_configuration(void) ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "namedcallgroup", "", named_groups_handler, NULL, 0, 0); ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "namedpickupgroup", "", named_groups_handler, NULL, 0, 0); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "devicestate_busy_at", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, devicestate_busy_at)); + ast_sorcery_object_field_register(sip_sorcery, "endpoint", "t38udptl", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, t38udptl)); + ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "t38udptl_ec", "none", t38udptl_ec_handler, NULL, 0, 0); + ast_sorcery_object_field_register(sip_sorcery, "endpoint", "t38udptl_maxdatagram", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, t38udptl_maxdatagram)); + ast_sorcery_object_field_register(sip_sorcery, "endpoint", "faxdetect", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, faxdetect)); + ast_sorcery_object_field_register(sip_sorcery, "endpoint", "t38udptl_nat", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, t38udptl_nat)); + ast_sorcery_object_field_register(sip_sorcery, "endpoint", "t38udptl_ipv6", "no", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, t38udptl_ipv6)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "rtpengine", "asterisk", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, rtp_engine)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "tonezone", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, zone)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "language", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, language)); |