Parameters are given with this format:

    type name = default: help { range }

The following types are used:

* *addr*: any valid IP4 or IP6 address or CIDR
* *addr_list*: a space separated list of addr values
* *bit_list*: a list of consecutive integer values from 1 to the range
  maximum
* *bool*: true or false
* *dynamic*: a select type determined by loaded plugins
* *enum*: a string selected from the given range
* *implied*: an IPS rule option that takes no value but means true
* *int*: a whole number in the given range
* *interval*: a set of ints (see below)
* *ip4*: an IP4 address or CIDR
* *mac*: an ethernet address with the form 01:02:03:04:05:06
* *multi*: one or more space separated strings from the given range
* *port*: an int in the range 0:65535 indicating a TCP or UDP port number
* *real*: a real number in the given range
* *select*: a string selected from the given range
* *string*: any string with no more than the given length, if any

The parameter name may be adorned in various ways to indicate additional
information about the type and use of the parameter:

* For Lua configuration (not IPS rules), if the name ends with [] it is
  a list item and can be repeated.
* For IPS rules only, names starting with ~ indicate positional
  parameters.  The names of such parameters do not appear in the rule.
* IPS rules may also have a wild card parameter, which is indicated by a
  *.  Used for unquoted, comma-separated lists such as service and metadata.
* The snort module has command line options starting with a -.
  The options passed from command line override the options configured via
  snort module.
* $ denotes variable names.

Some additional details to note:

* Table and variable names are case sensitive; use lower case only.
* String values are case sensitive too; use lower case only.
* Numeric ranges may be of the form low:high where low and high are
  bounds included in the range.  If either is omitted, there is no hard
  bound. E.g. 0: means any x where x >= 0.
* Strings may have a numeric range indicating a length limit; otherwise
  there is no hard limit.
* bit_list is typically used to store a set of byte, port, or VLAN ID
  values.
* interval takes the form [operator]i, j<>k, or j<=>k where i,j,k are
  integers and operator is one of =, !, != (same as !), <, <=, >, >=.
  j<>k means j < int < k and j<=>k means j <= int <= k.
* Ranges may use maxXX like { 1:max32 } since max32 is easier to read
  than 4294967295.  To get the values of maxXX, use snort --help-limits.

Parameter limits:

* max31 = 2147483647
* max32 = 4294967295
* max53 = 9007199254740992
* maxSZ = 9007199254740992

