syntax = "proto3";

service DhcpTracker {
  /* get list of clients detected in LAN network */
  rpc GetClients (ClientsRequest) returns (DhcpClients) {};

  /* get Layer 2 addess (MAC) for LAN ip address (v4 or v6) */
  rpc GetHwAddr (HwAddrRequest) returns (HwAddrResponse) {};
}

message ClientsRequest {
}

message DhcpClient {
  bytes hw_address = 1;
  string last_seen = 2;
  string client_hostname = 3;
  string ip_address = 4;
}

message DhcpClients {
  repeated DhcpClient clients = 1;
}

message HwAddrRequest {
  string ip_address = 1; // IPv4 or IPv6 address
}

message HwAddrResponse {
  bytes hw_address = 1; // MAC address
}
