netinterfaces.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. // netinterfaces.h :
  2. //
  3. #if !defined(AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_)
  4. #define AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_
  5. #include <vector>
  6. #include <QObject>
  7. #include <QList>
  8. #include <QQmlListProperty>
  9. #include <qqmlparserstatus.h>
  10. #include <gfa/gfanet.h>
  11. /////////////////////////////////////////////////////////////////////////////
  12. // netinterfaces.h - Declarations:
  13. class Emitter
  14. {
  15. public:
  16. virtual void emitError(const char *pszFormatStr, ...) const = 0;
  17. };
  18. /////////////////////////////////////////////////////////////////////////////
  19. #if 0
  20. class Nameservers : public QObject
  21. {
  22. Q_OBJECT
  23. public:
  24. explicit Nameservers(struct in_addr (&namesvr)[3], QObject *pParent = 0);
  25. virtual ~Nameservers(void);
  26. private:
  27. struct in_addr (&m_dnsSvr)[3];
  28. };
  29. #endif
  30. /////////////////////////////////////////////////////////////////////////////
  31. class IPv4Address : public QObject
  32. {
  33. Q_OBJECT
  34. Q_PROPERTY(QString address READ address WRITE set_address NOTIFY address_Changed)
  35. Q_PROPERTY(int b0 READ b0 WRITE set_b0 NOTIFY b0_Changed)
  36. Q_PROPERTY(int b1 READ b1 WRITE set_b1 NOTIFY b1_Changed)
  37. Q_PROPERTY(int b2 READ b2 WRITE set_b2 NOTIFY b2_Changed)
  38. Q_PROPERTY(int b3 READ b3 WRITE set_b3 NOTIFY b3_Changed)
  39. public:
  40. explicit IPv4Address(struct in_addr &addr, const Emitter &errHandler, QObject *pParent = 0);
  41. virtual ~IPv4Address(void);
  42. private:
  43. QString address(void) const;
  44. int b0(void) const;
  45. int b1(void) const;
  46. int b2(void) const;
  47. int b3(void) const;
  48. void set_address(const QString &addr);
  49. void set_b0(int b);
  50. void set_b1(int b);
  51. void set_b2(int b);
  52. void set_b3(int b);
  53. signals:
  54. void address_Changed(const QString&);
  55. void b0_Changed(int);
  56. void b1_Changed(int);
  57. void b2_Changed(int);
  58. void b3_Changed(int);
  59. private:
  60. struct in_addr &m_addr;
  61. const Emitter &m_errHandler;
  62. };
  63. /////////////////////////////////////////////////////////////////////////////
  64. class Interface : public QObject
  65. {
  66. Q_OBJECT
  67. Q_PROPERTY(QString name READ name)
  68. Q_PROPERTY(QString family READ family)
  69. Q_PROPERTY(QString method READ method)
  70. // static
  71. Q_PROPERTY(IPv4Address* ipAddress READ ipAddress)
  72. Q_PROPERTY(IPv4Address* netMask READ netMask)
  73. Q_PROPERTY(IPv4Address* gateway READ gateway)
  74. Q_PROPERTY(IPv4Address* bcastAddress READ bcastAddress)
  75. Q_PROPERTY(IPv4Address* ptpAddress READ ptpAddress)
  76. Q_PROPERTY(QQmlListProperty<IPv4Address> dnsServer READ dnsServer)
  77. #if 0
  78. Q_PROPERTY(QStringList dnsServers READ dnsServers)
  79. #endif
  80. // Q_PROPERTY(QString dns1 READ dns1)
  81. // Q_PROPERTY(QString dns2 READ dns2)
  82. // Q_PROPERTY(QString dns3 READ dns3)
  83. // dhcp
  84. public:
  85. explicit Interface(ITF_IFACE_BLOCK &ifb, const Emitter &errHandler, QObject *pParent = 0);
  86. virtual ~Interface(void);
  87. inline const ITF_IFACE_BLOCK & getIface(void) const {
  88. return m_ifb;}
  89. enum AddressFamily
  90. {
  91. AF_Unknown = -1,
  92. AF_Inet,
  93. AF_Inet6,
  94. AF_Ipx,
  95. AF_Can,
  96. AF_Invalid
  97. };
  98. Q_ENUMS(AddressFamily)
  99. private:
  100. QString name(void) const;
  101. QString family(void) const;
  102. QString method(void) const;
  103. IPv4Address* ipAddress(void);
  104. IPv4Address* netMask(void);
  105. IPv4Address* gateway(void);
  106. IPv4Address* bcastAddress(void);
  107. IPv4Address* ptpAddress(void);
  108. QQmlListProperty<IPv4Address> dnsServer(void);
  109. // QString dns1(void) const;
  110. // QString dns2(void) const;
  111. // QString dns3(void) const;
  112. #if 0
  113. QStringList dnsServers(void) const;
  114. #endif
  115. private:
  116. ITF_IFACE_BLOCK &m_ifb;
  117. IPv4Address m_ipAddr;
  118. IPv4Address m_netmask;
  119. IPv4Address m_gateway;
  120. IPv4Address m_bcastAddr;
  121. IPv4Address m_ptpAddr;
  122. QList<IPv4Address*> m_dnsList;
  123. const Emitter &m_errHandler;
  124. #if 0
  125. QStringList m_dnsList;
  126. Nameservers m_dnsSvr;
  127. #endif
  128. };
  129. /////////////////////////////////////////////////////////////////////////////
  130. class NetInterfaces : public QObject, public QQmlParserStatus, public Emitter
  131. {
  132. Q_OBJECT
  133. Q_INTERFACES(QQmlParserStatus)
  134. public:
  135. explicit NetInterfaces(QObject *pParent = 0);
  136. virtual ~NetInterfaces(void);
  137. public:
  138. Q_INVOKABLE void reset(void);
  139. Q_INVOKABLE bool initialize(void);
  140. Q_INVOKABLE bool save(void);
  141. Q_INVOKABLE bool save(QString path);
  142. Q_INVOKABLE QVariantList getInterface(const QString &itfName);
  143. virtual void classBegin();
  144. virtual void componentComplete();
  145. virtual void emitError(const char *pszFormatStr, ...) const;
  146. private:
  147. signals:
  148. void sigError(QString msg) const;
  149. private:
  150. ETC_NETWORK_INTERFACES m_eni;
  151. std::vector<Interface*> m_itfList;
  152. };
  153. /////////////////////////////////////////////////////////////////////////////
  154. #endif // !defined(AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_)