Codename Pineapple

Home page | Mailing list | Docs

Last updated: Sat Feb 3 05:00:57 2007

Asterisk developer's documentation :: Codename Pineapple


sip3core.h

Go to the documentation of this file.
00001 /*------------------------------------------------------------------------------------
00002 
00003 Old list of all functions in chan_sip3.c - functions that needs to be moved, or 
00004 encapsulated so they are not needed in a common namespace
00005 
00006 ------------------------------------------------------------------------------------*/
00007 
00008 /*--- Transmitting responses and requests */
00009 extern int __transmit_response(struct sip_pvt *p, const char *msg, const struct sip_request *req, enum xmittype reliable);
00010 extern int transmit_sip_request(struct sip_pvt *p, struct sip_request *req);
00011 extern int transmit_response(struct sip_pvt *p, const char *msg, const struct sip_request *req);
00012 extern int transmit_response_reliable(struct sip_pvt *p, const char *msg, const struct sip_request *req);
00013 extern int transmit_response_with_date(struct sip_pvt *p, const char *msg, const struct sip_request *req);
00014 extern int transmit_response_with_sdp(struct sip_pvt *p, const char *msg, const struct sip_request *req, enum xmittype reliable);
00015 extern int transmit_response_with_unsupported(struct sip_pvt *p, const char *msg, const struct sip_request *req, const char *unsupported);
00016 extern int transmit_response_with_auth(struct sip_pvt *p, const char *msg, const struct sip_request *req, const char *rand, enum xmittype reliable, const char *header, int stale);
00017 extern int transmit_response_with_allow(struct sip_pvt *p, const char *msg, const struct sip_request *req, enum xmittype reliable);
00018 extern void transmit_fake_auth_response(struct sip_pvt *p, struct sip_request *req, int reliable);
00019 extern int transmit_request(struct sip_pvt *p, int sipmethod, int inc, enum xmittype reliable, int newbranch);
00020 extern int transmit_request_with_auth(struct sip_pvt *p, int sipmethod, int seqno, enum xmittype reliable, int newbranch);
00021 extern int transmit_invite(struct sip_pvt *p, int sipmethod, int sdp, int init);
00022 extern int transmit_reinvite_with_sdp(struct sip_pvt *p);
00023 extern int transmit_info_with_digit(struct sip_pvt *p, const char digit);
00024 extern int transmit_info_with_vidupdate(struct sip_pvt *p);
00025 extern int transmit_message_with_text(struct sip_pvt *p, const char *text);
00026 extern int transmit_refer(struct sip_pvt *p, const char *dest);
00027 extern int transmit_notify_with_mwi(struct sip_pvt *p, int newmsgs, int oldmsgs, char *vmexten);
00028 extern int transmit_notify_with_sipfrag(struct sip_pvt *p, int cseq, char *message, int terminate);
00029 extern int transmit_state_notify(struct sip_pvt *p, int state, int full);
00030 extern int transmit_register(struct sip_registry *r, int sipmethod, const char *auth, const char *authheader);
00031 extern int send_request(struct sip_pvt *p, struct sip_request *req, enum xmittype reliable, int seqno);
00032 extern void copy_request(struct sip_request *dst, const struct sip_request *src);
00033 extern void receive_message(struct sip_pvt *p, struct sip_request *req);
00034 extern void parse_moved_contact(struct sip_pvt *p, struct sip_request *req);
00035 extern int sip_send_mwi_to_peer(struct sip_peer *peer);
00036 extern int does_peer_need_mwi(struct sip_peer *peer);
00037 
00038 /*--- Dialog management */
00039 extern struct sip_pvt *sip_alloc(ast_string_field callid, struct sockaddr_in *sin,
00040              int useglobal_nat, const int intended_method);
00041 extern int __sip_autodestruct(void *data);
00042 extern void sip_scheddestroy(struct sip_pvt *p, int ms);
00043 extern void sip_cancel_destroy(struct sip_pvt *p);
00044 extern void sip_destroy(struct sip_pvt *p);
00045 extern void __sip_destroy(struct sip_pvt *p, int lockowner);
00046 extern void __sip_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod, int reset);
00047 extern void __sip_pretend_ack(struct sip_pvt *p);
00048 extern int __sip_semi_ack(struct sip_pvt *p, int seqno, int resp, int sipmethod);
00049 extern int auto_congest(void *nothing);
00050 extern int update_call_counter(struct sip_pvt *fup, int event);
00051 extern int hangup_sip2cause(int cause);
00052 extern const char *hangup_cause2sip(int cause);
00053 extern struct sip_pvt *find_call(struct sip_request *req, struct sockaddr_in *sin, const int intended_method);
00054 extern void free_old_route(struct sip_route *route);
00055 extern void list_route(struct sip_route *route);
00056 extern void build_route(struct sip_pvt *p, struct sip_request *req, int backwards);
00057 extern enum check_auth_result register_verify(struct sip_pvt *p, struct sockaddr_in *sin,
00058                      struct sip_request *req, char *uri);
00059 extern struct sip_pvt *get_sip_pvt_byid_locked(const char *callid, const char *totag, const char *fromtag);
00060 extern void check_pendings(struct sip_pvt *p);
00061 extern void *sip_park_thread(void *stuff);
00062 extern int sip_park(struct ast_channel *chan1, struct ast_channel *chan2, struct sip_request *req, int seqno);
00063 extern int sip_sipredirect(struct sip_pvt *p, const char *dest);
00064 
00065 /*--- Codec handling / SDP */
00066 extern void try_suggested_sip_codec(struct sip_pvt *p);
00067 extern int find_sdp(struct sip_request *req);
00068 extern void add_codec_to_sdp(const struct sip_pvt *p, int codec, int sample_rate,
00069               char **m_buf, size_t *m_size, char **a_buf, size_t *a_size,
00070               int debug);
00071 extern void add_noncodec_to_sdp(const struct sip_pvt *p, int format, int sample_rate,
00072             char **m_buf, size_t *m_size, char **a_buf, size_t *a_size,
00073             int debug);
00074 extern int add_sdp(struct sip_request *resp, struct sip_pvt *p);
00075 
00076 /*--- Authentication stuff */
00077 extern int clear_realm_authentication(struct sip_auth *authlist); /* Clear realm authentication list (at reload) */
00078 extern struct sip_auth *add_realm_authentication(struct sip_auth *authlist, char *configuration, int lineno);  /* Add realm authentication in list */
00079 extern struct sip_auth *find_realm_authentication(struct sip_auth *authlist, const char *realm);   /* Find authentication for a specific realm */
00080 extern enum check_auth_result check_auth(struct sip_pvt *p, struct sip_request *req, const char *username,
00081                 const char *secret, const char *md5secret, int sipmethod,
00082                 char *uri, enum xmittype reliable, int ignore);
00083 extern enum check_auth_result check_user_full(struct sip_pvt *p, struct sip_request *req,
00084                      int sipmethod, char *uri, enum xmittype reliable,
00085                      struct sockaddr_in *sin, struct sip_peer **authpeer);
00086 extern int check_user(struct sip_pvt *p, struct sip_request *req, int sipmethod, char *uri, enum xmittype reliable, struct sockaddr_in *sin);
00087 extern int build_reply_digest(struct sip_pvt *p, int method, char* digest, int digest_len);
00088 
00089 /*--- Domain handling */
00090 extern int check_sip_domain(const char *domain, char *context, size_t len); /* Check if domain is one of our local domains */
00091 extern int add_sip_domain(const char *domain, const enum domain_mode mode, const char *context);
00092 extern void clear_sip_domains(void);
00093 
00094 /*--- SIP realm authentication */
00095 extern struct sip_auth *add_realm_authentication(struct sip_auth *authlist, char *configuration, int lineno);
00096 extern int clear_realm_authentication(struct sip_auth *authlist);
00097 extern struct sip_auth *find_realm_authentication(struct sip_auth *authlist, const char *realm);
00098 
00099 /*--- Misc functions */
00100 extern int sip_do_reload(enum channelreloadreason reason);
00101 extern int expire_register(void *data);
00102 extern int sip_sipredirect(struct sip_pvt *p, const char *dest);
00103 extern void *do_monitor(void *data);
00104 extern int restart_monitor(void);
00105 extern int sip_send_mwi_to_peer(struct sip_peer *peer);
00106 extern void sip_destroy(struct sip_pvt *p);
00107 extern int sip_addrcmp(char *name, struct sockaddr_in *sin);   /* Support for peer matching */
00108 extern int sip_refer_allocate(struct sip_pvt *p);
00109 extern void ast_quiet_chan(struct ast_channel *chan);
00110 extern int attempt_transfer(struct sip_dual *transferer, struct sip_dual *target);
00111 
00112 /*--- Device monitoring and Device/extension state handling */
00113 extern int cb_extensionstate(char *context, char* exten, int state, void *data);
00114 extern int sip_devicestate(void *data);
00115 extern int sip_poke_noanswer(void *data);
00116 extern int sip_poke_peer(struct sip_peer *peer);
00117 extern void sip_poke_all_peers(void);
00118 extern void sip_peer_hold(struct sip_pvt *p, int hold);
00119 
00120 /*--- Applications, functions, CLI and manager command helpers */
00121 extern const char *sip_nat_mode(const struct sip_pvt *p);
00122 extern int sip_show_inuse(int fd, int argc, char *argv[]);
00123 extern char *transfermode2str(enum transfermodes mode) attribute_const;
00124 extern char *nat2str(int nat) attribute_const;
00125 extern int peer_status(struct sip_peer *peer, char *status, int statuslen);
00126 extern int sip_show_users(int fd, int argc, char *argv[]);
00127 extern int _sip_show_peers(int fd, int *total, struct mansession *s, struct message *m, int argc, char *argv[]);
00128 extern int manager_sip_show_peers( struct mansession *s, struct message *m );
00129 extern int sip_show_peers(int fd, int argc, char *argv[]);
00130 extern int sip_show_objects(int fd, int argc, char *argv[]);
00131 extern void  print_group(int fd, ast_group_t group, int crlf);
00132 extern const char *dtmfmode2str(int mode) attribute_const;
00133 extern const char *insecure2str(int port, int invite) attribute_const;
00134 extern void cleanup_stale_contexts(char *new, char *old);
00135 extern void print_codec_to_cli(int fd, struct ast_codec_pref *pref);
00136 extern const char *domain_mode_to_text(const enum domain_mode mode);
00137 extern int sip_show_domains(int fd, int argc, char *argv[]);
00138 extern int _sip_show_peer(int type, int fd, struct mansession *s, struct message *m, int argc, char *argv[]);
00139 extern int manager_sip_show_peer( struct mansession *s, struct message *m);
00140 extern int sip_show_peer(int fd, int argc, char *argv[]);
00141 extern int _sip_show_peer(int type, int fd, struct mansession *s, struct message *m, int argc, char *argv[]);
00142 extern int sip_show_user(int fd, int argc, char *argv[]);
00143 extern int sip_show_registry(int fd, int argc, char *argv[]);
00144 extern int sip_show_settings(int fd, int argc, char *argv[]);
00145 extern int __sip_show_channels(int fd, int argc, char *argv[], int subscriptions);
00146 extern int sip_show_channels(int fd, int argc, char *argv[]);
00147 extern int sip_show_subscriptions(int fd, int argc, char *argv[]);
00148 extern int __sip_show_channels(int fd, int argc, char *argv[], int subscriptions);
00149 extern char *complete_sipch(const char *line, const char *word, int pos, int state);
00150 extern char *complete_sip_peer(const char *word, int state, int flags2);
00151 extern char *complete_sip_show_peer(const char *line, const char *word, int pos, int state);
00152 extern char *complete_sip_debug_peer(const char *line, const char *word, int pos, int state);
00153 extern char *complete_sip_user(const char *word, int state, int flags2);
00154 extern char *complete_sip_show_user(const char *line, const char *word, int pos, int state);
00155 extern char *complete_sipnotify(const char *line, const char *word, int pos, int state);
00156 extern char *complete_sip_prune_realtime_peer(const char *line, const char *word, int pos, int state);
00157 extern char *complete_sip_prune_realtime_user(const char *line, const char *word, int pos, int state);
00158 extern int sip_show_channel(int fd, int argc, char *argv[]);
00159 extern int sip_show_history(int fd, int argc, char *argv[]);
00160 extern int sip_do_debug_ip(int fd, int argc, char *argv[]);
00161 extern int sip_do_debug_peer(int fd, int argc, char *argv[]);
00162 extern int sip_do_debug(int fd, int argc, char *argv[]);
00163 extern int sip_no_debug(int fd, int argc, char *argv[]);
00164 extern int sip_notify(int fd, int argc, char *argv[]);
00165 extern int sip_do_history(int fd, int argc, char *argv[]);
00166 extern int sip_no_history(int fd, int argc, char *argv[]);
00167 extern int func_header_read(struct ast_channel *chan, char *function, char *data, char *buf, size_t len);
00168 extern int func_check_sipdomain(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len);
00169 extern int function_sippeer(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len);
00170 extern int function_sipchaninfo_read(struct ast_channel *chan, char *cmd, char *data, char *buf, size_t len);
00171 extern int sip_dtmfmode(struct ast_channel *chan, void *data);
00172 extern int sip_addheader(struct ast_channel *chan, void *data);
00173 extern int sip_do_reload(enum channelreloadreason reason);
00174 extern int sip_reload(int fd, int argc, char *argv[]);
00175 
00176 /*--- Debugging 
00177    Functions for enabling debug per IP or fully, or enabling history logging for
00178    a SIP dialog
00179 */
00180 extern void sip_dump_history(struct sip_pvt *dialog); /* Dump history to LOG_DEBUG at end of dialog, before destroying data */
00181 extern inline int sip_debug_test_addr(const struct sockaddr_in *addr);
00182 extern inline int sip_debug_test_pvt(struct sip_pvt *p);
00183 extern void append_history_full(struct sip_pvt *p, const char *fmt, ...);
00184 extern void sip_dump_history(struct sip_pvt *dialog);
00185 
00186 /*--- Device object handling */
00187 extern struct sip_peer *temp_peer(const char *name);
00188 extern int update_call_counter(struct sip_pvt *fup, int event);
00189 extern void sip_destroy_device(struct sip_peer *peer);
00190 extern int sip_poke_peer(struct sip_peer *peer);
00191 extern void set_device_defaults(struct sip_peer *peer);
00192 extern struct sip_peer *temp_peer(const char *name);
00193 extern void register_peer_exten(struct sip_peer *peer, int onoff);
00194 extern struct sip_peer *find_peer(const char *peer, struct sockaddr_in *sin, int realtime);
00195 extern struct sip_peer *find_user(const char *name, int realtime);
00196 extern int sip_poke_peer_s(void *data);
00197 extern enum parse_register_result parse_register_contact(struct sip_pvt *pvt, struct sip_peer *p, struct sip_request *req);
00198 extern int expire_register(void *data);
00199 extern void reg_source_db(struct sip_peer *peer);
00200 extern void destroy_association(struct sip_peer *peer);
00201 extern int handle_common_options(struct ast_flags *flags, struct ast_flags *mask, struct ast_variable *v);
00202 
00203 /* Realtime device support */
00204 extern void realtime_update_peer(const char *peername, struct sockaddr_in *sin, const char *username, const char *fullcontact, int expirey);
00205 extern void update_peer(struct sip_peer *p, int expiry);
00206 extern int sip_prune_realtime(int fd, int argc, char *argv[]);
00207 
00208 /*--- Internal UA client handling (outbound registrations) */
00209 extern int ast_sip_ouraddrfor(struct in_addr *them, struct in_addr *us);
00210 extern void sip_registry_destroy(struct sip_registry *reg);
00211 extern int sip_register(char *value, int lineno);
00212 extern char *regstate2str(enum sipregistrystate regstate) attribute_const;
00213 extern int sip_reregister(void *data);
00214 extern int __sip_do_register(struct sip_registry *r);
00215 extern int sip_reg_timeout(void *data);
00216 extern void sip_send_all_registers(void);
00217 
00218 /*--- Parsing SIP requests and responses */
00219 extern void append_date(struct sip_request *req);  /* Append date to SIP packet */
00220 extern int determine_firstline_parts(struct sip_request *req);
00221 extern const char *gettag(const struct sip_request *req, const char *header, char *tagbuf, int tagbufsize);
00222 extern int find_sip_method(const char *msg);
00223 extern unsigned int parse_sip_options(struct sip_pvt *pvt, const char *supported);
00224 extern void parse_request(struct sip_request *req);
00225 extern const char *get_header(const struct sip_request *req, const char *name);
00226 extern int method_match(enum sipmethod id, const char *name);
00227 extern void parse_copy(struct sip_request *dst, const struct sip_request *src);
00228 static void add_blank(struct sip_request *req);
00229 extern char *get_in_brackets(char *tmp);
00230 extern const char *find_alias(const char *name, const char *_default);
00231 extern const char *__get_header(const struct sip_request *req, const char *name, int *start);
00232 extern const char *get_header(const struct sip_request *req, const char *name);
00233 extern int lws2sws(char *msgbuf, int len);
00234 extern void extract_uri(struct sip_pvt *p, struct sip_request *req);
00235 extern int get_refer_info(struct sip_pvt *transferer, struct sip_request *outgoing_req);
00236 extern int get_also_info(struct sip_pvt *p, struct sip_request *oreq);
00237 extern int parse_ok_contact(struct sip_pvt *pvt, struct sip_request *req);
00238 extern int set_address_from_contact(struct sip_pvt *pvt);
00239 extern void check_via(struct sip_pvt *p, struct sip_request *req);
00240 extern char *get_calleridname(const char *input, char *output, size_t outputsize);
00241 extern int get_rpid_num(const char *input, char *output, int maxlen);
00242 extern int get_rdnis(struct sip_pvt *p, struct sip_request *oreq);
00243 extern int get_destination(struct sip_pvt *p, struct sip_request *oreq);
00244 extern int get_msg_text(char *buf, int len, struct sip_request *req);
00245 extern const char *gettag(const struct sip_request *req, const char *header, char *tagbuf, int tagbufsize);
00246 extern void free_old_route(struct sip_route *route);
00247 
00248 /*--- Constructing requests and responses */
00249 extern void initialize_initreq(struct sip_pvt *p, struct sip_request *req);
00250 extern int init_req(struct sip_request *req, int sipmethod, const char *recip);
00251 extern int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, int seqno, int newbranch);
00252 extern void initreqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod);
00253 extern int init_resp(struct sip_request *resp, const char *msg);
00254 extern int respprep(struct sip_request *resp, struct sip_pvt *p, const char *msg, const struct sip_request *req);
00255 extern const struct sockaddr_in *sip_real_dst(const struct sip_pvt *p);
00256 extern void build_via(struct sip_pvt *p);
00257 extern int create_addr_from_peer(struct sip_pvt *r, struct sip_peer *peer);
00258 extern int create_addr(struct sip_pvt *dialog, const char *opeer);
00259 extern char *generate_random_string(char *buf, size_t size);
00260 extern void build_callid_pvt(struct sip_pvt *pvt);
00261 extern void build_callid_registry(struct sip_registry *reg, struct in_addr ourip, const char *fromdomain);
00262 extern void make_our_tag(char *tagbuf, size_t len);
00263 extern int add_header(struct sip_request *req, const char *var, const char *value);
00264 extern int add_header_contentLength(struct sip_request *req, int len);
00265 extern int add_line(struct sip_request *req, const char *line);
00266 extern int add_text(struct sip_request *req, const char *text);
00267 extern int add_digit(struct sip_request *req, char digit);
00268 extern int add_vidupdate(struct sip_request *req);
00269 extern void add_route(struct sip_request *req, struct sip_route *route);
00270 extern int copy_header(struct sip_request *req, const struct sip_request *orig, const char *field);
00271 extern int copy_all_header(struct sip_request *req, const struct sip_request *orig, const char *field);
00272 extern int copy_via_headers(struct sip_pvt *p, struct sip_request *req, const struct sip_request *orig, const char *field);
00273 extern void set_destination(struct sip_pvt *p, char *uri);
00274 extern void append_date(struct sip_request *req);
00275 extern void build_contact(struct sip_pvt *p);
00276 extern void build_rpid(struct sip_pvt *p);
00277 
00278 /*------Request handling functions */
00279 extern int handle_request(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int *recount, int *nounlock);
00280 extern int handle_request_invite(struct sip_pvt *p, struct sip_request *req, int debug, int seqno, struct sockaddr_in *sin, int *recount, char *e);
00281 extern int handle_request_refer(struct sip_pvt *p, struct sip_request *req, int debug, int ignore, int seqno, int *nounlock);
00282 extern int handle_request_bye(struct sip_pvt *p, struct sip_request *req);
00283 extern int handle_request_register(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, char *e);
00284 extern int handle_request_cancel(struct sip_pvt *p, struct sip_request *req);
00285 extern int handle_request_message(struct sip_pvt *p, struct sip_request *req);
00286 extern int handle_request_subscribe(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e);
00287 extern void handle_request_info(struct sip_pvt *p, struct sip_request *req);
00288 extern int handle_request_options(struct sip_pvt *p, struct sip_request *req);
00289 extern int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, int debug, int ignore, int seqno, struct sockaddr_in *sin);
00290 extern int handle_request_notify(struct sip_pvt *p, struct sip_request *req, struct sockaddr_in *sin, int seqno, char *e);
00291 extern int handle_invite_replaces(struct sip_pvt *p, struct sip_request *req, int debug, int ignore, int seqno, struct sockaddr_in *sin);
00292 extern int local_attended_transfer(struct sip_pvt *transferer, struct sip_dual *current, struct sip_request *req, int seqno);
00293 
00294 /*------Response handling functions */
00295 extern void handle_response_invite(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
00296 extern void handle_response_refer(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
00297 extern int handle_response_peerpoke(struct sip_pvt *p, int resp, struct sip_request *req);
00298 extern int handle_response_register(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
00299 extern void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_request *req, int seqno);
00300 
00301 /*----- RTP interface functions */
00302 extern int sip_set_rtp_peer(struct ast_channel *chan, struct ast_rtp *rtp, struct ast_rtp *vrtp, int codecs, int nat_active);
00303 extern int sip_get_codec(struct ast_channel *chan);
00304 extern struct ast_frame *sip_rtp_read(struct ast_channel *ast, struct sip_pvt *p, int *faxdetect);
00305 
00306 /*------ T38 Support --------- */
00307 extern int sip_handle_t38_reinvite(struct ast_channel *chan, struct sip_pvt *pvt, int reinvite); /*!< T38 negotiation helper function */
00308 extern int transmit_response_with_t38_sdp(struct sip_pvt *p, char *msg, struct sip_request *req, int retrans);
00309 extern int transmit_reinvite_with_t38_sdp(struct sip_pvt *p);
00310 extern struct ast_udptl *sip_get_udptl_peer(struct ast_channel *chan);
00311 extern int sip_set_udptl_peer(struct ast_channel *chan, struct ast_udptl *udptl);
00312 

Asterisk is a trademark for Digium, inc.. | Edvina.net | Asterisk.org | This documentation was generated with Doxygen