mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 19:08:20 +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/firewall"
|
||||||
"nfsense.net/nfsense/internal/definitions/network"
|
"nfsense.net/nfsense/internal/definitions/network"
|
||||||
"nfsense.net/nfsense/internal/definitions/object"
|
"nfsense.net/nfsense/internal/definitions/object"
|
||||||
|
"nfsense.net/nfsense/internal/definitions/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
@ -16,6 +17,7 @@ type Config struct {
|
||||||
Firewall firewall.Firewall `json:"firewall" validate:"required,dive"`
|
Firewall firewall.Firewall `json:"firewall" validate:"required,dive"`
|
||||||
Object object.Object `json:"object" validate:"required,dive"`
|
Object object.Object `json:"object" validate:"required,dive"`
|
||||||
Network network.Network `json:"network" 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
|
// 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