OSDN Git Service

release-request-7bfcab52-d1c0-4256-9d6b-5b5092bc78ca-for-git_oc-mr1-release-4133428...
[android-x86/system-connectivity-wificond.git] / ap_interface_impl.h
index 5e8eae6..69561b0 100644 (file)
 #include <wifi_system/hostapd_manager.h>
 #include <wifi_system/interface_tool.h>
 
+#include "wificond/net/netlink_manager.h"
+
 #include "android/net/wifi/IApInterface.h"
 
 namespace android {
 namespace wificond {
 
 class ApInterfaceBinder;
+class NetlinkUtils;
 
 // Holds the guts of how we control network interfaces capable of exposing an AP
 // via hostapd.  Because remote processes may hold on to the corresponding
@@ -39,6 +42,7 @@ class ApInterfaceImpl {
  public:
   ApInterfaceImpl(const std::string& interface_name,
                   uint32_t interface_index,
+                  NetlinkUtils* netlink_utils,
                   wifi_system::InterfaceTool* if_tool,
                   wifi_system::HostapdManager* hostapd_manager);
   ~ApInterfaceImpl();
@@ -55,14 +59,23 @@ class ApInterfaceImpl {
       wifi_system::HostapdManager::EncryptionType encryption_type,
       const std::vector<uint8_t>& passphrase);
   std::string GetInterfaceName() { return interface_name_; }
+  int GetNumberOfAssociatedStations() const;
+  void Dump(std::stringstream* ss) const;
 
  private:
   const std::string interface_name_;
   const uint32_t interface_index_;
+  NetlinkUtils* const netlink_utils_;
   wifi_system::InterfaceTool* const if_tool_;
   wifi_system::HostapdManager* const hostapd_manager_;
   const android::sp<ApInterfaceBinder> binder_;
 
+  // Number of associated stations.
+  int number_of_associated_stations_;
+
+  void OnStationEvent(StationEvent event,
+                      const std::vector<uint8_t>& mac_address);
+
   DISALLOW_COPY_AND_ASSIGN(ApInterfaceImpl);
 };