Changeset 1851


Ignore:
Timestamp:
Mar 8, 2008 9:26:22 AM (11 years ago)
Author:
bennylp
Message:

Make SIP and RTP ports in simpleua configurable, and add initial support for IPv6 too

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/samples/simpleua.c

    r1735 r1851  
    3030 * Capabilities to be demonstrated here: 
    3131 *  - Basic call 
     32 *  - Should support IPv6 (not tested) 
    3233 *  - UDP transport at port 5060 (hard coded) 
    3334 *  - RTP socket at port 4000 (hard coded) 
     
    6364 
    6465#include "util.h" 
     66 
     67 
     68/* Settings */ 
     69#define AF          pj_AF_INET()     /* Change to pj_AF_INET6() for IPv6. 
     70                                      * PJ_HAS_IPV6 must be enabled and 
     71                                      * your system must support IPv6.  */ 
     72#define SIP_PORT    5060             /* Listening SIP port              */ 
     73#define RTP_PORT    4000             /* RTP port                        */ 
    6574 
    6675/* 
     
    180189     */ 
    181190    { 
    182         pj_sockaddr_in addr; 
    183  
    184         addr.sin_family = pj_AF_INET(); 
    185         addr.sin_addr.s_addr = 0; 
    186         addr.sin_port = pj_htons(5060); 
    187  
    188         status = pjsip_udp_transport_start( g_endpt, &addr, NULL, 1, NULL); 
     191        pj_sockaddr addr; 
     192 
     193        pj_sockaddr_init(AF, &addr, NULL, (pj_uint16_t)SIP_PORT); 
     194         
     195        if (AF == pj_AF_INET()) { 
     196            status = pjsip_udp_transport_start( g_endpt, &addr.ipv4, NULL,  
     197                                                1, NULL); 
     198        } else if (AF == pj_AF_INET6()) { 
     199            status = pjsip_udp_transport_start6(g_endpt, &addr.ipv6, NULL, 
     200                                                1, NULL); 
     201        } else { 
     202            status = PJ_EAFNOTSUP; 
     203        } 
     204 
    189205        if (status != PJ_SUCCESS) { 
    190206            app_perror(THIS_FILE, "Unable to start UDP transport", status); 
     
    274290     * opt to re-use the same media transport for subsequent calls. 
    275291     */ 
    276     status = pjmedia_transport_udp_create(g_med_endpt, NULL, 4000, 0,  
    277                                           &g_med_transport); 
     292    status = pjmedia_transport_udp_create3(g_med_endpt, AF, NULL, NULL,  
     293                                           RTP_PORT, 0, &g_med_transport); 
    278294    if (status != PJ_SUCCESS) { 
    279295        app_perror(THIS_FILE, "Unable to create media transport", status); 
     
    293309     */ 
    294310    if (argc > 1) { 
     311        pj_sockaddr hostaddr; 
     312        char hostip[PJ_INET6_ADDRSTRLEN+2]; 
    295313        char temp[80]; 
    296314        pj_str_t dst_uri = pj_str(argv[1]); 
     
    300318        pjsip_tx_data *tdata; 
    301319 
    302         pj_ansi_sprintf(temp, "sip:simpleuac@%s", pjsip_endpt_name(g_endpt)->ptr); 
     320        if (pj_gethostip(AF, &hostaddr) != PJ_SUCCESS) { 
     321            app_perror(THIS_FILE, "Unable to retrieve local host IP", status); 
     322            return 1; 
     323        } 
     324        pj_sockaddr_print(&hostaddr, hostip, sizeof(hostip), 2); 
     325 
     326        pj_ansi_sprintf(temp, "<sip:simpleuac@%s:%d>",  
     327                        hostip, SIP_PORT); 
    303328        local_uri = pj_str(temp); 
    304329 
     
    306331        status = pjsip_dlg_create_uac( pjsip_ua_instance(),  
    307332                                       &local_uri,  /* local URI */ 
    308                                        NULL,        /* local Contact */ 
     333                                       &local_uri,  /* local Contact */ 
    309334                                       &dst_uri,    /* remote URI */ 
    310335                                       &dst_uri,    /* remote target */ 
     
    462487static pj_bool_t on_rx_request( pjsip_rx_data *rdata ) 
    463488{ 
     489    pj_sockaddr hostaddr; 
     490    char temp[80], hostip[PJ_INET6_ADDRSTRLEN]; 
     491    pj_str_t local_uri; 
    464492    pjsip_dialog *dlg; 
    465493    pjmedia_sdp_session *local_sdp; 
     
    514542 
    515543    /* 
     544     * Generate Contact URI 
     545     */ 
     546    if (pj_gethostip(AF, &hostaddr) != PJ_SUCCESS) { 
     547        app_perror(THIS_FILE, "Unable to retrieve local host IP", status); 
     548        return PJ_TRUE; 
     549    } 
     550    pj_sockaddr_print(&hostaddr, hostip, sizeof(hostip), 2); 
     551 
     552    pj_ansi_sprintf(temp, "<sip:simpleuas@%s:%d>",  
     553                    hostip, SIP_PORT); 
     554    local_uri = pj_str(temp); 
     555 
     556    /* 
    516557     * Create UAS dialog. 
    517558     */ 
    518559    status = pjsip_dlg_create_uas( pjsip_ua_instance(),  
    519560                                   rdata, 
    520                                    NULL, /* contact */ 
     561                                   &local_uri, /* contact */ 
    521562                                   &dlg); 
    522563    if (status != PJ_SUCCESS) { 
Note: See TracChangeset for help on using the changeset viewer.