net functions
The net namespace contains functions that can help deal with network-related
lookups and calculations. Some of these functions return specifically-typed
values that contain additional methods useful for formatting or further
calculations.
net.LookupIP
Resolve an IPv4 address for a given host name. When multiple IP addresses are resolved, the first one is returned.
Added in gomplate v1.9.0
Usage
net.LookupIP namename | net.LookupIPArguments
| name | description | 
|---|---|
name | 
(required) The hostname to look up. This can be a simple hostname, or a fully-qualified domain name. | 
Examples
$ gomplate -i '{{ net.LookupIP "example.com" }}'
93.184.216.34
net.LookupIPs
Resolve all IPv4 addresses for a given host name. Returns an array of strings.
Added in gomplate v1.9.0
Usage
net.LookupIPs namename | net.LookupIPsArguments
| name | description | 
|---|---|
name | 
(required) The hostname to look up. This can be a simple hostname, or a fully-qualified domain name. | 
Examples
$ gomplate -i '{{ join (net.LookupIPs "twitter.com") "," }}'
104.244.42.65,104.244.42.193
net.LookupCNAME
Resolve the canonical name for a given host name. This does a DNS lookup for the
CNAME record type. If no CNAME is present, a canonical form of the given name
is returned – e.g. net.LookupCNAME "localhost" will return "localhost.".
Added in gomplate v1.9.0
Usage
net.LookupCNAME namename | net.LookupCNAMEArguments
| name | description | 
|---|---|
name | 
(required) The hostname to look up. This can be a simple hostname, or a fully-qualified domain name. | 
Examples
$ gomplate -i '{{ net.LookupCNAME "www.amazon.com" }}'
d3ag4hukkh62yn.cloudfront.net.
net.LookupSRV
Resolve a DNS SRV service record.
This implementation supports the canonical RFC2782
form (i.e. _Service._Proto.Name), but other forms are also supported, such as
those served by Consul’s DNS interface.
When multiple records are returned, this function returns the first.
A net.SRV data structure is returned. The
following properties are available:
Target- (string) the hostname where the service can be reachedPort- (uint16) the service’s portPriority,Weight- see RFC2782 for details
Added in gomplate v1.9.0
Usage
net.LookupSRV namename | net.LookupSRVArguments
| name | description | 
|---|---|
name | 
(required) The service name to look up | 
Examples
$ gomplate -i '{{ net.LookupSRV "_sip._udp.sip.voice.google.com" | toJSONPretty "  " }}'
{
  "Port": 5060,
  "Priority": 10,
  "Target": "sip-anycast-1.voice.google.com.",
  "Weight": 1
}
net.LookupSRVs
Resolve a DNS SRV service record.
This implementation supports the canonical RFC2782
form (i.e. _Service._Proto.Name), but other forms are also supported, such as
those served by Consul’s DNS interface.
This function returns all available SRV records.
An array of net.SRV data structures is
returned. For each element, the following properties are available:
Target- (string) the hostname where the service can be reachedPort- (uint16) the service’s portPriority,Weight- see RFC2782 for details
Added in gomplate v1.9.0
Usage
net.LookupSRVs namename | net.LookupSRVsArguments
| name | description | 
|---|---|
name | 
(required) The hostname to look up. This can be a simple hostname, or a fully-qualified domain name. | 
Examples
input.tmpl:
{{ range (net.LookupSRVs "_sip._udp.sip.voice.google.com") -}}
priority={{.Priority}}/port={{.Port}}
{{- end }}$ gomplate -f input.tmpl
priority=10/port=5060
priority=20/port=5060
net.LookupTXT
Resolve a DNS TXT record.
This function returns all available TXT records as an array of strings.
Added in gomplate v1.9.0
Usage
net.LookupTXT namename | net.LookupTXTArguments
| name | description | 
|---|---|
name | 
(required) The host name to look up | 
Examples
$ gomplate -i '{{net.LookupTXT "example.com" | data.ToJSONPretty "  " }}'
[
  "v=spf1 -all"
]
net.ParseAddr
Parse the given string as an IP address (a
netip.Addr).
Any of netip.Addr’s methods may be called on the resulting value. See
the docs for details.
Added in gomplate v4.0.0
Usage
net.ParseAddr addraddr | net.ParseAddrArguments
| name | description | 
|---|---|
addr | 
(required) The IP string to parse. It must be either an IPv4 or IPv6 address. | 
Examples
$ gomplate -i '{{ (net.ParseAddr "192.168.0.1").IsPrivate }}'
true
$ gomplate -i '{{ $ip := net.ParseAddr (net.LookupIP "example.com") -}}
  {{ $ip.Prefix 12 }}'
