#define _COMMANDLISTENER_H__
#include <sysutils/FrameworkListener.h>
+#include "utils/RWLock.h"
#include "NetdCommand.h"
+#include "NetdConstants.h"
#include "NetworkController.h"
#include "TetherController.h"
#include "NatController.h"
#include "IdletimerController.h"
#include "InterfaceController.h"
#include "ResolverController.h"
-#include "SecondaryTableController.h"
#include "FirewallController.h"
#include "ClatdController.h"
-
-class PermissionsController;
-class RouteController;
+#include "StrictController.h"
class CommandListener : public FrameworkListener {
- static TetherController *sTetherCtrl;
- static NatController *sNatCtrl;
- static PppController *sPppCtrl;
- static SoftapController *sSoftapCtrl;
- static BandwidthController *sBandwidthCtrl;
- static IdletimerController *sIdletimerCtrl;
- static InterfaceController *sInterfaceCtrl;
- static ResolverController *sResolverCtrl;
- static SecondaryTableController *sSecondaryTableCtrl;
- static FirewallController *sFirewallCtrl;
- static ClatdController *sClatdCtrl;
- static RouteController* sRouteController;
-
public:
- static NetworkController *sNetCtrl;
- static PermissionsController* sPermissionsController;
-
CommandListener();
virtual ~CommandListener() {}
private:
+ void registerLockingCmd(FrameworkCommand *cmd, android::RWLock& lock);
+ void registerLockingCmd(FrameworkCommand *cmd) {
+ registerLockingCmd(cmd, android::net::gBigNetdLock);
+ }
class SoftapCmd : public NetdCommand {
public:
ResolverCmd();
virtual ~ResolverCmd() {}
int runCommand(SocketClient *c, int argc, char ** argv);
+
+ private:
+ bool parseAndExecuteSetNetDns(int netId, int argc, const char** argv);
};
class FirewallCmd: public NetdCommand {
protected:
int sendGenericOkFail(SocketClient *cli, int cond);
static FirewallRule parseRule(const char* arg);
+ static FirewallType parseFirewallType(const char* arg);
+ static ChildChain parseChildChain(const char* arg);
};
class ClatdCmd : public NetdCommand {
int runCommand(SocketClient *c, int argc, char ** argv);
};
+ class StrictCmd : public NetdCommand {
+ public:
+ StrictCmd();
+ virtual ~StrictCmd() {}
+ int runCommand(SocketClient *c, int argc, char ** argv);
+ protected:
+ int sendGenericOkFail(SocketClient *cli, int cond);
+ static StrictPenalty parsePenalty(const char* arg);
+ };
+
class NetworkCommand : public NetdCommand {
public:
NetworkCommand();
int runCommand(SocketClient* client, int argc, char** argv);
private:
int syntaxError(SocketClient* cli, const char* message);
- int paramError(SocketClient* cli, const char* message);
- int operationError(SocketClient* cli, const char* message);
+ int operationError(SocketClient* cli, const char* message, int ret);
int success(SocketClient* cli);
};
};