Files
amnezia-client/service/server/router_mac.h
cd-amn c0cae0ff01 fix: outbound freedom for xray (#2479)
* fix: outbound freedom for xray on linux

* fix: outbound freedom for xray on macOS

* build: auto-generate pf rules based on the build type
2026-05-04 19:39:07 +08:00

52 lines
1.4 KiB
C++

#ifndef ROUTERMAC_H
#define ROUTERMAC_H
#include <QTimer>
#include <QString>
#include <QSettings>
#include <QHash>
#include <QDebug>
#include <QObject>
#include "../client/platforms/macos/daemon/dnsutilsmacos.h"
/**
* @brief The Router class - General class for handling ip routing
*/
class RouterMac : public QObject
{
Q_OBJECT
public:
static RouterMac& Instance();
struct Route {
QString dst;
QString gw;
};
bool routeAdd(const QString &ip, const QString &gw);
int routeAddList(const QString &gw, const QStringList &ips);
bool clearSavedRoutes();
bool routeDelete(const QString &ip, const QString &gw);
bool routeDeleteList(const QString &gw, const QStringList &ips);
bool flushDns();
bool createTun(const QString &dev, const QString &subnet);
bool deleteTun(const QString &dev);
bool updateResolvers(const QString& ifname, const QList<QHostAddress>& resolvers);
bool restoreResolvers();
bool routeAddXray(const QString& ifname, const QString& gateway);
bool routeDeleteXray(const QString& ifname, const QString& gateway);
public slots:
private:
RouterMac() {m_dnsUtil = new DnsUtilsMacos(this);}
RouterMac(RouterMac const &) = delete;
RouterMac& operator= (RouterMac const&) = delete;
QList<Route> m_addedRoutes;
DnsUtilsMacos *m_dnsUtil;
};
#endif // ROUTERMAC_H