syntax = "proto3";

// This package provides a configuration format for configuring IP-based
// networking on Linux. This is going to be used in cases where automatic
// configuration by Monogon's network stack is infeasible or network
// configuration information needs to be provided to non-Monogon systems.
// It's kept human-readable as it may be written by humans directly when
// configuring Monogon systems.
package osbase.net.proto;
option go_package = "source.monogon.dev/osbase/net/proto";

// Device references one or more network adapters, i.e. network devices which
// connect this kernel to an outside system.
// All conditions which are set in the message are ANDed together.
message Device {
  // Matches the permanent hardware address of the interface. The raw address
  // is hex-encoded and colons are inserted between every byte boundary.
  // This is the MAC address on Ethernet interfaces.
  string hardware_address = 1;
  // Matches the Linux driver of the network interface
  string driver = 2;
  // In case of multiple matches, use the n-th interface instead of the first.
  int32 index = 3;
}
// Bond defines an aggregate of physical layer 2 links which behave as one
// virtual layer 2 link. This includes active-passive as well as active-
// active configurations with two or more links.
message Bond {
  // List of interface names which are a member of this bond. It's recommended
  // to only use Device-type interfaces here as others might behave
  // unexpectedly (Bond on VLAN interfaces) or fail to be configured entirely
  // (Bond on Bond). All interface names listed here must exist as part of the
  // same Net message as this Bond interface.
  repeated string member_interface = 1;
  // Minimum number of links to be up to consider the bond to be up.
  // Can be used in case expected bandwith is more than a single interface
  // can take in which case it might be preferable to not pass any traffic
  // over causing significant packet loss.
  int32 min_links = 2;
  message CarrierMonitor {
    // Interval at which the PCS is polled for physical link status if Linux's
    // carrier monitoring is not available.
    int32 polling_interval_ms = 1;
    // Disable the use of Linux's carrier monitoring which can use interrupts
    // and force polling in all cases.
    bool force_polling = 4;
    // Amount of time to delay marking the link as down in the bond after the
    // carrier has been lost. Should be a multiple of polling_interval_ms.
    int32 down_delay_ms = 2;
    // Amount of time to delay marking the link as up in the bond after the
    // carrier is available. Should be a multiple of polling_interval_ms.
    int32 up_delay_ms = 3;
  }
  oneof link_monitor {
    CarrierMonitor carrier_monitor = 3;
    // TODO(#186): Support ARP monitor for other modes
  }
  enum TransmitHashPolicy {
    // Layer 2 MAC address
    TRANSMIT_HASH_POLICY_LAYER2 = 0;
    // IP address, protocol and port
    TRANSMIT_HASH_POLICY_LAYER3_4 = 1;
    // MAC address and IP address
    TRANSMIT_HASH_POLICY_LAYER2_3 = 2;
    // Encapsulated MAC address and IP address
    TRANSMIT_HASH_POLICY_ENCAP_LAYER2_3 = 3;
    // Encapsulated IP address, protocol and port
    TRANSMIT_HASH_POLICY_ENCAP_LAYER3_4 = 4;
    // VLAN ID and source MAC
    TRANSMIT_HASH_POLICY_VLAN_SRCMAC = 5;
  }
  TransmitHashPolicy transmit_hash_policy = 4;
  // Use the Link Aggregation Control Protocol to automatically use the
  // available links as best as possible.
  message LACP {
    enum Rate {
      // LACP slow rate, one packet every 30s
      RATE_SLOW = 0;
      // LACP fast rate, one packet every 1s
      RATE_FAST = 1;
    }
    Rate rate = 1;
    enum SelectionLogic {
      SELECTION_LOGIC_STABLE = 0;
      SELECTION_LOGIC_BANDWIDTH = 1;
      SELECTION_LOGIC_COUNT = 2;
    }
    SelectionLogic selection_logic = 2;
    int32 actor_system_priority = 3;
    int32 user_port_key = 4;
    string actor_system_mac = 5;
  }
  message ActiveBackup {
    // TODO(#186): More settings
  }
  oneof mode {
    LACP lacp = 5;
    ActiveBackup active_backup = 6;
  }
}

