ndgui/NetworkDiscovery
|
00001 00016 #ifndef NETWORKMANAGER_H_ 00017 #define NETWORKMANAGER_H_ 00018 00019 #include <arpa/inet.h> 00020 #include <net/if.h> 00021 #include <netlink/netlink.h> 00022 #include <netlink/netlink-kernel.h> 00023 #include <netlink/route/addr.h> 00024 #include <netlink/route/rtnl.h> 00025 #include <netlink/route/route.h> 00026 #include <netlink/route/link.h> 00027 00028 #include <errno.h> 00029 #include <QtCore> 00030 #include <QNetworkAddressEntry> 00031 00032 class NetworkManager: public QObject { 00033 Q_OBJECT 00034 00035 public: 00036 NetworkManager(); 00037 virtual ~NetworkManager(); 00038 00039 int replaceDefaultRoute(QString ifname, QString gateway, int metric, 00040 int af); 00041 00042 int bringInterfaceUP(QString ifname); 00043 int bringInterfaceDown(QString ifname); 00044 00045 int ip4_setManualConfiguration(QString ifname, QString ipAddress, QString netmask, 00046 QString broadcast, QString gateway, int metric, int af, QString pathToResolvConf, QList<QString> nameServer); 00047 int ip4_configureInterface(QString ifname, QString ipAddress, 00048 QString broadcast, QString netmask, int af); 00049 00050 int ip6_addRoute(const char *iface, 00051 const struct in6_addr *ip6_dest, int ip6_prefix, 00052 const struct in6_addr *ip6_gateway, int metric, int mss); 00053 int ip6_addAddress(struct ip6_addr* ip6Addr, const char *iface); 00054 00055 int writeResolvConf(QString path, QString ifname, QList<QString> nameServer); 00056 00057 private: 00058 QString _tag; 00059 int bringInterfaceUpDown(QString ifname, bool up); 00060 int ip4_netmaskToPrefix(QString ipAddr, QString netmask); 00061 00062 int sync_address(const char *iface, int ifindex, int family, 00063 struct rtnl_addr *addr); 00064 00065 struct rtnl_route* create_route (int iface_idx, int mss); 00066 struct nl_addr* ip6AddrToNlAddr (const struct ip6_addr* ip6Addr); 00067 int nlAddrToRtnlAddr (const struct ip6_addr* ip6Addr, struct rtnl_addr* addr); 00068 struct rtnl_addr* ip6AddrToRtnlAddr(struct ip6_addr* ip6Addr); 00069 00070 00071 }; 00072 00073 #endif /* NETWORKMANAGER_H_ */