fix: resolve flush error and fix comment

This commit is contained in:
NickVs2015
2026-04-10 23:35:11 +03:00
parent 9166e17a23
commit 89b94d2588
3 changed files with 14 additions and 9 deletions

View File

@@ -1,3 +1,6 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "dnsutilslinux.h"
@@ -115,16 +118,10 @@ bool DnsUtilsLinux::updateResolvers(const QString& ifname,
m_stateFilePath = QStringLiteral("/run/amnezia-dns-%1").arg(ifname);
writeResolvConf(resolvers);
QProcess::startDetached("resolvectl", {"flush-caches"});
return true;
}
bool DnsUtilsLinux::restoreResolvers() {
logger.debug() << "restoreResolvers: original="
<< (m_resolvConfOriginal.isEmpty() ? "(empty)"
: m_resolvConfOriginal);
if (m_resolvConfOriginal.isEmpty()) {
QStringList candidates;

View File

@@ -1,3 +1,6 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef DNSUTILSLINUX_H
#define DNSUTILSLINUX_H

View File

@@ -41,14 +41,15 @@ bool RouterLinux::routeAdd(const QString &ipWithSubnet, const QString &gw, const
struct rtentry route;
memset(&route, 0, sizeof( route ));
// set gateway
((struct sockaddr_in *)&route.rt_gateway)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_gateway)->sin_addr.s_addr = inet_addr(gw.toStdString().c_str());
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
// set host rejecting
((struct sockaddr_in *)&route.rt_dst)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_dst)->sin_addr.s_addr = inet_addr(ip.toStdString().c_str());
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
// set mask
((struct sockaddr_in *)&route.rt_genmask)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_genmask)->sin_addr.s_addr = inet_addr(mask.toStdString().c_str());
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
@@ -115,19 +116,23 @@ bool RouterLinux::routeDelete(const QString &ipWithSubnet, const QString &gw, co
struct rtentry route;
memset(&route, 0, sizeof( route ));
// set gateway
((struct sockaddr_in *)&route.rt_gateway)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_gateway)->sin_addr.s_addr = inet_addr(gw.toStdString().c_str());
((struct sockaddr_in *)&route.rt_gateway)->sin_port = 0;
// set host rejecting
((struct sockaddr_in *)&route.rt_dst)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_dst)->sin_addr.s_addr = inet_addr(ip.toStdString().c_str());
((struct sockaddr_in *)&route.rt_dst)->sin_port = 0;
// set mask
((struct sockaddr_in *)&route.rt_genmask)->sin_family = AF_INET;
((struct sockaddr_in *)&route.rt_genmask)->sin_addr.s_addr = inet_addr(mask.toStdString().c_str());
((struct sockaddr_in *)&route.rt_genmask)->sin_port = 0;
route.rt_flags = RTF_UP | RTF_GATEWAY;
//route.rt_dev = "ens33";
route.rt_metric = 0;
if (ioctl(sock, SIOCDELRT, &route) < 0)
@@ -161,7 +166,7 @@ bool RouterLinux::isServiceActive(const QString &serviceName) {
bool RouterLinux::flushDns()
{
//check what the dns manager use
if (isServiceActive("nscd.service")) {
qDebug() << "Flushing nscd cache";
QProcess::startDetached("nscd", { "--invalidate=hosts" });