## -*- mode: shell-script; -*-
##
## To be able to make changes to the part of configuration created
## from this configlet you need to copy this file to the directory
## fwbuilder/configlets/linux24/ in your home directory and modify it.
## Double "##" comments are removed during processing but single "#"
## comments are be retained and appear in the generated script. Empty
## lines are removed as well.
##
## Configlets support simple macro language with these constructs:
## {{$var}} is variable expansion
## {{if var}} is conditional operator.
##
## This is the body of the shell function load_modules(). I keep
## function definition in the script_skeleton configlet to make it
## more readable (the function and call to it are in the file, both
## clearly visible). I could put the code for the body of load_modules
## function in the script_skeleton configlet as well, but I keep it
## separate to make script_skeleton small and clean.
##
## Function load_modules is called with one parameter. This parameter
## is a space-separated list of options. Options (words) "nat" and
## "ipv6" are recognized. PArameter can be "", "nat", "ipv6",
## "nat ipv6" If word "nat" is included, the function should also load
## modules for nat. If word "ipv6" is included, it should also load
## module nf_conntrack_ipv6

{{if load_modules}}
    OPTS=$1
    MODULES_DIR="{{$modules_dir}}"
    MODULES=$(find "$MODULES_DIR" -name '*conntrack*' \! -name '*ipv6*' | sed -e 's/^.*\///' -e 's/\([^\.]\)\..*/\1/')
    echo "$OPTS" | grep -q nat && {
        MODULES="$MODULES $(find "$MODULES_DIR" -name '*nat*' | sed -e 's/^.*\///' -e 's/\([^\.]\)\..*/\1/')"
    }
    echo "$OPTS" | grep -q ipv6 && {
        MODULES="$MODULES $(find "$MODULES_DIR" -name nf_conntrack_ipv6 | sed -e 's/^.*\///' -e 's/\([^\.]\)\..*/\1/')"
    }
    for module in $MODULES; do
        if "$LSMOD" | grep "$module" >/dev/null; then continue; fi
        "$MODPROBE" "$module" || exit 1
    done
{{endif}}
