blob: 3926e4edd3c8711e0523b1aecbb88700f1920ea9 [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;
enum WanConnection {
DIRECT = 1; // Default
PPPoE = 2;
PPTP = 3;
L2TP = 4;
};
enum WanAddressMethod {
AUTOMATIC = 1; // Default
MANUAL = 2;
};
enum WanIpV6ConnectionMode {
// Use a static IPv6 address.
STATIC = 1;
// NDP proxy is done.
// WAN interface and LAN devices obtain an IPv6 address from the upstream router.
PASSTHROUGH = 2;
// An IPv6 prefix is requested from the upstream router. It is used for LAN addresses.
DELEGATION = 3;
};
table CidrAddress {
1: fuchsia.net.IpAddress address;
2: uint8 prefix_length;
};
table Credentials {
1: string user;
2: string password;
};
table Pppoe {
1: Credentials credentials;
};
table Pptp {
1: Credentials credentials;
2: fuchsia.net.IpAddress server;
};
table L2tp {
1: Credentials credentials;
2: fuchsia.net.IpAddress server;
};
xunion ConnectionParameters {
Pppoe pppoe;
Pptp pptp;
L2tp l2tp;
};
/// WanProperties holds the configuration associated to a WAN interface.
/// It holds the type of upstream connection and authentication credentials for that connection,
/// the mechanism to use to obtain an IP address and control of the interface state.
table WanProperties {
1: WanConnection connection_type;
2: ConnectionParameters connection_parameters;
3: WanAddressMethod address_method;
4: CidrAddress address_v4;
5: fuchsia.net.IpAddress gateway_v4;
6: WanIpV6ConnectionMode connection_v6_mode;
7: CidrAddress address_v6;
8: fuchsia.net.IpAddress gateway_v6;
// This is the hostname that will be reported on the
// DHCP request (option 12) on the associated WAN interface.
// If not set, the device hostname will be used.
9: string hostname;
10: fuchsia.net.MacAddress clone_mac;
// mtu 0 == auto, note that IPv6 requires at least 1280 bytes (or link layer fragmentation).
11: uint32 mtu;
// enable/disable the interface.
12: bool enable;
// interface preference metric. Lower is preferred.
13: uint32 metric;
};