mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-10 18:38:22 +00:00
Add DHCP Server Definitions
This commit is contained in:
parent
72bf96295d
commit
43495f5507
6 changed files with 97 additions and 0 deletions
|
@ -9,6 +9,7 @@ import (
|
|||
"nfsense.net/nfsense/internal/definitions/firewall"
|
||||
"nfsense.net/nfsense/internal/definitions/network"
|
||||
"nfsense.net/nfsense/internal/definitions/object"
|
||||
"nfsense.net/nfsense/internal/definitions/service"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
|
@ -16,6 +17,7 @@ type Config struct {
|
|||
Firewall firewall.Firewall `json:"firewall" validate:"required,dive"`
|
||||
Object object.Object `json:"object" validate:"required,dive"`
|
||||
Network network.Network `json:"network" validate:"required,dive"`
|
||||
Service service.Service `json:"service" validate:"required,dive"`
|
||||
}
|
||||
|
||||
// Clone TODO find a better way to deep copy
|
||||
|
|
21
internal/definitions/service/dhcp_v4.go
Normal file
21
internal/definitions/service/dhcp_v4.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
type DHCPv4 struct {
|
||||
Interface string
|
||||
Pool []string
|
||||
DefaultLeaseTime time.Duration
|
||||
MaxLeaseTime time.Duration
|
||||
|
||||
GatewayMode Mode
|
||||
Gateway *string
|
||||
DNSServerMode Mode
|
||||
DNSServer *[]string
|
||||
NTPServerMode Mode
|
||||
NTPServer *[]string
|
||||
|
||||
Reservations []Reservation
|
||||
}
|
19
internal/definitions/service/dhcp_v6.go
Normal file
19
internal/definitions/service/dhcp_v6.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package service
|
||||
|
||||
import "time"
|
||||
|
||||
type DHCPv6 struct {
|
||||
Interface string
|
||||
Pool []string
|
||||
DefaultLeaseTime time.Duration
|
||||
MaxLeaseTime time.Duration
|
||||
|
||||
GatewayMode Mode
|
||||
Gateway *string
|
||||
DNSServerMode Mode
|
||||
DNSServer *[]string
|
||||
NTPServerMode Mode
|
||||
NTPServer *[]string
|
||||
|
||||
Reservations []Reservation
|
||||
}
|
37
internal/definitions/service/mode.go
Normal file
37
internal/definitions/service/mode.go
Normal file
|
@ -0,0 +1,37 @@
|
|||
package service
|
||||
|
||||
import "encoding/json"
|
||||
|
||||
type Mode int
|
||||
|
||||
const (
|
||||
None Mode = iota
|
||||
Interface
|
||||
Specify
|
||||
)
|
||||
|
||||
func (t Mode) String() string {
|
||||
return [...]string{"none", "interface", "specify"}[t]
|
||||
}
|
||||
|
||||
func (t *Mode) FromString(input string) Mode {
|
||||
return map[string]Mode{
|
||||
"none": None,
|
||||
"interface": Interface,
|
||||
"specify": Specify,
|
||||
}[input]
|
||||
}
|
||||
|
||||
func (t Mode) MarshalJSON() ([]byte, error) {
|
||||
return json.Marshal(t.String())
|
||||
}
|
||||
|
||||
func (t *Mode) UnmarshalJSON(b []byte) error {
|
||||
var s string
|
||||
err := json.Unmarshal(b, &s)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
*t = t.FromString(s)
|
||||
return nil
|
||||
}
|
12
internal/definitions/service/reservation.go
Normal file
12
internal/definitions/service/reservation.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package service
|
||||
|
||||
import (
|
||||
"net/netip"
|
||||
|
||||
"nfsense.net/nfsense/internal/definitions/common"
|
||||
)
|
||||
|
||||
type Reservation struct {
|
||||
HardwareAddress common.HardwareAddress
|
||||
IPAddress netip.Addr
|
||||
}
|
6
internal/definitions/service/service.go
Normal file
6
internal/definitions/service/service.go
Normal file
|
@ -0,0 +1,6 @@
|
|||
package service
|
||||
|
||||
type Service struct {
|
||||
DHCPv4 []DHCPv4 `json:"dhcp_v4" validate:"required,dive"`
|
||||
DHCPv6 []DHCPv6 `json:"dhcp_v6" validate:"required,dive"`
|
||||
}
|
Loading…
Add table
Reference in a new issue