save dmmap files under '/etc/bbfdm/dmmap' instead of '/etc/bbfdm'

This commit is contained in:
Amin Ben Ramdhane 2021-03-25 18:27:32 +01:00
parent 5e97bdb5e4
commit 5717e55ac7
14 changed files with 212 additions and 241 deletions

1
README
View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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) \

View file

@ -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/"

View file

@ -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

25
scripts/bbf_uci_api Executable file
View file

@ -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}
}

View file

@ -3,26 +3,18 @@
# Author: IMEN Bhiri <imen.bhiri@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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

View file

@ -3,37 +3,30 @@
# Author: MOHAMED Kallel <mohamed.kallel@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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
}

49
scripts/nslookup_launch Normal file → Executable file
View file

@ -2,25 +2,16 @@
# Copyright (C) 2019 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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
}

49
scripts/serverselection_launch Normal file → Executable file
View file

@ -2,25 +2,18 @@
# Copyright (C) 2019 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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
}

52
scripts/traceroute_launch Normal file → Executable file
View file

@ -2,27 +2,17 @@
# Copyright (C) 2019 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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
}

47
scripts/udpecho_launch Normal file → Executable file
View file

@ -2,25 +2,18 @@
# Copyright (C) 2019 iopsys Software Solutions AB
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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
}

62
scripts/upload_launch Normal file → Executable file
View file

@ -3,27 +3,19 @@
# Author: IMEN Bhiri <imen.bhiri@pivasoftware.com>
# Author: AMIN Ben Ramdhane <amin.benramdhane@pivasoftware.com>
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