mwan3: replace $(cat ..) with readfile
authorEtienne Champetier <[email protected]>
Fri, 27 Jun 2025 23:18:51 +0000 (19:18 -0400)
committerFlorian Eckert <[email protected]>
Fri, 1 Aug 2025 11:03:01 +0000 (13:03 +0200)
Remove a fork+exec

Signed-off-by: Etienne Champetier <[email protected]>
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/common.sh
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/libexec/rpcd/mwan3
net/mwan3/files/usr/sbin/mwan3track

index 6eac6309aa7c5c33f953f7eaa59e6a84c7c16ae8..f2bb67ca0e0b5da5a5d2e3a032b755275812b7c8 100644 (file)
@@ -45,7 +45,7 @@ config_get_bool enabled $INTERFACE 'enabled' '0'
 
 config_get initial_state $INTERFACE initial_state "online"
 if [ "$initial_state" = "offline" ]; then
-       status=$(cat $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS 2>/dev/null || echo unknown)
+       readfile status $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS 2>/dev/null || status="unknown"
        [ "$status" = "online" ] || status=offline
 else
        status=online
index d3597aaf8ccc900c9b5d568b57a0e44e08bc0679..caf546e66512d5383d9f460f8951d6fa377f627a 100644 (file)
@@ -141,7 +141,7 @@ mwan3_init()
 
        # mwan3's MARKing mask (at least 3 bits should be set)
        if [ -e "${MWAN3_STATUS_DIR}/mmx_mask" ]; then
-               MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask")
+               readfile MMX_MASK "${MWAN3_STATUS_DIR}/mmx_mask"
                MWAN3_INTERFACE_MAX=$(uci_get_state mwan3 globals iface_max)
        else
                config_get MMX_MASK globals mmx_mask '0x3F00'
