#include <mISDNuser/mISDNlib.h>
#include <mISDNuser/isdn_net.h>
#include <mISDNuser/l3dss1.h>
#include <mISDNuser/net_l3.h>
#include <pthread.h>
#include "isdn_lib.h"
Include dependency graph for isdn_lib_intern.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Data Structures | |
struct | isdn_msg |
struct | misdn_stack |
struct | send_lock |
Defines | |
#define | mISDNUSER_HEAD_SIZE (sizeof(mISDNuser_head_t)) |
#define | QI_ELEMENT(a) a.off |
Functions | |
msg_t * | create_l3msg (int prim, int mt, int dinfo, int size, int nt) |
misdn_stack * | get_stack_by_bc (struct misdn_bchannel *bc) |
char * | isdn_get_info (struct isdn_msg msgs[], enum event_e event, int nt) |
msg_t * | isdn_msg_build_event (struct isdn_msg msgs[], struct misdn_bchannel *bc, enum event_e event, int nt) |
enum event_e | isdn_msg_get_event (struct isdn_msg msgs[], msg_t *frm, int nt) |
int | isdn_msg_get_index (struct isdn_msg msgs[], msg_t *frm, int nt) |
int | isdn_msg_get_index_by_event (struct isdn_msg msgs[], enum event_e event, int nt) |
char * | isdn_msg_get_info (struct isdn_msg msgs[], msg_t *msg, int nt) |
int | isdn_msg_parse_event (struct isdn_msg msgs[], msg_t *frm, struct misdn_bchannel *bc, int nt) |
Variables | |
ibuffer_t * | astbuf |
ibuffer_t * | misdnbuf |
#define mISDNUSER_HEAD_SIZE (sizeof(mISDNuser_head_t)) |
Definition at line 24 of file isdn_lib_intern.h.
Referenced by build_alerting(), build_connect(), build_connect_acknowledge(), build_disconnect(), build_facility(), build_hold(), build_hold_acknowledge(), build_hold_reject(), build_information(), build_notify(), build_proceeding(), build_progress(), build_release(), build_release_complete(), build_restart(), build_resume(), build_resume_acknowledge(), build_resume_reject(), build_retrieve(), build_retrieve_acknowledge(), build_retrieve_reject(), build_setup(), build_setup_acknowledge(), build_status(), build_status_enquiry(), build_suspend(), build_suspend_acknowledge(), build_suspend_reject(), build_timeout(), build_user_information(), handle_event_nt(), parse_alerting(), parse_connect(), parse_disconnect(), parse_facility(), parse_information(), parse_proceeding(), parse_progress(), parse_release(), parse_release_complete(), parse_restart(), parse_setup(), parse_setup_acknowledge(), and parse_status().
#define QI_ELEMENT | ( | a | ) | a.off |
Definition at line 19 of file isdn_lib_intern.h.
msg_t* create_l3msg | ( | int | prim, | |
int | mt, | |||
int | dinfo, | |||
int | size, | |||
int | nt | |||
) |
Definition at line 341 of file isdn_lib.c.
Referenced by build_alerting(), build_connect(), build_connect_acknowledge(), build_disconnect(), build_facility(), build_hold(), build_hold_acknowledge(), build_hold_reject(), build_information(), build_notify(), build_proceeding(), build_progress(), build_release(), build_release_complete(), build_restart(), build_resume(), build_resume_acknowledge(), build_resume_reject(), build_retrieve(), build_retrieve_acknowledge(), build_retrieve_reject(), build_setup(), build_setup_acknowledge(), build_status(), build_status_enquiry(), build_suspend(), build_suspend_acknowledge(), build_suspend_reject(), build_timeout(), build_user_information(), and handle_event_nt().
00342 { 00343 int i = 0; 00344 msg_t *dmsg; 00345 Q931_info_t *qi; 00346 iframe_t *frm; 00347 00348 if (!ntmode) 00349 size = sizeof(Q931_info_t)+2; 00350 00351 while(i < 10) { 00352 if (ntmode) { 00353 dmsg = prep_l3data_msg(prim, dinfo, size, 256, NULL); 00354 if (dmsg) { 00355 return(dmsg); 00356 } 00357 } else { 00358 dmsg = alloc_msg(size+256+mISDN_HEADER_LEN+DEFAULT_HEADROOM); 00359 if (dmsg) 00360 { 00361 memset(msg_put(dmsg,size+mISDN_HEADER_LEN), 0, size+mISDN_HEADER_LEN); 00362 frm = (iframe_t *)dmsg->data; 00363 frm->prim = prim; 00364 frm->dinfo = dinfo; 00365 qi = (Q931_info_t *)(dmsg->data + mISDN_HEADER_LEN); 00366 qi->type = mt; 00367 return(dmsg); 00368 } 00369 } 00370 00371 if (!i) printf("cannot allocate memory, trying again...\n"); 00372 i++; 00373 usleep(300000); 00374 } 00375 printf("cannot allocate memory, system overloaded.\n"); 00376 exit(-1); 00377 }
struct misdn_stack* get_stack_by_bc | ( | struct misdn_bchannel * | bc | ) |
Definition at line 115 of file isdn_lib.c.
References misdn_stack::b_num, misdn_stack::bc, get_misdn_stack(), misdn_stack::next, misdn_stack::port, and misdn_bchannel::port.
Referenced by clean_up_bc(), create_process(), dec_ie_channel_id(), enc_ie_channel_id(), handle_bchan(), handle_event(), manager_bchannel_activate(), manager_bchannel_deactivate(), manager_clean_bc(), manager_ec_disable(), manager_ec_enable(), manager_find_bc_holded(), misdn_lib_log_ies(), misdn_lib_release(), misdn_lib_send_event(), misdn_lib_tx2misdn_frm(), parse_release_complete(), parse_restart(), send_msg(), and setup_bc().
00116 { 00117 struct misdn_stack *stack=get_misdn_stack(); 00118 00119 if (!bc) return NULL; 00120 00121 for ( ; stack; stack=stack->next) { 00122 int i; 00123 for (i=0; i <=stack->b_num; i++) { 00124 if ( bc->port == stack->port) return stack; 00125 } 00126 } 00127 00128 return NULL; 00129 }
Definition at line 1308 of file isdn_msg_parser.c.
References EVENT_BCHAN_ACTIVATED, EVENT_BCHAN_ACTIVATED_INFO, EVENT_BCHAN_DATA, EVENT_BCHAN_DATA_INFO, EVENT_BCHAN_ERROR, EVENT_BCHAN_ERROR_INFO, EVENT_CLEAN_INFO, EVENT_CLEANUP, EVENT_DTMF_TONE, EVENT_DTMF_TONE_INFO, EVENT_NEW_BC, EVENT_NEW_BC_INFO, EVENT_NEW_CHANNEL, EVENT_NEW_CHANNEL_INFO, EVENT_NEW_L3ID, EVENT_NEW_L3ID_INFO, EVENT_PORT_ALARM, EVENT_PORT_ALARM_INFO, EVENT_TONE_GENERATE, EVENT_TONE_GENERATE_INFO, isdn_msg::info, and isdn_msg_get_index_by_event().
Referenced by handle_event_nt(), handle_frm(), handle_l1(), manager_isdn_get_info(), and misdn_lib_send_event().
01309 { 01310 int i=isdn_msg_get_index_by_event(msgs, event, nt); 01311 01312 if(i>=0) return msgs[i].info; 01313 01314 if (event == EVENT_CLEANUP) return EVENT_CLEAN_INFO; 01315 if (event == EVENT_DTMF_TONE) return EVENT_DTMF_TONE_INFO; 01316 if (event == EVENT_NEW_L3ID) return EVENT_NEW_L3ID_INFO; 01317 if (event == EVENT_NEW_BC) return EVENT_NEW_BC_INFO; 01318 if (event == EVENT_NEW_CHANNEL) return EVENT_NEW_CHANNEL_INFO; 01319 if (event == EVENT_BCHAN_DATA) return EVENT_BCHAN_DATA_INFO; 01320 if (event == EVENT_BCHAN_ACTIVATED) return EVENT_BCHAN_ACTIVATED_INFO; 01321 if (event == EVENT_TONE_GENERATE) return EVENT_TONE_GENERATE_INFO; 01322 if (event == EVENT_PORT_ALARM) return EVENT_PORT_ALARM_INFO; 01323 if (event == EVENT_BCHAN_ERROR) return EVENT_BCHAN_ERROR_INFO; 01324 01325 return NULL; 01326 }
msg_t* isdn_msg_build_event | ( | struct isdn_msg | msgs[], | |
struct misdn_bchannel * | bc, | |||
enum event_e | event, | |||
int | nt | |||
) |
Definition at line 1337 of file isdn_msg_parser.c.
References isdn_msg_get_index_by_event(), and isdn_msg::msg_builder.
Referenced by misdn_lib_send_event().
01338 { 01339 int i=isdn_msg_get_index_by_event(msgs, event, nt); 01340 if(i<0) return NULL; 01341 01342 return msgs[i].msg_builder(msgs, bc, nt); 01343 }
Definition at line 1282 of file isdn_msg_parser.c.
References isdn_msg::event, EVENT_UNKNOWN, and isdn_msg_get_index().
Referenced by handle_event_nt(), and handle_frm().
01283 { 01284 int i=isdn_msg_get_index(msgs, msg, nt); 01285 if(i>=0) return msgs[i].event; 01286 return EVENT_UNKNOWN; 01287 }
int isdn_msg_get_index | ( | struct isdn_msg | msgs[], | |
msg_t * | msg, | |||
int | nt | |||
) |
INTERFACE FCTS
Definition at line 1250 of file isdn_msg_parser.c.
References isdn_msg::misdn_msg, and msgs_max.
Referenced by isdn_msg_get_event(), isdn_msg_get_info(), and isdn_msg_parse_event().
01251 { 01252 int i; 01253 01254 if (nt){ 01255 mISDNuser_head_t *hh = (mISDNuser_head_t*)msg->data; 01256 01257 for (i=0; i< msgs_max -1; i++) { 01258 if ( (hh->prim&COMMAND_MASK)==(msgs[i].misdn_msg&COMMAND_MASK)) return i; 01259 } 01260 01261 } else { 01262 iframe_t *frm = (iframe_t*)msg->data; 01263 01264 for (i=0; i< msgs_max -1; i++) 01265 if ( (frm->prim&COMMAND_MASK)==(msgs[i].misdn_msg&COMMAND_MASK)) return i; 01266 } 01267 01268 return -1; 01269 }
Definition at line 1271 of file isdn_msg_parser.c.
References cb_log, and msgs_max.
Referenced by isdn_get_info(), and isdn_msg_build_event().
01272 { 01273 int i; 01274 for (i=0; i< msgs_max; i++) 01275 if ( event == msgs[i].event) return i; 01276 01277 cb_log(10,0, "get_index: event not found!\n"); 01278 01279 return -1; 01280 }
char* isdn_msg_get_info | ( | struct isdn_msg | msgs[], | |
msg_t * | msg, | |||
int | nt | |||
) |
Definition at line 1289 of file isdn_msg_parser.c.
References isdn_msg::info, and isdn_msg_get_index().
01290 { 01291 int i=isdn_msg_get_index(msgs, msg, nt); 01292 if(i>=0) return msgs[i].info; 01293 return NULL; 01294 }
int isdn_msg_parse_event | ( | struct isdn_msg | msgs[], | |
msg_t * | frm, | |||
struct misdn_bchannel * | bc, | |||
int | nt | |||
) |
Definition at line 1328 of file isdn_msg_parser.c.
References isdn_msg_get_index(), and isdn_msg::msg_parser.
Referenced by handle_event_nt(), and handle_frm().
01329 { 01330 int i=isdn_msg_get_index(msgs, msg, nt); 01331 if(i<0) return -1; 01332 01333 msgs[i].msg_parser(msgs, msg, bc, nt); 01334 return 0; 01335 }
ibuffer_t* astbuf |
Definition at line 29 of file isdn_lib_intern.h.
ibuffer_t* misdnbuf |
Definition at line 30 of file isdn_lib_intern.h.