48 lines
1.3 KiB
HCL
48 lines
1.3 KiB
HCL
locals {
|
|
netmask_to_prefix = {
|
|
"0.0.0.0" = 0
|
|
"128.0.0.0" = 1
|
|
"192.0.0.0" = 2
|
|
"224.0.0.0" = 3
|
|
"240.0.0.0" = 4
|
|
"248.0.0.0" = 5
|
|
"252.0.0.0" = 6
|
|
"254.0.0.0" = 7
|
|
"255.0.0.0" = 8
|
|
"255.128.0.0" = 9
|
|
"255.192.0.0" = 10
|
|
"255.224.0.0" = 11
|
|
"255.240.0.0" = 12
|
|
"255.248.0.0" = 13
|
|
"255.252.0.0" = 14
|
|
"255.254.0.0" = 15
|
|
"255.255.0.0" = 16
|
|
"255.255.128.0" = 17
|
|
"255.255.192.0" = 18
|
|
"255.255.224.0" = 19
|
|
"255.255.240.0" = 20
|
|
"255.255.248.0" = 21
|
|
"255.255.252.0" = 22
|
|
"255.255.254.0" = 23
|
|
"255.255.255.0" = 24
|
|
"255.255.255.128" = 25
|
|
"255.255.255.192" = 26
|
|
"255.255.255.224" = 27
|
|
"255.255.255.240" = 28
|
|
"255.255.255.248" = 29
|
|
"255.255.255.252" = 30
|
|
"255.255.255.254" = 31
|
|
"255.255.255.255" = 32
|
|
}
|
|
prefix_length = lookup(local.netmask_to_prefix, var.cobbler_netmask, 24)
|
|
host_bits = 32 - local.prefix_length
|
|
total_hosts = pow(2, local.host_bits)
|
|
last_usable_ip = local.total_hosts - 2
|
|
|
|
# derive subnet base from instance IP
|
|
cidr_block = cidrsubnet("${incus_instance.this.ipv4_address}/${local.prefix_length}", 0, 0)
|
|
|
|
# get the last usable IP
|
|
gateway_ip = cidrhost(local.cidr_block, local.last_usable_ip)
|
|
}
|