message VLAN {
  // Name of the parent interface passing tagged packets. The interface
  // referenced here must exist in the same Net message as this VLAN
  // interface.
  string parent = 1;
  // VLAN ID (1-4094)
  int32 id = 2;
  enum Protocol {
    // C-VLAN, also known as "standard" VLAN inserts a header with the
    // VLAN ID (VID) right before the EtherType.
    PROTOCOL_CVLAN = 0;
    // S-VLAN, also known as QinQ or 802.1ad (obsolete) inserts a second VLAN ID
    // before the C-VLAN header. This allows stacking two VLANs. The ID
    // specified here is just for the outer VLAN, the inner one can be set by
    // creating another VLAN interface and setting this one to be its parent.
    PROTOCOL_SVLAN = 1;
  }
  Protocol protocol = 3;
}

// IPv4Autoconfig contains settings for the automatic configuration of IPv4
// addresses, routes and further network information via DHCPv4.
message IPv4Autoconfig {}

// IPv6Autoconfig contains settings for the automatic configuration of IPv6
// addreses, routes and further network information via ICMPv6 Router
// Advertisements and optionally DHCPv6 if indicated by the Router
// Advertisement.
message IPv6Autoconfig {
  enum Privacy {
    // Do not generate privacy addresses.
    PRIVACY_DISABLE = 0;
    // Generate privacy addresses, but prefer non-privacy addresses.
    PRIVACY_AVOID = 1;
    // Generate privacy addresses and use them over other non-privacy
    // addresses.
    PRIVACY_PREFER = 2;
  }
  // privacy controls if and how privacy addresses (see RFC 4941) are used if
  // DHCPv6 is not used for addressing. If DHCPv6 is used for addressing
  // any privacy considerations lie with the DHCPv6 server.
  Privacy privacy = 1;
}

message Interface {
  // Name of the interface. Used as a reference in this config as well as for
  // the name of the kernel interface. Must not be empty, less than 16 UTF-8
  // bytes long and cannot contain spaces, forward slashes, colons or percent
  // signs. The UTF-8 encoding can also not include 0xa0 which is interpreted
  // as a space by Linux since its ctype database is based on Latin1.
  string name = 1;

  // Type of interface
  oneof type {
    Device device = 3;
    Bond bond = 4;
    VLAN vlan = 5;
  }
  // Enable automatic IPv4 network configuration via DHCPv4.
  IPv4Autoconfig ipv4_autoconfig = 10;

  // Enable automatic IPv6 network configuration via router advertisements and
  // DHCPv6.
  IPv6Autoconfig ipv6_autoconfig = 11;

  // IP addresses to be statically configured. These can either be single
  // IP addresses (both IPv4 and IPv6) as well as CIDR-style networks for
  // which a corresponding route is automatically added. If single IP addreses
  // are used, a corresponding route must be added, otherwise no traffic will
  // be routed out of the interface.
  repeated string address = 12;

  message Route {
    // Destination in CIDR form or as a single IP.
    string destination = 1;

    // If set, the destination network is not directly on-link, but reachable
    // via a gateway which is on-link. On point-to-point networks without
    // ARP/NDP this doesn't do anything should never be set.
    // Note that here, different from other network configs, the gateway IP (if
    // configured) is assumed to be on-link for the interface it's configured
    // under. Configuring a route with a gateway IP which is routed to another
    // interface is invalid.
    string gateway_ip = 2;

    // An optional hint to the kernel which source address to prefer when using
    // this route.
    string source_ip = 3;

    // Metric of this interface route. A lower metric route wins over one with a
    // higher metric. If unset, defaults to 0 which is the default metric in
    // Linux.
    int32 metric = 4;
  }
  // List of routes which direct traffic into this interface.
  repeated Route route = 14;

  // Maximum transmission unit of the interface. If unset it will be
  // automatically configured by DHCP or LLDP or left at the interface default
  // value. Minimum value is 1280 bytes as required by IPv6.
  int32 mtu = 13;
}

message Nameserver {
  // The IP address of the nameserver in string form.
  string ip = 1;
}

// Net contains a network configuration for a single network namespace.
//
// This is effectively the top-level configuration message for a machine.
message Net {
  repeated Interface interface = 1;
  repeated Nameserver nameserver = 3;
}
