From ceef0d701a97af9bee45d7d89eb71b5529b8f71a Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 22 Apr 2026 12:42:52 +0300 Subject: [PATCH] Suppress route command output to console --- src/tun_route.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/tun_route.c b/src/tun_route.c index 61dd4bf8..52989f06 100644 --- a/src/tun_route.c +++ b/src/tun_route.c @@ -162,7 +162,7 @@ static int ip_route_cmd(const char *ifname, uint32_t network, uint8_t prefix_len addr.s_addr = network; char cmdline[256]; - snprintf(cmdline, sizeof(cmdline), "ip route %s %s/%d dev %s 2>/dev/null", + snprintf(cmdline, sizeof(cmdline), "ip route %s %s/%d dev %s >/dev/null 2>&1", cmd, ip_to_str(&addr, AF_INET).str, prefix_len, ifname); int ret = system(cmdline); @@ -210,15 +210,15 @@ int tun_route_del(uint32_t ifindex, const char *ifname, uint32_t network, uint8_ int tun_route_flush(const char *ifname) { // Use ip route flush as primary method - works reliably char cmdline[256]; - snprintf(cmdline, sizeof(cmdline), "ip route flush dev %s 2>/dev/null", ifname); + snprintf(cmdline, sizeof(cmdline), "ip route flush dev %s >/dev/null 2>&1", ifname); int ret = system(cmdline); if (ret != 0) { // Fallback: try to list and delete routes one by one DEBUG_WARN(DEBUG_CATEGORY_TUN, "ip route flush failed, trying alternative method"); - snprintf(cmdline, sizeof(cmdline), - "ip route show dev %s 2>/dev/null | while read r; do ip route del $r dev %s 2>/dev/null; done", - ifname, ifname); +snprintf(cmdline, sizeof(cmdline), + "ip route show dev %s 2>/dev/null | while read r; do ip route del $r dev %s >/dev/null 2>&1; done", + ifname, ifname); ret = system(cmdline); } @@ -457,7 +457,7 @@ static int route_cmd(const char *ifname, uint32_t network, uint8_t prefix_len, c addr.s_addr = htonl(network); char cmdline[256]; - snprintf(cmdline, sizeof(cmdline), "route %s -net %s/%d -interface %s 2>/dev/null", + snprintf(cmdline, sizeof(cmdline), "route %s -net %s/%d -interface %s >/dev/null 2>&1", cmd, ip_to_str(&addr, AF_INET).str, prefix_len, ifname); int ret = system(cmdline); @@ -503,7 +503,7 @@ int tun_route_flush(const char *ifname) { char cmdline[256]; snprintf(cmdline, sizeof(cmdline), "route -n show -interface %s 2>/dev/null | grep -v '^[[:space:]]*#' | " - "awk '/^[0-9]+\\./{print $1}' | while read r; do route delete -net $r 2>/dev/null; done", + "awk '/^[0-9]+\\./{print $1}' | while read r; do route delete -net $r >/dev/null 2>&1; done", ifname); int ret = system(cmdline);