netinterfaces.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  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. class IPv4Address : public QObject
  20. {
  21. Q_OBJECT
  22. Q_PROPERTY(QString address READ address WRITE set_address NOTIFY address_Changed)
  23. Q_PROPERTY(int b0 READ b0 WRITE set_b0 NOTIFY b0_Changed)
  24. Q_PROPERTY(int b1 READ b1 WRITE set_b1 NOTIFY b1_Changed)
  25. Q_PROPERTY(int b2 READ b2 WRITE set_b2 NOTIFY b2_Changed)
  26. Q_PROPERTY(int b3 READ b3 WRITE set_b3 NOTIFY b3_Changed)
  27. public:
  28. explicit IPv4Address(struct in_addr &addr, const Emitter &errHandler, QObject *pParent = 0);
  29. virtual ~IPv4Address(void);
  30. private:
  31. QString address(void) const;
  32. int b0(void) const;
  33. int b1(void) const;
  34. int b2(void) const;
  35. int b3(void) const;
  36. void set_address(const QString &addr);
  37. void set_b0(int b);
  38. void set_b1(int b);
  39. void set_b2(int b);
  40. void set_b3(int b);
  41. signals:
  42. void address_Changed(const QString&);
  43. void b0_Changed(int);
  44. void b1_Changed(int);
  45. void b2_Changed(int);
  46. void b3_Changed(int);
  47. private:
  48. struct in_addr &m_addr;
  49. const Emitter &m_errHandler;
  50. };
  51. /////////////////////////////////////////////////////////////////////////////
  52. class Interface : public QObject
  53. {
  54. Q_OBJECT
  55. Q_PROPERTY(QString name READ name CONSTANT)
  56. Q_PROPERTY(QString family READ family)
  57. Q_PROPERTY(int af READ af)
  58. Q_PROPERTY(QString method READ method)
  59. Q_PROPERTY(int itfMethod READ itfMethod)
  60. // static
  61. Q_PROPERTY(IPv4Address* ipAddress READ ipAddress CONSTANT)
  62. Q_PROPERTY(IPv4Address* netMask READ netMask CONSTANT)
  63. Q_PROPERTY(IPv4Address* gateway READ gateway CONSTANT)
  64. Q_PROPERTY(IPv4Address* bcastAddress READ bcastAddress CONSTANT)
  65. Q_PROPERTY(IPv4Address* ptpAddress READ ptpAddress CONSTANT)
  66. Q_PROPERTY(QQmlListProperty<IPv4Address> dnsServer READ dnsServer CONSTANT)
  67. // dhcp
  68. public:
  69. explicit Interface(ITF_IFACE_BLOCK &ifb, const Emitter &errHandler, QObject *pParent = 0);
  70. virtual ~Interface(void);
  71. inline const ITF_IFACE_BLOCK & getIface(void) const {
  72. return m_ifb;}
  73. enum AddressFamily
  74. {
  75. AF_Unknown = -1,
  76. AF_Inet,
  77. AF_Inet6,
  78. AF_Ipx,
  79. AF_Can,
  80. AF_Invalid
  81. };
  82. Q_ENUMS(AddressFamily)
  83. enum ItfMethod
  84. {
  85. IM_Unknown = -1,
  86. IM_Static,
  87. IM_Dhcp,
  88. IM_Manual,
  89. IM_BootP,
  90. IM_Tunnel,
  91. IM_Ppp,
  92. IM_WvDial,
  93. IM_IpV4ll,
  94. IM_Loopback,
  95. IM_Auto,
  96. IM_Invalid
  97. };
  98. Q_ENUMS(ItfMethod)
  99. private:
  100. QString name(void) const;
  101. QString family(void) const;
  102. int af(void) const;
  103. QString method(void) const;
  104. int itfMethod(void) const;
  105. IPv4Address* ipAddress(void);
  106. IPv4Address* netMask(void);
  107. IPv4Address* gateway(void);
  108. IPv4Address* bcastAddress(void);
  109. IPv4Address* ptpAddress(void);
  110. QQmlListProperty<IPv4Address> dnsServer(void);
  111. private:
  112. ITF_IFACE_BLOCK &m_ifb;
  113. IPv4Address m_ipAddr;
  114. IPv4Address m_netmask;
  115. IPv4Address m_gateway;
  116. IPv4Address m_bcastAddr;
  117. IPv4Address m_ptpAddr;
  118. QList<IPv4Address*> m_dnsList;
  119. const Emitter &m_errHandler;
  120. };
  121. /////////////////////////////////////////////////////////////////////////////
  122. class NetInterfaces : public QObject, public QQmlParserStatus, public Emitter
  123. {
  124. Q_OBJECT
  125. Q_INTERFACES(QQmlParserStatus)
  126. Q_PROPERTY(QQmlListProperty<Interface> interfaces READ interfaces NOTIFY interfaces_Changed)
  127. Q_PROPERTY(QQmlListProperty<Interface> filteredInterfaces READ filteredInterfaces NOTIFY filteredInterfaces_Changed)
  128. Q_PROPERTY(QString itfFilterName READ itfFilterName WRITE set_itfFilterName NOTIFY itfFilterName_Changed)
  129. Q_PROPERTY(int itfFilterAF READ itfFilterAF WRITE set_itfFilterAF NOTIFY itfFilterAF_Changed)
  130. Q_PROPERTY(int itfFilterMethod READ itfFilterMethod WRITE set_itfFilterMethod NOTIFY itfFilterMethod_Changed)
  131. public:
  132. explicit NetInterfaces(QObject *pParent = 0);
  133. virtual ~NetInterfaces(void);
  134. public:
  135. Q_INVOKABLE void reset(void);
  136. Q_INVOKABLE bool initialize(void);
  137. Q_INVOKABLE bool save(void);
  138. Q_INVOKABLE bool saveAs(const QString &path);
  139. Q_INVOKABLE QVariantList getInterface(const QString &itfName);
  140. Q_INVOKABLE QVariant newInterface(QString name, int af, int method, QString cfg);
  141. virtual void classBegin();
  142. virtual void componentComplete();
  143. virtual void emitError(const char *pszFormatStr, ...) const;
  144. signals:
  145. void interfaces_Changed(void);
  146. void filteredInterfaces_Changed(void);
  147. void itfFilterName_Changed(const QString &val);
  148. void itfFilterAF_Changed(int af);
  149. void itfFilterMethod_Changed(int method);
  150. private:
  151. QQmlListProperty<Interface> interfaces(void);
  152. QQmlListProperty<Interface> filteredInterfaces(void);
  153. const QString& itfFilterName(void) const;
  154. void set_itfFilterName(const QString &val);
  155. int itfFilterAF(void) const;
  156. void set_itfFilterAF(int nval);
  157. int itfFilterMethod(void) const;
  158. void set_itfFilterMethod(int method);
  159. signals:
  160. void sigError(QString msg) const;
  161. private:
  162. ETC_NETWORK_INTERFACES m_eni;
  163. QList<Interface*> m_interfaces;
  164. QList<Interface*> m_filteredInterfaces;
  165. QString m_itfFilterName;
  166. int m_itfFilterAF;
  167. int m_itfFilterMethod;
  168. };
  169. /////////////////////////////////////////////////////////////////////////////
  170. #endif // !defined(AGD_NETINTERFACES_H__54DE87BE_1F3C_4914_A062_9CCFCB496122__INCLUDED_)