⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tport_internal.h

📁 this is simple sip stack.
💻 H
📖 第 1 页 / 共 2 页
字号:
  FILE               *mr_dump_file;	  tport_primary_t    *mr_primaries;        /**< List of primary contacts */  tport_params_t      mr_params[1];    unsigned            mr_boundserver:1; /**< Server has been bound */  unsigned            mr_bindv6only:1; /**< We can bind separately to IPv6/4 */  unsigned :0;  /* Delivery context */  struct tport_delivery {    tport_t              *d_tport;    msg_t                *d_msg;    tp_name_t             d_from[1];    tport_compressor_t   *d_comp;  } mr_delivery[1];  tport_stun_server_t *mr_stun_server;#if 0  struct tport_nat_s {    int initialized;    int bound;    int stun_enabled;    char *external_ip_address;#if HAVE_UPNP || HAVE_SOFIA_STUN    int try_stun;#endif#if HAVE_UPNP#endif#if HAVE_SOFIA_STUN    tport_master_t *tport;    char *stun_server;    /* stun_socket_t *stun_socket; */    stun_handle_t *stun;    su_socket_t stun_socket;    su_sockaddr_t sockaddr;#endif  }                   mr_nat[1];#endif};/** Virtual funtion table */struct tport_vtable{  char const *vtp_name;  enum tport_via vtp_public;  int vtp_pri_size;		/* Size of primary tport */  int (*vtp_init_primary)(tport_primary_t *pri,			  tp_name_t tpn[1],			  su_addrinfo_t *ai, tagi_t const *,			  char const **return_culprit);  void (*vtp_deinit_primary)(tport_primary_t *pri);  int (*vtp_wakeup_pri)(tport_primary_t *pri, int events);  tport_t *(*vtp_connect)(tport_primary_t *pri, su_addrinfo_t *ai, 			  tp_name_t const *tpn);  int vtp_secondary_size;	/* Size of secondary tport */  int (*vtp_init_secondary)(tport_t *, int socket, int accepted,			    char const **return_reason);  void (*vtp_deinit_secondary)(tport_t *);  void (*vtp_shutdown)(tport_t *, int how);  int (*vtp_set_events)(tport_t const *self);  int (*vtp_wakeup)(tport_t *self, int events);  int (*vtp_recv)(tport_t *self);  int (*vtp_send)(tport_t const *self, msg_t *msg,		  msg_iovec_t iov[], int iovused);  void (*vtp_deliver)(tport_t *self,  msg_t *msg, su_time_t now);  int (*vtp_prepare)(tport_t *self, msg_t *msg, 		     tp_name_t const *tpn, 		     struct sigcomp_compartment *cc,		     unsigned mtu);  int (*vtp_keepalive)(tport_t *self, su_addrinfo_t const *ai,		       tagi_t const *taglist);  int (*vtp_stun_response)(tport_t const *self,			   void *msg, size_t msglen,			   void *addr, socklen_t addrlen);};int tport_register_type(tport_vtable_t const *vtp);/** Test if transport is needs connect() before sending. */static inline int tport_is_connection_oriented(tport_t const *self){  return self->tp_conn_orient;}/** Test if transport has actual connection. */static inline int tport_is_connected(tport_t const *self){  return self->tp_connected;}void tport_has_been_updated(tport_t *tport);int tport_primary_compression(tport_primary_t *pri,			      char const *compression,			      tagi_t const *tl);tport_t *tport_base_connect(tport_primary_t *pri, 			    su_addrinfo_t *ai,			    su_addrinfo_t *name,			    tp_name_t const *tpn);int tport_stream_init_primary(tport_primary_t *pri, 			      su_socket_t socket,			      tp_name_t tpn[1],			      su_addrinfo_t *ai,			      tagi_t const *tags,			      char const **return_reason);tport_t *tport_alloc_secondary(tport_primary_t *pri,			       int socket,			       int accepted,			       char const **return_reason);int tport_accept(tport_primary_t *pri, int events);void tport_zap_secondary(tport_t *self);int tport_bind_socket(int socket,		      su_addrinfo_t *ai,		      char const **return_culprit);void tport_close(tport_t *self);int tport_error_event(tport_t *self);void tport_recv_event(tport_t *self);void tport_send_event(tport_t *self);void tport_hup_event(tport_t *self);int tport_recv_iovec(tport_t const *self, 		     msg_t **mmsg,		     msg_iovec_t iovec[msg_n_fragments], int N, 		     int exact);msg_t *tport_msg_alloc(tport_t const *self, unsigned size);int tport_prepare_and_send(tport_t *self, msg_t *msg, 			   tp_name_t const *tpn, 			   struct sigcomp_compartment *cc,			   unsigned mtu);int tport_send_msg(tport_t *self, msg_t *msg, 		   tp_name_t const *tpn, 		   struct sigcomp_compartment *cc);void tport_deliver(tport_t *self, msg_t *msg, msg_t *next, 		   tport_compressor_t *comp,		   su_time_t now);void tport_base_deliver(tport_t *self, msg_t *msg, su_time_t now);int tport_recv_error_report(tport_t *self);void tport_error_report(tport_t *self, int errcode, 			su_sockaddr_t const *addr);void tport_open_log(tport_master_t *mr, tagi_t *tags);void tport_log_msg(tport_t *tp, msg_t *msg, char const *what, 		   char const *via, char const *indent, su_time_t now);void tport_dump_iovec(tport_t const *self, msg_t *msg, 		      int n, su_iovec_t const iov[], int iovused,		      char const *what, char const *how);extern tport_vtable_t const tport_udp_vtable;extern tport_vtable_t const tport_udp_client_vtable;int tport_udp_init_primary(tport_primary_t *, 			   tp_name_t tpn[1], 			   su_addrinfo_t *, 			   tagi_t const *,			   char const **return_culprit);void tport_udp_deinit_primary(tport_primary_t *);int tport_recv_dgram(tport_t *self);int tport_send_dgram(tport_t const *self, msg_t *msg,		     msg_iovec_t iov[], int iovused);int tport_udp_error(tport_t const *self, su_sockaddr_t name[1]);extern tport_vtable_t const tport_tcp_vtable;extern tport_vtable_t const tport_tcp_client_vtable;int tport_tcp_init_primary(tport_primary_t *,  			  tp_name_t  tpn[1],  			  su_addrinfo_t *, tagi_t const *, 			  char const **return_culprit);int tport_tcp_init_client(tport_primary_t *,  			 tp_name_t tpn[1],  			 su_addrinfo_t *, tagi_t const *, 			 char const **return_culprit);int tport_tcp_init_secondary(tport_t *self, int socket, int accepted,			     char const **return_reason);int tport_recv_stream(tport_t *self);int tport_send_stream(tport_t const *self, msg_t *msg,		      msg_iovec_t iov[], int iovused);extern tport_vtable_t const tport_sctp_vtable;extern tport_vtable_t const tport_sctp_client_vtable;extern tport_vtable_t const tport_tls_vtable;extern tport_vtable_t const tport_tls_client_vtable;extern tport_vtable_t const tport_stun_vtable;extern tport_vtable_t const tport_http_connect_vtable;extern tport_vtable_t const tport_threadpool_vtable;typedef struct tport_descriptor_s {  char const *tpd_name;  tport_vtable_t *tpd_vtable;  su_addrinfo_t *tpd_hints;  int tpd_is_client_only;} tport_descriptor_t;typedef int const *(tport_set_f)(tport_master_t *mr, 				 tp_name_t const *tpn,				 tagi_t const *taglist,				 tport_descriptor_t **return_set,				 int return_set_size);/* STUN plugin */int tport_init_stun_server(tport_master_t *mr, tagi_t const *tags);void tport_deinit_stun_server(tport_master_t *mr);int tport_recv_stun_dgram(tport_t const *self, msg_t **in_out_msg,			  su_sockaddr_t *from, socklen_t fromlen);int tport_stun_server_add_socket(tport_t *tp);int tport_stun_server_remove_socket(tport_t *tp);/* ---------------------------------------------------------------------- *//* Compressor plugin */extern tport_comp_vtable_t const *tport_comp_vtable;char const *tport_canonize_comp(char const *comp);int tport_init_compressor(tport_t *,			  char const *comp_name,			  tagi_t const *tags);void tport_deinit_compressor(tport_t *);struct sigcomp_compartment *tport_sigcomp_assign_if_needed(tport_t *self,			       struct sigcomp_compartment *cc);struct sigcomp_udvm **tport_get_udvm_slot(tport_t *self);void tport_sigcomp_accept_incomplete(tport_t *self, msg_t *msg);int tport_recv_comp_dgram(tport_t const *self,			  tport_compressor_t *sc,			  msg_t **in_out_msg,			  su_sockaddr_t *from,			  socklen_t fromlen);int tport_send_comp(tport_t const *self,		    msg_t *msg, 		    msg_iovec_t iov[], 		    int iovused,		    struct sigcomp_compartment *cc,		    tport_compressor_t *sc);SOFIA_END_DECLS#endif /* TPORT_INTERNAL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -