| // 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; |
| |
| enum ErrorCode { |
| INTERNAL = 1; |
| NOT_FOUND = 2; |
| NOT_SUPPORTED = 3; |
| INVALID_ARGS = 4; |
| ALREADY_EXISTS = 5; |
| }; |
| |
| struct Error { |
| ErrorCode code; |
| string? description; |
| }; |
| |
| /// RouterAdmin provides APIs for administering the router. |
| [Discoverable] |
| protocol RouterAdmin { |
| CreateWan(string name, uint16 vlan, vector<uint32> ports) -> (Id? id, Error? error); |
| CreateLan(string name, uint16 vlan, vector<uint32> ports) -> (Id? id, Error? error); |
| |
| RemoveWan(Id wan_id) -> (Error? error); |
| RemoveLan(Id lan_id) -> (Error? error); |
| |
| // WAN parameters, such as connection type, ip address aquisition method. |
| SetWanProperties(Id wan_id, WanProperties properties) -> (Error? error); |
| |
| // LAN parameters, such as ip address, DHCP enable. |
| SetLanProperties(Id lan_id, LanProperties properties) -> (Error? error); |
| |
| // DHCP server configuration: range to assign, DNS to advertise, per LAN setting. |
| SetDhcpAddressPool(Id lan_id, AddressPool pool) -> (Error? error); |
| SetDhcpServerOptions(Id lan_id, DhcpServerOptions options) -> (Error? error); |
| SetDhcpReservation(Id lan_id, DhcpReservation reservation) -> (Id? reservation_id, Error? error); |
| DeleteDhcpReservation(Id reservation_id) -> (Error? error); |
| |
| // Device system configuration. |
| SetSystemConfig(SystemConfig config) -> (Id? id, Error? error); |
| |
| // DNS resolver configuration. |
| SetDnsResolver(DnsResolverConfig config) -> (Id? id, Error? error); |
| // DNS forwarder configuration. |
| SetDnsForwarder(DnsForwarderConfig config) -> (Error? error); |
| // Local names to be served by the DNS forwarder. |
| AddDnsEntry(DnsForwarderEntry entry) -> (Id? entry_id, Error? error); |
| DeleteDnsEntry(Id entry_id) -> (Error? error); |
| |
| // Static routes. |
| SetRoute(Route route) -> (Id? id, Error? error); |
| DeleteRoute(Id route_id) -> (Error? error); |
| UpdateRouteMetric(Id route_id, uint32 metric) -> (Error? error); |
| |
| // Firewall rules. |
| SetSecurityFeatures(SecurityFeatures features) -> (Error? error); |
| |
| SetPortForward(PortForwardingRule rule) -> (Id? rule_id, Error? error); |
| DeletePortForward(Id rule_id) -> (Error? error); |
| |
| SetPortTrigger(PortTriggerRule rule) -> (Id? rule_id, Error? error); |
| DeletePortTrigger(Id rule_id) -> (Error? error); |
| |
| SetFilter(FilterRule rule) -> (Id? rule_id, Error? error); |
| DeleteFilter(Id rule_id) -> (Error? error); |
| |
| SetIpv6PinHole(Ipv6PinHoleRule rule) -> (Id? rule_id, Error? error); |
| DeleteIpv6PinHole(Id rule_id) -> (Error? error); |
| |
| SetDmzHost(DmzHost rule) -> (Id? rule_id, Error? error); |
| DeleteDmzHost(Id rule_id) -> (Error? error); |
| |
| CreateWlanNetwork(WlanNetwork network) -> (Id? iface, Error? error); |
| DeleteWlanNetwork(Id network_id) -> (Error? error); |
| }; |
| |
| /// RouterSystem provides APIs for managing features that are considered crytical for the system. |
| /// For example, setting filter rules that come into effect on startup. |
| [Discoverable] |
| protocol RouterSystem { |
| SetAcl(SystemAcl rule) -> (Id? acl_id, Error? error); |
| DeleteAcl(Id acl_id) -> (Error? error); |
| GetAcl(Id acl_id) -> (SystemAcl acl, Error? error); |
| GetAcls() -> (Error? error); |
| }; |
| |
| /// RouterState provide APIs for querying the router state. |
| [Discoverable] |
| protocol RouterState { |
| GetWan(Id wan_id) -> (Lif wan_lif, Error? error); |
| GetWans() -> (vector<Lif> wans); |
| GetWanPorts(Id wan_id) -> (vector<uint32> port_ids, Error? error); |
| GetLan(Id lan_id) -> (Lif lan_lif, Error? error); |
| GetLans() -> (vector<Lif> lans); |
| GetLanPorts(Id lan_id) -> (vector<uint32> port_ids, Error? error); |
| GetPort(uint32 port_id) -> (Port? port, Error? error); |
| GetPorts() -> (vector<Port> ports); |
| |
| GetWlanNetworks() -> (vector<WlanNetwork> networks); |
| |
| // WAN parameters, such as connection type, ip address aquisition method. |
| GetWanProperties(Id wan_id) -> (WanProperties properties, Error? error); |
| |
| // LAN parameters, such as ip address, DHCP enable. |
| GetLanProperties(Id lan_id) -> (LanProperties properties, Error? error); |
| |
| // DHCP services configuration: range to assign, DNS to advertise, per LAN setting |
| GetDhcpConfig(Id lan_id) -> (DhcpServerConfig? dhcp_config, Error? error); |
| |
| // DNS configuration. |
| GetDnsResolver() -> (DnsResolverConfig dns_resolver); |
| GetDnsForwarder() -> (DnsForwarder dns_forwarder); |
| |
| // Static routes: |
| GetRoutes() -> (vector<Route> routes); |
| GetRoute(Id route_id) -> (Route? route, Error? error); |
| |
| // Firewall rules |
| GetSecurityFeatures() -> (SecurityFeatures features); |
| GetPortForward(Id rule_id) -> (PortForwardingRule? rule, Error? error); |
| GetPortTrigger(Id rule_id) -> (PortTriggerRule? rule, Error? error); |
| GetFilter(Id rule_id) -> (FilterRule? rule, Error? error); |
| GetIpv6PinHole(Id rule_id) -> (Ipv6PinHoleRule? rule, Error? error); |
| GetDmzHost(Id rule_id) -> (DmzHost? rule, Error? error); |
| GetPortForwards() -> (vector<PortForwardingRule> port_forward_rules); |
| GetPortTriggers() -> (vector<PortTriggerRule> port_trigger_rules); |
| GetFilters() -> (vector<FilterRule> port_filter_rules); |
| GetIpv6PinHoles() -> (vector<Ipv6PinHoleRule> pinhole_rules); |
| |
| // Device information. |
| GetDevice() -> (Device device); |
| GetSystemConfig() -> (SystemConfig config); |
| GetRadios() -> (vector<Radio> radios); |
| |
| -> OnChange(vector<Event> events); |
| }; |