blob: f74f05e6dac2957ff49cf8ec564459b5351c2f5b [file] [log] [blame]
// Copyright 2019 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.
library fuchsia.router.config;
using fuchsia.net;
/// LanProperties holds the configuration associated with a LAN interface.
table LanProperties {
1: CidrAddress address_v4;
2: bool enable_dhcp_server;
3: DhcpServerConfig dhcp_config;
4: CidrAddress address_v6;
5: bool enable_dns_forwarder;
6: bool enable;
};
/// Range of addresses in the interface subnet available for DHCP assignment.
struct AddressPool {
Id element;
fuchsia.net.Ipv4Address from;
fuchsia.net.Ipv4Address to;
};
table DhcpServerOptions {
1: Id element;
// Lease time in seconds.
2: uint32 lease_time_sec;
// Default gateway to advertise.
3: fuchsia.net.Ipv4Address default_gateway;
// DNS configuration to advertise.
// If not set and dns_forwarder is enabled on an interface, it will advertise
// the interface's IP address as the DNS resolver.
4: DnsSearch dns_server;
// Enable/disable DHCP server
5: bool enable;
};
/// DhcpReservation hold a mac to address DHCP association.
struct DhcpReservation {
Id element;
string name;
fuchsia.net.Ipv4Address address;
fuchsia.net.MacAddress mac;
};
struct DhcpServerConfig {
DhcpServerOptions options;
AddressPool pool;
vector<DhcpReservation> reservations;
};