// netinterfaces.h : // #if !defined(AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_) #define AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_ #include #include #include #include #include #include ///////////////////////////////////////////////////////////////////////////// // netinterfaces.h - Declarations: class Emitter { public: virtual void emitError(const char *pszFormatStr, ...) const = 0; }; ///////////////////////////////////////////////////////////////////////////// class IPv4Address : public QObject { Q_OBJECT Q_PROPERTY(QString address READ address WRITE set_address NOTIFY address_Changed) Q_PROPERTY(int b0 READ b0 WRITE set_b0 NOTIFY b0_Changed) Q_PROPERTY(int b1 READ b1 WRITE set_b1 NOTIFY b1_Changed) Q_PROPERTY(int b2 READ b2 WRITE set_b2 NOTIFY b2_Changed) Q_PROPERTY(int b3 READ b3 WRITE set_b3 NOTIFY b3_Changed) public: explicit IPv4Address(struct in_addr &addr, const Emitter &errHandler, QObject *pParent = 0); virtual ~IPv4Address(void); private: QString address(void) const; int b0(void) const; int b1(void) const; int b2(void) const; int b3(void) const; void set_address(const QString &addr); void set_b0(int b); void set_b1(int b); void set_b2(int b); void set_b3(int b); signals: void address_Changed(const QString&); void b0_Changed(int); void b1_Changed(int); void b2_Changed(int); void b3_Changed(int); private: struct in_addr &m_addr; const Emitter &m_errHandler; }; ///////////////////////////////////////////////////////////////////////////// class Interface : public QObject { Q_OBJECT Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QString family READ family) Q_PROPERTY(int af READ af) Q_PROPERTY(QString method READ method) Q_PROPERTY(int itfMethod READ itfMethod) // static Q_PROPERTY(IPv4Address* ipAddress READ ipAddress CONSTANT) Q_PROPERTY(IPv4Address* netMask READ netMask CONSTANT) Q_PROPERTY(IPv4Address* gateway READ gateway CONSTANT) Q_PROPERTY(IPv4Address* bcastAddress READ bcastAddress CONSTANT) Q_PROPERTY(IPv4Address* ptpAddress READ ptpAddress CONSTANT) Q_PROPERTY(QQmlListProperty dnsServer READ dnsServer CONSTANT) // dhcp public: explicit Interface(ITF_IFACE_BLOCK &ifb, const Emitter &errHandler, QObject *pParent = 0); virtual ~Interface(void); inline const ITF_IFACE_BLOCK & getIface(void) const { return m_ifb;} enum AddressFamily { AF_Unknown = -1, AF_Inet, AF_Inet6, AF_Ipx, AF_Can, AF_Invalid }; Q_ENUMS(AddressFamily) enum ItfMethod { IM_Unknown = -1, IM_Static, IM_Dhcp, IM_Manual, IM_BootP, IM_Tunnel, IM_Ppp, IM_WvDial, IM_IpV4ll, IM_Loopback, IM_Auto, IM_Invalid }; Q_ENUMS(ItfMethod) private: QString name(void) const; QString family(void) const; int af(void) const; QString method(void) const; int itfMethod(void) const; IPv4Address* ipAddress(void); IPv4Address* netMask(void); IPv4Address* gateway(void); IPv4Address* bcastAddress(void); IPv4Address* ptpAddress(void); QQmlListProperty dnsServer(void); private: ITF_IFACE_BLOCK &m_ifb; IPv4Address m_ipAddr; IPv4Address m_netmask; IPv4Address m_gateway; IPv4Address m_bcastAddr; IPv4Address m_ptpAddr; QList m_dnsList; const Emitter &m_errHandler; }; ///////////////////////////////////////////////////////////////////////////// class NetInterfaces : public QObject, public QQmlParserStatus, public Emitter { Q_OBJECT Q_INTERFACES(QQmlParserStatus) Q_PROPERTY(QQmlListProperty interfaces READ interfaces NOTIFY interfaces_Changed) Q_PROPERTY(QQmlListProperty filteredInterfaces READ filteredInterfaces NOTIFY filteredInterfaces_Changed) Q_PROPERTY(QString itfFilterName READ itfFilterName WRITE set_itfFilterName NOTIFY itfFilterName_Changed) Q_PROPERTY(int itfFilterAF READ itfFilterAF WRITE set_itfFilterAF NOTIFY itfFilterAF_Changed) Q_PROPERTY(int itfFilterMethod READ itfFilterMethod WRITE set_itfFilterMethod NOTIFY itfFilterMethod_Changed) public: explicit NetInterfaces(QObject *pParent = 0); virtual ~NetInterfaces(void); public: Q_INVOKABLE void reset(void); Q_INVOKABLE bool initialize(void); Q_INVOKABLE bool save(void); Q_INVOKABLE bool saveAs(const QString &path); Q_INVOKABLE QVariantList getInterface(const QString &itfName); Q_INVOKABLE QVariant newInterface(QString name, int af, int method, QString cfg); virtual void classBegin(); virtual void componentComplete(); virtual void emitError(const char *pszFormatStr, ...) const; signals: void interfaces_Changed(void); void filteredInterfaces_Changed(void); void itfFilterName_Changed(const QString &val); void itfFilterAF_Changed(int af); void itfFilterMethod_Changed(int method); private: QQmlListProperty interfaces(void); QQmlListProperty filteredInterfaces(void); const QString& itfFilterName(void) const; void set_itfFilterName(const QString &val); int itfFilterAF(void) const; void set_itfFilterAF(int nval); int itfFilterMethod(void) const; void set_itfFilterMethod(int method); signals: void sigError(QString msg) const; private: ETC_NETWORK_INTERFACES m_eni; QList m_interfaces; QList m_filteredInterfaces; QString m_itfFilterName; int m_itfFilterAF; int m_itfFilterMethod; }; ///////////////////////////////////////////////////////////////////////////// #endif // !defined(AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_)