87 lines
2.3 KiB
C++
87 lines
2.3 KiB
C++
//
|
|
// Copyright (C) 2015 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 DHCP_CLIENT_SERVICE_H_
|
|
#define DHCP_CLIENT_SERVICE_H_
|
|
|
|
#include <string>
|
|
|
|
#include <base/macros.h>
|
|
#include <base/memory/ref_counted.h>
|
|
#include <brillo/variant_dictionary.h>
|
|
|
|
#include "dhcp_client/dhcp.h"
|
|
#include "dhcp_client/dhcpv4.h"
|
|
#include "dhcp_client/event_dispatcher_interface.h"
|
|
#include "shill/net/byte_string.h"
|
|
|
|
namespace dhcp_client {
|
|
|
|
class Manager;
|
|
|
|
class Service : public base::RefCounted<Service> {
|
|
public:
|
|
Service(Manager* manager,
|
|
int service_identifier,
|
|
EventDispatcherInterface* event_dispatcher,
|
|
const brillo::VariantDictionary& configs);
|
|
|
|
virtual ~Service();
|
|
bool Start();
|
|
void Stop();
|
|
|
|
private:
|
|
Manager* manager_;
|
|
// Indentifier number of this service.
|
|
int identifier_;
|
|
EventDispatcherInterface* event_dispatcher_;
|
|
// Interface parameters.
|
|
std::string interface_name_;
|
|
shill::ByteString hardware_address_;
|
|
unsigned int interface_index_;
|
|
|
|
// Unique network/connection identifier,
|
|
// lease will persist to storage if this identifier is specified.
|
|
std::string network_id_;
|
|
|
|
// Type of the DHCP service.
|
|
// It can be IPv4 only or IPv6 only or both.
|
|
DHCP::ServiceType type_;
|
|
|
|
// DHCP IPv4 configurations:
|
|
// Request hostname from server.
|
|
bool request_hostname_;
|
|
// ARP for default gateway.
|
|
bool arp_gateway_;
|
|
// Enable unicast ARP on renew.
|
|
bool unicast_arp_;
|
|
|
|
// DHCP IPv6 configurations:
|
|
// Request non-temporary address.
|
|
bool request_na_;
|
|
// Request prefix delegation.
|
|
bool request_pd_;
|
|
|
|
std::unique_ptr<DHCPV4> state_machine_ipv4_;
|
|
// Parse DHCP configurations from the VariantDictionary.
|
|
void ParseConfigs(const brillo::VariantDictionary& configs);
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(Service);
|
|
};
|
|
|
|
} // namespace dhcp_client
|
|
|
|
#endif // DHCP_CLIENT_SERVICE_H_
|