{% if helpers.exists('OPNsense.freeradius.general.sqlite') and OPNsense.freeradius.general.sqlite == '1' %}

sqlippool {
        # SQL instance to use (from mods-available/sql)
        #
        #  If you have multiple sql instances, such as "sql sql1 {...}",
        #  use the *instance* name here: sql1.
        sql_module_instance = "sql"

        #  This is duplicative of info available in the SQL module, but
        #  we have to list it here as we do not yet support nested
        #  reference expansions.
        dialect = "sqlite"

        # Name of the check item attribute to be used as a key in the SQL queries
        pool_name = "Pool-Name"

        # SQL table to use for ippool range and lease info
        ippool_table = "radippool"

        # IP lease duration. (Leases expire even if Acct Stop packet is lost)
        lease_duration = 3600

        #
        # Timeout between each consecutive 'allocate_clear' queries (default: 1s)
        # This will avoid having too many deadlock issues, especially on MySQL backend.
        #
        allocate_clear_timeout = 1

        #
        #  As of 3.0.16, the 'ipv6 = yes' configuration is deprecated.
        #  You should use the "attribute_name" configuration item
        #  below, instead.
        #

        #
        #  The attribute to use for IP address assignment.  The
        #  default is Framed-IP-Address.  You can change this to any
        #  attribute which is IPv4 or IPv6.
        #
        #  e.g. Framed-IPv6-Prefix, or Delegated-IPv6-Prefix.
        #
        #  As of 3.0.16, all of the default queries have been updated to use
        #  this attribute_name.  So you can do IPv6 address assignment simply
        #  by putting IPv6 addresses into the pool, and changing the following
        #  line to "Framed-IPv6-Prefix"
        #
        #  Note that you MUST use separate pools for each attribute.  i.e. one pool
        #  for Framed-IP-Address, a different one for Framed-IPv6-prefix, etc.
        #
        #  This means configuring separate "sqlippool" instances, and different
        #  "ippool_table" in SQL.  Then, populate the pool with addresses and
        #  it will all just work.
        #
        attribute_name = Framed-IP-Address

        #
        #  Assign the IP address, even if the above attribute already exists
        #  in the reply.
        #
#       allow_duplicates = no

        # Attribute which should be considered unique per NAS
        #
        #  Using NAS-Port gives behaviour similar to rlm_ippool. (And ACS)
        #  Using Calling-Station-Id works for NAS that send fixed NAS-Port
        #  ONLY change this if you know what you are doing!
        pool_key = "%{NAS-Port}"
        # pool_key = "%{Calling-Station-Id}"

        ################################################################
        #
        #  WARNING: MySQL (MyISAM) has certain limitations that means it can
        #           hand out the same IP address to 2 different users.
        #
        #           We suggest using an SQL DB with proper transaction
        #           support, such as PostgreSQL, or using MySQL
        #            with InnoDB.
        #
        ################################################################

        #  These messages are added to the "control" items, as
        #  Module-Success-Message.  They are not logged anywhere else,
        #  unlike previous versions.  If you want to have them logged
        #  to a file, see the "linelog" module, and create an entry
        #  which writes Module-Success-Message message.
        #
        messages {
                exists = "Existing IP: %{reply:${..attribute_name}} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

                success = "Allocated IP: %{reply:${..attribute_name}} from %{control:${..pool_name}} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

                clear = "Released IP ${..attribute_name} (did %{Called-Station-Id} cli %{Calling-Station-Id} user %{User-Name})"

                failed = "IP Allocation FAILED from %{control:${..pool_name}} (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"

                nopool = "No ${..pool_name} defined (did %{Called-Station-Id} cli %{Calling-Station-Id} port %{NAS-Port} user %{User-Name})"
        }

        $INCLUDE ${modconfdir}/sql/ippool/${dialect}/queries.conf
}


{% endif %}
