1d18304287dbabc7835be771400b85d4ae8b63de6San Mehat/* 2d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Copyright (C) 2008 The Android Open Source Project 3d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 4d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 5d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * you may not use this file except in compliance with the License. 6d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * You may obtain a copy of the License at 7d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 8d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * http://www.apache.org/licenses/LICENSE-2.0 9d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * 10d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * Unless required by applicable law or agreed to in writing, software 11d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 12d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * See the License for the specific language governing permissions and 14d18304287dbabc7835be771400b85d4ae8b63de6San Mehat * limitations under the License. 15d18304287dbabc7835be771400b85d4ae8b63de6San Mehat */ 16d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 17d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#ifndef _COMMANDLISTENER_H__ 18d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#define _COMMANDLISTENER_H__ 19d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 20d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sysutils/FrameworkListener.h> 219ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat 22d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include "NetdCommand.h" 23a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak#include "NetworkController.h" 249d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#include "TetherController.h" 259ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat#include "NatController.h" 26d5573d34c8fac49e16b20cf144486125bf940086San Mehat#include "PppController.h" 275af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt#include "SoftapController.h" 284a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall#include "BandwidthController.h" 290031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall#include "IdletimerController.h" 302eab1f762badb7ba46b95716e62ea4548a979903Dmitry Shmidt#include "InterfaceController.h" 3189c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk#include "ResolverController.h" 32d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey#include "FirewallController.h" 330da73fcecc30140439f856118056df8908609627Daniel Drown#include "ClatdController.h" 34d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 35d18304287dbabc7835be771400b85d4ae8b63de6San Mehatclass CommandListener : public FrameworkListener { 369d10b341a0ba46f108cb96e46691197d778cbc06San Mehat static TetherController *sTetherCtrl; 379ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat static NatController *sNatCtrl; 38d5573d34c8fac49e16b20cf144486125bf940086San Mehat static PppController *sPppCtrl; 395af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt static SoftapController *sSoftapCtrl; 404a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall static BandwidthController *sBandwidthCtrl; 410031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall static IdletimerController *sIdletimerCtrl; 422eab1f762badb7ba46b95716e62ea4548a979903Dmitry Shmidt static InterfaceController *sInterfaceCtrl; 4389c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk static ResolverController *sResolverCtrl; 44d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey static FirewallController *sFirewallCtrl; 450da73fcecc30140439f856118056df8908609627Daniel Drown static ClatdController *sClatdCtrl; 469d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 47d18304287dbabc7835be771400b85d4ae8b63de6San Mehatpublic: 48a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak static NetworkController *sNetCtrl; 49a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak 50a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak CommandListener(); 51d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~CommandListener() {} 52d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 53d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate: 54d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 555af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt class SoftapCmd : public NetdCommand { 565af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt public: 575af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt SoftapCmd(); 585af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt virtual ~SoftapCmd() {} 595af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt int runCommand(SocketClient *c, int argc, char ** argv); 605af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt }; 615af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt 625c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat class InterfaceCmd : public NetdCommand { 63d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 645c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat InterfaceCmd(); 655c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat virtual ~InterfaceCmd() {} 66d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 67d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 68d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 69d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class IpFwdCmd : public NetdCommand { 70d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 71d18304287dbabc7835be771400b85d4ae8b63de6San Mehat IpFwdCmd(); 72d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~IpFwdCmd() {} 73d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 74d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 75d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 76d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class TetherCmd : public NetdCommand { 77d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 78d18304287dbabc7835be771400b85d4ae8b63de6San Mehat TetherCmd(); 79d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~TetherCmd() {} 80d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 81d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 82d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 83d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class NatCmd : public NetdCommand { 84d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 85d18304287dbabc7835be771400b85d4ae8b63de6San Mehat NatCmd(); 86d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~NatCmd() {} 87d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 88d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 89d5573d34c8fac49e16b20cf144486125bf940086San Mehat 90d5573d34c8fac49e16b20cf144486125bf940086San Mehat class ListTtysCmd : public NetdCommand { 91d5573d34c8fac49e16b20cf144486125bf940086San Mehat public: 92d5573d34c8fac49e16b20cf144486125bf940086San Mehat ListTtysCmd(); 93d5573d34c8fac49e16b20cf144486125bf940086San Mehat virtual ~ListTtysCmd() {} 94d5573d34c8fac49e16b20cf144486125bf940086San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 95d5573d34c8fac49e16b20cf144486125bf940086San Mehat }; 96d5573d34c8fac49e16b20cf144486125bf940086San Mehat 97d5573d34c8fac49e16b20cf144486125bf940086San Mehat class PppdCmd : public NetdCommand { 98d5573d34c8fac49e16b20cf144486125bf940086San Mehat public: 99d5573d34c8fac49e16b20cf144486125bf940086San Mehat PppdCmd(); 100d5573d34c8fac49e16b20cf144486125bf940086San Mehat virtual ~PppdCmd() {} 101d5573d34c8fac49e16b20cf144486125bf940086San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 102d5573d34c8fac49e16b20cf144486125bf940086San Mehat }; 1031bdac9e98c1ef37ba568b6cf23bfbc09cfe6bf15San Mehat 1044a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall class BandwidthControlCmd : public NetdCommand { 1054a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall public: 1064a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall BandwidthControlCmd(); 1074a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall virtual ~BandwidthControlCmd() {} 1084a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall int runCommand(SocketClient *c, int argc, char ** argv); 109db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall protected: 110db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericOkFail(SocketClient *cli, int cond); 111db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericOpFailed(SocketClient *cli, const char *errMsg); 112db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericSyntaxError(SocketClient *cli, const char *usageMsg); 1134a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall }; 1143c8cc74f81d0f81204bd827076889bb51143dff8Robert Greenwalt 1150031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall class IdletimerControlCmd : public NetdCommand { 1160031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall public: 1170031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall IdletimerControlCmd(); 1180031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall virtual ~IdletimerControlCmd() {} 1190031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall int runCommand(SocketClient *c, int argc, char ** argv); 1200031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall }; 1210031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall 12289c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk class ResolverCmd : public NetdCommand { 12389c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk public: 12489c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk ResolverCmd(); 12589c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk virtual ~ResolverCmd() {} 12689c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk int runCommand(SocketClient *c, int argc, char ** argv); 12789c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk }; 128d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey 129d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey class FirewallCmd: public NetdCommand { 130d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey public: 131d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey FirewallCmd(); 132d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey virtual ~FirewallCmd() {} 133d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey int runCommand(SocketClient *c, int argc, char ** argv); 134d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey protected: 135d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey int sendGenericOkFail(SocketClient *cli, int cond); 136d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey static FirewallRule parseRule(const char* arg); 137d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey }; 1380da73fcecc30140439f856118056df8908609627Daniel Drown 1390da73fcecc30140439f856118056df8908609627Daniel Drown class ClatdCmd : public NetdCommand { 1400da73fcecc30140439f856118056df8908609627Daniel Drown public: 1410da73fcecc30140439f856118056df8908609627Daniel Drown ClatdCmd(); 1420da73fcecc30140439f856118056df8908609627Daniel Drown virtual ~ClatdCmd() {} 1430da73fcecc30140439f856118056df8908609627Daniel Drown int runCommand(SocketClient *c, int argc, char ** argv); 1440da73fcecc30140439f856118056df8908609627Daniel Drown }; 145d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran 1465c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran class NetworkCommand : public NetdCommand { 147d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran public: 1485c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran NetworkCommand(); 1495c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran virtual ~NetworkCommand() {} 1505c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran int runCommand(SocketClient* client, int argc, char** argv); 151d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran private: 152d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran int syntaxError(SocketClient* cli, const char* message); 153f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran int operationError(SocketClient* cli, const char* message, int ret); 1545c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran int success(SocketClient* cli); 155d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran }; 156d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}; 157d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 158d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#endif 159