// 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;

/// Event defines the events the Router Manager will generate based on configuration state changes.
/// The event contains only the object that has changed; for example, if a new forwarding rule
/// is added the event only contains that route, not the full routing table.
flexible union Event {
    1: Id deleted_element; // Set when an element (i.e. route, firewall rule, etc) is deleted.
    2: Lif lif;
    3: Port port;
    4: Route route;
    5: SecurityFeatures security_features;
    6: PortForwardingRule forwarding_rule;
    7: PortTriggerRule trigger_rule;
    8: FilterRule filter_rule;
    9: Ipv6PinHoleRule ipv6_pin_hole;
    10: DmzHost dhz_host;
    11: DhcpServerOptions dhcp_options;
    12: DhcpReservation dhcp_reservation;
    13: DnsResolverConfig dns_resolver;
    14: DnsForwarder dns_forwarder;
    15: SystemConfig system_config;
};

// TODO(dpradilla): Need to add  events reflecting network state changes, such as link state
// changes, learned routes, dhcp assignments, etc.
// TODO(dpradilla): Need to add a mechanism for telemetry collection and possibly (TBD), set alarms based.
// on a given metric.
