summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErmal Luçi <ermal.luci@gmail.com>2012-07-31 13:29:47 -0700
committerErmal Luçi <ermal.luci@gmail.com>2012-07-31 13:29:47 -0700
commitf15849b5e4961e5c76931a8891ea7a7e2f6f3c53 (patch)
treee76c5fed2e8aa4d7fe37dc76884aedad9de879af /etc
parent0b233932f2ec54ddb47a61240fabf02509116767 (diff)
parent73c897eb1441fd64777826b56aab66acb4df8d52 (diff)
downloadpfsense-f15849b5e4961e5c76931a8891ea7a7e2f6f3c53.zip
pfsense-f15849b5e4961e5c76931a8891ea7a7e2f6f3c53.tar.gz
Merge pull request #196 from mtharp/dhcpv6-relay
Get DHCPv6 relay working (#1663)
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/services.inc23
1 files changed, 13 insertions, 10 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc
index 78b810e..4843fdd 100644
--- a/etc/inc/services.inc
+++ b/etc/inc/services.inc
@@ -1262,12 +1262,14 @@ function services_dhcrelay6_configure() {
if (is_ipaddrv6(get_interface_ipv6($dhcrelayif)))
$dhcrelayifs[] = get_real_interface($dhcrelayif);
}
+ $dhcrelayifs = array_unique($dhcrelayifs);
/*
* In order for the relay to work, it needs to be active
* on the interface in which the destination server sits.
*/
$srvips = explode(",", $dhcrelaycfg['server']);
+ $srvifaces = array();
foreach ($srvips as $srcidx => $srvip) {
unset($destif);
foreach ($iflist as $ifname) {
@@ -1322,23 +1324,24 @@ function services_dhcrelay6_configure() {
$destif = get_real_interface("wan");
}
- if (!empty($destif))
- $dhcrelayifs[] = $destif;
+ if (!empty($destif)) {
+ $srvifaces[] = "{$srvip}%{$destif}";
+ }
}
- $dhcrelayifs = array_unique($dhcrelayifs);
/* fire up dhcrelay */
- if (empty($dhcrelayifs)) {
+ if (empty($dhcrelayifs) || empty($srvifaces) ) {
log_error("No suitable interface found for running dhcrelay -6!");
return; /* XXX */
}
- $cmd = "/usr/local/sbin/dhcrelay -6 -pf \"{$g['varetc_path']}/dhcrelay6.pid\" -i " . implode(" -i ", $dhcrelayifs);
-
- if (isset($dhcrelaycfg['agentoption']))
- $cmd .= " -a -m replace";
-
- $cmd .= " " . implode(" ", $srvips);
+ $cmd = "/usr/local/sbin/dhcrelay -6 -pf \"{$g['varetc_path']}/dhcrelay6.pid\"";
+ foreach ($dhcrelayifs as $dhcrelayif) {
+ $cmd .= " -l {$dhcrelayif}";
+ }
+ foreach ($srvifaces as $srviface) {
+ $cmd .= " -u \"{$srviface}\"";
+ }
mwexec($cmd);
return 0;
OpenPOWER on IntegriCloud