summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2005-02-24 19:06:51 +0000
committerScott Ullrich <sullrich@pfsense.org>2005-02-24 19:06:51 +0000
commited0595718d51682c8fcccc4b9d61e2630a41a762 (patch)
treee4e3429aa62fb6f3ce7379446ef1a9a51968403f
parent0abcd86ee8ddc3e7e5d1dfbc3b142cb017b8f6eb (diff)
downloadpfsense-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.inc8
-rw-r--r--etc/inc/interfaces.inc6
-rw-r--r--etc/inc/pfsense-utils.inc41
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}");
OpenPOWER on IntegriCloud