#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"

Go to the source code of this file.
Data Structures | |
| struct | isdn_msg |
| struct | misdn_stack |
| struct | send_lock |
Defines | |
| #define | MAXPROCS 0x100 |
| #define | MISDN_MAX_REGISTER_LINKS 0 |
| #define | QI_ELEMENT(a) a.off |
Functions | |
| msg_t * | create_l3msg (int prim, int mt, int dinfo, int size, int nt) |
| struct 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) |
| #define MAXPROCS 0x100 |
Definition at line 62 of file isdn_lib_intern.h.
Referenced by create_process().
| #define MISDN_MAX_REGISTER_LINKS 0 |
Definition at line 59 of file isdn_lib_intern.h.
| #define QI_ELEMENT | ( | a | ) | a.off |
Definition at line 21 of file isdn_lib_intern.h.
| msg_t* create_l3msg | ( | int | prim, |
| int | mt, | ||
| int | dinfo, | ||
| int | size, | ||
| int | nt | ||
| ) |
Definition at line 371 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().
{
int i = 0;
msg_t *dmsg;
Q931_info_t *qi;
iframe_t *frm;
if (!ntmode)
size = sizeof(Q931_info_t)+2;
while(i < 10) {
if (ntmode) {
dmsg = prep_l3data_msg(prim, dinfo, size, 256, NULL);
if (dmsg) {
return(dmsg);
}
} else {
dmsg = alloc_msg(size+256+mISDN_HEADER_LEN+DEFAULT_HEADROOM);
if (dmsg)
{
memset(msg_put(dmsg,size+mISDN_HEADER_LEN), 0, size+mISDN_HEADER_LEN);
frm = (iframe_t *)dmsg->data;
frm->prim = prim;
frm->dinfo = dinfo;
qi = (Q931_info_t *)(dmsg->data + mISDN_HEADER_LEN);
qi->type = mt;
return(dmsg);
}
}
if (!i) printf("cannot allocate memory, trying again...\n");
i++;
usleep(300000);
}
printf("cannot allocate memory, system overloaded.\n");
exit(-1);
}
| struct misdn_stack* get_stack_by_bc | ( | struct misdn_bchannel * | bc | ) | [read] |
Definition at line 152 of file isdn_lib.c.
References 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_te(), manager_bchannel_activate(), manager_bchannel_deactivate(), manager_clean_bc(), manager_ec_disable(), manager_ec_enable(), 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().
{
struct misdn_stack *stack = get_misdn_stack();
if (!bc)
return NULL;
for ( ; stack; stack = stack->next) {
if (bc->port == stack->port)
return stack;
}
return NULL;
}
| char* isdn_get_info | ( | struct isdn_msg | msgs[], |
| enum event_e | event, | ||
| int | nt | ||
| ) |
Definition at line 1734 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_te(), manager_isdn_get_info(), and misdn_lib_send_event().
{
int i=isdn_msg_get_index_by_event(msgs, event, nt);
if(i>=0) return msgs[i].info;
if (event == EVENT_CLEANUP) return EVENT_CLEAN_INFO;
if (event == EVENT_DTMF_TONE) return EVENT_DTMF_TONE_INFO;
if (event == EVENT_NEW_L3ID) return EVENT_NEW_L3ID_INFO;
if (event == EVENT_NEW_BC) return EVENT_NEW_BC_INFO;
if (event == EVENT_NEW_CHANNEL) return EVENT_NEW_CHANNEL_INFO;
if (event == EVENT_BCHAN_DATA) return EVENT_BCHAN_DATA_INFO;
if (event == EVENT_BCHAN_ACTIVATED) return EVENT_BCHAN_ACTIVATED_INFO;
if (event == EVENT_TONE_GENERATE) return EVENT_TONE_GENERATE_INFO;
if (event == EVENT_PORT_ALARM) return EVENT_PORT_ALARM_INFO;
if (event == EVENT_BCHAN_ERROR) return EVENT_BCHAN_ERROR_INFO;
return NULL;
}
| msg_t* isdn_msg_build_event | ( | struct isdn_msg | msgs[], |
| struct misdn_bchannel * | bc, | ||
| enum event_e | event, | ||
| int | nt | ||
| ) |
Definition at line 1763 of file isdn_msg_parser.c.
References isdn_msg_get_index_by_event(), and isdn_msg::msg_builder.
Referenced by misdn_lib_send_event().
{
int i=isdn_msg_get_index_by_event(msgs, event, nt);
if(i<0) return NULL;
return msgs[i].msg_builder(msgs, bc, nt);
}
| enum event_e isdn_msg_get_event | ( | struct isdn_msg | msgs[], |
| msg_t * | frm, | ||
| int | nt | ||
| ) |
Definition at line 1708 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_te().
{
int i=isdn_msg_get_index(msgs, msg, nt);
if(i>=0) return msgs[i].event;
return EVENT_UNKNOWN;
}
| int isdn_msg_get_index | ( | struct isdn_msg | msgs[], |
| msg_t * | msg, | ||
| int | nt | ||
| ) |
INTERFACE FCTS
Definition at line 1676 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().
{
int i;
if (nt){
mISDNuser_head_t *hh = (mISDNuser_head_t*)msg->data;
for (i=0; i< msgs_max -1; i++) {
if ( (hh->prim&COMMAND_MASK)==(msgs[i].misdn_msg&COMMAND_MASK)) return i;
}
} else {
iframe_t *frm = (iframe_t*)msg->data;
for (i=0; i< msgs_max -1; i++)
if ( (frm->prim&COMMAND_MASK)==(msgs[i].misdn_msg&COMMAND_MASK)) return i;
}
return -1;
}
| int isdn_msg_get_index_by_event | ( | struct isdn_msg | msgs[], |
| enum event_e | event, | ||
| int | nt | ||
| ) |
Definition at line 1697 of file isdn_msg_parser.c.
References cb_log, and msgs_max.
Referenced by isdn_get_info(), and isdn_msg_build_event().
| char* isdn_msg_get_info | ( | struct isdn_msg | msgs[], |
| msg_t * | msg, | ||
| int | nt | ||
| ) |
Definition at line 1715 of file isdn_msg_parser.c.
References isdn_msg::info, and isdn_msg_get_index().
{
int i=isdn_msg_get_index(msgs, msg, nt);
if(i>=0) return msgs[i].info;
return NULL;
}
| int isdn_msg_parse_event | ( | struct isdn_msg | msgs[], |
| msg_t * | frm, | ||
| struct misdn_bchannel * | bc, | ||
| int | nt | ||
| ) |
Definition at line 1754 of file isdn_msg_parser.c.
References isdn_msg_get_index(), and isdn_msg::msg_parser.
Referenced by handle_event_nt(), and handle_frm_te().
{
int i=isdn_msg_get_index(msgs, msg, nt);
if(i<0) return -1;
msgs[i].msg_parser(msgs, msg, bc, nt);
return 0;
}