diff options
author | smos <seth.mos@dds.nl> | 2012-04-14 20:19:13 +0200 |
---|---|---|
committer | smos <seth.mos@dds.nl> | 2012-04-14 20:19:13 +0200 |
commit | 01a58d89dad177807a90a09de9bbcc39058213f2 (patch) | |
tree | 05b547a8f3adfa3192f25cb131954c66eaf468b4 | |
parent | c8ed8142d975e600e74d450ae8806b990658efc9 (diff) | |
download | pfsense-01a58d89dad177807a90a09de9bbcc39058213f2.zip pfsense-01a58d89dad177807a90a09de9bbcc39058213f2.tar.gz |
Add static routes for gif tunnel endpoints
-rw-r--r-- | etc/inc/interfaces.inc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 2e057ef..0785074 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -834,8 +834,15 @@ function interface_gif_configure(&$gif, $gifkey = "") { return -1; $realif = get_real_interface($gif['if']); - $realifip = get_interface_ip($gif['if']); + if(is_ipaddrv4($gif['remote-addr'])) { + $realifip = get_interface_ip($gif['if']); + $realifgw = get_interface_gateway($gif['if']); + } + if(is_ipaddrv6($gif['remote-addr'])) { + $realifip = get_interface_ipv6($gif['if']); + $realifgw = get_interface_gatewayv6($gif['if']); + } /* make sure the parent interface is up */ if($realif) interfaces_bring_up($realif); @@ -885,6 +892,13 @@ function interface_gif_configure(&$gif, $gifkey = "") { if(is_ipaddrv6($gif['tunnel-remote-addr'])) file_put_contents("{$g['tmp_path']}/{$gifif}_routerv6", $gif['tunnel-remote-addr']); + if (is_ipaddrv4($realifgw)) { + mwexec("route change -host {$gif['remote-addr']} {$realifgw}"); + } + if (is_ipaddrv6($realifgw)) { + mwexec("route change -host -inet6 {$gif['remote-addr']} {$realifgw}"); + } + return $gifif; } |