TetherController.h revision f00db28f37f1b5509598fef586036ff0a52ec30b
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