93.176.0.0/12
net.ParseIP (deprecated)
Deprecation Notice: Use net.ParseAddr instead.
Parse the given string as an IP address (a netaddr.IP from the
inet.af/netaddr package).
Any of netaddr.IP’s methods may be called on the resulting value. See
the docs for details.
Added in gomplate v3.10.0
Usage
net.ParseIP ipip | net.ParseIPArguments
| name | description | 
|---|---|
ip | 
(required) The IP string to parse. It must be either an IPv4 or IPv6 address. | 
Examples
$ gomplate -i '{{ (net.ParseIP "192.168.0.1").IsPrivate }}'
true
$ gomplate -i '{{ $ip := net.ParseIP (net.LookupIP "example.com") -}}
  {{ $ip.Prefix 12 }}'
93.176.0.0/12
net.ParsePrefix
Parse the given string as an IP address prefix (CIDR) representing an IP
network (a netip.Prefix).
The string can be in the form "192.168.1.0/24" or "2001::db8::/32",
the CIDR notations defined in RFC 4632 and RFC 4291.
Any of netip.Prefix’s methods may be called on the resulting value. See
the docs for details.
Added in gomplate v4.0.0
Usage
net.ParsePrefix prefixprefix | net.ParsePrefixArguments
| name | description | 
|---|---|
prefix | 
(required) The IP address prefix to parse. It must represent either an IPv4 or IPv6 prefix, containing a /. | 
Examples
$ gomplate -i '{{ (net.ParsePrefix "192.168.0.0/24").Range }}'
192.168.0.0-192.168.0.255
$ gomplate -i '{{ $ip := net.ParseAddr (net.LookupIP "example.com") -}}
  {{ $net := net.ParsePrefix "93.184.0.0/16" -}}
  {{ $net.Contains $ip }}'
true
net.ParseIPPrefix (deprecated)
Deprecation Notice: Use net.ParsePrefix instead.
Parse the given string as an IP address prefix (CIDR) representing an IP
network (a netaddr.IPPrefix from the
inet.af/netaddr package).
The string can be in the form "192.168.1.0/24" or "2001::db8::/32",
the CIDR notations defined in RFC 4632 and RFC 4291.
Any of netaddr.IPPrefix’s methods may be called on the resulting value.
See the docs for details.
Added in gomplate v3.10.0
Usage
net.ParseIPPrefix ipprefixipprefix | net.ParseIPPrefixArguments
| name | description | 
|---|---|
ipprefix | 
(required) The IP address prefix to parse. It must represent either an IPv4 or IPv6 prefix, containing a /. | 
Examples
$ gomplate -i '{{ (net.ParseIPPrefix "192.168.0.0/24").Range }}'
192.168.0.0-192.168.0.255
$ gomplate -i '{{ $ip := net.ParseIP (net.LookupIP "example.com") -}}
  {{ $net := net.ParseIPPrefix "93.184.0.0/16" -}}
  {{ $net.Contains $ip }}'
true
$ gomplate -i '{{ $net := net.ParseIPPrefix "93.184.0.0/12" -}}
  {{ $net.Range }}'
93.176.0.0-93.191.255.255
net.ParseRange (experimental)
Experimental: This function is experimental and may be enabled with the --experimental flag.
Parse the given string as an inclusive range of IP addresses from the same
address family (a netipx.IPRange
from the go4.org/netipx module).
The string must contain a hyphen (-).
Any of netipx.IPRange’s methods may be called on the resulting value.
See the docs for details.
Note that this function is experimental for now, because it uses a third-party module which may be brought into the standard library in the future, which may require breaking changes to this function.
Added in gomplate v4.0.0
Usage
net.ParseRange iprangeiprange | net.ParseRangeArguments
| name | description | 
|---|---|
iprange | 
(required) The IP address range to parse. It must represent either an IPv4 or IPv6 range, containing a -. | 
Examples
$ gomplate -i '{{ (net.ParseRange "192.168.0.0-192.168.0.255").To }}'
192.168.0.255
$ gomplate -i '{{ $range := net.ParseRange "1.2.3.0-1.2.3.233" -}}
  {{ $range.Prefixes }}'
