diff options
author | Scott Ullrich <sullrich@pfsense.org> | 2005-02-24 19:06:51 +0000 |
---|---|---|
committer | Scott Ullrich <sullrich@pfsense.org> | 2005-02-24 19:06:51 +0000 |
commit | ed0595718d51682c8fcccc4b9d61e2630a41a762 (patch) | |
tree | e4e3429aa62fb6f3ce7379446ef1a9a51968403f | |
parent | 0abcd86ee8ddc3e7e5d1dfbc3b142cb017b8f6eb (diff) | |
download | pfsense-ed0595718d51682c8fcccc4b9d61e2630a41a762.zip pfsense-ed0595718d51682c8fcccc4b9d61e2630a41a762.tar.gz |
* Cleanup carp code. Add a function to show how many carp interfaces are currently created.
* Add () around interfaces for bridging code
* Add link 0 (hardware acceleration) features for fxp chipsets
-rw-r--r-- | etc/inc/filter.inc | 8 | ||||
-rw-r--r-- | etc/inc/interfaces.inc | 6 | ||||
-rw-r--r-- | etc/inc/pfsense-utils.inc | 41 |
3 files changed, 46 insertions, 9 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index ee62547..7322b81 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -321,8 +321,8 @@ function filter_generate_aliases() { $wan_aliases = " " . link_ip_to_carp_interface($wanip); $aliases .= "# System Aliases \n"; - $aliases .= "lan = \"{ " . $config['interfaces']['lan']['if'] . "{$lan_aliases} }\"\n"; - $aliases .= "wan = \"{ " . get_real_wan_interface() . "{$wan_aliases} }\"\n"; + $aliases .= "lan = \"{ (" . $config['interfaces']['lan']['if'] . "){$lan_aliases} }\"\n"; + $aliases .= "wan = \"{ (" . get_real_wan_interface() . "){$wan_aliases} }\"\n"; $aliases .= "pptp = \"{ }\"\n"; $ifdescrs = array(); @@ -339,7 +339,7 @@ function filter_generate_aliases() { $extraalias = ""; $ip = find_interface_ip($alias['address']); $extraalias = " " . link_ip_to_carp_interface($ip); - $aliases .= $alias['name'] . " = \"{ " . $alias['address'] . "{$extralias} }\"\n"; + $aliases .= $alias['name'] . " = \"{ (" . $alias['address'] . "){$extralias} }\"\n"; } } @@ -1593,4 +1593,4 @@ function create_firewall_outgoing_rules_to_itself() { return $rule; } -?> +?>
\ No newline at end of file diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index d9ffaa9..60e8026 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -143,6 +143,8 @@ function interfaces_lan_configure() { captiveportal_configure(); } + enable_hardware_offloading($lancfg['if']); + if ($g['booting']) echo "done\n"; @@ -252,6 +254,8 @@ function interfaces_optional_configure_if($opti) { " delete down"); } + enable_hardware_offloading(escapeshellarg($optcfg['if']); + if ($g['booting']) echo "done\n"; @@ -415,6 +419,8 @@ function interfaces_wan_configure() { services_dnsmasq_configure(); } + enable_hardware_offloading($wancfg['if']); + if ($g['booting']) echo "done\n"; diff --git a/etc/inc/pfsense-utils.inc b/etc/inc/pfsense-utils.inc index 2acb175..4c337ba 100644 --- a/etc/inc/pfsense-utils.inc +++ b/etc/inc/pfsense-utils.inc @@ -58,6 +58,18 @@ function return_dir_as_array($dir) { } /* + * enable_hardware_offloading() enables hardware features of nics if they are supported + */ +function enable_hardware_offloading($interface) { + $supported_ints = array('fxp'); + foreach($support_ints as $int) { + if(stristr($interface,$int) != FALSE) { + mwexec("/sbin/ifconfig $interfface link0"); + } + } +} + +/* * return_filename_as_array($filename): returns $filename contents as a string */ function return_filename_as_array($filename) { @@ -93,7 +105,7 @@ function is_carp_defined() { $command = "/sbin/sysctl -a | grep carp"; $fd = popen($command . " 2>&1 ", "r"); if(!$fd) { - log_error("Warning, could not execute command "); + log_error("Warning, could not execute command {$command}"); return 0; } while(!feof($fd)) { @@ -108,6 +120,24 @@ function is_carp_defined() { } /* + * find_number_of_created_carp_interfaces() returns the number of currently created carp interfaces + */ +function find_number_of_created_carp_interfaces() { + $command = "/sbin/ifconfig | grep \"carp*:\" | wc -l"; + $fd = popen($command . " 2>&1 ", "r"); + if(!$fd) { + log_error("Warning, could not execute command {$command}"); + return 0; + } + while(!feof($fd)) { + $tmp .= fread($fd,49); + } + fclose($fd); + $tmp=$tmp-1; + return $tmp; +} + +/* * link_ip_to_carp_interface($ip): finds where a carp interface links to. */ function link_ip_to_carp_interface($ip) { @@ -122,9 +152,9 @@ function link_ip_to_carp_interface($ip) { $ft_ip = $ft[0] . "." . $ft[1] . "." . $ft[2] . "."; $carp_ints = ""; - + $num_carp_ints = find_number_of_created_carp_interfaces(); foreach ($ifdescrs as $ifdescr => $ifname) { - for($x=0; $x<99; $x++) { + for($x=0; $x<$num_carp_ints; $x++) { $carp_int = "carp{$x}"; $carp_ip = find_interface_ip($carp_int); $carp_ft = split("\.", $carp_ip); @@ -134,7 +164,7 @@ function link_ip_to_carp_interface($ip) { $interface = filter_opt_interface_to_real($ifname); if($ft_ip == $carp_ft_ip) if(stristr($carp_ints,$carp_int) == FALSE) - $carp_ints .= " " . $carp_int; + $carp_ints .= " (" . $carp_int . ")"; } } return $carp_ints; @@ -237,7 +267,8 @@ function get_pfsync_interface_status($pfsyncinterface) { * find_carp_interface($ip): return the carp interface where an ip is defined */ function find_carp_interface($ip) { - for($x=0; $x<99; $x++) { + $num_carp_ints = find_number_of_created_carp_interfaces(); + for($x=0; $x<$num_carp_ints; $x++) { $result = does_interface_exist("carp{$x}"); if($result <> true) return; $ifconfig = exec_command("/sbin/ifconfig carp{$x}"); |