1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org/* 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Copyright (C) 2008 The Android Open Source Project 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Licensed under the Apache License, Version 2.0 (the "License"); 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * you may not use this file except in compliance with the License. 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * You may obtain a copy of the License at 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * http://www.apache.org/licenses/LICENSE-2.0 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * Unless required by applicable law or agreed to in writing, software 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * distributed under the License is distributed on an "AS IS" BASIS, 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * See the License for the specific language governing permissions and 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org * limitations under the License. 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org */ 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef _COMMANDLISTENER_H__ 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define _COMMANDLISTENER_H__ 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include <sysutils/FrameworkListener.h> 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "NetdCommand.h" 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "NetworkController.h" 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "TetherController.h" 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "NatController.h" 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "PppController.h" 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "SoftapController.h" 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "BandwidthController.h" 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "IdletimerController.h" 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "InterfaceController.h" 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "ResolverController.h" 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "FirewallController.h" 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "ClatdController.h" 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass CommandListener : public FrameworkListener { 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static TetherController *sTetherCtrl; 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static NatController *sNatCtrl; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static PppController *sPppCtrl; 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static SoftapController *sSoftapCtrl; 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static BandwidthController *sBandwidthCtrl; 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static IdletimerController *sIdletimerCtrl; 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static InterfaceController *sInterfaceCtrl; 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static ResolverController *sResolverCtrl; 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static FirewallController *sFirewallCtrl; 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static ClatdController *sClatdCtrl; 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgpublic: 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static NetworkController *sNetCtrl; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org CommandListener(); 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~CommandListener() {} 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgprivate: 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class SoftapCmd : public NetdCommand { 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SoftapCmd(); 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~SoftapCmd() {} 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 61f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 62f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class InterfaceCmd : public NetdCommand { 63f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 64f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org InterfaceCmd(); 65f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~InterfaceCmd() {} 66f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 67f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 68f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 69f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class IpFwdCmd : public NetdCommand { 70f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 71f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org IpFwdCmd(); 72f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~IpFwdCmd() {} 73f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 74f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 75f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 76f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class TetherCmd : public NetdCommand { 77f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 78f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org TetherCmd(); 79f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~TetherCmd() {} 80f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 81f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 82f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 83f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class NatCmd : public NetdCommand { 84f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 85f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org NatCmd(); 86f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~NatCmd() {} 87f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 88f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 89f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 90f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class ListTtysCmd : public NetdCommand { 91f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 92f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ListTtysCmd(); 93f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~ListTtysCmd() {} 94f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 95f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 96f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 97f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class PppdCmd : public NetdCommand { 98f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 99f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org PppdCmd(); 100f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~PppdCmd() {} 101f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 102f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 103f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 104f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class BandwidthControlCmd : public NetdCommand { 105f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 106f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org BandwidthControlCmd(); 107f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~BandwidthControlCmd() {} 108f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 109f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org protected: 110f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void sendGenericOkFail(SocketClient *cli, int cond); 111f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void sendGenericOpFailed(SocketClient *cli, const char *errMsg); 112f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org void sendGenericSyntaxError(SocketClient *cli, const char *usageMsg); 113f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 114f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 115f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class IdletimerControlCmd : public NetdCommand { 116f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 117f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org IdletimerControlCmd(); 118f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~IdletimerControlCmd() {} 119f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 120f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 121f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 122f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class ResolverCmd : public NetdCommand { 123f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 124f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ResolverCmd(); 125f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~ResolverCmd() {} 126f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 127f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 128f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 129f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class FirewallCmd: public NetdCommand { 130f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 131f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org FirewallCmd(); 132f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~FirewallCmd() {} 133f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 134f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org protected: 135f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int sendGenericOkFail(SocketClient *cli, int cond); 136f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org static FirewallRule parseRule(const char* arg); 137f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 138f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 139f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class ClatdCmd : public NetdCommand { 140f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 141f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org ClatdCmd(); 142f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~ClatdCmd() {} 143f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient *c, int argc, char ** argv); 144f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 145f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 146f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org class NetworkCommand : public NetdCommand { 147f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org public: 148f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org NetworkCommand(); 149f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual ~NetworkCommand() {} 150f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int runCommand(SocketClient* client, int argc, char** argv); 151f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org private: 152f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int syntaxError(SocketClient* cli, const char* message); 153f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int operationError(SocketClient* cli, const char* message, int ret); 154f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org int success(SocketClient* cli); 155f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org }; 156f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 157f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 158f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif 159f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org