// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

use serde_derive::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum NetAddress {
    V4([u8; 4], u32),
    V6([u8; 16], u32),
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct WANConfiguration {
    pub addr: NetAddress,
    pub dynamically_assigned: bool, // Was addr assigned by dhcp?
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct DHCPConfiguration {
    pub dns_server_addr: NetAddress,
    pub netmask: NetAddress,
    pub addr_range: (NetAddress, NetAddress),
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct APConfiguration {
    pub ssid: Vec<u8>,
    pub password: String,
}
