Browse Source

Suppress route command output to console

congestion
Evgeny 5 months ago
parent
commit
ceef0d701a
  1. 10
      src/tun_route.c

10
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,14 +210,14 @@ 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",
"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);

Loading…
Cancel
Save