53 lines
1.7 KiB
Markdown
53 lines
1.7 KiB
Markdown
---
|
|
layout: "functions"
|
|
page_title: "cidrsubnet - Functions - Configuration Language"
|
|
sidebar_current: "docs-funcs-ipnet-cidrsubnet"
|
|
description: |-
|
|
The cidrsubnet function calculates a subnet address within a given IP network
|
|
address prefix.
|
|
---
|
|
|
|
# `cidrsubnet` Function
|
|
|
|
-> **Note:** This page is about Terraform 0.12 and later. For Terraform 0.11 and
|
|
earlier, see
|
|
[0.11 Configuration Language: Interpolation Syntax](../../configuration-0-11/interpolation.html).
|
|
|
|
`cidrsubnet` calculates a subnet address within given IP network address prefix.
|
|
|
|
```hcl
|
|
cidrsubnet(prefix, newbits, netnum)
|
|
```
|
|
|
|
`prefix` must be given in CIDR notation, as defined in
|
|
[RFC 4632 section 3.1](https://tools.ietf.org/html/rfc4632#section-3.1).
|
|
|
|
`newbits` is the number of additional bits with which to extend the prefix.
|
|
For example, if given a prefix ending in `/16` and a `newbits` value of
|
|
`4`, the resulting subnet address will have length `/20`.
|
|
|
|
`netnum` is a whole number that can be represented as a binary integer with
|
|
no more than `newbits` binary digits, which will be used to populate the
|
|
additional bits added to the prefix.
|
|
|
|
This function accepts both IPv6 and IPv4 prefixes, and the result always uses
|
|
the same addressing scheme as the given prefix.
|
|
|
|
## Examples
|
|
|
|
```
|
|
> cidrsubnet("172.16.0.0/12", 4, 2)
|
|
172.18.0.0/16
|
|
> cidrsubnet("10.1.2.0/24", 4, 15)
|
|
10.1.2.240/28
|
|
> cidrsubnet("fd00:fd12:3456:7890::/56", 16, 162)
|
|
fd00:fd12:3456:7800:a200::/72
|
|
```
|
|
|
|
## Related Functions
|
|
|
|
* [`cidrhost`](./cidrhost.html) calculates the IP address for a single host
|
|
within a given network address prefix.
|
|
* [`cidrnetmask`](./cidrnetmask.html) converts an IPv4 network prefix in CIDR
|
|
notation into netmask notation.
|