From a44bcadfa1bc4c3a6067c5921d8eda10d7b24d10 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Wed, 8 Jun 2016 03:17:45 +0000 Subject: Re #422: Added IPv6 support to PJNATH, changes: - Deprecated 'pj_ice_strans_cfg.af', if set, the value will be ignored, address family setting is now specified via transport setting, i.e: 'pj_ice_strans_cfg.stun_tp/turn_tp'. - Deprecated 'pj_ice_strans_cfg.stun/turn', for backward compatibility, this field value will be checked if 'pj_ice_strans_cfg.stun_tp_cnt/turn_tp_cnt' is set to zero. - Added 'pj_ice_strans_stun_cfg' & 'pj_ice_strans_stun_cfg' and the corresponding 'pj_ice_strans_stun/turn_cfg_default()' - Added 'pj_ice_strans_cfg.stun_tp/turn_tp' as replacement of 'pj_ice_strans_cfg.stun/turn', it is now an array so app can have multiple STUN/TURN transports. - Added macro PJ_ICE_MAX_STUN/TURN to specify maximum number of STUN/TURN transports in each ICE component in compile-time. - Miscellaneous: fixed socket number limit in concurrency test in pjnath-test, updated pjsua_media.c to use new 'pj_ice_strans_cfg' setting. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5339 74dad513-b988-da41-8d7b-12977e46ad98 --- pjmedia/src/pjmedia/transport_ice.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'pjmedia/src') diff --git a/pjmedia/src/pjmedia/transport_ice.c b/pjmedia/src/pjmedia/transport_ice.c index 0455627e..5876aea8 100644 --- a/pjmedia/src/pjmedia/transport_ice.c +++ b/pjmedia/src/pjmedia/transport_ice.c @@ -50,7 +50,6 @@ struct transport_ice { pjmedia_transport base; pj_pool_t *pool; - int af; unsigned options; /**< Transport options. */ unsigned comp_cnt; @@ -235,7 +234,6 @@ PJ_DEF(pj_status_t) pjmedia_ice_create3(pjmedia_endpt *endpt, pool = pjmedia_endpt_create_pool(endpt, name, 512, 512); tp_ice = PJ_POOL_ZALLOC_T(pool, struct transport_ice); tp_ice->pool = pool; - tp_ice->af = cfg->af; tp_ice->options = options; tp_ice->comp_cnt = comp_cnt; pj_ansi_strcpy(tp_ice->base.name, pool->obj_name); @@ -822,6 +820,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, pj_bool_t comp1_found=PJ_FALSE, comp2_found=PJ_FALSE, has_rtcp=PJ_FALSE; pj_sockaddr rem_conn_addr, rtcp_addr; unsigned i; + int rem_af = 0; pj_status_t status; rem_m = rem_sdp->media[media_index]; @@ -848,6 +847,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, return PJMEDIA_SDP_EMISSINGCONN; /* Verify address family matches */ + /* if ((tp_ice->af==pj_AF_INET() && pj_strcmp(&rem_conn->addr_type, &STR_IP4)!=0) || (tp_ice->af==pj_AF_INET6() && @@ -855,9 +855,18 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, { return PJMEDIA_SDP_ETPORTNOTEQUAL; } + */ + + /* Get remote address family */ + if (pj_strcmp(&rem_conn->addr_type, &STR_IP4)==0) + rem_af = pj_AF_INET(); + else if (pj_strcmp(&rem_conn->addr_type, &STR_IP6)==0) + rem_af = pj_AF_INET6(); + else + pj_assert(!"Unsupported address family"); /* Assign remote connection address */ - status = pj_sockaddr_init(tp_ice->af, &rem_conn_addr, &rem_conn->addr, + status = pj_sockaddr_init(rem_af, &rem_conn_addr, &rem_conn->addr, (pj_uint16_t)rem_m->desc.port); if (status != PJ_SUCCESS) return status; @@ -883,6 +892,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, if (rtcp_attr.addr.slen) { /* Verify address family matches */ + /* if ((tp_ice->af==pj_AF_INET() && pj_strcmp(&rtcp_attr.addr_type, &STR_IP4)!=0) || (tp_ice->af==pj_AF_INET6() && @@ -890,9 +900,10 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, { return PJMEDIA_SDP_ETPORTNOTEQUAL; } + */ /* Assign RTCP address */ - status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + status = pj_sockaddr_init(rem_af, &rtcp_addr, &rtcp_attr.addr, (pj_uint16_t)rtcp_attr.port); if (status != PJ_SUCCESS) { @@ -900,7 +911,7 @@ static pj_status_t verify_ice_sdp(struct transport_ice *tp_ice, } } else { /* Assign RTCP address */ - status = pj_sockaddr_init(tp_ice->af, &rtcp_addr, + status = pj_sockaddr_init(rem_af, &rtcp_addr, NULL, (pj_uint16_t)rtcp_attr.port); if (status != PJ_SUCCESS) { -- cgit v1.2.3