syntax = "proto3";

option go_package = "github.com/opencord/voltha/protos/go/voltha";

package voltha;

import "meta.proto";
import "google/api/annotations.proto";
import "openflow_13.proto";

message LogicalPortId {
    // unique id of logical device
    string id = 1;

    // id of the port on the logical device
    string port_id = 2;
}

message LogicalPort {
    string id = 1;
    openflow_13.ofp_port ofp_port = 2;
    string device_id = 3;
    uint32 device_port_no = 4;
    bool root_port = 5;
    openflow_13.ofp_port_stats ofp_port_stats = 6;
}

message LogicalPorts {
    repeated LogicalPort items = 1;
}

message LogicalDevice {

    // unique id of logical device
    string id = 1;

    // unique datapath id for the logical device (used by the SDN controller)
    uint64 datapath_id = 2;

    // device description
    openflow_13.ofp_desc desc = 3;

    // device features
    openflow_13.ofp_switch_features switch_features = 4;

    // name of the root device anchoring logical device
    string root_device_id = 5;

    // logical device ports
    repeated LogicalPort ports = 128 [(child_node) = {key: "id"}];

    // flows configured on the logical device
    openflow_13.Flows flows = 129 [(child_node) = {}];

    // meters configured on the logical device
    openflow_13.Meters meters = 130 [(child_node) = {}];

    // flow groups configured on the logical device
    openflow_13.FlowGroups flow_groups = 131 [(child_node) = {}];

}

message LogicalDevices {
    repeated LogicalDevice items = 1;
}
