Skip to content
Snippets Groups Projects
Commit ef213a61 authored by Thomas Bellman's avatar Thomas Bellman
Browse files

Add flag 'forcemask' for resolve_ipnets() function.

This new flag to the resolve_ipnets() function causes it to add an
appropriate explicit host mask (/32 or /128 depending on IP family)
if the input did not contain a mask.  I.e, if calling:

    $hosts = [ "www.example.com", "smurf.example.net/28",
               "203.0.113.99", "2001:db8:113::99" ]
    $addrs = resolve_ipnets($hosts, "forcemask")

the return value from resolve_ipnets() will be something like:

    [ "192.0.2.17/32", "2001:db8:1:2::17/128",
      "198.51.100.23/28", "2001:db8:51:100::23/28",
      "203.0.113.99/32", "2001:db8:113::99/128"
    ]

Since there is no mask specified for www.example.com, an explicit
/32 will be added to its IPv4 address, and an explicit /128 to its
IPv6 address.  Likewise for the numeric addresses.  However, as the
smurf.example.net/28 name contained a netmask, that /28 will be kept
(although using the same mask for both IPv4 and IPv6 is unlikely to
be something you want).

This can be useful when the result is to be used in situations where
plain IP addresses are not allowed, only complete CIDR specifications.
An example, and the motivation for implementing this, is Munin, where
"cidr_allow" directives in munin-node configuration files must include
the prefix length.
parent 89c8ffc5
No related branches found
No related tags found
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment