diff options
author | Seth Mos <seth.mos@xs4all.nl> | 2008-11-10 21:31:58 +0000 |
---|---|---|
committer | Seth Mos <seth.mos@xs4all.nl> | 2008-11-10 21:31:58 +0000 |
commit | a3a3a6b136ea9e8072bbdde33f941dfeb35b66c3 (patch) | |
tree | ba2dd70564bb4fa2d4d39a7d51f90ec8f224644f /etc/rc.linkup | |
parent | ad3979f2580f2ddb9415131c03bc9711b8f93705 (diff) | |
download | pfsense-a3a3a6b136ea9e8072bbdde33f941dfeb35b66c3.zip pfsense-a3a3a6b136ea9e8072bbdde33f941dfeb35b66c3.tar.gz |
Be smarter parsing the command line before passing it into handle_argument_group.
This prevents bogus events being logged when (dis)connecting a cable
Diffstat (limited to 'etc/rc.linkup')
-rwxr-xr-x | etc/rc.linkup | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/etc/rc.linkup b/etc/rc.linkup index e3dfe04..c0cdff7 100755 --- a/etc/rc.linkup +++ b/etc/rc.linkup @@ -76,11 +76,27 @@ function handle_argument_group($argument1, $argument2) { if ($g['booting'] == true) { /* ignore all linkup events */ } else { - for ($i = 1; $i <= $_SERVER['argc']; $i++) { - $argspassed .= $_SERVER['argv'][$i] . " "; - $argument1 = $_SERVER['argv'][$i]; - $argument2 = $_SERVER['argv'][$i+1]; - handle_argument_group($argument1, $argument2); + foreach($_SERVER['argv'] as $argv) { + switch($argv) { + case "start": + $action = "start"; + break; + case "stop": + $action = "stop"; + break; + case "/etc/rc.linkup": + break; + default: + $interface = convert_real_interface_to_friendly_interface_name($argv); + if($interface == "") { + unset($interface); + } + break; + } + if(($action) && ($interface)) { + handle_argument_group($interface, $action); + unset ($action, $interface); + } } } ?> |