CommandListener.cpp revision d18304287dbabc7835be771400b85d4ae8b63de6
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#include <stdlib.h>
18d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sys/socket.h>
19d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sys/types.h>
20d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <netinet/in.h>
21d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <arpa/inet.h>
22d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <dirent.h>
23d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <errno.h>
24d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
25d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#define LOG_TAG "CommandListener"
26d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <cutils/log.h>
27d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
28d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include <sysutils/SocketClient.h>
29d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
30d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include "CommandListener.h"
31d18304287dbabc7835be771400b85d4ae8b63de6San Mehat#include "ResponseCode.h"
32d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
33d18304287dbabc7835be771400b85d4ae8b63de6San MehatCommandListener::CommandListener() :
34d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                 FrameworkListener("netd") {
35d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    registerCmd(new ListInterfacesCmd());
36d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    registerCmd(new IpFwdCmd());
37d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    registerCmd(new TetherCmd());
38d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    registerCmd(new NatCmd());
39d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
40d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
41d18304287dbabc7835be771400b85d4ae8b63de6San MehatCommandListener::ListInterfacesCmd::ListInterfacesCmd() :
42d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                 NetdCommand("list_interfaces") {
43d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
44d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
45d18304287dbabc7835be771400b85d4ae8b63de6San Mehatint CommandListener::ListInterfacesCmd::runCommand(SocketClient *cli,
46d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                                                      int argc, char **argv) {
47d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    cli->sendMsg(ResponseCode::CommandOkay, "Interfaces listed.", false);
48d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    return 0;
49d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
50d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
51d18304287dbabc7835be771400b85d4ae8b63de6San MehatCommandListener::IpFwdCmd::IpFwdCmd() :
52d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                 NetdCommand("ipfwd") {
53d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
54d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
55d18304287dbabc7835be771400b85d4ae8b63de6San Mehatint CommandListener::IpFwdCmd::runCommand(SocketClient *cli,
56d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                                                      int argc, char **argv) {
57d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
58d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    return 0;
59d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
60d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
61d18304287dbabc7835be771400b85d4ae8b63de6San MehatCommandListener::TetherCmd::TetherCmd() :
62d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                 NetdCommand("tether") {
63d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
64d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
65d18304287dbabc7835be771400b85d4ae8b63de6San Mehatint CommandListener::TetherCmd::runCommand(SocketClient *cli,
66d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                                                      int argc, char **argv) {
67d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    if (argc < 2) {
68d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        cli->sendMsg(ResponseCode::CommandSyntaxError, "Missing argument", false);
69d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        return 0;
70d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    }
71d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
72d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    if (!strcmp(argv[1], "start")) {
73d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    } else if (!strcmp(argv[1], "stop")) {
74d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    } else if (!strcmp(argv[1], "status")) {
75d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    } else if (!strcmp(argv[1], "interface")) {
76d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    } else if (!strcmp(argv[1], "dns")) {
77d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    } else {
78d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        cli->sendMsg(ResponseCode::CommandSyntaxError, "Unknown tether cmd", false);
79d18304287dbabc7835be771400b85d4ae8b63de6San Mehat        return 0;
80d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    }
81d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
82d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    return 0;
83d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
84d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
85d18304287dbabc7835be771400b85d4ae8b63de6San MehatCommandListener::NatCmd::NatCmd() :
86d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                 NetdCommand("nat") {
87d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
88d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
89d18304287dbabc7835be771400b85d4ae8b63de6San Mehatint CommandListener::NatCmd::runCommand(SocketClient *cli,
90d18304287dbabc7835be771400b85d4ae8b63de6San Mehat                                                      int argc, char **argv) {
91d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
92d18304287dbabc7835be771400b85d4ae8b63de6San Mehat    return 0;
93d18304287dbabc7835be771400b85d4ae8b63de6San Mehat}
94d18304287dbabc7835be771400b85d4ae8b63de6San Mehat
95