#!/usr/bin/env bash
# system/kernel -- show and re-apply the network tuning
set -o pipefail
SELF=$(readlink -f "${BASH_SOURCE[0]}")
NV_BASE=$(cd "$(dirname "$SELF")/../../.." && pwd)
export NV_BASE
# shellcheck source=/dev/null
. "$NV_BASE/lib/core/bootstrap.sh"

nv_require_root || exit 1
ui_header "$(t sys_m_kernel)"

cfg=/etc/sysctl.d/99-nhanhvps.conf
keys=(net.core.somaxconn net.ipv4.tcp_fastopen fs.file-max vm.swappiness vm.vfs_cache_pressure)

ui_section "$(t kernel_table)"
printf '  %-32s %-12s %s\n' "$(t col_param)" "$(t col_value)" "$(t kernel_target)"
for k in "${keys[@]}"; do
    cur=$(sysctl -n "$k" 2>/dev/null || echo '?')
    want=$(sed -n "s/^${k//./\\.}[[:space:]]*=[[:space:]]*//p" "$cfg" 2>/dev/null | head -n 1)
    printf '  %-32s %-12s %s\n' "$k" "$cur" "${want:--}"
done
ui_blank

if [ ! -f "$cfg" ]; then
    ui_warn "$(t kernel_no_file)"
    exit 0
fi
if ui_confirm "$(t kernel_apply_q)" y; then
    if sysctl -p "$cfg" >/dev/null 2>&1; then
        nv_trace kernel "applied $cfg"
        ui_ok "$(t kernel_applied)"
    else
        nv_fail 6112 "$(t kernel_failed)"
        exit 1
    fi
fi
exit 0
