kea-manage/ipv4/reservation/reservation.go

51 lines
1.2 KiB
Go

package reservation
import (
"git.staur.ca/stobbsm/kea-manage/lib/types"
)
const insertHostReservation = `INSERT INTO hosts (dhcp_identifier,
dhcp_identifier_type,
dhcp4_subnet_id,
ipv4_address,
hostname)
VALUES (DECODE(REPLACE($1, ':', ''), 'hex'), $2, $3, (SELECT ($4::inet - '0.0.0.0'::inet)), $5);`
const getHostIDWithMacAddr = `SELECT host_id
FROM hosts
WHERE dhcp4_subnet_id = $1
AND dhcp_identifier_type = $2
AND dhcp_identifier = (DECODE(REPLACE($3, ':', ''), 'hex'));`
const insertIfNotExists = `INSERT INTO hosts (dhcp_identifier,
dhcp_identifier_type,
dhcp4_subnet_id,
ipv4_address,
hostname)
SELECT DECODE(REPLACE($1, ':', ''), 'hex'), $2, $3, (SELECT ($4::inet - '0.0.0.0'::inet)), $5
WHERE NOT EXISTS (
SELECT host_id FROM hosts
WHERE dhcp4_subnet_id = $3
AND dhcp_identifier_type = $2
AND dhcp_identifier = DECODE(REPLACE($1, ':', ''), 'hex'));`
type ReservationV4 struct {
Type int
SubnetID int
MacAddr string
Ipv4 string
Hostname string
}
func ReserveV4MacAddr(mac string, addr string, hostname string, subnet int) *ReservationV4 {
r := &ReservationV4{
MacAddr: mac,
Type: int(types.MacAddress),
SubnetID: subnet,
Ipv4: addr,
Hostname: hostname,
}
return r
}