154962e0fd647f5f390269994c573f80c92f537d4San Mehat
254962e0fd647f5f390269994c573f80c92f537d4San Mehat/*
354962e0fd647f5f390269994c573f80c92f537d4San Mehat * Copyright (C) 2008 The Android Open Source Project
454962e0fd647f5f390269994c573f80c92f537d4San Mehat *
554962e0fd647f5f390269994c573f80c92f537d4San Mehat * Licensed under the Apache License, Version 2.0 (the "License");
654962e0fd647f5f390269994c573f80c92f537d4San Mehat * you may not use this file except in compliance with the License.
754962e0fd647f5f390269994c573f80c92f537d4San Mehat * You may obtain a copy of the License at
854962e0fd647f5f390269994c573f80c92f537d4San Mehat *
954962e0fd647f5f390269994c573f80c92f537d4San Mehat *      http://www.apache.org/licenses/LICENSE-2.0
1054962e0fd647f5f390269994c573f80c92f537d4San Mehat *
1154962e0fd647f5f390269994c573f80c92f537d4San Mehat * Unless required by applicable law or agreed to in writing, software
1254962e0fd647f5f390269994c573f80c92f537d4San Mehat * distributed under the License is distributed on an "AS IS" BASIS,
1354962e0fd647f5f390269994c573f80c92f537d4San Mehat * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1454962e0fd647f5f390269994c573f80c92f537d4San Mehat * See the License for the specific language governing permissions and
1554962e0fd647f5f390269994c573f80c92f537d4San Mehat * limitations under the License.
1654962e0fd647f5f390269994c573f80c92f537d4San Mehat */
1754962e0fd647f5f390269994c573f80c92f537d4San Mehat
1854962e0fd647f5f390269994c573f80c92f537d4San Mehat#ifndef _DhcpClient_H
1954962e0fd647f5f390269994c573f80c92f537d4San Mehat#define _DhcpClient_H
2054962e0fd647f5f390269994c573f80c92f537d4San Mehat
21c4a895b7094461c98101924cf096680bfb7856f1San Mehat#include <pthread.h>
22c4a895b7094461c98101924cf096680bfb7856f1San Mehat
2354962e0fd647f5f390269994c573f80c92f537d4San Mehatclass IDhcpEventHandlers;
2454962e0fd647f5f390269994c573f80c92f537d4San Mehatclass ServiceManager;
2554962e0fd647f5f390269994c573f80c92f537d4San Mehatclass DhcpListener;
26c4a895b7094461c98101924cf096680bfb7856f1San Mehatclass Controller;
2754962e0fd647f5f390269994c573f80c92f537d4San Mehat
2854962e0fd647f5f390269994c573f80c92f537d4San Mehatclass DhcpClient {
29c4a895b7094461c98101924cf096680bfb7856f1San Mehatpublic:
30c4a895b7094461c98101924cf096680bfb7856f1San Mehat    static const int STATUS_MONITOR_PORT = 6666;
31c4a895b7094461c98101924cf096680bfb7856f1San Mehat
32c4a895b7094461c98101924cf096680bfb7856f1San Mehatprivate:
3354962e0fd647f5f390269994c573f80c92f537d4San Mehat    int                mState;
3454962e0fd647f5f390269994c573f80c92f537d4San Mehat    IDhcpEventHandlers *mHandlers;
3554962e0fd647f5f390269994c573f80c92f537d4San Mehat    ServiceManager     *mServiceManager;
3654962e0fd647f5f390269994c573f80c92f537d4San Mehat    DhcpListener       *mListener;
37c4a895b7094461c98101924cf096680bfb7856f1San Mehat    int                mListenerSocket;
38c4a895b7094461c98101924cf096680bfb7856f1San Mehat    pthread_mutex_t    mLock;
39c4a895b7094461c98101924cf096680bfb7856f1San Mehat    Controller         *mController;
40c4a895b7094461c98101924cf096680bfb7856f1San Mehat    bool               mDoArpProbe;
4154962e0fd647f5f390269994c573f80c92f537d4San Mehat
4254962e0fd647f5f390269994c573f80c92f537d4San Mehatpublic:
4354962e0fd647f5f390269994c573f80c92f537d4San Mehat    DhcpClient(IDhcpEventHandlers *handlers);
4454962e0fd647f5f390269994c573f80c92f537d4San Mehat    virtual ~DhcpClient();
4554962e0fd647f5f390269994c573f80c92f537d4San Mehat
4654962e0fd647f5f390269994c573f80c92f537d4San Mehat    int getState() { return mState; }
47c4a895b7094461c98101924cf096680bfb7856f1San Mehat    bool getDoArpProbe() { return mDoArpProbe; }
48c4a895b7094461c98101924cf096680bfb7856f1San Mehat    void setDoArpProbe(bool probe);
4954962e0fd647f5f390269994c573f80c92f537d4San Mehat
50c4a895b7094461c98101924cf096680bfb7856f1San Mehat    int start(Controller *c);
5154962e0fd647f5f390269994c573f80c92f537d4San Mehat    int stop();
5254962e0fd647f5f390269994c573f80c92f537d4San Mehat};
5354962e0fd647f5f390269994c573f80c92f537d4San Mehat
5454962e0fd647f5f390269994c573f80c92f537d4San Mehat#endif
55