diff options
author | jim-p <jimp@pfsense.org> | 2012-04-11 11:58:21 -0400 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2012-04-11 11:58:21 -0400 |
commit | f898c1a98213ec6b2497608c181ba3bb149a234b (patch) | |
tree | 511e3f401a208e114467d79151525d37e4748a27 /etc/inc/util.inc | |
parent | fdcf104ce4f5320a5a182a0c4b378174959a7caf (diff) | |
download | pfsense-f898c1a98213ec6b2497608c181ba3bb149a234b.zip pfsense-f898c1a98213ec6b2497608c181ba3bb149a234b.tar.gz |
Add alias support to static routes (needs some testing) Ticket #2239
Conflicts:
etc/inc/filter.inc
etc/inc/util.inc
usr/local/www/system_routes_edit.php
Diffstat (limited to 'etc/inc/util.inc')
-rw-r--r-- | etc/inc/util.inc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/etc/inc/util.inc b/etc/inc/util.inc index 087bce8..4c92396 100644 --- a/etc/inc/util.inc +++ b/etc/inc/util.inc @@ -1680,6 +1680,7 @@ function array_merge_recursive_unique($array0, $array1) { return $result; } + /* * converts a string like "a,b,c,d" * into an array like array("a" => "b", "c" => "d") @@ -1694,4 +1695,40 @@ function explode_assoc($delimiter, $string) { return $result; } +function get_staticroutes($returnsubnetsonly = false) { + global $config; + require_once('filter.inc'); + $allstaticroutes = array(); + $allsubnets = array(); + + /* Bail if there are no routes, but return an array always so callers don't have to check. */ + if (!is_array($config['staticroutes']['route'])) + return array(); + + /* Loop through routes and expand aliases as we find them. */ + foreach ($config['staticroutes']['route'] as $route) { + if (is_alias($route['network'])) { + $subnets = filter_expand_alias_array($route['network']); + foreach ($subnets as $net) { + if (is_ipaddr($net)) + $net .= "/32"; + /* This must be a hostname, we can't use it. */ + if (!is_subnet($net)) + continue; + $temproute = $route; + $temproute['network'] = $net; + $allstaticroutes[] = $temproute; + $allsubnets[] = $net; + } + } elseif (is_subnet($route['network'])) { + $allstaticroutes[] = $route; + $allsubnets[] = $route['network']; + } + } + if ($returnsubnetsonly) { + return $allsubnets; + } else { + return $allstaticroutes; + } +} ?> |