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 209d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#include <linux/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; 319d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int mDaemonFd; 329d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 339d10b341a0ba46f108cb96e46691197d778cbc06San Mehatpublic: 349d10b341a0ba46f108cb96e46691197d778cbc06San Mehat TetherController(); 359d10b341a0ba46f108cb96e46691197d778cbc06San Mehat virtual ~TetherController(); 369d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 379d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int setIpFwdEnabled(bool enable); 389d10b341a0ba46f108cb96e46691197d778cbc06San Mehat bool getIpFwdEnabled(); 399d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 403208ea0b6cce28e7aef8459d548fd86df329e34fRobert Greenwalt int startTethering(int num_addrs, struct in_addr* addrs); 413208ea0b6cce28e7aef8459d548fd86df329e34fRobert Greenwalt 429d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int stopTethering(); 439d10b341a0ba46f108cb96e46691197d778cbc06San Mehat bool isTetheringStarted(); 449d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 459d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int setDnsForwarders(char **servers, int numServers); 469d10b341a0ba46f108cb96e46691197d778cbc06San Mehat NetAddressCollection *getDnsForwarders(); 479d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 489d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int tetherInterface(const char *interface); 499d10b341a0ba46f108cb96e46691197d778cbc06San Mehat int untetherInterface(const char *interface); 509d10b341a0ba46f108cb96e46691197d778cbc06San Mehat InterfaceCollection *getTetheredInterfaceList(); 519d10b341a0ba46f108cb96e46691197d778cbc06San Mehat}; 529d10b341a0ba46f108cb96e46691197d778cbc06San Mehat 539d10b341a0ba46f108cb96e46691197d778cbc06San Mehat#endif 54