nexus: Add ListCmd to CommandListener

Signed-off-by: San Mehat <san@google.com>

nexus: Add InterfaceConfig and flesh out some more flow

Signed-off-by: San Mehat <san@google.com>
This commit is contained in:
San Mehat 2009-05-22 13:58:06 -07:00
parent 03f0d27f6c
commit 192331d906
7 changed files with 168 additions and 7 deletions

View file

@ -22,6 +22,7 @@ LOCAL_SRC_FILES:= \
WifiScanner.cpp \
WifiNetwork.cpp \
OpenVpnController.cpp \
InterfaceConfig.cpp \
LOCAL_MODULE:= nexus

View file

@ -202,3 +202,11 @@ out_inval:
cli->sendMsg(ErrorCode::CommandParameterError, "Failed to set property.", true);
return 0;
}
CommandListener::ListCmd::ListCmd() :
NexusCommand("list") {
}
int CommandListener::ListCmd::runCommand(SocketClient *cli, char *data) {
return 0;
}

View file

@ -74,6 +74,13 @@ private:
virtual ~GetCmd() {}
int runCommand(SocketClient *c, char *data);
};
class ListCmd : public NexusCommand {
public:
ListCmd();
virtual ~ListCmd() {}
int runCommand(SocketClient *c, char *data);
};
};
#endif

67
nexus/InterfaceConfig.cpp Normal file
View file

@ -0,0 +1,67 @@
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <string.h>
#define LOG_TAG "InterfaceConfig"
#include <cutils/log.h>
#include "InterfaceConfig.h"
InterfaceConfig::InterfaceConfig(const char *name) {
mName = strdup(name);
mUseDhcp = true;
}
InterfaceConfig::~InterfaceConfig() {
free(mName);
}
InterfaceConfig::InterfaceConfig(const char *name, const char *ip, const char *nm,
const char *gw, const char *dns1, const char *dns2,
const char *dns3) {
mName = strdup(name);
mUseDhcp = false;
if (!inet_aton(ip, &mIp))
LOGW("Unable to parse ip (%s)", ip);
if (!inet_aton(nm, &mIp))
LOGW("Unable to parse netmask (%s)", nm);
if (!inet_aton(gw, &mIp))
LOGW("Unable to parse gateway (%s)", gw);
if (!inet_aton(dns1, &mIp))
LOGW("Unable to parse dns1 (%s)", dns1);
if (!inet_aton(dns2, &mIp))
LOGW("Unable to parse dns2 (%s)", dns2);
if (!inet_aton(dns3, &mIp))
LOGW("Unable to parse dns3 (%s)", dns3);
}
InterfaceConfig::InterfaceConfig(const char *name, const struct in_addr *ip,
const struct in_addr *nm, const struct in_addr *gw,
const struct in_addr *dns1, const struct in_addr *dns2,
const struct in_addr *dns3) {
mName = strdup(name);
mUseDhcp = false;
memcpy(&mIp, ip, sizeof(struct in_addr));
memcpy(&mNetmask, nm, sizeof(struct in_addr));
memcpy(&mGateway, gw, sizeof(struct in_addr));
memcpy(&mDns1, dns1, sizeof(struct in_addr));
memcpy(&mDns2, dns2, sizeof(struct in_addr));
memcpy(&mDns3, dns3, sizeof(struct in_addr));
}

58
nexus/InterfaceConfig.h Normal file
View file

@ -0,0 +1,58 @@
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _INTERFACE_CONFIG_H
#define _INTERFACE_CONFIG_H
#include <netinet/in.h>
#include <arpa/inet.h>
class InterfaceConfig {
private:
char *mName;
bool mUseDhcp;
struct in_addr mIp;
struct in_addr mNetmask;
struct in_addr mGateway;
struct in_addr mDns1;
struct in_addr mDns2;
struct in_addr mDns3;
public:
InterfaceConfig(const char *name);
InterfaceConfig(const char *name, const char *ip, const char *nm,
const char *gw, const char *dns1, const char *dns2,
const char *dns3);
InterfaceConfig(const char *name, const struct in_addr *ip,
const struct in_addr *nm, const struct in_addr *gw,
const struct in_addr *dns1, const struct in_addr *dns2,
const struct in_addr *dns3);
virtual ~InterfaceConfig();
const char *getName() const { return mName; }
bool getUseDhcp() const { return mUseDhcp; }
const struct in_addr &getIp() const { return mIp; }
const struct in_addr &getNetmask() const { return mNetmask; }
const struct in_addr &getGateway() const { return mGateway; }
const struct in_addr &getDns1() const { return mDns1; }
const struct in_addr &getDns2() const { return mDns2; }
const struct in_addr &getDns3() const { return mDns3; }
};
#endif

View file

@ -21,6 +21,7 @@
#include <cutils/log.h>
#include "NetworkManager.h"
#include "InterfaceConfig.h"
NetworkManager *NetworkManager::sInstance = NULL;
@ -150,12 +151,23 @@ const PropertyCollection &NetworkManager::getProperties() {
return *mProperties;
}
int NetworkManager::onInterfaceCreated(Controller *c, char *name) {
LOGD("Interface %s created by controller %s", name, c->getName());
int NetworkManager::onInterfaceStart(Controller *c, const InterfaceConfig *cfg) {
LOGD("Interface %s started by controller %s", cfg->getName(), c->getName());
// Look up the interface
if (0) { // already started?
errno = EADDRINUSE;
return -1;
}
if (cfg->getUseDhcp()) {
} else {
}
return 0;
}
int NetworkManager::onInterfaceDestroyed(Controller *c, char *name) {
LOGD("Interface %s destroyed by controller %s", name, c->getName());
int NetworkManager::onInterfaceStop(Controller *c, const char *name) {
LOGD("Interface %s stopped by controller %s", name, c->getName());
return 0;
}

View file

@ -21,6 +21,8 @@
#include "Controller.h"
#include "PropertyCollection.h"
class InterfaceConfig;
class NetworkManager {
private:
static NetworkManager *sInstance;
@ -57,9 +59,15 @@ private:
NetworkManager();
public:
// XXX: Extract these into an interface
int onInterfaceCreated(Controller *c, char *name);
int onInterfaceDestroyed(Controller *c, char *name);
/*
* Called from a controller when an interface is available/ready for use.
* 'cfg' contains information on how this interface should be configured.
*/
int onInterfaceStart(Controller *c, const InterfaceConfig *cfg);
/*
* Called from a controller when an interface should be shut down
*/
int onInterfaceStop(Controller *c, const char *name);
};
#endif