diff options
author | Benny Prijono <bennylp@teluu.com> | 2005-12-26 12:52:19 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2005-12-26 12:52:19 +0000 |
commit | 9b86a2145e18cb843e69167b10f3c7414c11c634 (patch) | |
tree | af539d9ce30ccd8f1d60cca5916496c442499375 /pjsip/include | |
parent | 346427b7dc57954f772beb165ef320c1639ba223 (diff) |
Modify transport to use generic sockaddr address
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@105 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip/include')
-rw-r--r-- | pjsip/include/pjsip/sip_config.h | 4 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_endpoint.h | 5 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_resolve.h | 7 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_transaction.h | 2 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_transport.h | 49 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_transport_udp.h | 11 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_types.h | 14 | ||||
-rw-r--r-- | pjsip/include/pjsip/sip_util.h | 2 |
8 files changed, 63 insertions, 31 deletions
diff --git a/pjsip/include/pjsip/sip_config.h b/pjsip/include/pjsip/sip_config.h index 972a080f..592aea41 100644 --- a/pjsip/include/pjsip/sip_config.h +++ b/pjsip/include/pjsip/sip_config.h @@ -29,8 +29,8 @@ /* Transport related constants. */ #define PJSIP_MAX_TRANSPORTS (PJ_IOQUEUE_MAX_HANDLES) #define PJSIP_MAX_PKT_LEN 1500 -#define PJSIP_POOL_LEN_RDATA 2500 -#define PJSIP_POOL_INC_RDATA 512 +#define PJSIP_POOL_RDATA_LEN 4000 +#define PJSIP_POOL_RDATA_INC 4000 #define PJSIP_POOL_LEN_TRANSPORT 512 #define PJSIP_POOL_INC_TRANSPORT 512 #define PJSIP_POOL_LEN_TDATA 2500 diff --git a/pjsip/include/pjsip/sip_endpoint.h b/pjsip/include/pjsip/sip_endpoint.h index 3e0702f1..8254d508 100644 --- a/pjsip/include/pjsip/sip_endpoint.h +++ b/pjsip/include/pjsip/sip_endpoint.h @@ -248,7 +248,7 @@ PJ_DECL(pj_status_t) pjsip_endpt_create_tdata( pjsip_endpoint *endpt, */ PJ_DECL(void) pjsip_endpt_resolve( pjsip_endpoint *endpt, pj_pool_t *pool, - pjsip_host_port *target, + pjsip_host_info *target, void *token, pjsip_resolver_callback *cb); @@ -280,7 +280,8 @@ PJ_DECL(pj_ioqueue_t*) pjsip_endpt_get_ioqueue(pjsip_endpoint *endpt); */ PJ_DECL(pj_status_t) pjsip_endpt_alloc_transport( pjsip_endpoint *endpt, pjsip_transport_type_e type, - const pj_sockaddr_in *remote, + const pj_sockaddr *remote, + int addr_len, pjsip_transport **p_transport); /** diff --git a/pjsip/include/pjsip/sip_resolve.h b/pjsip/include/pjsip/sip_resolve.h index 673de2a7..b9fbe0d5 100644 --- a/pjsip/include/pjsip/sip_resolve.h +++ b/pjsip/include/pjsip/sip_resolve.h @@ -59,7 +59,10 @@ struct pjsip_server_addresses pjsip_transport_type_e type; /** The server's address. */ - pj_sockaddr_in addr; + pj_sockaddr addr; + + /** Address length. */ + int addr_len; } entry[PJSIP_MAX_RESOLVED_ADDRESSES]; @@ -107,7 +110,7 @@ PJ_DECL(void) pjsip_resolver_destroy(pjsip_resolver_t *resolver); */ PJ_DECL(void) pjsip_resolve( pjsip_resolver_t *resolver, pj_pool_t *pool, - pjsip_host_port *target, + pjsip_host_info *target, void *token, pjsip_resolver_callback *cb); diff --git a/pjsip/include/pjsip/sip_transaction.h b/pjsip/include/pjsip/sip_transaction.h index e95c66b1..c0627aab 100644 --- a/pjsip/include/pjsip/sip_transaction.h +++ b/pjsip/include/pjsip/sip_transaction.h @@ -107,7 +107,7 @@ struct pjsip_transaction * Transport. */ pjsip_tsx_transport_state_e transport_state;/**< Transport's state. */ - pjsip_host_port dest_name; /**< Destination address. */ + pjsip_host_info dest_name; /**< Destination address. */ pjsip_server_addresses remote_addr; /**< Addresses resolved. */ int current_addr; /**< Address currently used. */ diff --git a/pjsip/include/pjsip/sip_transport.h b/pjsip/include/pjsip/sip_transport.h index dac608ff..14175dc7 100644 --- a/pjsip/include/pjsip/sip_transport.h +++ b/pjsip/include/pjsip/sip_transport.h @@ -174,10 +174,16 @@ struct pjsip_rx_data int len; /** The source address from which the packet was received. */ - pj_sockaddr_in addr; + pj_sockaddr src_addr; /** The length of the source address. */ - int addr_len; + int src_addr_len; + + /** The IP source address string (NULL terminated). */ + char src_name[16]; + + /** The IP source port number. */ + int src_port; } pkt_info; @@ -407,14 +413,21 @@ typedef struct pjsip_transport pj_lock_t *lock; /**< Lock object. */ int tracing; /**< Tracing enabled? */ - pjsip_transport_type_e type; /**< Transport type. */ - char type_name[8]; /**< Type name. */ - unsigned flag; /**< #pjsip_transport_flags_e */ + /** Key for indexing this transport in hash table. */ + struct { + pjsip_transport_type_e type; /**< Transport type. */ + pj_sockaddr rem_addr; /**< Remote addr (zero for UDP) */ + } key; - pj_sockaddr_in local_addr; /**< Bound address. */ - pj_sockaddr_in public_addr; /**< STUN addres. */ - pj_sockaddr_in rem_addr; /**< Remote addr (zero for UDP) */ + char *type_name; /**< Type name. */ + unsigned flag; /**< #pjsip_transport_flags_e */ + char *info; /**< Transport info/description.*/ + int addr_len; /**< Length of addresses. */ + pj_sockaddr local_addr; /**< Bound address. */ + pjsip_host_port local_name; /**< Published name (eg. STUN). */ + pjsip_host_port remote_name; /**< Remote address name. */ + pjsip_endpoint *endpt; /**< Endpoint instance. */ pjsip_tpmgr *tpmgr; /**< Transport manager. */ pj_timer_entry idle_timer; /**< Timer when ref cnt is zero.*/ @@ -428,6 +441,7 @@ typedef struct pjsip_transport * @param op_key Completion token, which will be supplied to * caller when pending send operation completes. * @param rem_addr The remote destination address. + * @param addr_len Size of remote address. * @param callback If supplied, the callback will be called * once a pending transmission has completed. If * the function completes immediately (i.e. return @@ -446,7 +460,8 @@ typedef struct pjsip_transport */ pj_status_t (*send_msg)(pjsip_transport *transport, pjsip_tx_data *tdata, - const pj_sockaddr_in *rem_addr, + const pj_sockaddr_t *rem_addr, + int addr_len, void *token, void (*callback)(pjsip_transport *transport, void *token, @@ -522,8 +537,8 @@ struct pjsip_tpfactory char type_name[8]; unsigned flag; - pj_sockaddr_in local_addr; - pj_sockaddr_in public_addr; + pj_sockaddr local_addr; + pjsip_host_port addr_name; /** * Create new outbound connection. @@ -531,7 +546,7 @@ struct pjsip_tpfactory pj_status_t (*create_transport)(pjsip_tpfactory *factory, pjsip_tpmgr *mgr, pjsip_endpoint *endpt, - const pj_sockaddr_in *rem_addr, + const pj_sockaddr *rem_addr, pjsip_transport **transport); /* @@ -607,9 +622,10 @@ PJ_DECL(void) pjsip_tpmgr_dump_transports(pjsip_tpmgr *mgr); * suitable transport is found, a new one will be created. */ PJ_DECL(pj_status_t) pjsip_tpmgr_alloc_transport( pjsip_tpmgr *mgr, - pjsip_transport_type_e type, - const pj_sockaddr_in *remote, - pjsip_transport **p_transport ); + pjsip_transport_type_e type, + const pj_sockaddr_t *remote, + int addr_len, + pjsip_transport **p_transport ); /** @@ -617,7 +633,8 @@ PJ_DECL(pj_status_t) pjsip_tpmgr_alloc_transport( pjsip_tpmgr *mgr, */ PJ_DECL(pj_status_t) pjsip_transport_send( pjsip_transport *tr, pjsip_tx_data *tdata, - const pj_sockaddr_in *addr, + const pj_sockaddr_t *addr, + int addr_len, void *token, void (*cb)(void *token, pjsip_tx_data *tdata, diff --git a/pjsip/include/pjsip/sip_transport_udp.h b/pjsip/include/pjsip/sip_transport_udp.h index 99f5ab67..d3fd5d30 100644 --- a/pjsip/include/pjsip/sip_transport_udp.h +++ b/pjsip/include/pjsip/sip_transport_udp.h @@ -28,7 +28,9 @@ PJ_DECL * * @param endpt The SIP endpoint. * @param local Local address to bind. - * @param pub_addr Public address to advertise. + * @param a_name Published address (only the host and port portion is + * used). If this argument is NULL, then the bound address + * will be used as the published address. * @param async_cnt Number of simultaneous async operations. * @param p_transport Pointer to receive the transport. * @@ -38,7 +40,7 @@ PJ_DECL */ PJ_DECL(pj_status_t) pjsip_udp_transport_start(pjsip_endpoint *endpt, const pj_sockaddr_in *local, - const pj_sockaddr_in *pub_addr, + const pjsip_host_port *a_name, unsigned async_cnt, pjsip_transport **p_transport); @@ -47,7 +49,8 @@ PJ_DECL(pj_status_t) pjsip_udp_transport_start(pjsip_endpoint *endpt, * * @param endpt The SIP endpoint. * @param sock UDP socket to use. - * @param pub_addr Public address to advertise. + * @param a_name Published address (only the host and port portion is + * used). * @param async_cnt Number of simultaneous async operations. * @param p_transport Pointer to receive the transport. * @@ -57,7 +60,7 @@ PJ_DECL(pj_status_t) pjsip_udp_transport_start(pjsip_endpoint *endpt, */ PJ_DECL(pj_status_t) pjsip_udp_transport_attach(pjsip_endpoint *endpt, pj_sock_t sock, - const pj_sockaddr_in *pub_addr, + const pjsip_host_port *a_name, unsigned async_cnt, pjsip_transport **p_transport); diff --git a/pjsip/include/pjsip/sip_types.h b/pjsip/include/pjsip/sip_types.h index 2f8f2d13..516d50d5 100644 --- a/pjsip/include/pjsip/sip_types.h +++ b/pjsip/include/pjsip/sip_types.h @@ -145,12 +145,20 @@ typedef struct pjsip_buffer */ typedef struct pjsip_host_port { - unsigned flag; /**< Flags of pjsip_transport_flags_e (not used in Via). */ - unsigned type; /**< Transport type (pjsip_transport_type_e), or zero. */ - pj_str_t host; /**< Host part. */ + pj_str_t host; /**< Host part or IP address. */ int port; /**< Port number. */ } pjsip_host_port; +/** + * Host information. + */ +typedef struct pjsip_host_info +{ + unsigned flag; /**< Flags of pjsip_transport_flags_e. */ + pjsip_transport_type_e type; /**< Transport type. */ + pjsip_host_port addr; /**< Address information. */ +} pjsip_host_info; + /** * Convert exception ID into pj_status_t status. diff --git a/pjsip/include/pjsip/sip_util.h b/pjsip/include/pjsip/sip_util.h index e158212a..f55cd7e9 100644 --- a/pjsip/include/pjsip/sip_util.h +++ b/pjsip/include/pjsip/sip_util.h @@ -180,7 +180,7 @@ PJ_DECL(pj_status_t) pjsip_endpt_create_cancel( pjsip_endpoint *endpt, PJ_DECL(pj_status_t) pjsip_get_response_addr(pj_pool_t *pool, const pjsip_transport *tr, const pjsip_via_hdr *via, - pjsip_host_port *addr); + pjsip_host_info *addr); /** * @} |