summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/hashicorp/go-sockaddr/template/doc.go
diff options
context:
space:
mode:
authorChristopher Speller <crspeller@gmail.com>2017-05-17 16:51:25 -0400
committerGitHub <noreply@github.com>2017-05-17 16:51:25 -0400
commitd103ed6ca97ca5a2669f6cf5fe4b3d2a9c945f26 (patch)
treedbde13123c6add150448f7b75753ac022d862475 /vendor/github.com/hashicorp/go-sockaddr/template/doc.go
parentcd23b8139a9463b67e3096744321f6f4eb0ca40a (diff)
downloadchat-d103ed6ca97ca5a2669f6cf5fe4b3d2a9c945f26.tar.gz
chat-d103ed6ca97ca5a2669f6cf5fe4b3d2a9c945f26.tar.bz2
chat-d103ed6ca97ca5a2669f6cf5fe4b3d2a9c945f26.zip
Upgrading server dependancies (#6431)
Diffstat (limited to 'vendor/github.com/hashicorp/go-sockaddr/template/doc.go')
-rw-r--r--vendor/github.com/hashicorp/go-sockaddr/template/doc.go239
1 files changed, 239 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-sockaddr/template/doc.go b/vendor/github.com/hashicorp/go-sockaddr/template/doc.go
new file mode 100644
index 000000000..59945d7be
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-sockaddr/template/doc.go
@@ -0,0 +1,239 @@
+/*
+
+Package sockaddr/template provides a text/template interface the SockAddr helper
+functions. The primary entry point into the sockaddr/template package is
+through its Parse() call. For example:
+
+ import (
+ "fmt"
+
+ template "github.com/hashicorp/go-sockaddr/template"
+ )
+
+ results, err := template.Parse(`{{ GetPrivateIP }}`)
+ if err != nil {
+ fmt.Errorf("Unable to find a private IP address: %v", err)
+ }
+ fmt.Printf("My Private IP address is: %s\n", results)
+
+Below is a list of builtin template functions and details re: their usage. It
+is possible to add additional functions by calling ParseIfAddrsTemplate
+directly.
+
+In general, the calling convention for this template library is to seed a list
+of initial interfaces via one of the Get*Interfaces() calls, then filter, sort,
+and extract the necessary attributes for use as string input. This template
+interface is primarily geared toward resolving specific values that are only
+available at runtime, but can be defined as a heuristic for execution when a
+config file is parsed.
+
+All functions, unless noted otherwise, return an array of IfAddr structs making
+it possible to `sort`, `filter`, `limit`, seek (via the `offset` function), or
+`unique` the list. To extract useful string information, the `attr` and `join`
+functions return a single string value. See below for details.
+
+Important note: see the
+https://github.com/hashicorp/go-sockaddr/tree/master/cmd/sockaddr utility for
+more examples and for a CLI utility to experiment with the template syntax.
+
+`GetAllInterfaces` - Returns an exhaustive set of IfAddr structs available on
+the host. `GetAllInterfaces` is the initial input and accessible as the initial
+"dot" in the pipeline.
+
+Example:
+
+ {{ GetAllInterfaces }}
+
+
+`GetDefaultInterfaces` - Returns one IfAddr for every IP that is on the
+interface containing the default route for the host.
+
+Example:
+
+ {{ GetDefaultInterfaces }}
+
+`GetPrivateInterfaces` - Returns one IfAddr for every forwardable IP address
+that is included in RFC 6890, is attached to the interface with the default
+route, and whose interface is marked as up. NOTE: RFC 6890 is a more exhaustive
+version of RFC1918 because it spans IPv4 and IPv6, however it does permit the
+inclusion of likely undesired addresses such as multicast, therefore our version
+of "private" also filters out non-forwardable addresses.
+
+Example:
+
+ {{ GetPrivateInterfaces | include "flags" "up" }}
+
+
+`GetPublicInterfaces` - Returns a list of IfAddr that do not match RFC 6890, is
+attached to the default route, and whose interface is marked as up.
+
+Example:
+
+ {{ GetPublicInterfaces | include "flags" "up" }}
+
+
+`GetPrivateIP` - Helper function that returns a string of the first IP address
+from GetPrivateInterfaces.
+
+Example:
+
+ {{ GetPrivateIP }}
+
+
+`GetPublicIP` - Helper function that returns a string of the first IP from
+GetPublicInterfaces.
+
+Example:
+
+ {{ GetPublicIP }}
+
+`GetInterfaceIP` - Helper function that returns a string of the first IP from
+the named interface.
+
+Example:
+
+ {{ GetInterfaceIP }}
+
+
+`sort` - Sorts the IfAddrs result based on its arguments. `sort` takes one
+argument, a list of ways to sort its IfAddrs argument. The list of sort
+criteria is comma separated (`,`):
+ - `address`, `+address`: Ascending sort of IfAddrs by Address
+ - `-address`: Descending sort of IfAddrs by Address
+ - `name`, `+name`: Ascending sort of IfAddrs by lexical ordering of interface name
+ - `-name`: Descending sort of IfAddrs by lexical ordering of interface name
+ - `port`, `+port`: Ascending sort of IfAddrs by port number
+ - `-port`: Descending sort of IfAddrs by port number
+ - `private`, `+private`: Ascending sort of IfAddrs with private addresses first
+ - `-private`: Descending sort IfAddrs with private addresses last
+ - `size`, `+size`: Ascending sort of IfAddrs by their network size as determined
+ by their netmask (larger networks first)
+ - `-size`: Descending sort of IfAddrs by their network size as determined by their
+ netmask (smaller networks first)
+ - `type`, `+type`: Ascending sort of IfAddrs by the type of the IfAddr (Unix,
+ IPv4, then IPv6)
+ - `-type`: Descending sort of IfAddrs by the type of the IfAddr (IPv6, IPv4, Unix)
+
+Example:
+
+ {{ GetPrivateInterfaces | sort "type,size,address" }}
+
+
+`exclude` and `include`: Filters IfAddrs based on the selector criteria and its
+arguments. Both `exclude` and `include` take two arguments. The list of
+available filtering criteria is:
+ - "address": Filter IfAddrs based on a regexp matching the string representation
+ of the address
+ - "flag","flags": Filter IfAddrs based on the list of flags specified. Multiple
+ flags can be passed together using the pipe character (`|`) to create an inclusive
+ bitmask of flags. The list of flags is included below.
+ - "name": Filter IfAddrs based on a regexp matching the interface name.
+ - "network": Filter IfAddrs based on whether a netowkr is included in a given
+ CIDR. More than one CIDR can be passed in if each network is separated by
+ the pipe character (`|`).
+ - "port": Filter IfAddrs based on an exact match of the port number (number must
+ be expressed as a string)
+ - "rfc", "rfcs": Filter IfAddrs based on the matching RFC. If more than one RFC
+ is specified, the list of RFCs can be joined together using the pipe character (`|`).
+ - "size": Filter IfAddrs based on the exact match of the mask size.
+ - "type": Filter IfAddrs based on their SockAddr type. Multiple types can be
+ specified together by using the pipe character (`|`). Valid types include:
+ `ip`, `ipv4`, `ipv6`, and `unix`.
+
+Example:
+
+ {{ GetPrivateInterfaces | exclude "type" "IPv6" | include "flag" "up|forwardable" }}
+
+
+`unique`: Removes duplicate entries from the IfAddrs list, assuming the list has
+already been sorted. `unique` only takes one argument:
+ - "address": Removes duplicates with the same address
+ - "name": Removes duplicates with the same interface names
+
+Example:
+
+ {{ GetPrivateInterfaces | sort "type,address" | unique "name" }}
+
+
+`limit`: Reduces the size of the list to the specified value.
+
+Example:
+
+ {{ GetPrivateInterfaces | include "flags" "forwardable|up" | limit 1 }}
+
+
+`offset`: Seeks into the list by the specified value. A negative value can be
+used to seek from the end of the list.
+
+Example:
+
+ {{ GetPrivateInterfaces | include "flags" "forwardable|up" | offset "-2" | limit 1 }}
+
+
+`attr`: Extracts a single attribute of the first member of the list and returns
+it as a string. `attr` takes a single attribute name. The list of available
+attributes is type-specific and shared between `join`. See below for a list of
+supported attributes.
+
+Example:
+
+ {{ GetPrivateInterfaces | include "flags" "forwardable|up" | attr "address" }}
+
+
+`join`: Similar to `attr`, `join` extracts all matching attributes of the list
+and returns them as a string joined by the separator, the second argument to
+`join`. The list of available attributes is type-specific and shared between
+`join`.
+
+Example:
+
+ {{ GetPrivateInterfaces | include "flags" "forwardable|up" | join "address" " " }}
+
+
+`exclude` and `include` flags:
+ - `broadcast`
+ - `down`: Is the interface down?
+ - `forwardable`: Is the IP forwardable?
+ - `global unicast`
+ - `interface-local multicast`
+ - `link-local multicast`
+ - `link-local unicast`
+ - `loopback`
+ - `multicast`
+ - `point-to-point`
+ - `unspecified`: Is the IfAddr the IPv6 unspecified address?
+ - `up`: Is the interface up?
+
+
+Attributes for `attr` and `join`:
+
+SockAddr Type:
+ - `string`
+ - `type`
+
+IPAddr Type:
+ - `address`
+ - `binary`
+ - `first_usable`
+ - `hex`
+ - `host`
+ - `last_usable`
+ - `mask_bits`
+ - `netmask`
+ - `network`
+ - `octets`: Decimal values per byte
+ - `port`
+ - `size`: Number of hosts in the network
+
+IPv4Addr Type:
+ - `broadcast`
+ - `uint32`: unsigned integer representation of the value
+
+IPv6Addr Type:
+ - `uint128`: unsigned integer representation of the value
+
+UnixSock Type:
+ - `path`
+
+*/
+package template