types.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package dhcp
  2. import "time"
  3. // DHCPClient represents a MikroTik RouterOS-style /ip dhcp-client instance.
  4. type DHCPClient struct {
  5. ID string `json:"id"`
  6. Interface string `json:"interface"`
  7. Enabled bool `json:"enabled"`
  8. AddDefaultRoute bool `json:"add_default_route"`
  9. DefaultRouteDistance int `json:"default_route_distance"`
  10. UsePeerDNS bool `json:"use_peer_dns"`
  11. UsePeerNTP bool `json:"use_peer_ntp"`
  12. Comment string `json:"comment"`
  13. Status string `json:"status"` // "bound", "searching", "stopped", "disabled", "error"
  14. IPAddress string `json:"ip_address"`
  15. Gateway string `json:"gateway"`
  16. DHCPServer string `json:"dhcp_server"`
  17. DNSServers []string `json:"dns_servers"`
  18. Domain string `json:"domain"`
  19. LeaseTime int `json:"lease_time"`
  20. ExpiresIn string `json:"expires_in"`
  21. ObtainedAt time.Time `json:"obtained_at"`
  22. ExpiresAt time.Time `json:"expires_at"`
  23. PID int `json:"pid"`
  24. }
  25. // CreateDHCPClientRequest specifies parameters when creating a new DHCP client on an interface.
  26. type CreateDHCPClientRequest struct {
  27. Interface string `json:"interface"`
  28. Enabled bool `json:"enabled"`
  29. AddDefaultRoute bool `json:"add_default_route"`
  30. DefaultRouteDistance int `json:"default_route_distance"`
  31. UsePeerDNS bool `json:"use_peer_dns"`
  32. UsePeerNTP bool `json:"use_peer_ntp"`
  33. Comment string `json:"comment"`
  34. }
  35. // UpdateDHCPClientRequest allows modifying an existing DHCP client's settings.
  36. type UpdateDHCPClientRequest struct {
  37. Enabled *bool `json:"enabled,omitempty"`
  38. AddDefaultRoute *bool `json:"add_default_route,omitempty"`
  39. DefaultRouteDistance *int `json:"default_route_distance,omitempty"`
  40. UsePeerDNS *bool `json:"use_peer_dns,omitempty"`
  41. UsePeerNTP *bool `json:"use_peer_ntp,omitempty"`
  42. Comment *string `json:"comment,omitempty"`
  43. }
  44. // DHCPSummary provides quick telemetry for badges and KPI cards.
  45. type DHCPSummary struct {
  46. TotalClients int `json:"total_clients"`
  47. BoundClients int `json:"bound_clients"`
  48. Searching int `json:"searching"`
  49. Disabled int `json:"disabled"`
  50. }