diff --git a/Shorewall/lib.common b/Shorewall/lib.common index ef7b8b11e..1f61b77ba 100644 --- a/Shorewall/lib.common +++ b/Shorewall/lib.common @@ -225,7 +225,29 @@ loadmodule() # $1 = module name, $2 - * arguments local modulefile local suffix - if ! list_search $modulename $DONT_LOAD $MODULES; then + if [ -d /sys/module/ ]; then + if [ ! -d /sys/module/$modulename ]; then + shift + + for suffix in $MODULE_SUFFIX ; do + for directory in $moduledirectories; do + modulefile=$directory/${modulename}.${suffix} + + if [ -f $modulefile ]; then + case $moduleloader in + insmod) + insmod $modulefile $* + ;; + *) + modprobe $modulename $* + ;; + esac + break 2 + fi + done + done + fi + elif ! list_search $modulename $DONT_LOAD $MODULES; then shift for suffix in $MODULE_SUFFIX ; do diff --git a/Shorewall6/lib.common b/Shorewall6/lib.common index 115a2f956..dfe2c700d 100644 --- a/Shorewall6/lib.common +++ b/Shorewall6/lib.common @@ -247,7 +247,29 @@ loadmodule() # $1 = module name, $2 - * arguments local modulefile local suffix - if ! list_search $modulename $MODULES $DONT_LOAD ; then + if [ -d /sys/module/ ]; then + if [ ! -d /sys/module/$modulename ]; then + shift + + for suffix in $MODULE_SUFFIX ; do + for directory in $moduledirectories; do + modulefile=$directory/${modulename}.${suffix} + + if [ -f $modulefile ]; then + case $moduleloader in + insmod) + insmod $modulefile $* + ;; + *) + modprobe $modulename $* + ;; + esac + break 2 + fi + done + done + fi + elif ! list_search $modulename $MODULES $DONT_LOAD ; then shift for suffix in $MODULE_SUFFIX ; do