| SYNOPSIS |
| #include <configuration.h> |
| |
| void configure_driver(int what, mixed data) |
| |
| DESCRIPTION |
| This efun configures runtime adjustable bahviour of the driver. |
| |
| Sets the option <what> to the value <data>. |
| |
| This function always causes the privilege_violation |
| ("configure_driver", this_object(), what, data). |
| |
| <what> == DC_MEMORY_LIMIT |
| Set new soft and hard memory limits for the driver. |
| <data> is expected to be an array with two elements, which have to |
| be integers giving the amount of memory in bytes. |
| ({<soft memory limit>, <hard memory limit>}) |
| |
| <what> == DC_ENABLE_HEART_BEATS |
| Globally enable the calling of Heartbeats, if <data> is 1, |
| globally disable them if <data> is 0. |
| If called during heartbeat processing, the change comes into effect |
| at the next backend cycle. |
| |
| <what> == DC_LONG_EXEC_TIME |
| Set the time considered as (too) long for top-level executions. If |
| an execution exceeds this time, a stack trace will be written to |
| the debug log. The execution will continue at that point. |
| <data> is an integer and measured in microseconds. |
| A time of 0 disables the detection of long executions. |
| |
| <what> == DC_DATA_CLEAN_TIME |
| Sets the average time between clean-ups of an objects data |
| structures. This is not to be confused with the standard cleanup |
| time which determines when H_CLEAN_UP is called. A long time for |
| data cleanup may lead to larger memory consumption and prevents |
| destructed objects being cleaned up. A too short time may lead to |
| high loads and lag on the machine. The actual time delay will be a |
| time between 0.9*DC_DATA_CLEAN_TIME and 1.1*DC_DATA_CLEAN_TIME. |
| Default at driver startup are 3600s. |
| <data> is an integer and measured in seconds. |
| |
| <what> == DC_TLS_CERTIFICATE |
| Sets the current certificate used for new TLS sessions. |
| It can be one of the certificates in the key directory |
| (command line option --tls-keydirectory) or the main |
| certificate (given with --tls-certfile). |
| Default is the main certificate or else the first |
| certificate found in the directory. The chosen certificate at the |
| time of the tls_init_connection() call is used for that connection. |
| <data> is a string containing the SHA1 fingerprint |
| of the certificate with hexadecimal numbers, |
| it may contain colons or whitespaces (for example |
| "5A:FE:CA:57:1E:50:5E:1E:C7:ED:BA:11:AD:50:10:75:0F:7A:1E:50"). |
| When loading certificates their fingerprints are printed |
| on stdout and into the logfile. |
| |
| <what> == DC_TLS_DHE_PARAMETER |
| Sets new parameters for the Diffie-Hellman keyexchange for new TLS |
| sessions. The paramters must be given as a PEM encoded string |
| (e.g. the output of 'openssl dhparam -5 2048'). |
| If <data> is 0, the built-in defaults will be restored. |
| If importing the new parameters fails (e.g. due to an incorrect |
| format), the driver tries to keep the old parameters |
| |
| <what> == DC_TLS_CIPHERLIST |
| Sets a new list of ciphers (OpenSSL) or priorities (GnuTLS) to use. |
| For the correct format, please refer to the help of 'openssl |
| ciphers' or documentation of priority strings in GnuTLS. |
| With GnuTLS a syntax error in the list causes an error. |
| With OpenSSL an error is only raised of none of the given ciphers |
| could be selected. |
| By default, the preferred ciphers of the driver take precedence |
| This can be changed in the priority strings for GnuTLS, but |
| currently not for OpenSSL. |
| |
| <what> == DC_EXTRA_WIZINFO_SIZE |
| Indicate that the wizlist should contain an array of the given size |
| with extra info for each wizard. A negative value indicates |
| a non-array value. |
| |
| The value is only used to allocate a proper empty 'extra' value |
| for newly created wizlist entries. |
| |
| <what> == DC_DEFAULT_RUNTIME_LIMITS |
| Sets the default runtime limits, that will be used for each thread. |
| They will be in effect as the initial limits with the next thread. |
| The limits must be given as an array with the following entries: |
| |
| int[LIMIT_EVAL]: the max number of eval costs |
| int[LIMIT_ARRAY]: the max number of array entries |
| int[LIMIT_MAPPING_SIZE]: the max number of mapping values |
| int[LIMIT_MAPPING_KEYS]: the max number of mapping entries |
| int[LIMIT_BYTE]: the max number of bytes handled with |
| one read_bytes()/write_bytes() call. |
| int[LIMIT_FILE]: the max number of bytes handled with |
| one read_file()/write_file() call. |
| int[LIMIT_CALLOUTS]: the number of callouts at one time. |
| int[LIMIT_COST]: how to account the current cost. |
| int[LIMIT_MEMROY]: the max. number of bytes which can be |
| _additionally_ allocated/used |
| _per top-level execution thread_. |
| |
| The limit settings recognize three special values: |
| |
| LIMIT_UNLIMITED: the limit is deactivated |
| LIMIT_KEEP: the former setting is kept |
| LIMIT_DEFAULT: the 'global' default setting is used. |
| |
| For LIMIT_COST, the special values have these meaning: |
| LIMIT_UNLIMITED: at maximum 1 tick is accounted |
| LIMIT_KEEP: LIMIT_COST is set to 0 |
| LIMIT_DEFAULT: LIMIT_COST is set to -100 |
| |
| <what> == DC_SWAP_COMPACT_MODE |
| Sets free swap space shall be reused immediately to keep |
| the swap file as small as possible. |
| (Same as the --swap-compact command line switch.) |
| |
| HISTORY |
| Introduced in LDMud 3.3.719. |
| DC_ENABLE_HEART_BEATS was added in 3.5.0. |
| DC_LONG_EXEC_TIME was added in 3.5.0. |
| DC_DATA_CLEAN_TIME was added in 3.5.0. |
| DC_EXTRA_WIZINFO_SIZE was added in 3.5.0. |
| DC_TLS_CERTIFICATE was added in 3.5.0. |
| DC_TLS_DHE_PARAMETER was added in 3.5.0. |
| DC_TLS_CIPHERLIST was added in 3.5.0. |
| DC_SWAP_COMPACT_MODE was added in 3.5.0. |
| |
| SEE ALSO |
| configure_interactive(E) |