19d10b341a0ba46f108cb96e46691197d778cbc06San Mehat/* 29d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * Copyright (C) 2008 The Android Open Source Project 39d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * 49d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * Licensed under the Apache License, Version 2.0 (the "License"); 59d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * you may not use this file except in compliance with the License. 69d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * You may obtain a copy of the License at 79d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * 89d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * http://www.apache.org/licenses/LICENSE-2.0 99d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * 109d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * Unless required by applicable law or agreed to in writing, software 119d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * distributed under the License is distributed on an "AS IS" BASIS, 129d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * See the License for the specific language governing permissions and 149d10b341a0ba46f108cb96e46691197d778cbc06San Mehat * limitations under the License. 159d10b341a0ba46f108cb96e46691197d778cbc06San Mehat */ 169d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 179d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#ifndef _TETHER_CONTROLLER_H 189d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#define _TETHER_CONTROLLER_H 199d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 20970274a61800e047430d81269df977de9dbe45efElliott Hughes#include <netinet/in.h> 219d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 22f00db28f37f1b5509598fef586036ff0a52ec30bMathias Agopian#include "List.h" 239d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 24f00db28f37f1b5509598fef586036ff0a52ec30bMathias Agopiantypedef android::netd::List<char *> InterfaceCollection; 25f00db28f37f1b5509598fef586036ff0a52ec30bMathias Agopiantypedef android::netd::List<struct in_addr> NetAddressCollection; 269d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 279d10b341a0ba46f108cb96e46691197d778cbc06San Mehatclass TetherController { 289d10b341a0ba46f108cb96e46691197d778cbc06San Mehat InterfaceCollection *mInterfaces; 299d10b341a0ba46f108cb96e46691197d778cbc06San Mehat NetAddressCollection *mDnsForwarders; 309d10b341a0ba46f108cb96e46691197d778cbc06San Mehat pid_t mDaemonPid; 319589a4c6e0b6a5ec60c65b248e7deff2805749b2zzy pid_t mDhcpcdPid; 329d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int mDaemonFd; 339d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 349d10b341a0ba46f108cb96e46691197d778cbc06San Mehatpublic: 359d10b341a0ba46f108cb96e46691197d778cbc06San Mehat TetherController(); 369d10b341a0ba46f108cb96e46691197d778cbc06San Mehat virtual ~TetherController(); 379d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 389d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int setIpFwdEnabled(bool enable); 399d10b341a0ba46f108cb96e46691197d778cbc06San Mehat bool getIpFwdEnabled(); 409d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 413208ea0b6cce28e7aef8459d548fd86df329e34fRobert Greenwalt int startTethering(int num_addrs, struct in_addr* addrs); 423208ea0b6cce28e7aef8459d548fd86df329e34fRobert Greenwalt 439d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int stopTethering(); 449d10b341a0ba46f108cb96e46691197d778cbc06San Mehat bool isTetheringStarted(); 459d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 469589a4c6e0b6a5ec60c65b248e7deff2805749b2zzy int startReverseTethering(const char* iface); 479589a4c6e0b6a5ec60c65b248e7deff2805749b2zzy int stopReverseTethering(); 489589a4c6e0b6a5ec60c65b248e7deff2805749b2zzy 499d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int setDnsForwarders(char **servers, int numServers); 509d10b341a0ba46f108cb96e46691197d778cbc06San Mehat NetAddressCollection *getDnsForwarders(); 519d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 529d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int tetherInterface(const char *interface); 539d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int untetherInterface(const char *interface); 549d10b341a0ba46f108cb96e46691197d778cbc06San Mehat InterfaceCollection *getTetheredInterfaceList(); 559d10b341a0ba46f108cb96e46691197d778cbc06San Mehat}; 569d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 579d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#endif 58