@@ -208,14 +208,15 @@ mwan3_count_one_bits()
 }
 
 get_uptime() {
-       local uptime=$(cat /proc/uptime)
+       local uptime
+       readfile uptime /proc/uptime
        echo "${uptime%%.*}"
 }
 
 get_online_time() {
        local time_n time_u iface
        iface="$1"
-       time_u="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/ONLINE" 2>/dev/null)"
+       readfile time_u "$MWAN3TRACK_STATUS_DIR/${iface}/ONLINE" 2>/dev/null
        [ -z "${time_u}" ] || [ "${time_u}" = "0" ] || {
                time_n="$(get_uptime)"
                echo $((time_n-time_u))
index e639002d915ed1d392d0428a180149dab509e430..c270b8a0e139b1f517ec4d3b9ba6c0452a4d9811 100644 (file)
@@ -996,7 +996,7 @@ mwan3_interface_hotplug_shutdown()
        interface="$1"
        ifdown="$2"
        [ -f $MWAN3TRACK_STATUS_DIR/$interface/STATUS ] && {
-               status=$(cat $MWAN3TRACK_STATUS_DIR/$interface/STATUS)
+               readfile status $MWAN3TRACK_STATUS_DIR/$interface/STATUS
        }
 
        [ "$status" != "online" ] && [ "$ifdown" != 1 ] && return
@@ -1076,8 +1076,9 @@ mwan3_set_iface_hotplug_state() {
 
 mwan3_get_iface_hotplug_state() {
        local iface=$1
-
-       cat "$MWAN3_STATUS_DIR/iface_state/$iface" 2>/dev/null || echo "offline"
+       local state=offline
+       readfile state "$MWAN3_STATUS_DIR/iface_state/$iface"
+       echo "$state"
 }
 
 mwan3_report_iface_status()
@@ -1101,7 +1102,7 @@ mwan3_report_iface_status()
        fi
 
        if [ -f "$MWAN3TRACK_STATUS_DIR/${1}/STATUS" ]; then
-               status="$(cat "$MWAN3TRACK_STATUS_DIR/${1}/STATUS")"
+               readfile status "$MWAN3TRACK_STATUS_DIR/${1}/STATUS"
        else
                status="unknown"
        fi
index 210e79a6d8df53d42d244a71216d6a9feb75c240..30c25501606646e3bd001fad44af327ef517dae4 100755 (executable)
@@ -68,7 +68,7 @@ report_policies_v6() {
 get_age() {
        local time_p time_u
        iface="$1"
-       time_p="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TIME")"
+       readfile time_p "$MWAN3TRACK_STATUS_DIR/${iface}/TIME"
        [ -z "${time_p}" ] || {
                time_n="$(get_uptime)"
                echo $((time_n-time_p))
@@ -78,7 +78,7 @@ get_age() {
 get_offline_time() {
        local time_n time_d iface
        iface="$1"
-       time_d="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/OFFLINE")"
+       readfile time_d "$MWAN3TRACK_STATUS_DIR/${iface}/OFFLINE"
        [ -z "${time_d}" ] || [ "${time_d}" = "0" ] || {
                time_n="$(get_uptime)"
                echo $((time_n-time_d))
@@ -92,7 +92,7 @@ get_mwan3_status() {
        local age=0
        local online=0
        local offline=0
-       local enabled time_p time_n time_u time_d status track_status up uptime
+       local enabled time_p time_n time_u time_d status track_status up uptime temp
 
        if [ "${iface}" != "${iface_select}" ] && [ "${iface_select}" != "" ]; then
                return
@@ -109,7 +109,7 @@ get_mwan3_status() {
        if [ -f "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS" ]; then
                network_get_uptime uptime "$iface"
                network_is_up "$iface" && up="1"
-               status="$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS")"
+               readfile status "$MWAN3TRACK_STATUS_DIR/${iface}/STATUS"
        else
                uptime=0
                up=0
@@ -121,9 +121,12 @@ get_mwan3_status() {
        json_add_int online "${online}"
        json_add_int offline "${offline}"
        json_add_int uptime "${uptime}"
-       json_add_int "score" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/SCORE")"
-       json_add_int "lost" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/LOST")"
-       json_add_int "turn" "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/TURN")"
+       readfile temp "$MWAN3TRACK_STATUS_DIR/${iface}/SCORE"
+       json_add_int "score" "$temp"
+       readfile temp "$MWAN3TRACK_STATUS_DIR/${iface}/LOST"
+       json_add_int "lost" "$temp"
+       readfile temp "$MWAN3TRACK_STATUS_DIR/${iface}/TURN"
+       json_add_int "turn" "$temp"
        json_add_string "status" "${status}"
        json_add_boolean "enabled" "${enabled}"
        json_add_boolean "running" "${running}"
@@ -136,9 +139,12 @@ get_mwan3_status() {
                track="${file#*/TRACK_}"
                json_add_object
                json_add_string ip "${track}"
-               json_add_string status "$(cat "${file}")"
-               json_add_int latency "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/LATENCY_${track}")"
-               json_add_int packetloss "$(cat "$MWAN3TRACK_STATUS_DIR/${iface}/LOSS_${track}")"
+               readfile temp "${file}"
+               json_add_string status "$temp"
+               readfile temp "$MWAN3TRACK_STATUS_DIR/${iface}/LATENCY_${track}"
+               json_add_int latency "$temp"
+               readfile temp "$MWAN3TRACK_STATUS_DIR/${iface}/LOSS_${track}"
+               json_add_int packetloss "$temp"
                json_close_object
        done
        json_close_array
index e30ad5fedda19f5f293edf02aaecfe1a90526d85..9365e1b237063d28419302e15a298953b75dab2e 100755 (executable)
@@ -111,7 +111,8 @@ validate_wrap() {
 }
 
 disconnected() {
-       local status="$(cat ${MWAN3TRACK_STATUS_DIR}/${INTERFACE}/STATUS)"
+       local status
+       readfile status ${MWAN3TRACK_STATUS_DIR}/${INTERFACE}/STATUS
 
        STATUS='offline'
        echo "offline" > $MWAN3TRACK_STATUS_DIR/$INTERFACE/STATUS