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"
34fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey#include "StrictController.h"
35d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
36d18304287dbabc7835be771400b85d4ae8b63de6San Mehatclass CommandListener : public FrameworkListener {
379d10b341a0ba46f108cb96e46691197d778cbc06San Mehat    static TetherController *sTetherCtrl;
389ff78fb7da7158f5bd7c86d89a842691820259cfSan Mehat    static NatController *sNatCtrl;
39d5573d34c8fac49e16b20cf144486125bf940086San Mehat    static PppController *sPppCtrl;
405af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt    static SoftapController *sSoftapCtrl;
414a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall    static BandwidthController *sBandwidthCtrl;
420031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall    static IdletimerController *sIdletimerCtrl;
432eab1f762badb7ba46b95716e62ea4548a979903Dmitry Shmidt    static InterfaceController *sInterfaceCtrl;
4489c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk    static ResolverController *sResolverCtrl;
45d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey    static FirewallController *sFirewallCtrl;
460da73fcecc30140439f856118056df8908609627Daniel Drown    static ClatdController *sClatdCtrl;
47fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey    static StrictController *sStrictCtrl;
489d10b341a0ba46f108cb96e46691197d778cbc06San Mehat
49d18304287dbabc7835be771400b85d4ae8b63de6San Mehatpublic:
50a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak    static NetworkController *sNetCtrl;
51a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak
52a0efaece8c05370f201efe099a537ceb014c6fdfSzymon Jakubczak    CommandListener();
53d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    virtual ~CommandListener() {}
54d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
55d18304287dbabc7835be771400b85d4ae8b63de6San Mehatprivate:
56d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
575af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt    class SoftapCmd : public NetdCommand {
585af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt    public:
595af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt        SoftapCmd();
605af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt        virtual ~SoftapCmd() {}
615af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt        int runCommand(SocketClient *c, int argc, char ** argv);
625af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt    };
635af38c360587ca2eef0badf6137ccf018f8cd4aaDmitry Shmidt
645c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat    class InterfaceCmd : public NetdCommand {
65d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    public:
665c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat        InterfaceCmd();
675c1b8af16dbbc20c89aaca2f93e725e12b16d055San Mehat        virtual ~InterfaceCmd() {}
68d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
69d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    };
70d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
71d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    class IpFwdCmd : public NetdCommand {
72d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    public:
73d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        IpFwdCmd();
74d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        virtual ~IpFwdCmd() {}
75d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
76d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    };
77d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
78d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    class TetherCmd : public NetdCommand {
79d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    public:
80d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        TetherCmd();
81d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        virtual ~TetherCmd() {}
82d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
83d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    };
84d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
85d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    class NatCmd : public NetdCommand {
86d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    public:
87d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        NatCmd();
88d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        virtual ~NatCmd() {}
89d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
90d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    };
91d5573d34c8fac49e16b20cf144486125bf940086San Mehat
92d5573d34c8fac49e16b20cf144486125bf940086San Mehat    class ListTtysCmd : public NetdCommand {
93d5573d34c8fac49e16b20cf144486125bf940086San Mehat    public:
94d5573d34c8fac49e16b20cf144486125bf940086San Mehat        ListTtysCmd();
95d5573d34c8fac49e16b20cf144486125bf940086San Mehat        virtual ~ListTtysCmd() {}
96d5573d34c8fac49e16b20cf144486125bf940086San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
97d5573d34c8fac49e16b20cf144486125bf940086San Mehat    };
98d5573d34c8fac49e16b20cf144486125bf940086San Mehat
99d5573d34c8fac49e16b20cf144486125bf940086San Mehat    class PppdCmd : public NetdCommand {
100d5573d34c8fac49e16b20cf144486125bf940086San Mehat    public:
101d5573d34c8fac49e16b20cf144486125bf940086San Mehat        PppdCmd();
102d5573d34c8fac49e16b20cf144486125bf940086San Mehat        virtual ~PppdCmd() {}
103d5573d34c8fac49e16b20cf144486125bf940086San Mehat        int runCommand(SocketClient *c, int argc, char ** argv);
104d5573d34c8fac49e16b20cf144486125bf940086San Mehat    };
1051bdac9e98c1ef37ba568b6cf23bfbc09cfe6bf15San Mehat
1064a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall    class BandwidthControlCmd : public NetdCommand {
1074a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall    public:
1084a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall        BandwidthControlCmd();
1094a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall        virtual ~BandwidthControlCmd() {}
1104a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall        int runCommand(SocketClient *c, int argc, char ** argv);
111db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall    protected:
112db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall        void sendGenericOkFail(SocketClient *cli, int cond);
113db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall        void sendGenericOpFailed(SocketClient *cli, const char *errMsg);
114db7da58e8d2aa021060098057f944ef754be06e3JP Abgrall        void sendGenericSyntaxError(SocketClient *cli, const char *usageMsg);
1154a5f5ca3c9e07fc3e6feca2afde07f41a8a64f11JP Abgrall    };
1163c8cc74f81d0f81204bd827076889bb51143dff8Robert Greenwalt
1170031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall    class IdletimerControlCmd : public NetdCommand {
1180031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall    public:
1190031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall        IdletimerControlCmd();
1200031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall        virtual ~IdletimerControlCmd() {}
1210031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall        int runCommand(SocketClient *c, int argc, char ** argv);
1220031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall    };
1230031cead820149e2fe3ccb3cc2fe05758a3cb5c2JP Abgrall
12489c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk    class ResolverCmd : public NetdCommand {
12589c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk    public:
12689c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk        ResolverCmd();
12789c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk        virtual ~ResolverCmd() {}
12889c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk        int runCommand(SocketClient *c, int argc, char ** argv);
12989c1e975f0c03997808d35c7be10b244c5309f9fMattias Falk    };
130d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey
131d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey    class FirewallCmd: public NetdCommand {
132d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey    public:
133d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey        FirewallCmd();
134d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey        virtual ~FirewallCmd() {}
135d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey        int runCommand(SocketClient *c, int argc, char ** argv);
136d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey    protected:
137d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey        int sendGenericOkFail(SocketClient *cli, int cond);
138d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey        static FirewallRule parseRule(const char* arg);
139390e4ea8106f9e741bc80fb962aaee94d5b28cbbAmith Yamasani        static FirewallType parseFirewallType(const char* arg);
1401cdfa9adfa584029cb6d9ac13a2896786001b3a1Xiaohui Chen        static ChildChain parseChildChain(const char* arg);
141d8c64026aaae5a9987151b719bd840ec7d68747aJeff Sharkey    };
1420da73fcecc30140439f856118056df8908609627Daniel Drown
1430da73fcecc30140439f856118056df8908609627Daniel Drown    class ClatdCmd : public NetdCommand {
1440da73fcecc30140439f856118056df8908609627Daniel Drown    public:
1450da73fcecc30140439f856118056df8908609627Daniel Drown        ClatdCmd();
1460da73fcecc30140439f856118056df8908609627Daniel Drown        virtual ~ClatdCmd() {}
1470da73fcecc30140439f856118056df8908609627Daniel Drown        int runCommand(SocketClient *c, int argc, char ** argv);
1480da73fcecc30140439f856118056df8908609627Daniel Drown    };
149d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran
150fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey    class StrictCmd : public NetdCommand {
151fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey    public:
152fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey        StrictCmd();
153fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey        virtual ~StrictCmd() {}
154fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey        int runCommand(SocketClient *c, int argc, char ** argv);
155fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey    protected:
156fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey        int sendGenericOkFail(SocketClient *cli, int cond);
157fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey        static StrictPenalty parsePenalty(const char* arg);
158fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey    };
159fbe497fcd808e4317572ad48c42545105309a347Jeff Sharkey
1605c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran    class NetworkCommand : public NetdCommand {
161d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran    public:
1625c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran        NetworkCommand();
1635c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran        virtual ~NetworkCommand() {}
1645c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran        int runCommand(SocketClient* client, int argc, char** argv);
165d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran    private:
166d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran        int syntaxError(SocketClient* cli, const char* message);
167f4f6c8de3f091be4b91a5a9d7f14e8882ec6d502Sreeram Ramachandran        int operationError(SocketClient* cli, const char* message, int ret);
1685c181bf8ca0c89bd9e3e6d8e40bac53d0ee7082fSreeram Ramachandran        int success(SocketClient* cli);
169d736d4b327bf35afc59b5cec110491fcdb9e2cbbSreeram Ramachandran    };
170d18304287dbabc7835be771400b85d4ae8b63de6San Mehat};
171d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
172d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#endif
173