UDPEcho: use udpechoclientd instead of nping

This commit is contained in:
Amin Ben Ramdhane 2022-05-10 23:40:17 +01:00
parent aaaa260222
commit 381d47fcb9
3 changed files with 11 additions and 13 deletions

View file

@ -2178,9 +2178,6 @@ static int operate_IPDiagnostics_ServerSelectionDiagnostics(char *refparam, stru
char *port = dmjson_get_value((json_object *)value, 1, "Port");
char *proto = dmjson_get_value((json_object *)value, 1, "Protocol");
if (DM_LSTRCMP(proto, "ICMP") && port[0] == '\0')
return CMD_INVALID_ARGUMENTS;
char *protocol_version = dmjson_get_value((json_object *)value, 1, "ProtocolVersion");
char *interface = dmjson_get_value((json_object *)value, 1, "Interface");
char *nbofrepetition = dmjson_get_value((json_object *)value, 1, "NumberOfRepetitions");

View file

@ -8,7 +8,7 @@ serverselection_launch() {
hostlist=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.HostList)
cnt=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.NumberOfRepetitions 3)
timeout=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.Timeout 1000)
port=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.port)
port=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.port 7)
interface=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.interface)
protoversion=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.ProtocolVersion Any)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.serverselection.Protocol ICMP)
@ -56,15 +56,13 @@ serverselection_launch() {
avg_time_sum=$((avg_time_sum+avg_time))
done
else
[ "$port" = "" ] && return
[ -n "$interface" ] && device=$(ifstatus "$interface" | jsonfilter -e @.device) && device="-e $device" || device=""
[[ "$host" == *"."* ]] && proto="4" || proto="6"
[ -n "$interface" ] && device=$(ifstatus "$interface" | jsonfilter -e @.device) && device="-i $device" || device=""
while [ $i -lt "$cnt" ]; do
i=$((i+1))
res=$(nping $proto -c 1 --udp --dest-port "$port" --data-length 24 "$device" "$host" 2>&1)
res=$(udpechoclientd -c 1 -t $timeout --host "$host" --port "$port" --protocol "$proto" $device 2>&1)
ba=$(echo "$res" | grep "RCVD")
[ -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_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 }')

View file

@ -7,19 +7,22 @@
udpecho_launch() {
host=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.Host)
port=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.port 7)
timeout=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.Timeout 1000)
cnt=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.NumberOfRepetitions 1)
dsize=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.DataBlockSize 24)
dscp=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.DSCP 0)
interface=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.interface)
protocol=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.ProtocolVersion Any)
inter_time=$(uci_get_bbf_dmmap dmmap_diagnostics.udpechodiag.InterTransmissionTime 1000)
[ -n "$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
[ -n "$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="4"; fi
tos=$((dscp<<2))
inter_time=$((inter_time/1000))
[ "$inter_time" = "0" ] && inter_time="1"
timeout=$((timeout/1000))
[ "$timeout" = "0" ] && timeout="1"
[ "$host" = "" ] && return
[[ "$host" == *"."* ]] && proto="-4" || proto="-6"
[[ "$host" == *"."* ]] && proto="4" || proto="6"
micros=1000
success_count=0
avg_time_sum=0
@ -29,7 +32,7 @@ udpecho_launch() {
while [ $i -lt "$cnt" ]; do
i=$((i+1))
res=$(nping $proto -c 1 --tos $tos --udp --dest-port "$port" --data-length "$dsize" $device "$host" 2>&1)
res=$(udpechoclientd -c 1 -t $timeout --host "$host" --data-length "$dsize" --port "$port" --protocol "$proto" $device 2>&1)
ba=$(echo "$res" | grep "RCVD")
[ -z "$ba" ] && { $UCI_SET_BBF_DMMAP dmmap_diagnostics.udpechodiag.DiagnosticState=Error_CannotResolveHostName; $UCI_COMMIT_BBF_DMMAP; return; }
times=$(echo "$res" | grep "rtt")