Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    If_msk.ko and if_so.ko files to match 2.1 release for Watchguard X750e

    Scheduled Pinned Locked Moved Hardware
    22 Posts 5 Posters 4.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      ceama
      last edited by

      Hi Stephen and others.  I have found a bug/issue with the msk ports on the e-series boxes.  A customer reported that ports 4-8 would not function in a bridged configuration.  I had never tried it so I set up my box with ports 4-8 in a bridge assigned to the LAN.  I found the ports constantly resetting in a loop at maybe 5 second intervals.  When I started a ping originated from the LAN, I got replies when the interface was up for a few seconds then reset.  The link light blinks on and off at a regular rate.  The system log showed "rc.newwanip"  script was resetting the port every time it linked up.  The global variables for the wanip were NULL so some where in the process maze the values were lost and a call to reset whatever msk port linked up was issued.  So I went to the script "rc.linkup" and tried to follow the logic there.  I wound up duplicating the program flow for a sk port that did not have this problem.  I wound up making changes to "rc.linkup" script. the script is really short, so I'll post it here.  Make these changes, and the msk port will bridge just fine. It basically follows simple logic: Port linkup -> configure port -> exit.  The lines I added/deleted are commented.

      
      #!/usr/local/bin/php -f
      /*
              rc.linkup - devd hotplug actions
              part of pfSense
      
              Copyright (C) 2003-2005 Scott Ullrich <sullrich@gmail.com>.
              All rights reserved.
      
              Redistribution and use in source and binary forms, with or without
              modification, are permitted provided that the following conditions are met:
      
              1\. Redistributions of source code must retain the above copyright notice,
                 this list of conditions and the following disclaimer.
      
              2\. Redistributions in binary form must reproduce the above copyright
                 notice, this list of conditions and the following disclaimer in the
                 documentation and/or other materials provided with the distribution.
      
              THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
              INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
              AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
              AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
              OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
              SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
              INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
              CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
              ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
              POSSIBILITY OF SUCH DAMAGE.
      */
      
      /* parse the configuration and include all functions used below */
      require_once("globals.inc");
      require_once("config.inc");
      require_once("filter.inc");	
      require_once("shaper.inc");	
      require_once("interfaces.inc");
      
      function handle_argument_group($iface, $argument2) {
      	global $config;	
      
      	if (!is_array($config['interfaces'][$iface]))
      		return;
      
      	$ipaddr = $config['interfaces'][$iface]['ipaddr'];
      	$ip6addr = $config['interfaces'][$iface]['ipaddrv6'];
      	$staticv4 = false;
      	if (empty($ipaddr))
      		$staticv4 = true;
      	else
      		$staticv4 = is_ipaddrv4($ipaddr);
      	$staticv6 = false;
      	if (empty($ip6addr))
      		$staticv6 = true;
      	else
      		$staticv6 = is_ipaddrv6($ip6addr);
      	if ($staticv4 === true && $staticv6 === true) {
      		$friendly = convert_friendly_interface_to_friendly_descr($iface);
      		log_error("Hotplug event detected for {$friendly}({$iface}) but ignoring since interface is configured with static IP ({$ipaddr} {$ip6addr})");
      		interfaces_staticarp_configure($iface);
      		$iface = get_real_interface($iface);
      		interfaces_bring_up($iface);
      		if ($argument2 == "start" || $argument2 == "up")
      			log_error("HOTPLUG: Configuring interface {$iface}"); //New Charlie lines
      			require_once("vpn.inc"); //New
      			require_once("captiveportal.inc"); //New
      			interface_configure($iface, true, true);  //New
      			//send_event("interface newip {$iface}"); //Charlie removed. Just configure it
      	} else {
      		switch ($argument2) {
      		case "stop":
      		case "down":
      			log_error("DEVD Ethernet detached event for {$iface}");
      			interface_bring_down($iface);
      			break;
      		case "start":
      		case "up":
      			log_error("DEVD Ethernet attached event for {$iface}");
      			log_error("HOTPLUG: Configuring interface {$iface}");
      			require_once("vpn.inc");
      			require_once("captiveportal.inc");
      			// Do not try to readd to bridge otherwise em(4) has problems
      			interface_configure($iface, true, true); 
      			break;
      		}
      	}
      }
      
      global $g;
      if (!file_exists("{$g['varrun_path']}/booting") && empty($g['booting'])) {
      	if ($argc < 3) {
      		log_error("HOTPLUG event: The number of required parameters not passed!");
      		exit;
      	}
      	$action = $argv[1];
      	switch($action) {
      	case "start":
      	case "stop":
      		break;
      	default:
      		log_error("HOTPLUG event: The action parameter passed is wrong($action) only start/stop/up/down are allowed!");
      		exit;
      		/* NOTREACHED */
      		break;
      	}
      	$interface = convert_real_interface_to_friendly_interface_name($argv[2]);
      	if (!empty($interface))
      		handle_argument_group($interface, $action);
      }
      
      ?></sullrich@gmail.com> 
      
      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator
        last edited by

        Yes, that's a known bug and has been fixed for future snapshots. It's a problem with bridging on some NICs/drivers.  A fix is available here: http://forum.pfsense.org/index.php/topic,66908.msg367991.html#msg367991

        Steve

        1 Reply Last reply Reply Quote 0
        • First post
          Last post
        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.