Configuration is handled by boost::program_options with support for command line parsing and configuration file parsing. There are multiple levels of options, an option can have options itself.

The command line has the following general form:

programname [top-level-options] command [command-options]

Some top level options are required but this also depends on the command. The requirement hints below are given for the generate command. If there is only one choice with default suboptions then it does not need to be specified (*)

The toplevel options are:

--logger name:options

This controls the logging output.

--algorithm name:options

This specifies the algorithm that the table is for. (required)

--implementation name:options

This is the implementation of the algorithm to use. (required)

--roundfunc name:options

The round function is the colors of rainbow tables or the table id of hellman tables.

--condition name:options

A condition which determines the chain end. This option basically sets the chain length.

--work name:options

The work option selects the generator of table start values. (required)

--consume name:options

The work consumer processes the table end values. (required)

--device name:options

The hardware that the implementation runs on. (required)

--randomizer name:options

the function to use to introduce noise into the start value generated by the increment work generator.

--operations XXX

The number of rounds of the algorithm to do at each kernel invocation. Shorthand for the operations suboption of --device.

--advance XXX

The table id that distinguishes tables from one another. Shorthand for the advance suboption of the round function generator.

--config <filename>

a configuration file to use.

--options

print out the combined options from the executable, the configuration file and the command line.

--network name:options

The networking client