// Copyright 2017 The LUCI Authors. All rights reserved.
// Use of this source code is governed under the Apache License, Version 2.0
// that can be found in the LICENSE file.

syntax = "proto3";

package config;

import "go.chromium.org/luci/machine-db/api/common/v1/states.proto";

// A VLAN to store in the database.
message VLAN {
  // The ID of this VLAN. Must be unique.
  int64 id = 1;
  // An alias for this VLAN.
  string alias = 2;
  // The block of IPv4 addresses belonging to this VLAN.
  string cidr_block = 3;
  // The state of this VLAN.
  common.State state = 4;
}

// A list of VLANs.
message VLANs {
  // A list of VLANs.
  repeated VLAN vlan = 1;
}