[1.2.3.0/25 1.2.3.128/26 1.2.3.192/27 1.2.3.224/29 1.2.3.232/31]
net.ParseIPRange (deprecated)
Deprecation Notice: Use net.ParseRange instead.
Parse the given string as an inclusive range of IP addresses from the same
address family (a netaddr.IPRange from the inet.af/netaddr package).
The string must contain a hyphen (-).
Any of netaddr.IPRange’s methods may be called on the resulting value.
See the docs for details.
Added in gomplate v3.10.0
Usage
net.ParseIPRange iprangeiprange | net.ParseIPRangeArguments
| name | description | 
|---|---|
iprange | 
(required) The IP address range to parse. It must represent either an IPv4 or IPv6 range, containing a -. | 
Examples
$ gomplate -i '{{ (net.ParseIPRange "192.168.0.0-192.168.0.255").To }}'
192.168.0.255
$ gomplate -i '{{ $range := net.ParseIPRange "1.2.3.0-1.2.3.233" -}}
  {{ $range.Prefixes }}'
[1.2.3.0/25 1.2.3.128/26 1.2.3.192/27]
net.CIDRHost (experimental)
Experimental: This function is experimental and may be enabled with the --experimental flag.
Calculates a full host IP address for a given host number within a given IP network address prefix.
The IP network can be in the form "192.168.1.0/24" or "2001::db8::/32",
the CIDR notations defined in RFC 4632 and RFC 4291.
Any of netip.Addr’s methods may be called on the resulting value. See
the docs for details.
Added in gomplate v3.11.0
Usage
net.CIDRHost hostnum prefixprefix | net.CIDRHost hostnumArguments
| name | description | 
|---|---|
hostnum | 
(required) Is a whole number that can be represented as a binary integer with no more than the number of digits remaining in the address after the given prefix. | 
prefix | 
(required) Must be given in CIDR notation. It must represent either an IPv4 or IPv6 prefix, containing a /. String or net.IPNet object returned from net.ParseIPPrefix can by used. | 
Examples
$ gomplate -i '{{ "10.12.127.0/20" | net.CIDRHost 268 }}'
10.12.113.12
net.CIDRNetmask (experimental)
Experimental: This function is experimental and may be enabled with the --experimental flag.
The result is a subnet address formatted in the conventional dotted-decimal IPv4 address syntax or hexadecimal IPv6 address syntax, as expected by some software.
Any of netip.Addr’s methods may be called on the resulting value. See
the docs for details.
Added in gomplate v3.11.0
Usage
net.CIDRNetmask prefixprefix | net.CIDRNetmaskArguments
| name | description | 
|---|---|
prefix | 
(required) Must be given in CIDR notation. It must represent either an IPv4 or IPv6 prefix, containing a /. String or net.IPNet object returned from net.ParseIPPrefix can by used. | 
Examples
$ gomplate -i '{{ net.CIDRNetmask "10.12.127.0/20" }}'
255.255.240.0
$ gomplate -i '{{ net.CIDRNetmask "fd00:fd12:3456:7890:00a2::/72" }}'
ffff:ffff:ffff:ffff:ff00::
net.CIDRSubnets (experimental)
Experimental: This function is experimental and may be enabled with the --experimental flag.
Calculates a subnet address within given IP network address prefix.
Any of netip.Prefix’s methods may be called on the resulting values. See
the docs for details.
Added in gomplate v3.11.0
Usage
net.CIDRSubnets newbits prefixprefix | net.CIDRSubnets newbitsArguments
| name | description | 
|---|---|
newbits | 
(required) 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. | 
prefix | 
(required) Must be given in CIDR notation. It must represent either an IPv4 or IPv6 prefix, containing a /. String or net.IPNet object returned from net.ParseIPPrefix can by used. | 
Examples
$ gomplate -i '{{ index ("10.0.0.0/16" | net.CIDRSubnets 2) 1 }}'
10.0.64.0/18
$ gomplate -i '{{ net.CIDRSubnets 2 "10.0.0.0/16" -}}'
[10.0.0.0/18 10.0.64.0/18 10.0.128.0/18 10.0.192.0/18]
net.CIDRSubnetSizes (experimental)
Experimental: This function is experimental and may be enabled with the --experimental flag.
Calculates a sequence of consecutive IP address ranges within a particular CIDR prefix.
Any of netip.Prefix’s methods may be called on the resulting values. See
the docs for details.
Added in gomplate v3.11.0
Usage
net.CIDRSubnetSizes newbits... prefixprefix | net.CIDRSubnetSizes newbits...Arguments
| name | description | 
|---|---|
newbits... | 
(required) Numbers of additional network prefix bits for returned address range. | 
prefix | 
(required) Must be given in CIDR notation. It must represent either an IPv4 or IPv6 prefix, containing a /. String or net.IPNet object returned from net.ParseIPPrefix can by used. | 
Examples
$ gomplate -i '{{ net.CIDRSubnetSizes 4 4 8 4 "10.1.0.0/16" -}}'
[10.1.0.0/20 10.1.16.0/20 10.1.32.0/24 10.1.48.0/20]