diff --git a/README b/README index 08a099ce..6cec18ea 100644 --- a/README +++ b/README @@ -8,5 +8,6 @@ make install ldconfig mkdir -p /etc/bbfdm/ +mkdir -p /etc/bbfdm/dmmap mkdir -p /etc/bbfdm/json mkdir -p /usr/lib/bbfdm diff --git a/dmtree/tr181/qos.c b/dmtree/tr181/qos.c index b500ade3..27d45f93 100644 --- a/dmtree/tr181/qos.c +++ b/dmtree/tr181/qos.c @@ -578,7 +578,7 @@ static int set_QoSClassification_DestMask(char *refparam, struct dmctx *ctx, voi return FAULT_9007; break; case VALUESET: - /* Set received value of dest. mask in /etc/bbfdm/dmmap_qos. + /* Set received value of dest. mask in /etc/bbfdm/dmmap/dmmap_qos. * If received value is an empty string then get the value of dest. ip. from dmmap_qos and set it as dest_ip in qos uci file. * If both received value of dest. mask and the dest. ip from dmmap_qos is empty then delete the dest_ip option from qos uci file. * Note: setting an empty string as option value in uci or dmmap will delete that option. @@ -587,7 +587,7 @@ static int set_QoSClassification_DestMask(char *refparam, struct dmctx *ctx, voi get_dmmap_section_of_config_section("dmmap_qos", "classify", section_name((struct uci_section *)data), &dmmap_section); dmuci_set_value_by_section_bbfdm(dmmap_section, "dest_mask", value); if (value[0] == '\0') { - //get source ip value from /etc/bbfdm/dmmap_qos and set as dest_ip + //get source ip value from /etc/bbfdm/dmmap/dmmap_qos and set as dest_ip dmuci_get_value_by_section_string(dmmap_section, "dest_ip", &dest_ip); dmuci_set_value_by_section((struct uci_section *)data, "dest_ip", dest_ip); } else { @@ -617,7 +617,7 @@ static int set_QoSClassification_SourceMask(char *refparam, struct dmctx *ctx, v return FAULT_9007; break; case VALUESET: - /* Set received value of src. mask in /etc/bbfdm/dmmap_qos. + /* Set received value of src. mask in /etc/bbfdm/dmmap/dmmap_qos. * If received value is an empty string then get the value of src. ip. from dmmap_qos and set it as src_ip in qos uci file. * If both received value of src. mask and the src. ip from dmmap_qos is empty then delete the src_ip option from qos uci file. * Note: setting an empty string as option value in uci or dmmap will delete that option. @@ -626,7 +626,7 @@ static int set_QoSClassification_SourceMask(char *refparam, struct dmctx *ctx, v get_dmmap_section_of_config_section("dmmap_qos", "classify", section_name((struct uci_section *)data), &dmmap_section); dmuci_set_value_by_section_bbfdm(dmmap_section, "src_mask", value); if (value[0] == '\0') { - //get source ip value from /etc/bbfdm/dmmap_qos and set as src_ip + //get source ip value from /etc/bbfdm/dmmap/dmmap_qos and set as src_ip dmuci_get_value_by_section_string(dmmap_section, "src_ip", &src_ip); dmuci_set_value_by_section((struct uci_section *)data, "src_ip", src_ip); } else { @@ -694,9 +694,9 @@ static int set_QoSClassification_DestIP(char *refparam, struct dmctx *ctx, void return FAULT_9007; break; case VALUESET: - /* If dest. mask parameter from etc/bbfdm/dmmap_qos is present, set this (dest. mask) value as dest_ip in qos uci file - * Else write received dest. ip to /etc/bbfdm/dmmap_qos and qos uci file. - * Also write the received dest. ip value to /etc/bbfdm/dmmap_qos. + /* If dest. mask parameter from /etc/bbfdm/dmmap/dmmap_qos is present, set this (dest. mask) value as dest_ip in qos uci file + * Else write received dest. ip to /etc/bbfdm/dmmap/dmmap_qos and qos uci file. + * Also write the received dest. ip value to /etc/bbfdm/dmmap/dmmap_qos. * */ get_dmmap_section_of_config_section("dmmap_qos", "classify", section_name((struct uci_section *)data), &dmmap_section); dmuci_get_value_by_section_string(dmmap_section, "dest_mask", &dest_mask); @@ -732,9 +732,9 @@ static int set_QoSClassification_SourceIP(char *refparam, struct dmctx *ctx, voi return FAULT_9007; break; case VALUESET: - /*if source mask parameter from etc/bbfdm/dmmap_qos is present, set this (source mask) value as src_ip in qos uci file - Else write received source ip to /etc/bbfdm/dmmap_qos and qos uci file. - also write the received source ip value to /etc/bbfdm/dmmap_qos. + /*if source mask parameter from /etc/bbfdm/dmmap/dmmap_qos is present, set this (source mask) value as src_ip in qos uci file + Else write received source ip to /etc/bbfdm/dmmap/dmmap_qos and qos uci file. + also write the received source ip value to /etc/bbfdm/dmmap/dmmap_qos. */ get_dmmap_section_of_config_section("dmmap_qos", "classify", section_name((struct uci_section *)data), &dmmap_section); dmuci_get_value_by_section_string(dmmap_section, "src_mask", &src_mask); diff --git a/libbbf_api/dmcommon.c b/libbbf_api/dmcommon.c index 5b6c0518..83c215da 100644 --- a/libbbf_api/dmcommon.c +++ b/libbbf_api/dmcommon.c @@ -582,7 +582,7 @@ char *check_create_dmmap_package(const char *dmmap_package) char *path; int rc; - rc = dmasprintf(&path, "/etc/bbfdm/%s", dmmap_package); + rc = dmasprintf(&path, "/etc/bbfdm/dmmap/%s", dmmap_package); if (rc == -1) return NULL; diff --git a/libbbf_api/dmcommon.h b/libbbf_api/dmcommon.h index 54476918..7b48b3d9 100644 --- a/libbbf_api/dmcommon.h +++ b/libbbf_api/dmcommon.h @@ -165,22 +165,22 @@ enum fs_size_type_enum { FS_SIZE_USED, }; -#define IPPING_PATH "/usr/share/bbfdm/functions/ipping_launch" +#define IPPING_PATH "/usr/share/bbfdm/ipping_launch" #define IPPING_STOP DMCMD("/bin/sh", 2, IPPING_PATH, "stop"); -#define DOWNLOAD_DIAGNOSTIC_PATH "/usr/share/bbfdm/functions/download_launch" +#define DOWNLOAD_DIAGNOSTIC_PATH "/usr/share/bbfdm/download_launch" #define DOWNLOAD_DUMP_FILE "/tmp/download_dump" #define DOWNLOAD_DIAGNOSTIC_STOP DMCMD("/bin/sh", 2, DOWNLOAD_DIAGNOSTIC_PATH, "stop"); -#define UPLOAD_DIAGNOSTIC_PATH "/usr/share/bbfdm/functions/upload_launch" +#define UPLOAD_DIAGNOSTIC_PATH "/usr/share/bbfdm/upload_launch" #define UPLOAD_DUMP_FILE "/tmp/upload_dump" #define UPLOAD_DIAGNOSTIC_STOP DMCMD("/bin/sh", 2, UPLOAD_DIAGNOSTIC_PATH, "stop"); -#define NSLOOKUP_PATH "/usr/share/bbfdm/functions/nslookup_launch" +#define NSLOOKUP_PATH "/usr/share/bbfdm/nslookup_launch" #define NSLOOKUP_LOG_FILE "/tmp/nslookup.log" #define NSLOOKUP_STOP DMCMD("/bin/sh", 2, NSLOOKUP_PATH, "stop"); -#define TRACEROUTE_PATH "/usr/share/bbfdm/functions/traceroute_launch" +#define TRACEROUTE_PATH "/usr/share/bbfdm/traceroute_launch" #define TRACEROUTE_STOP DMCMD("/bin/sh", 2, TRACEROUTE_PATH, "stop"); -#define UDPECHO_PATH "/usr/share/bbfdm/functions/udpecho_launch" +#define UDPECHO_PATH "/usr/share/bbfdm/udpecho_launch" #define UDPECHO_STOP DMCMD("/bin/sh", 2, UDPECHO_PATH, "stop"); -#define SERVERSELECTION_PATH "/usr/share/bbfdm/functions/serverselection_launch" +#define SERVERSELECTION_PATH "/usr/share/bbfdm/serverselection_launch" #define SERVERSELECTION_STOP DMCMD("/bin/sh", 2, SERVERSELECTION_PATH, "stop"); #define sysfs_foreach_file(path,dir,ent) \ diff --git a/libbbf_api/dmuci.h b/libbbf_api/dmuci.h index 5c50c0c1..c5fad2e2 100644 --- a/libbbf_api/dmuci.h +++ b/libbbf_api/dmuci.h @@ -27,7 +27,7 @@ #define LIB_DB_CONFIG "/lib/db/config" #define ETC_DB_CONFIG "/etc/board-db/config" #define VARSTATE_CONFIG "/var/state" -#define BBFDM_CONFIG "/etc/bbfdm" +#define BBFDM_CONFIG "/etc/bbfdm/dmmap" #define BBFDM_SAVEDIR "/tmp/.bbfdm" #define UCI_CONFIG_DIR "/etc/config/" diff --git a/openwrt/bbf/Makefile b/openwrt/bbf/Makefile index 2829b875..b6374054 100644 --- a/openwrt/bbf/Makefile +++ b/openwrt/bbf/Makefile @@ -73,8 +73,9 @@ define Package/libbbfdm/install $(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/ $(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.so* $(1)/lib/ $(INSTALL_DIR) $(1)/etc/bbfdm + $(INSTALL_DIR) $(1)/etc/bbfdm/dmmap $(INSTALL_DIR) $(1)/usr/share/bbfdm - $(CP) $(PKG_BUILD_DIR)/scripts $(1)/usr/share/bbfdm + $(CP) $(PKG_BUILD_DIR)/scripts/* $(1)/usr/share/bbfdm endef define Build/InstallDev diff --git a/scripts/bbf_uci_api b/scripts/bbf_uci_api new file mode 100755 index 00000000..7f744f20 --- /dev/null +++ b/scripts/bbf_uci_api @@ -0,0 +1,25 @@ +#!/bin/sh + +UCI_GET="/sbin/uci -q get" +UCI_SET="/sbin/uci -q set" +UCI_ADD="/sbin/uci -q add" +UCI_DELETE="/sbin/uci -q delete" +UCI_COMMIT="/sbin/uci -q commit" +UCI_SHOW="/sbin/uci -q show" + +UCI_GET_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap get" +UCI_SET_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap set" +UCI_ADD_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap add" +UCI_DELETE_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap delete" +UCI_COMMIT_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap commit" +UCI_SHOW_BBF_DMMAP="/sbin/uci -q -c /etc/bbfdm/dmmap show" + +uci_get() { + local val=`$UCI_GET $1` + echo ${val:-$2} +} + +uci_get_bbf_dmmap() { + local val=`$UCI_GET_BBF_DMMAP $1` + echo ${val:-$2} +} diff --git a/scripts/download_launch b/scripts/download_launch index 45d7421e..331786f7 100755 --- a/scripts/download_launch +++ b/scripts/download_launch @@ -3,26 +3,18 @@ # Author: IMEN Bhiri # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_ADD_BBFDM="/sbin/uci -q -c /etc/bbfdm add" -UCI_DELETE_BBFDM="/sbin/uci -q -c /etc/bbfdm delete" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" +source /usr/share/bbfdm/bbf_uci_api + CAPTURE_FILE="/tmp/download_dump" DOWNLOAD_DIAGNOSTIC_FILE="/tmp/bbfdm_download_diagnostic" CONNECTION_TIMEOUT=10 -download_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} - download_launch() { local proto tx_bytes_before rx_bytes_before time1 tx_bytes_after rx_bytes_after time2 periodtime error_code local url=$1 local device=$2 - [ "$url" = "" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBFDM; return; } - local protocol=`download_get dmmap_diagnostics.download.ProtocolVersion Any` + [ "$url" = "" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; return; } + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.download.ProtocolVersion Any` if [ "$protocol" == "IPv4" ]; then proto="-4"; elif [ "$protocol" == "IPv6" ]; then proto="-6"; else proto=""; fi # Disable acceleration on Broadcom devices to capture all packets with tcpdump [ -e /usr/sbin/fcctl ] && { fcctl disable >/dev/null 2>&1; fcctl flush >/dev/null 2>&1; } @@ -38,29 +30,29 @@ download_launch() { time2=`date +%s` tx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.tx_bytes` rx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.rx_bytes` - [ "$error_code" == "6" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } - [ "$error_code" == "7" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } - [ "$error_code" == "22" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } - [ "$error_code" == "27" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_IncorrectSize; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } - [ "$error_code" == "28" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_Timeout; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } - [ "$error_code" != "0" ] && { $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Error_Other; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } + [ "$error_code" == "6" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } + [ "$error_code" == "7" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } + [ "$error_code" == "22" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } + [ "$error_code" == "27" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_IncorrectSize; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } + [ "$error_code" == "28" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_Timeout; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } + [ "$error_code" != "0" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } fi tx_bytes=$((tx_bytes_after-tx_bytes_before)) rx_bytes=$((rx_bytes_after-rx_bytes_before)) periodtime=$(($((time2-time1))*1000000)) - $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.download.TotalBytesReceived=$rx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.download.TotalBytesSent=$tx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.download.PeriodOfFullLoading=$periodtime - local perconnection=`$UCI_GET_BBFDM dmmap_diagnostics.download.EnablePerConnection` + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.TotalBytesReceived=$rx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.TotalBytesSent=$tx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.PeriodOfFullLoading=$periodtime + local perconnection=`$UCI_GET_BBF_DMMAP dmmap_diagnostics.download.EnablePerConnection` if ([ "$perconnection" == "true" ] || [ "$perconnection" == "1" ]); then - $UCI_ADD_BBFDM dmmap_diagnostics DownloadPerConnection - $UCI_SET_BBFDM dmmap_diagnostics.@DownloadPerConnection[0].TotalBytesReceived=$rx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.@DownloadPerConnection[0].TotalBytesSent=$tx_bytes + $UCI_ADD_BBF_DMMAP dmmap_diagnostics DownloadPerConnection + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@DownloadPerConnection[0].TotalBytesReceived=$rx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@DownloadPerConnection[0].TotalBytesSent=$tx_bytes else - $UCI_DELETE_BBFDM dmmap_diagnostics.@DownloadPerConnection[0] + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@DownloadPerConnection[0] fi - $UCI_COMMIT_BBFDM + $UCI_COMMIT_BBF_DMMAP rm ${DOWNLOAD_DIAGNOSTIC_FILE} 2>/dev/null sleep 1 local pids=`ps | grep $PID` @@ -70,11 +62,11 @@ download_launch() { } download_stop_diagnostic() { - $UCI_DELETE_BBFDM dmmap_diagnostics.@DownloadPerConnection[0] + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@DownloadPerConnection[0] local pids=`ps | grep download_launch.*run | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=None + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=None fi local pids=`ps | grep download_launch.*run | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then @@ -83,9 +75,9 @@ download_stop_diagnostic() { kill -9 $kid &>/dev/null done kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.download.DiagnosticState=None + $UCI_SET_BBF_DMMAP dmmap_diagnostics.download.DiagnosticState=None fi - $UCI_COMMIT_BBFDM + $UCI_COMMIT_BBF_DMMAP } if [ "$1" == "run" ] ; then diff --git a/scripts/ipping_launch b/scripts/ipping_launch index b435739f..73b983a2 100755 --- a/scripts/ipping_launch +++ b/scripts/ipping_launch @@ -3,37 +3,30 @@ # Author: MOHAMED Kallel # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" - -ipping_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} +source /usr/share/bbfdm/bbf_uci_api ipping_error() { - local cnt=`ipping_get dmmap_diagnostics.ipping.NumberOfRepetitions 3` - $UCI_SET_BBFDM dmmap_diagnostics.ipping.SuccessCount=0 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.FailureCount=$cnt - $UCI_SET_BBFDM dmmap_diagnostics.ipping.AverageResponseTime=0 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MinimumResponseTime=9999 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MaximumResponseTime=0 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.AverageResponseTimeDetailed=0 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MinimumResponseTimeDetailed=999999999 - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MaximumResponseTimeDetailed=0 - $UCI_COMMIT_BBFDM + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.NumberOfRepetitions 3` + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.SuccessCount=0 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.FailureCount=$cnt + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.AverageResponseTime=0 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MinimumResponseTime=9999 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MaximumResponseTime=0 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.AverageResponseTimeDetailed=0 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MinimumResponseTimeDetailed=999999999 + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MaximumResponseTimeDetailed=0 + $UCI_COMMIT_BBF_DMMAP } ipping_launch() { local i proto device res ba stc times sc1 success_count failure_count min_time avg_time max_time avg_time_sum min max micros avg_time_det min_time_det max_time_det avg_time_sum_det min_det max_det - local host=`ipping_get dmmap_diagnostics.ipping.Host` - local cnt=`ipping_get dmmap_diagnostics.ipping.NumberOfRepetitions 3` - local dsize=`ipping_get dmmap_diagnostics.ipping.DataBlockSize 64` - local timeout=`ipping_get dmmap_diagnostics.ipping.Timeout 1000` - local interface=`ipping_get dmmap_diagnostics.ipping.interface` - local protocol=`ipping_get dmmap_diagnostics.ipping.ProtocolVersion Any` + local host=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.Host` + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.NumberOfRepetitions 3` + local dsize=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.DataBlockSize 64` + local timeout=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.Timeout 1000` + local interface=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.interface` + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.ipping.ProtocolVersion Any` [ ! -z "$interface" ] && device=`ifstatus $interface | jsonfilter -e @.device` && device="-I $device" || device="" if [ "$protocol" == "IPv4" ]; then proto="-4"; elif [ "$protocol" == "IPv6" ]; then proto="-6"; else proto=""; fi [ "$host" = "" ] && return @@ -53,11 +46,11 @@ ipping_launch() { let i++ res=$(ping -q $proto -c 1 -s $dsize -W $timeout $device $host 2>&1) ba=`echo "$res" | grep "bad address"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.ipping.DiagnosticState=Error_CannotResolveHostName; ipping_error; return; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.DiagnosticState=Error_CannotResolveHostName; ipping_error; return; } ba=`echo "$res" | grep "unknown host"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.ipping.DiagnosticState=Error_CannotResolveHostName; ipping_error; return; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.DiagnosticState=Error_CannotResolveHostName; ipping_error; return; } stc=`echo "$res" | grep "received"` - [ -z "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.ipping.DiagnosticState=Error_Other; ipping_error; return; } + [ -z "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.DiagnosticState=Error_Other; ipping_error; return; } times=`echo "$res" | grep "min/avg/max"` [ -z "$times" ] && continue sc1=`echo $stc | awk '{print $4}'` @@ -91,24 +84,24 @@ ipping_launch() { max_time=$(awk "BEGIN{print int($max / 1000)}") min_time_det=$min_det max_time_det=$max_det - $UCI_SET_BBFDM dmmap_diagnostics.ipping.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.ipping.SuccessCount=$success_count - $UCI_SET_BBFDM dmmap_diagnostics.ipping.FailureCount=$failure_count - $UCI_SET_BBFDM dmmap_diagnostics.ipping.AverageResponseTime=$avg_time - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MinimumResponseTime=$min_time - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MaximumResponseTime=$max_time - $UCI_SET_BBFDM dmmap_diagnostics.ipping.AverageResponseTimeDetailed=$avg_time_det - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MinimumResponseTimeDetailed=$min_time_det - $UCI_SET_BBFDM dmmap_diagnostics.ipping.MaximumResponseTimeDetailed=$max_time_det - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.SuccessCount=$success_count + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.FailureCount=$failure_count + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.AverageResponseTime=$avg_time + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MinimumResponseTime=$min_time + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MaximumResponseTime=$max_time + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.AverageResponseTimeDetailed=$avg_time_det + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MinimumResponseTimeDetailed=$min_time_det + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.MaximumResponseTimeDetailed=$max_time_det + $UCI_COMMIT_BBF_DMMAP } ipping_stop_diagnostic() { local pids=`ps | grep ipping_launch | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.ipping.DiagnosticState=None - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.ipping.DiagnosticState=None + $UCI_COMMIT_BBF_DMMAP fi } diff --git a/scripts/nslookup_launch b/scripts/nslookup_launch old mode 100644 new mode 100755 index 79cdae7d..2c977b2d --- a/scripts/nslookup_launch +++ b/scripts/nslookup_launch @@ -2,25 +2,16 @@ # Copyright (C) 2019 iopsys Software Solutions AB # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_ADD_BBFDM="/sbin/uci -q -c /etc/bbfdm add" -UCI_DELETE_BBFDM="/sbin/uci -q -c /etc/bbfdm delete" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" -UCI_SHOW_BBFDM="/sbin/uci -q -c /etc/bbfdm show" -LOG_FILE="/tmp/nslookup.log" +source /usr/share/bbfdm/bbf_uci_api -nslookup_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} +LOG_FILE="/tmp/nslookup.log" nslookup_launch() { local i j time1 time2 timeresponse status AnswerType HostNameReturned address dns_server_ip ResponseTime success_count local address="" - local hostname=`nslookup_get dmmap_diagnostics.nslookup.HostName` - local dnsserver=`nslookup_get dmmap_diagnostics.nslookup.DNSServer` - local cnt=`nslookup_get dmmap_diagnostics.nslookup.NumberOfRepetitions 1` + local hostname=`uci_get_bbf_dmmap dmmap_diagnostics.nslookup.HostName` + local dnsserver=`uci_get_bbf_dmmap dmmap_diagnostics.nslookup.DNSServer` + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.nslookup.NumberOfRepetitions 1` [ "$hostname" = "" ] && return i=0 j=0 @@ -67,29 +58,29 @@ nslookup_launch() { echo $line | grep 'Non-authoritative' >/dev/null 2>&1 && { AnswerType="NonAuthoritative"; continue; } if echo $line | grep '++++++++++++++++++++++' >/dev/null 2>&1; then - $UCI_ADD_BBFDM dmmap_diagnostics NSLookupResult - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].Status=$status - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].AnswerType=$AnswerType - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].HostNameReturned=$HostNameReturned - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].IPAddresses=$address - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].DNSServerIP=$dns_server_ip - $UCI_SET_BBFDM dmmap_diagnostics.@NSLookupResult[$j].ResponseTime=$ResponseTime + $UCI_ADD_BBF_DMMAP dmmap_diagnostics NSLookupResult + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].Status=$status + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].AnswerType=$AnswerType + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].HostNameReturned=$HostNameReturned + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].IPAddresses=$address + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].DNSServerIP=$dns_server_ip + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[$j].ResponseTime=$ResponseTime let j++ address="" fi done <${LOG_FILE} rm -f ${LOG_FILE} - $UCI_SET_BBFDM dmmap_diagnostics.nslookup.SuccessCount=$success_count - $UCI_SET_BBFDM dmmap_diagnostics.nslookup.DiagnosticState=Complete - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.SuccessCount=$success_count + $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=Complete + $UCI_COMMIT_BBF_DMMAP } delete_all_results() { local j - for j in $($UCI_SHOW_BBFDM dmmap_diagnostics | grep "dmmap_diagnostics.@NSLookupResult.*=NSLookupResult"); do - $UCI_DELETE_BBFDM dmmap_diagnostics.@NSLookupResult[-1] + for j in $($UCI_SHOW_BBF_DMMAP dmmap_diagnostics | grep "dmmap_diagnostics.@NSLookupResult.*=NSLookupResult"); do + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@NSLookupResult[-1] done - $UCI_COMMIT_BBFDM + $UCI_COMMIT_BBF_DMMAP } nslookup_stop_diagnostic() { @@ -97,8 +88,8 @@ nslookup_stop_diagnostic() { local pids=`ps | grep nslookup_launch | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.nslookup.DiagnosticState=None - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.nslookup.DiagnosticState=None + $UCI_COMMIT_BBF_DMMAP fi } diff --git a/scripts/serverselection_launch b/scripts/serverselection_launch old mode 100644 new mode 100755 index dc463f2f..01e8f18b --- a/scripts/serverselection_launch +++ b/scripts/serverselection_launch @@ -2,25 +2,18 @@ # Copyright (C) 2019 iopsys Software Solutions AB # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" - -serverselection_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} +source /usr/share/bbfdm/bbf_uci_api serverselection_launch() { local i proto device res ba stc times sc1 success_count min_time avg_time max_time avg_time_sum min max micros local fasthost avg_time_host min_time_host max_time_host - local hostlist=`serverselection_get dmmap_diagnostics.serverselection.HostList` - local cnt=`serverselection_get dmmap_diagnostics.serverselection.NumberOfRepetitions 3` - local timeout=`serverselection_get dmmap_diagnostics.serverselection.Timeout 1000` - local port=`serverselection_get dmmap_diagnostics.serverselection.port` - local interface=`serverselection_get dmmap_diagnostics.serverselection.interface` - local protoversion=`serverselection_get dmmap_diagnostics.serverselection.ProtocolVersion Any` - local protocol=`serverselection_get dmmap_diagnostics.serverselection.Protocol ICMP` + local hostlist=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.HostList` + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.NumberOfRepetitions 3` + local timeout=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.Timeout 1000` + local port=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.port` + local interface=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.interface` + local protoversion=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.ProtocolVersion Any` + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.serverselection.Protocol ICMP` if [ "$protoversion" == "IPv4" ]; then proto="-4"; elif [ "$protoversion" == "IPv6" ]; then proto="-6"; else proto=""; fi [ "$hostlist" = "" ] && return timeout=$((timeout/1000)) @@ -40,11 +33,11 @@ serverselection_launch() { let i++ res=$(ping -q $proto -c 1 -W $timeout $device $host 2>&1) ba=`echo "$res" | grep "bad address"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBFDM; break; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; break; } ba=`echo "$res" | grep "unknown host"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBFDM; break; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; break; } stc=`echo "$res" | grep "received"` - [ -z "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBFDM; break; } + [ -z "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; break; } times=`echo "$res" | grep "min/avg/max"` [ -z "$times" ] && break sc1=`echo $stc | awk '{print $4}'` @@ -71,9 +64,9 @@ serverselection_launch() { let i++ res=$(nping $proto -c 1 --udp --dest-port $port --data-length 24 $device $host 2>&1) ba=`echo "$res" | grep "RCVD"` - [ -z "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBFDM; return; } + [ -z "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; } stc=`echo "$res" | grep "RCVD" | grep "unreachable"` - [ -n "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBFDM; return; } + [ -n "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; } times=`echo "$res" | grep "rtt"` [ -z "$times" ] && continue sc1=`echo "$res" | grep "Rcvd" | awk -F': ' '{print $3}' | awk -F'(' '{ print $1 }'` @@ -101,20 +94,20 @@ serverselection_launch() { max=0 i=0 done - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.FastestHost=$fasthost - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.AverageResponseTime=$avg_time_host - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.MinimumResponseTime=$min_time_host - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.MaximumResponseTime=$max_time_host - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.FastestHost=$fasthost + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.AverageResponseTime=$avg_time_host + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.MinimumResponseTime=$min_time_host + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.MaximumResponseTime=$max_time_host + $UCI_COMMIT_BBF_DMMAP } serverselection_stop_diagnostic() { local pids=`ps | grep serverselection_launch | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.serverselection.DiagnosticState=None - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.serverselection.DiagnosticState=None + $UCI_COMMIT_BBF_DMMAP fi } diff --git a/scripts/traceroute_launch b/scripts/traceroute_launch old mode 100644 new mode 100755 index 0d827fcc..6de3d429 --- a/scripts/traceroute_launch +++ b/scripts/traceroute_launch @@ -2,27 +2,17 @@ # Copyright (C) 2019 iopsys Software Solutions AB # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_ADD_BBFDM="/sbin/uci -q -c /etc/bbfdm add" -UCI_DELETE_BBFDM="/sbin/uci -q -c /etc/bbfdm delete" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" -UCI_SHOW_BBFDM="/sbin/uci -q -c /etc/bbfdm show" - -traceroute_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} +source /usr/share/bbfdm/bbf_uci_api traceroute_launch() { local i proto device res host ip time=0 - local host=`traceroute_get dmmap_diagnostics.traceroute.Host` - local cnt=`traceroute_get dmmap_diagnostics.traceroute.NumberOfTries 3` - local dsize=`traceroute_get dmmap_diagnostics.traceroute.DataBlockSize 38` - local timeout=`traceroute_get dmmap_diagnostics.traceroute.Timeout 5000` - local maxhop=`traceroute_get dmmap_diagnostics.traceroute.MaxHops 30` - local interface=`traceroute_get dmmap_diagnostics.traceroute.interface` - local protocol=`traceroute_get dmmap_diagnostics.traceroute.ProtocolVersion Any` + local host=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.Host` + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.NumberOfTries 3` + local dsize=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.DataBlockSize 38` + local timeout=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.Timeout 5000` + local maxhop=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.MaxHops 30` + local interface=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.interface` + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.traceroute.ProtocolVersion Any` [ ! -z "$interface" ] && device=`ifstatus $interface | jsonfilter -e @.device` && device="-i $device" || device="" if [ "$protocol" == "IPv4" ]; then proto="-4"; elif [ "$protocol" == "IPv6" ]; then proto="-6"; else proto=""; fi [ "$host" = "" ] && return @@ -38,25 +28,25 @@ traceroute_launch() { [ "$i" = "-1" ] && continue; ip=${ip#(}; ip=${ip%)} time=${time%.*} - $UCI_ADD_BBFDM dmmap_diagnostics RouteHops - $UCI_SET_BBFDM dmmap_diagnostics.@RouteHops[$i].host=$host - $UCI_SET_BBFDM dmmap_diagnostics.@RouteHops[$i].ip=$ip - $UCI_SET_BBFDM dmmap_diagnostics.@RouteHops[$i].time=$time + $UCI_ADD_BBF_DMMAP dmmap_diagnostics RouteHops + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@RouteHops[$i].host=$host + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@RouteHops[$i].ip=$ip + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@RouteHops[$i].time=$time done < /tmp/traceres rm -f /tmp/traceres let i++ - $UCI_SET_BBFDM dmmap_diagnostics.traceroute.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.traceroute.NumberOfHops=$i - $UCI_SET_BBFDM dmmap_diagnostics.traceroute.ResponseTime=$($UCI_GET_BBFDM dmmap_diagnostics.@RouteHops[-1].time) - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.NumberOfHops=$i + $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.ResponseTime=$($UCI_GET_BBF_DMMAP dmmap_diagnostics.@RouteHops[-1].time) + $UCI_COMMIT_BBF_DMMAP } delete_all_route_hops() { local j - for j in $($UCI_SHOW_BBFDM dmmap_diagnostics | grep "dmmap_diagnostics.@RouteHops.*=RouteHops"); do - $UCI_DELETE_BBFDM dmmap_diagnostics.@RouteHops[-1] - $UCI_COMMIT_BBFDM + for j in $($UCI_SHOW_BBF_DMMAP dmmap_diagnostics | grep "dmmap_diagnostics.@RouteHops.*=RouteHops"); do + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@RouteHops[-1] + $UCI_COMMIT_BBF_DMMAP done } @@ -66,8 +56,8 @@ traceroute_stop() { [ -z "$pids" ] && pids=`ps | grep traceroute_launch | grep -v grep | grep -v stop | awk '{print $2}'` if [ -n "$pids" ]; then kill -9 $pids 2>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.traceroute.DiagnosticState=None - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.traceroute.DiagnosticState=None + $UCI_COMMIT_BBF_DMMAP fi } diff --git a/scripts/udpecho_launch b/scripts/udpecho_launch old mode 100644 new mode 100755 index f4073fb1..784e012a --- a/scripts/udpecho_launch +++ b/scripts/udpecho_launch @@ -2,25 +2,18 @@ # Copyright (C) 2019 iopsys Software Solutions AB # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" - -udpecho_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} +source /usr/share/bbfdm/bbf_uci_api udpecho_launch() { local i proto device res ba stc times sc1 success_count failure_count min_time avg_time max_time avg_time_sum min max micros - local host=`udpecho_get dmmap_diagnostics.udpechodiag.Host` - local port=`udpecho_get dmmap_diagnostics.udpechodiag.port` - local cnt=`udpecho_get dmmap_diagnostics.udpechodiag.NumberOfRepetitions 1` - local dsize=`udpecho_get dmmap_diagnostics.udpechodiag.DataBlockSize 24` - local dscp=`udpecho_get dmmap_diagnostics.udpechodiag.DSCP 0` - local interface=`udpecho_get dmmap_diagnostics.udpechodiag.interface` - local protocol=`udpecho_get dmmap_diagnostics.udpechodiag.ProtocolVersion Any` - local inter_time=`udpecho_get dmmap_diagnostics.udpechodiag.InterTransmissionTime 1000` + local host=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.Host` + local port=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.port` + local cnt=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.NumberOfRepetitions 1` + local dsize=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.DataBlockSize 24` + local dscp=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.DSCP 0` + local interface=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.interface` + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.ProtocolVersion Any` + local inter_time=`uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.InterTransmissionTime 1000` [ ! -z "$interface" ] && device=`ifstatus $interface | jsonfilter -e @.device` && device="-e $device" || device="" if [ "$protocol" == "IPv4" ]; then proto="-4"; elif [ "$protocol" == "IPv6" ]; then proto="-6"; else proto=""; fi local tos=$((dscp<<2)) @@ -39,9 +32,9 @@ udpecho_launch() { let i++ res=$(nping $proto -c 1 --tos $tos --udp --dest-port $port --data-length $dsize $device $host 2>&1) ba=`echo "$res" | grep "RCVD"` - [ -z "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBFDM; return; } + [ -z "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; } stc=`echo "$res" | grep "RCVD" | grep "unreachable"` - [ -n "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.DiagnosticState=Error_Other; $UCI_COMMIT_BBFDM; return; } + [ -n "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.DiagnosticState=Error_Other; $UCI_COMMIT_BBF_DMMAP; return; } times=`echo "$res" | grep "rtt"` [ -z "$times" ] && continue sc1=`echo "$res" | grep "Rcvd" | awk -F': ' '{print $3}' | awk -F'(' '{ print $1 }'` @@ -65,21 +58,21 @@ udpecho_launch() { [ $success_count -gt 0 ] && avg_time=$((avg_time_sum/success_count)) || avg_time=0 min_time=$min max_time=$max - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.SuccessCount=$success_count - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.FailureCount=$failure_count - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.AverageResponseTime=$avg_time - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.MinimumResponseTime=$min_time - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.MaximumResponseTime=$max_time - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.SuccessCount=$success_count + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.FailureCount=$failure_count + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.AverageResponseTime=$avg_time + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.MinimumResponseTime=$min_time + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.MaximumResponseTime=$max_time + $UCI_COMMIT_BBF_DMMAP } udpecho_stop_diagnostic() { local pids=`ps | grep udpecho_launch | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.udpechodiag.DiagnosticState=None - $UCI_COMMIT_BBFDM + $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.DiagnosticState=None + $UCI_COMMIT_BBF_DMMAP fi } diff --git a/scripts/upload_launch b/scripts/upload_launch old mode 100644 new mode 100755 index 01a94675..12bdf9f5 --- a/scripts/upload_launch +++ b/scripts/upload_launch @@ -3,27 +3,19 @@ # Author: IMEN Bhiri # Author: AMIN Ben Ramdhane -UCI_GET_BBFDM="/sbin/uci -q -c /etc/bbfdm get" -UCI_SET_BBFDM="/sbin/uci -q -c /etc/bbfdm set" -UCI_ADD_BBFDM="/sbin/uci -q -c /etc/bbfdm add" -UCI_DELETE_BBFDM="/sbin/uci -q -c /etc/bbfdm delete" -UCI_COMMIT_BBFDM="/sbin/uci -q -c /etc/bbfdm commit" +source /usr/share/bbfdm/bbf_uci_api + CAPTURE_FILE="/tmp/upload_dump" UPLOAD_DIAGNOSTIC_FILE="/tmp/bbfdm_upload_diagnostic" CONNECTION_TIMEOUT=20 -upload_get() { - local val=`$UCI_GET_BBFDM $1` - echo ${val:-$2} -} - upload_launch() { local proto tx_bytes_before rx_bytes_before time1 tx_bytes_after rx_bytes_after time2 res ba stc periodtime local url=$1 local device=$2 local size=$3 - [ "$url" = "" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBFDM; return; } - local protocol=`upload_get dmmap_diagnostics.upload.ProtocolVersion Any` + [ "$url" = "" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; return; } + local protocol=`uci_get_bbf_dmmap dmmap_diagnostics.upload.ProtocolVersion Any` if [ "$protocol" == "IPv4" ]; then proto="-4"; elif [ "$protocol" == "IPv6" ]; then proto="-6"; else proto=""; fi # Disable acceleration on Broadcom devices to capture all packets with tcpdump [ -e /usr/sbin/fcctl ] && { fcctl disable >/dev/null 2>&1; fcctl flush >/dev/null 2>&1; } @@ -40,11 +32,11 @@ upload_launch() { tx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.tx_bytes` rx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.rx_bytes` ba=`echo "$res" | grep "bad address"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBFDM; kill $PID &> /dev/null; return; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID &> /dev/null; return; } stc=`echo "$res" | grep "404 Not Found"` - [ -n "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBFDM; kill $PID &> /dev/null; return; } + [ -n "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBF_DMMAP; kill $PID &> /dev/null; return; } stc=`echo "$res" |sed -n 3p|awk '{print $13}'` - [ "$stc" != "100" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_TransferFailed; $UCI_COMMIT_BBFDM; kill $PID &> /dev/null; return; } + [ "$stc" != "100" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_TransferFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID &> /dev/null; return; } elif [ ${url:0:6} = ftp:// ]; then #add user and pass if they exist substr="@" @@ -59,32 +51,32 @@ upload_launch() { tx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.tx_bytes` rx_bytes_after=`ubus call network.device status "{'name':'$device'}" | jsonfilter -e @.statistics.rx_bytes` ba=`echo "$res" | grep "Couldn't resolve host"` - [ -n "$ba" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } + [ -n "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_InitConnectionFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } stc=`echo "$res" | grep "Access denied"` - [ -n "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_LoginFailed; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } + [ -n "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_LoginFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } stc=`echo "$res" | grep "Failed FTP upload"` - [ -n "$stc" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } + [ -n "$stc" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_NoResponse; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } stc=`echo "$res" |tail -n 1 |awk '{print $(NF-11)}'` - [ "$stc" != "100" ] && { $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Error_TransferFailed; $UCI_COMMIT_BBFDM; kill $PID 2> /dev/null; return; } + [ "$stc" != "100" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Error_TransferFailed; $UCI_COMMIT_BBF_DMMAP; kill $PID 2> /dev/null; return; } fi tx_bytes=$((tx_bytes_after-tx_bytes_before)) rx_bytes=$((rx_bytes_after-rx_bytes_before)) periodtime=$(($((time2-time1))*1000000)) - $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=Complete - $UCI_SET_BBFDM dmmap_diagnostics.upload.TestBytesSent=$size - $UCI_SET_BBFDM dmmap_diagnostics.upload.TotalBytesReceived=$rx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.upload.TotalBytesSent=$tx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.upload.PeriodOfFullLoading=$periodtime - local perconnection=`$UCI_GET_BBFDM dmmap_diagnostics.upload.EnablePerConnection` + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=Complete + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.TestBytesSent=$size + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.TotalBytesReceived=$rx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.TotalBytesSent=$tx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.PeriodOfFullLoading=$periodtime + local perconnection=`$UCI_GET_BBF_DMMAP dmmap_diagnostics.upload.EnablePerConnection` if ([ "$perconnection" == "true" ] || [ "$perconnection" == "1" ]); then - $UCI_ADD_BBFDM dmmap_diagnostics UploadPerConnection - $UCI_SET_BBFDM dmmap_diagnostics.@UploadPerConnection[0].TestBytesSent=$size - $UCI_SET_BBFDM dmmap_diagnostics.@UploadPerConnection[0].TotalBytesReceived=$rx_bytes - $UCI_SET_BBFDM dmmap_diagnostics.@UploadPerConnection[0].TotalBytesSent=$tx_bytes + $UCI_ADD_BBF_DMMAP dmmap_diagnostics UploadPerConnection + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@UploadPerConnection[0].TestBytesSent=$size + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@UploadPerConnection[0].TotalBytesReceived=$rx_bytes + $UCI_SET_BBF_DMMAP dmmap_diagnostics.@UploadPerConnection[0].TotalBytesSent=$tx_bytes else - $UCI_DELETE_BBFDM dmmap_diagnostics.@UploadPerConnection[0] + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@UploadPerConnection[0] fi - $UCI_COMMIT_BBFDM + $UCI_COMMIT_BBF_DMMAP rm ${UPLOAD_DIAGNOSTIC_FILE} &>/dev/null sleep 3 local pids=`ps | grep $PID` @@ -94,11 +86,11 @@ upload_launch() { } upload_stop_diagnostic() { - $UCI_DELETE_BBFDM dmmap_diagnostics.@UploadPerConnection[0] + $UCI_DELETE_BBF_DMMAP dmmap_diagnostics.@UploadPerConnection[0] local pids=`ps | grep upload_launch.*run | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=None + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=None fi local pids=`ps | grep upload_launch.*run | grep -v grep | awk '{print $1}'` if [ -n "$pids" ]; then @@ -107,9 +99,9 @@ upload_stop_diagnostic() { kill -9 $kid &>/dev/null done kill -9 $pids &>/dev/null - $UCI_SET_BBFDM dmmap_diagnostics.upload.DiagnosticState=None + $UCI_SET_BBF_DMMAP dmmap_diagnostics.upload.DiagnosticState=None fi - $UCI_COMMIT_BBFDM + $UCI_COMMIT_BBF_DMMAP } if [ "$1" == "run" ] ; then