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 name
name | net.LookupIP
Arguments
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 name
name | net.LookupIPs
Arguments
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 name
name | net.LookupCNAME
Arguments
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 name
name | net.LookupSRV
Arguments
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 name
name | net.LookupSRVs
Arguments
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 name
name | net.LookupTXT
Arguments
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 addr
addr | net.ParseAddr
Arguments
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 ip
ip | net.ParseIP
Arguments
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 prefix
prefix | net.ParsePrefix
Arguments
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 ipprefix
ipprefix | net.ParseIPPrefix
Arguments
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 iprange
iprange | net.ParseRange
Arguments
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 iprange
iprange | net.ParseIPRange
Arguments
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 prefix
prefix | net.CIDRHost hostnum
Arguments
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 prefix
prefix | net.CIDRNetmask
Arguments
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 prefix
prefix | net.CIDRSubnets newbits
Arguments
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... prefix
prefix | 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]