Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:mnhauke:pbx
wanpipe
wanpipe-05-typepun.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File wanpipe-05-typepun.diff of Package wanpipe
Resolve type-pun bugs wan_plxup/fpipemon/cpipemon. wan_plxup.c: In function 'exec_read_cmd': wan_plxup.c:150:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] wan_plxup.c: In function 'exec_write_cmd': wan_plxup.c:175:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c: In function 'error_stats': fpipemon.c:529:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:530:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:531:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:532:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:533:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:534:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:535:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:536:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:537:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:539:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:540:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:541:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:543:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:544:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:546:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:553:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:554:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:555:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:556:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:557:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:558:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:559:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:560:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:561:9: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:563:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:564:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:565:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:567:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:569:6: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:572:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c: In function 'list_configured_dlcis': fpipemon.c:682:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c: In function 'list_active_dlcis': fpipemon.c:716:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c: In function 'read_dlci_stat': fpipemon.c:763:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:765:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:767:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:769:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:771:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:773:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:785:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:787:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:797:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:799:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:801:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:803:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:805:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:807:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:819:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fpipemon.c:821:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] cpipemon.c: In function 'chdlc_router_up_time': cpipemon.c:1360:5: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] --- util/wan_plxctrl/wan_plxup.c | 4 - util/wanpipemon/cpipemon.c | 2 util/wanpipemon/fpipemon.c | 167 ++++++++++++++++++++++++++----------------- 3 files changed, 104 insertions(+), 69 deletions(-) Index: wanpipe-3.5.27.4/util/wan_plxctrl/wan_plxup.c =================================================================== --- wanpipe-3.5.27.4.orig/util/wan_plxctrl/wan_plxup.c +++ wanpipe-3.5.27.4/util/wan_plxctrl/wan_plxup.c @@ -147,7 +147,7 @@ int exec_read_cmd(void *arg, unsigned in } if (len==4){ - *(unsigned int*)data = *(unsigned int*)api_cmd.data; + memcpy(data, &api_cmd.data, sizeof(*data)); }else{ return -EINVAL; } @@ -172,7 +172,7 @@ int exec_write_cmd(void *arg, unsigned i api_cmd.offset = off; if (len==4){ - *(unsigned int*)api_cmd.data=(unsigned int)data; + memcpy(&api_cmd.data, &data, sizeof(data)); }else{ return -EINVAL; } Index: wanpipe-3.5.27.4/util/wanpipemon/cpipemon.c =================================================================== --- wanpipe-3.5.27.4.orig/util/wanpipemon/cpipemon.c +++ wanpipe-3.5.27.4/util/wanpipemon/cpipemon.c @@ -1357,7 +1357,7 @@ static void chdlc_router_up_time( void ) wan_udp.wan_udphdr_data[0] = 0; DO_COMMAND(wan_udp); - time = *(u_int32_t*)&wan_udp.wan_udphdr_data[0]; + memcpy(&time, &wan_udp.wan_udphdr_data[0], sizeof(time)); BANNER("ROUTER UP TIME (CHDLC)"); Index: wanpipe-3.5.27.4/util/wanpipemon/fpipemon.c =================================================================== --- wanpipe-3.5.27.4.orig/util/wanpipemon/fpipemon.c +++ wanpipe-3.5.27.4/util/wanpipemon/fpipemon.c @@ -510,6 +510,8 @@ static void flush_global_stats( void ) static void error_stats( void ) { + unsigned short tmp_us; + FRConfig(); ResetWanUdp(&wan_udp); @@ -526,50 +528,78 @@ static void error_stats( void ) if (xml_output){ output_start_xml_router(); output_start_xml_header("Error Statistics"); - output_xml_val_data("I-frames not transmitted after a tx. int. due to exessive frame length",*(unsigned short*)&wan_udp.wan_udphdr_data[0]); - output_xml_val_data("I-frames not transmitted after a tx. int. due to excessive throughput",*(unsigned short*)&wan_udp.wan_udphdr_data[2]); - output_xml_val_data("Received frames discarded as they were either too short or too long",*(unsigned short*)&wan_udp.wan_udphdr_data[4]); - output_xml_val_data("discarded I-frames with unconfigured DLCI",*(unsigned short*)&wan_udp.wan_udphdr_data[6]); - output_xml_val_data("discarded I-frames due to a format error",*(unsigned short*)&wan_udp.wan_udphdr_data[8]); - output_xml_val_data("App. didn't respond to the triggered IRQ within the given timeout period",*(unsigned short*)&wan_udp.wan_udphdr_data[10]); - output_xml_val_data("discarded In-channel Signalling frames due to a format error",*(unsigned short*)&wan_udp.wan_udphdr_data[28]); - output_xml_val_data("In-channel frames received with an invalid Send Seq. Numbers received",*(unsigned short*)&wan_udp.wan_udphdr_data[32]); - output_xml_val_data("In-channel frames received with an invalid Receive Seq. Numbers received",*(unsigned short*)&wan_udp.wan_udphdr_data[34]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[0], sizeof(tmp_us)); + output_xml_val_data("I-frames not transmitted after a tx. int. due to exessive frame length", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[2], sizeof(tmp_us)); + output_xml_val_data("I-frames not transmitted after a tx. int. due to excessive throughput", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[4], sizeof(tmp_us)); + output_xml_val_data("Received frames discarded as they were either too short or too long", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[6], sizeof(tmp_us)); + output_xml_val_data("discarded I-frames with unconfigured DLCI", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[8], sizeof(tmp_us)); + output_xml_val_data("discarded I-frames due to a format error", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[10], sizeof(tmp_us)); + output_xml_val_data("App. didn't respond to the triggered IRQ within the given timeout period", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[28], sizeof(tmp_us)); + output_xml_val_data("discarded In-channel Signalling frames due to a format error", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[32], sizeof(tmp_us)); + output_xml_val_data("In-channel frames received with an invalid Send Seq. Numbers received", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[34], sizeof(tmp_us)); + output_xml_val_data("In-channel frames received with an invalid Receive Seq. Numbers received", tmp_us); if( station_config == 0 ) { - output_xml_val_data("Number of unsolicited responses from the Access Node",*(unsigned short*)&wan_udp.wan_udphdr_data[30]); - output_xml_val_data("timeouts on the T391 timer",*(unsigned short*)&wan_udp.wan_udphdr_data[36]); - output_xml_val_data("consecutive timeouts on the T391 timer",*(unsigned short*)&wan_udp.wan_udphdr_data[48]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[30], sizeof(tmp_us)); + output_xml_val_data("Number of unsolicited responses from the Access Node", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[36], sizeof(tmp_us)); + output_xml_val_data("timeouts on the T391 timer", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[48], sizeof(tmp_us)); + output_xml_val_data("consecutive timeouts on the T391 timer", tmp_us); } else { - output_xml_val_data("timeouts on the T392 timer",*(unsigned short*)&wan_udp.wan_udphdr_data[38]); - output_xml_val_data("consecutive timeouts on the T392 timer",*(unsigned short*)&wan_udp.wan_udphdr_data[50]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[38], sizeof(tmp_us)); + output_xml_val_data("timeouts on the T392 timer", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[50], sizeof(tmp_us)); + output_xml_val_data("consecutive timeouts on the T392 timer", tmp_us); } - output_xml_val_data("times that N392 error threshold was reached during N393 monitored events",*(unsigned short*)&wan_udp.wan_udphdr_data[40]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[40], sizeof(tmp_us)); + output_xml_val_data("times that N392 error threshold was reached during N393 monitored events", tmp_us); output_stop_xml_header(); output_stop_xml_router(); }else{ banner("ERROR STATISTICS",0); - printf(" I-frames not transmitted after a tx. int. due to exessive frame length: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[0]); - printf(" I-frames not transmitted after a tx. int. due to excessive throughput: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[2]); - printf(" Received frames discarded as they were either too short or too long: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[4]); - printf(" discarded I-frames with unconfigured DLCI: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[6]); - printf(" discarded I-frames due to a format error: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[8]); - printf("App. didn't respond to the triggered IRQ within the given timeout period: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[10]); - printf(" discarded In-channel Signalling frames due to a format error: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[28]); - printf(" In-channel frames received with an invalid Send Seq. Numbers received: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[32]); - printf("In-channel frames received with an invalid Receive Seq. Numbers received: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[34]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[0], sizeof(tmp_us)); + printf(" I-frames not transmitted after a tx. int. due to exessive frame length: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[2], sizeof(tmp_us)); + printf(" I-frames not transmitted after a tx. int. due to excessive throughput: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[4], sizeof(tmp_us)); + printf(" Received frames discarded as they were either too short or too long: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[6], sizeof(tmp_us)); + printf(" discarded I-frames with unconfigured DLCI: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[8], sizeof(tmp_us)); + printf(" discarded I-frames due to a format error: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[10], sizeof(tmp_us)); + printf("App. didn't respond to the triggered IRQ within the given timeout period: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[28], sizeof(tmp_us)); + printf(" discarded In-channel Signalling frames due to a format error: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[32], sizeof(tmp_us)); + printf(" In-channel frames received with an invalid Send Seq. Numbers received: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[34], sizeof(tmp_us)); + printf("In-channel frames received with an invalid Receive Seq. Numbers received: %u\n", tmp_us); if( station_config == 0 ) { - printf(" Number of unsolicited responses from the Access Node: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[30]); - printf(" timeouts on the T391 timer: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[36]); - printf(" consecutive timeouts on the T391 timer: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[48]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[30], sizeof(tmp_us)); + printf(" Number of unsolicited responses from the Access Node: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[36], sizeof(tmp_us)); + printf(" timeouts on the T391 timer: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[48], sizeof(tmp_us)); + printf(" consecutive timeouts on the T391 timer: %u\n", tmp_us); } else { - printf(" timeouts on the T392 timer: %u\n",*(unsigned short*)&wan_udp.wan_udphdr_data[38]); - printf(" consecutive timeouts on the T392 timer: %u\n", - *(unsigned short*)&wan_udp.wan_udphdr_data[50]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[38], sizeof(tmp_us)); + printf(" timeouts on the T392 timer: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[50], sizeof(tmp_us)); + printf(" consecutive timeouts on the T392 timer: %u\n", tmp_us); } - printf("times that N392 error threshold was reached during N393 monitored events: %u\n", - *(unsigned short*)&wan_udp.wan_udphdr_data[40]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[40], sizeof(tmp_us)); + printf("times that N392 error threshold was reached during N393 monitored events: %u\n", tmp_us); } }; /* error_stats */ @@ -679,7 +709,8 @@ static void list_configured_dlcis(void) banner("DLCI STATUS LIST",0); - num_of_dlcis_in_the_list = *((int*)wan_udp.wan_udphdr_data); + memcpy(&i, wan_udp.wan_udphdr_data, sizeof(i)); + num_of_dlcis_in_the_list = i; wan_fr_dlci_ptr = (wan_fr_dlci_t*)&wan_udp.wan_udphdr_data[sizeof(int)]; printf("Number of DLCIs in the list: %d\n", num_of_dlcis_in_the_list); @@ -713,7 +744,8 @@ static void list_active_dlcis( void ) banner("LIST OF ACTIVE DLCIs",0); - num_of_dlcis_in_the_list = *((int*)wan_udp.wan_udphdr_data); + memcpy(&i, wan_udp.wan_udphdr_data, sizeof(int)); + num_of_dlcis_in_the_list = i; wan_fr_dlci_ptr = (wan_fr_dlci_t*)&wan_udp.wan_udphdr_data[sizeof(int)]; number_of_active_dlcis = 0; @@ -734,6 +766,9 @@ static void list_active_dlcis( void ) static void read_dlci_stat( void ) { + unsigned short tmp_us; + uint32_t tmp_32; + wan_udp.wan_udphdr_command = FR_READ_STATISTICS; wan_udp.wan_udphdr_return_code = 0xaa; wan_udp.wan_udphdr_fr_dlci = dlci_number; @@ -759,18 +794,18 @@ static void read_dlci_stat( void ) output_start_xml_header(tmp); if( (wan_udp.wan_udphdr_return_code == 0) && (wan_udp.wan_udphdr_data_len == 0x20)){ - output_xml_val_data("Information frames transmitted", - *(u_int32_t*)&wan_udp.wan_udphdr_data[0]); - output_xml_val_data("Information bytes transmitted", - *(u_int32_t*)&wan_udp.wan_udphdr_data[4]); - output_xml_val_data("Information frames received", - *(u_int32_t*)&wan_udp.wan_udphdr_data[8]); - output_xml_val_data("Information bytes received", - *(u_int32_t*)&wan_udp.wan_udphdr_data[12]); - output_xml_val_data("Received I-frames discarded due to inactive DLCI", - *(u_int32_t*)&wan_udp.wan_udphdr_data[20]); - output_xml_val_data("I-frames received with Discard Eligibility (DE) indicator set", - *(u_int32_t*)&wan_udp.wan_udphdr_data[28]); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[0], sizeof(tmp_32)); + output_xml_val_data("Information frames transmitted", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[4], sizeof(tmp_32)); + output_xml_val_data("Information bytes transmitted", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[8], sizeof(tmp_32)); + output_xml_val_data("Information frames received", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[12], sizeof(tmp_32)); + output_xml_val_data("Information bytes received", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[20], sizeof(tmp_32)); + output_xml_val_data("Received I-frames discarded due to inactive DLCI", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[28], sizeof(tmp_32)); + output_xml_val_data("I-frames received with Discard Eligibility (DE) indicator set", tmp_32); } wan_udp.wan_udphdr_command = FR_READ_ADD_DLC_STATS; @@ -781,10 +816,10 @@ static void read_dlci_stat( void ) DO_COMMAND(wan_udp); if( wan_udp.wan_udphdr_return_code == 0 ){ - output_xml_val_data("I-frames received with the FECN bit set", - *(unsigned short*)&wan_udp.wan_udphdr_data[0]); - output_xml_val_data("I-frames received with the BECN bit set", - *(unsigned short*)&wan_udp.wan_udphdr_data[2]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[0], sizeof(tmp_us)); + output_xml_val_data("I-frames received with the FECN bit set", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[2], sizeof(tmp_us)); + output_xml_val_data("I-frames received with the BECN bit set", tmp_us); } output_stop_xml_header(); output_stop_xml_router(); @@ -793,18 +828,18 @@ static void read_dlci_stat( void ) banner("STATISTICS FOR DLCI",dlci_number); if(wan_udp.wan_udphdr_return_code == 0){ - printf(" Information frames transmitted: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[0]); - printf(" Information bytes transmitted: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[4]); - printf(" Information frames received: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[8]); - printf(" Information bytes received: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[12]); - printf(" Received I-frames discarded due to inactive DLCI: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[20]); - printf(" I-frames received with Discard Eligibility (DE) indicator set: %u\n", - *(u_int32_t*)&wan_udp.wan_udphdr_data[28]); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[0], sizeof(tmp_32)); + printf(" Information frames transmitted: %u\n", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[4], sizeof(tmp_32)); + printf(" Information bytes transmitted: %u\n", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[8], sizeof(tmp_32)); + printf(" Information frames received: %u\n", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[12], sizeof(tmp_32)); + printf(" Information bytes received: %u\n", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[20], sizeof(tmp_32)); + printf(" Received I-frames discarded due to inactive DLCI: %u\n", tmp_32); + memcpy(&tmp_32, &wan_udp.wan_udphdr_data[28], sizeof(tmp_32)); + printf(" I-frames received with Discard Eligibility (DE) indicator set: %u\n", tmp_32); } wan_udp.wan_udphdr_command = FR_READ_ADD_DLC_STATS; @@ -815,10 +850,10 @@ static void read_dlci_stat( void ) DO_COMMAND(wan_udp); if( wan_udp.wan_udphdr_return_code == 0 ){ - printf(" I-frames received with the FECN bit set: %u\n", - *(unsigned short*)&wan_udp.wan_udphdr_data[0]); - printf(" I-frames received with the BECN bit set: %u\n", - *(unsigned short*)&wan_udp.wan_udphdr_data[2]); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[0], sizeof(tmp_us)); + printf(" I-frames received with the FECN bit set: %u\n", tmp_us); + memcpy(&tmp_us, &wan_udp.wan_udphdr_data[2], sizeof(tmp_us)); + printf(" I-frames received with the BECN bit set: %u\n", tmp_us); } else { printf("Error: Please enter a non-zero DLCI\n");
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor