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> 21e4d626ea35b7a402388b524e2feafc81e6387697Lorenzo Colitti#include "utils/RWLock.h" 229ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat 23d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include "NetdCommand.h" 24e4d626ea35b7a402388b524e2feafc81e6387697Lorenzo Colitti#include "NetdConstants.h" 25a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak#include "NetworkController.h" 269d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#include "TetherController.h" 279ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat#include "NatController.h" 28d5573d34c8fac49e16b20cf144486125bf940086San Mehat#include "PppController.h" 294a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall#include "BandwidthController.h" 300031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall#include "IdletimerController.h" 312eab1f762badb7ba46b95716e62ea4548a979903Dmitry Shmidt#include "InterfaceController.h" 3289c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk#include "ResolverController.h" 33d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey#include "FirewallController.h" 340da73fcecc30140439f856118056df8908609627Daniel Drown#include "ClatdController.h" 35fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey#include "StrictController.h" 36d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 377035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colittinamespace android { 387035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colittinamespace net { 397035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colitti 40d18304287dbabc7835be771400b85d4ae8b63de6San Mehatclass CommandListener : public FrameworkListener { 41d18304287dbabc7835be771400b85d4ae8b63de6San Mehatpublic: 42a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak CommandListener(); 43d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~CommandListener() {} 44d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 45d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate: 46ddf2d5bc87fe6de7cae2b73a17dbaf35033565caLorenzo Colitti void registerLockingCmd(FrameworkCommand *cmd, android::RWLock& lock); 47e4d626ea35b7a402388b524e2feafc81e6387697Lorenzo Colitti void registerLockingCmd(FrameworkCommand *cmd) { 48ddf2d5bc87fe6de7cae2b73a17dbaf35033565caLorenzo Colitti registerLockingCmd(cmd, android::net::gBigNetdLock); 49e4d626ea35b7a402388b524e2feafc81e6387697Lorenzo Colitti } 50e4d626ea35b7a402388b524e2feafc81e6387697Lorenzo Colitti 515c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat class InterfaceCmd : public NetdCommand { 52d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 535c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat InterfaceCmd(); 545c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat virtual ~InterfaceCmd() {} 55d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 56d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 57d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 58d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class IpFwdCmd : public NetdCommand { 59d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 60d18304287dbabc7835be771400b85d4ae8b63de6San Mehat IpFwdCmd(); 61d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~IpFwdCmd() {} 62d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 63d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 64d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 65d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class TetherCmd : public NetdCommand { 66d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 67d18304287dbabc7835be771400b85d4ae8b63de6San Mehat TetherCmd(); 68d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~TetherCmd() {} 69d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 70d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 71d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 72d18304287dbabc7835be771400b85d4ae8b63de6San Mehat class NatCmd : public NetdCommand { 73d18304287dbabc7835be771400b85d4ae8b63de6San Mehat public: 74d18304287dbabc7835be771400b85d4ae8b63de6San Mehat NatCmd(); 75d18304287dbabc7835be771400b85d4ae8b63de6San Mehat virtual ~NatCmd() {} 76d18304287dbabc7835be771400b85d4ae8b63de6San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 77d18304287dbabc7835be771400b85d4ae8b63de6San Mehat }; 78d5573d34c8fac49e16b20cf144486125bf940086San Mehat 79d5573d34c8fac49e16b20cf144486125bf940086San Mehat class ListTtysCmd : public NetdCommand { 80d5573d34c8fac49e16b20cf144486125bf940086San Mehat public: 81d5573d34c8fac49e16b20cf144486125bf940086San Mehat ListTtysCmd(); 82d5573d34c8fac49e16b20cf144486125bf940086San Mehat virtual ~ListTtysCmd() {} 83d5573d34c8fac49e16b20cf144486125bf940086San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 84d5573d34c8fac49e16b20cf144486125bf940086San Mehat }; 85d5573d34c8fac49e16b20cf144486125bf940086San Mehat 86d5573d34c8fac49e16b20cf144486125bf940086San Mehat class PppdCmd : public NetdCommand { 87d5573d34c8fac49e16b20cf144486125bf940086San Mehat public: 88d5573d34c8fac49e16b20cf144486125bf940086San Mehat PppdCmd(); 89d5573d34c8fac49e16b20cf144486125bf940086San Mehat virtual ~PppdCmd() {} 90d5573d34c8fac49e16b20cf144486125bf940086San Mehat int runCommand(SocketClient *c, int argc, char ** argv); 91d5573d34c8fac49e16b20cf144486125bf940086San Mehat }; 921bdac9e98c1ef37ba568b6cf23bfbc09cfe6bf15San Mehat 934a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall class BandwidthControlCmd : public NetdCommand { 944a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall public: 954a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall BandwidthControlCmd(); 964a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall virtual ~BandwidthControlCmd() {} 974a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall int runCommand(SocketClient *c, int argc, char ** argv); 98db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall protected: 99db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericOkFail(SocketClient *cli, int cond); 100db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericOpFailed(SocketClient *cli, const char *errMsg); 101db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall void sendGenericSyntaxError(SocketClient *cli, const char *usageMsg); 1024a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall }; 1033c8cc74f81d0f81204bd827076889bb51143dff8Robert Greenwalt 1040031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall class IdletimerControlCmd : public NetdCommand { 1050031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall public: 1060031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall IdletimerControlCmd(); 1070031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall virtual ~IdletimerControlCmd() {} 1080031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall int runCommand(SocketClient *c, int argc, char ** argv); 1090031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall }; 1100031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall 11189c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk class ResolverCmd : public NetdCommand { 11289c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk public: 11389c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk ResolverCmd(); 11489c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk virtual ~ResolverCmd() {} 11589c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk int runCommand(SocketClient *c, int argc, char ** argv); 11612f6baf16328cdeea8f079616c2c44ac28f82496Pierre Imai 11712f6baf16328cdeea8f079616c2c44ac28f82496Pierre Imai private: 11812f6baf16328cdeea8f079616c2c44ac28f82496Pierre Imai bool parseAndExecuteSetNetDns(int netId, int argc, const char** argv); 11989c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk }; 120d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey 121d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey class FirewallCmd: public NetdCommand { 122d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey public: 123d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey FirewallCmd(); 124d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey virtual ~FirewallCmd() {} 125d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey int runCommand(SocketClient *c, int argc, char ** argv); 126d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey protected: 127d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey int sendGenericOkFail(SocketClient *cli, int cond); 128d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey static FirewallRule parseRule(const char* arg); 129390e4ea8106f9e741bc80fb962aaee94d5b28cbbAmith Yamasani static FirewallType parseFirewallType(const char* arg); 1301cdfa9adfa584029cb6d9ac13a2896786001b3a1Xiaohui Chen static ChildChain parseChildChain(const char* arg); 131d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey }; 1320da73fcecc30140439f856118056df8908609627Daniel Drown 1330da73fcecc30140439f856118056df8908609627Daniel Drown class ClatdCmd : public NetdCommand { 1340da73fcecc30140439f856118056df8908609627Daniel Drown public: 1350da73fcecc30140439f856118056df8908609627Daniel Drown ClatdCmd(); 1360da73fcecc30140439f856118056df8908609627Daniel Drown virtual ~ClatdCmd() {} 1370da73fcecc30140439f856118056df8908609627Daniel Drown int runCommand(SocketClient *c, int argc, char ** argv); 1380da73fcecc30140439f856118056df8908609627Daniel Drown }; 139d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran 140fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey class StrictCmd : public NetdCommand { 141fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey public: 142fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey StrictCmd(); 143fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey virtual ~StrictCmd() {} 144fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey int runCommand(SocketClient *c, int argc, char ** argv); 145fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey protected: 146fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey int sendGenericOkFail(SocketClient *cli, int cond); 147fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey static StrictPenalty parsePenalty(const char* arg); 148fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey }; 149fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey 1505c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran class NetworkCommand : public NetdCommand { 151d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran public: 1525c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran NetworkCommand(); 1535c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran virtual ~NetworkCommand() {} 1545c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran int runCommand(SocketClient* client, int argc, char** argv); 155d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran private: 156d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran int syntaxError(SocketClient* cli, const char* message); 157f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran int operationError(SocketClient* cli, const char* message, int ret); 1585c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran int success(SocketClient* cli); 159d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran }; 160d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}; 161d18304287dbabc7835be771400b85d4ae8b63de6San Mehat 1627035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colitti} // namespace net 1637035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colitti} // namespace android 1647035f228d17e925116b1b64a7c917b3196ab8818Lorenzo Colitti 165d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#endif 166