From 42d84412db13373edb94eeef8f757d804233fbda Mon Sep 17 00:00:00 2001 From: crichter Date: Wed, 10 Jan 2007 09:51:00 +0000 Subject: more fixes regarding warnings for gcc-4 and first additions for the restart Information element, in the first step we initiate a restart with a CLI command git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.2@50335 f38db490-d61c-443f-a65b-d21fe96a405b --- channels/misdn/fac.c | 10 ++++----- channels/misdn/ie.c | 44 ++++++++++++++++++++-------------------- channels/misdn/isdn_lib.c | 27 +++++++++++++++++++++++- channels/misdn/isdn_lib.h | 1 + channels/misdn/isdn_msg_parser.c | 14 ++++++------- 5 files changed, 61 insertions(+), 35 deletions(-) (limited to 'channels/misdn') diff --git a/channels/misdn/fac.c b/channels/misdn/fac.c index 383a60f26..f4269559e 100644 --- a/channels/misdn/fac.c +++ b/channels/misdn/fac.c @@ -28,7 +28,7 @@ /* support stuff */ -static void strnncpy(unsigned char *dest, unsigned char *src, int len, int dst_len) +static void strnncpy(char *dest, unsigned char *src, int len, int dst_len) { if (len > dst_len-1) len = dst_len-1; @@ -71,7 +71,7 @@ void enc_ie_facility(unsigned char **ntmode, msg_t *msg, unsigned char *facility /* facility for siemens CENTEX (known parts implemented only) */ -void enc_ie_facility_centrex(unsigned char **ntmode, msg_t *msg, unsigned char *cnip, int setup, int nt, struct misdn_bchannel *bc) +void enc_ie_facility_centrex(unsigned char **ntmode, msg_t *msg, char *cnip, int setup, int nt, struct misdn_bchannel *bc) { unsigned char centrex[256]; int i = 0; @@ -123,7 +123,7 @@ void enc_ie_facility_centrex(unsigned char **ntmode, msg_t *msg, unsigned char * enc_ie_facility(ntmode, msg, centrex, i, nt , bc); } -void dec_ie_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *centrex, int facility_len, unsigned char *cnip, int cnip_len, int nt, struct misdn_bchannel *bc) +void dec_ie_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *centrex, int facility_len, char *cnip, int cnip_len, int nt, struct misdn_bchannel *bc) { int i = 0; @@ -160,7 +160,7 @@ void dec_ie_facility_centrex(unsigned char *p, Q931_info_t *qi, unsigned char *c /* facility for CALL Deflect (known parts implemented only) */ -void enc_ie_facility_calldeflect(unsigned char **ntmode, msg_t *msg, unsigned char *nr, int nt, struct misdn_bchannel *bc) +void enc_ie_facility_calldeflect(unsigned char **ntmode, msg_t *msg, char *nr, int nt, struct misdn_bchannel *bc) { unsigned char fac[256]; @@ -204,7 +204,7 @@ void enc_ie_facility_calldeflect(unsigned char **ntmode, msg_t *msg, unsigned ch } -void dec_ie_facility_calldeflect(unsigned char *p, Q931_info_t *qi, unsigned char *fac, int fac_len, unsigned char *cd_nr, int nt, struct misdn_bchannel *bc) +void dec_ie_facility_calldeflect(unsigned char *p, Q931_info_t *qi, unsigned char *fac, int fac_len, char *cd_nr, int nt, struct misdn_bchannel *bc) { *cd_nr = '\0'; diff --git a/channels/misdn/ie.c b/channels/misdn/ie.c index 039d04ad3..a62e71072 100644 --- a/channels/misdn/ie.c +++ b/channels/misdn/ie.c @@ -33,7 +33,7 @@ #define MISDN_IE_DEBG 0 /* support stuff */ -static void strnncpy(unsigned char *dest, unsigned char *src, int len, int dst_len) +static void strnncpy(char *dest, char *src, int len, int dst_len) { if (len > dst_len-1) len = dst_len-1; @@ -310,7 +310,7 @@ void dec_ie_call_id(unsigned char *p, Q931_info_t *qi, char *callid, int *callid { p = NULL; if (qi->QI_ELEMENT(call_id)) - p = (unsigned char *)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(call_id) + 1; + p = (unsigned char*)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(call_id) + 1; } if (!p) return; @@ -393,7 +393,7 @@ void dec_ie_called_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, c *type = (p[1]&0x70) >> 4; *plan = p[1] & 0xf; - strnncpy(number, p+2, p[0]-1, number_len); + strnncpy(number, (char*)p+2, p[0]-1, number_len); if (MISDN_IE_DEBG) printf(" type=%d plan=%d number='%s'\n", *type, *plan, number); } @@ -488,10 +488,10 @@ void dec_ie_calling_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, } *present = (p[2]&0x60) >> 5; *screen = p[2] & 0x3; - strnncpy(number, p+3, p[0]-2, number_len); + strnncpy(number, (char*)p+3, p[0]-2, number_len); } else { - strnncpy(number, p+2, p[0]-1, number_len); + strnncpy(number, (char*)p+2, p[0]-1, number_len); /* SPECIAL workarround for IBT software bug */ /* if (number[0]==0x80) */ /* strcpy((char *)number, (char *)number+1); */ @@ -590,10 +590,10 @@ void dec_ie_connected_pn(unsigned char *p, Q931_info_t *qi, int *type, int *plan } *present = (p[2]&0x60) >> 5; *screen = p[2] & 0x3; - strnncpy(number, p+3, p[0]-2, number_len); + strnncpy(number, (char*)p+3, p[0]-2, number_len); } else { - strnncpy(number, p+2, p[0]-1, number_len); + strnncpy(number, (char*)p+2, p[0]-1, number_len); } if (MISDN_IE_DEBG) printf(" type=%d plan=%d present=%d screen=%d number='%s'\n", *type, *plan, *present, *screen, number); @@ -760,7 +760,7 @@ void dec_ie_channel_id(unsigned char *p, Q931_info_t *qi, int *exclusive, int *c { p = NULL; if (qi->QI_ELEMENT(channel_id)) - p = (unsigned char *)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(channel_id) + 1; + p = (unsigned char*)qi + sizeof(Q931_info_t) + qi->QI_ELEMENT(channel_id) + 1; } if (!p) return; @@ -876,7 +876,7 @@ void enc_ie_date(unsigned char **ntmode, msg_t *msg, time_t ti, int nt, struct m /* IE_DISPLAY */ -void enc_ie_display(unsigned char **ntmode, msg_t *msg, unsigned char *display, int nt, struct misdn_bchannel *bc) +void enc_ie_display(unsigned char **ntmode, msg_t *msg, char *display, int nt, struct misdn_bchannel *bc) { unsigned char *p; Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN); @@ -907,7 +907,7 @@ void enc_ie_display(unsigned char **ntmode, msg_t *msg, unsigned char *display, strncpy((char *)p+2, (char *)display, strlen((char *)display)); } -void dec_ie_display(unsigned char *p, Q931_info_t *qi, unsigned char *display, int display_len, int nt, struct misdn_bchannel *bc) +void dec_ie_display(unsigned char *p, Q931_info_t *qi, char *display, int display_len, int nt, struct misdn_bchannel *bc) { *display = '\0'; @@ -925,7 +925,7 @@ void dec_ie_display(unsigned char *p, Q931_info_t *qi, unsigned char *display, i return; } - strnncpy(display, p+1, p[0], display_len); + strnncpy(display, (char*)p+1, p[0], display_len); if (MISDN_IE_DEBG) printf(" display='%s'\n", display); } @@ -957,7 +957,7 @@ void enc_ie_keypad(unsigned char **ntmode, msg_t *msg, unsigned char *keypad, in strncpy((char *)p+2, (char *)keypad, strlen((char *)keypad)); } -void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, unsigned char *keypad, int keypad_len, int nt, struct misdn_bchannel *bc) +void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, char *keypad, int keypad_len, int nt, struct misdn_bchannel *bc) { *keypad = '\0'; @@ -975,7 +975,7 @@ void dec_ie_keypad(unsigned char *p, Q931_info_t *qi, unsigned char *keypad, int return; } - strnncpy(keypad, p+1, p[0], keypad_len); + strnncpy(keypad, (char*)p+1, p[0], keypad_len); if (MISDN_IE_DEBG) printf(" keypad='%s'\n", keypad); } @@ -1098,7 +1098,7 @@ void dec_ie_progress(unsigned char *p, Q931_info_t *qi, int *coding, int *locati /* IE_REDIR_NR (redirecting = during MT_SETUP) */ -void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, int reason, unsigned char *number, int nt, struct misdn_bchannel *bc) +void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int present, int screen, int reason, char *number, int nt, struct misdn_bchannel *bc) { unsigned char *p; Q931_info_t *qi = (Q931_info_t *)(msg->data + mISDN_HEADER_LEN); @@ -1172,7 +1172,7 @@ void enc_ie_redir_nr(unsigned char **ntmode, msg_t *msg, int type, int plan, int } } -void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, int *reason, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc) +void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, int *screen, int *reason, char *number, int number_len, int nt, struct misdn_bchannel *bc) { *type = -1; *plan = -1; @@ -1204,14 +1204,14 @@ void dec_ie_redir_nr(unsigned char *p, Q931_info_t *qi, int *type, int *plan, in if (!(p[2] & 0x80)) { *reason = p[3] & 0x0f; - strnncpy(number, p+4, p[0]-3, number_len); + strnncpy(number,(char*)p+4, p[0]-3, number_len); } else { - strnncpy(number, p+3, p[0]-2, number_len); + strnncpy(number, (char*)p+3, p[0]-2, number_len); } } else { - strnncpy(number, p+2, p[0]-1, number_len); + strnncpy(number, (char*)p+2, p[0]-1, number_len); } if (MISDN_IE_DEBG) printf(" type=%d plan=%d present=%d screen=%d reason=%d number='%s'\n", *type, *plan, *present, *screen, *reason, number); @@ -1270,7 +1270,7 @@ void enc_ie_redir_dn(unsigned char **ntmode, msg_t *msg, int type, int plan, int } } -void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, unsigned char *number, int number_len, int nt, struct misdn_bchannel *bc) +void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, int *present, char *number, int number_len, int nt, struct misdn_bchannel *bc) { *type = -1; *plan = -1; @@ -1297,10 +1297,10 @@ void dec_ie_redir_dn(unsigned char *p, Q931_info_t *qi, int *type, int *plan, in if (!(p[1] & 0x80)) { *present = (p[2]&0x60) >> 5; - strnncpy(number, p+3, p[0]-2, number_len); + strnncpy(number, (char*)p+3, p[0]-2, number_len); } else { - strnncpy(number, p+2, p[0]-1, number_len); + strnncpy(number, (char*)p+2, p[0]-1, number_len); } if (MISDN_IE_DEBG) printf(" type=%d plan=%d present=%d number='%s'\n", *type, *plan, *present, number); @@ -1349,7 +1349,7 @@ void enc_ie_useruser(unsigned char **ntmode, msg_t *msg, int protocol, unsigned memcpy(p+3, user, user_len); } -void dec_ie_useruser(unsigned char *p, Q931_info_t *qi, int *protocol, unsigned char *user, int *user_len, int nt, struct misdn_bchannel *bc) +void dec_ie_useruser(unsigned char *p, Q931_info_t *qi, int *protocol, char *user, int *user_len, int nt, struct misdn_bchannel *bc) { char debug[768]; int i; diff --git a/channels/misdn/isdn_lib.c b/channels/misdn/isdn_lib.c index 720d4db7d..33a0f8dbf 100644 --- a/channels/misdn/isdn_lib.c +++ b/channels/misdn/isdn_lib.c @@ -651,7 +651,7 @@ void clear_l3(struct misdn_stack *stack) { int i; - for (i=0; i<=stack->b_num; i++) { + for (i=0; ib_num; i++) { if (global_state == MISDN_INITIALIZED) { cb_event(EVENT_CLEANUP, &stack->bc[i], NULL); empty_chan_in_stack(stack,i+1); @@ -3578,6 +3578,31 @@ int misdn_lib_pid_restart(int pid) return 0; } +/*Sends Restart message for every bchnanel*/ +int misdn_lib_send_restart(int port) +{ + struct misdn_stack *stack=find_stack_by_port(port); + cb_log(0, port, "Sending Restarts on this port.\n"); + + struct misdn_bchannel dummybc; + memset (&dummybc,0,sizeof(dummybc)); + dummybc.port=stack->port; + dummybc.l3_id=MISDN_ID_DUMMY; + dummybc.nt=stack->nt; + + int max=stack->pri?30:2; + int i; + for (i=1;iCALLING_PN, qi, &type, &plan, &present, &screen, (unsigned char *)id, sizeof(id)-1, nt,bc); + dec_ie_calling_pn(setup->CALLING_PN, qi, &type, &plan, &present, &screen, id, sizeof(id)-1, nt,bc); bc->onumplan=type; strcpy(bc->oad, id); @@ -183,13 +183,13 @@ void parse_setup (struct isdn_msg msgs[], msg_t *msg, struct misdn_bchannel *bc, { int type, plan; char number[32]; - dec_ie_called_pn(setup->CALLED_PN, (Q931_info_t *)setup, &type, &plan, (unsigned char *)number, sizeof(number)-1, nt,bc); + dec_ie_called_pn(setup->CALLED_PN, (Q931_info_t *)setup, &type, &plan, number, sizeof(number)-1, nt,bc); strcpy(bc->dad, number); bc->dnumplan=type; } { char keypad[32]; - dec_ie_keypad(setup->KEYPAD, (Q931_info_t *)setup, (unsigned char *)keypad, sizeof(keypad)-1, nt,bc); + dec_ie_keypad(setup->KEYPAD, (Q931_info_t *)setup, keypad, sizeof(keypad)-1, nt,bc); strcpy(bc->keypad, keypad); } @@ -201,7 +201,7 @@ void parse_setup (struct isdn_msg msgs[], msg_t *msg, struct misdn_bchannel *bc, { int type, plan, present, screen, reason; char id[32]; - dec_ie_redir_nr(setup->REDIR_NR, (Q931_info_t *)setup, &type, &plan, &present, &screen, &reason, (unsigned char *)id, sizeof(id)-1, nt,bc); + dec_ie_redir_nr(setup->REDIR_NR, (Q931_info_t *)setup, &type, &plan, &present, &screen, &reason, id, sizeof(id)-1, nt,bc); strcpy(bc->rad, id); bc->rnumplan=type; @@ -374,7 +374,7 @@ msg_t *build_connect (struct isdn_msg msgs[], struct misdn_bchannel *bc, int nt) { int type=bc->cpnnumplan, plan=1, present=2, screen=0; - enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, (unsigned char*) bc->cad, nt , bc); + enc_ie_connected_pn(&connect->CONNECT_PN, msg, type,plan, present, screen, bc->cad, nt , bc); } #if DEBUG @@ -977,8 +977,8 @@ void parse_information (struct isdn_msg msgs[], msg_t *msg, struct misdn_bchanne int type, plan; char number[32]; char keypad[32]; - dec_ie_called_pn(information->CALLED_PN, (Q931_info_t *)information, &type, &plan, (unsigned char *)number, sizeof(number)-1, nt, bc); - dec_ie_keypad(information->KEYPAD, (Q931_info_t *)information, (unsigned char *)keypad, sizeof(keypad)-1, nt, bc); + dec_ie_called_pn(information->CALLED_PN, (Q931_info_t *)information, &type, &plan, number, sizeof(number)-1, nt, bc); + dec_ie_keypad(information->KEYPAD, (Q931_info_t *)information, keypad, sizeof(keypad)-1, nt, bc); strcpy(bc->info_dad, number); strcpy(bc->keypad,keypad); } -- cgit v1.2.3