Changes to forwarding for wifi calling.
1. Support multiple forwarding requests. Keep track of all
requests inside TetherController, and enable system
forwarding any time there is more than one active request.
2. Enable both IPv4 and IPv6 forwarding.
Bug: 19500693
Change-Id: Ic81bae7b399bc6ebf6a63de4bcd341885638dfa4
diff --git a/server/TetherController.h b/server/TetherController.h
index 1c32627..91ffb9c 100644
--- a/server/TetherController.h
+++ b/server/TetherController.h
@@ -18,6 +18,8 @@
#define _TETHER_CONTROLLER_H
#include <netinet/in.h>
+#include <set>
+#include <string>
#include "List.h"
@@ -32,16 +34,17 @@
NetAddressCollection *mDnsForwarders;
pid_t mDaemonPid;
int mDaemonFd;
+ std::set<std::string> mForwardingRequests;
public:
TetherController();
virtual ~TetherController();
- int setIpFwdEnabled(bool enable);
- bool getIpFwdEnabled();
+ bool enableForwarding(const char* requester);
+ bool disableForwarding(const char* requester);
+ size_t forwardingRequestCount();
int startTethering(int num_addrs, struct in_addr* addrs);
-
int stopTethering();
bool isTetheringStarted();
@@ -55,6 +58,7 @@
private:
int applyDnsInterfaces();
+ bool setIpFwdEnabled();
};
#endif