diff options
26 files changed, 424 insertions, 500 deletions
diff --git a/erts/doc/src/erl_prim_loader.xml b/erts/doc/src/erl_prim_loader.xml index d05f0d9aea..db4f132609 100644 --- a/erts/doc/src/erl_prim_loader.xml +++ b/erts/doc/src/erl_prim_loader.xml @@ -36,17 +36,11 @@ the system. The start script is also fetched with this low level loader.</p> <p><c>erl_prim_loader</c> knows about the environment and how to - fetch modules. The loader could, for example, fetch files using - the file system (with absolute file names as input), or a - database (where the binary format of a module is stored).</p> + fetch modules.</p> <p>The <c>-loader Loader</c> command line flag can be used to choose the method used by the <c>erl_prim_loader</c>. Two <c>Loader</c> methods are supported by the Erlang runtime system: - <c>efile</c> and <c>inet</c>. If another loader is required, then - it has to be implemented by the user. The <c>Loader</c> provided - by the user must fulfill the protocol defined below, and it is - started with the <c>erl_prim_loader</c> by evaluating - <c>open_port({spawn,Loader},[binary])</c>.</p> + <c>efile</c> and <c>inet</c>.</p> <warning><p>The support for loading of code from archive files is experimental. The sole purpose of releasing it before it is ready @@ -83,9 +77,6 @@ started on each of hosts given in <c><anno>Hosts</anno></c> in order to answer the requests. See <seealso marker="kernel:erl_boot_server">erl_boot_server(3)</seealso>.</p> - <p>If <c>-loader</c> is something else, the given port program - is started. The port program is supposed to follow - the protocol specified below.</p> </desc> </func> <func> @@ -175,22 +166,6 @@ </funcs> <section> - <title>Protocol</title> - <p>The following protocol must be followed if a user provided - loader port program is used. The <c>Loader</c> port program is - started with the command - <c>open_port({spawn,Loader},[binary])</c>. The protocol is as - follows:</p> - <pre> -Function Send Receive -------------------------------------------------------------- -get_file [102 | FileName] [121 | BinaryFile] (on success) - [122] (failure) - -stop eof terminate</pre> - </section> - - <section> <title>Command Line Flags</title> <p>The <c>erl_prim_loader</c> module interprets the following command line flags:</p> @@ -199,10 +174,8 @@ stop eof terminate</pre> <item> <p>Specifies the name of the loader used by <c>erl_prim_loader</c>. <c>Loader</c> can be <c>efile</c> - (use the local file system), or <c>inet</c> (load using - the <c>boot_server</c> on another Erlang node). If - <c>Loader</c> is user defined, the defined <c>Loader</c> port - program is started.</p> + (use the local file system) or <c>inet</c> (load using + the <c>boot_server</c> on another Erlang node).</p> <p>If the <c>-loader</c> flag is omitted, it defaults to <c>efile</c>.</p> </item> diff --git a/erts/etc/common/ct_run.c b/erts/etc/common/ct_run.c index 548514ee6c..11cec26264 100644 --- a/erts/etc/common/ct_run.c +++ b/erts/etc/common/ct_run.c @@ -83,7 +83,6 @@ static int eargc; /* Number of arguments in eargv. */ static void error(char* format, ...); static char* emalloc(size_t size); static char* strsave(char* string); -static void push_words(char* src); static int run_erlang(char* name, char** argv); static char* get_default_emulator(char* progname); #ifdef __WIN32__ @@ -152,6 +151,8 @@ int main(int argc, char** argv) argv0 = argv; emulator = get_default_emulator(argv[0]); + if (strlen(emulator) >= MAXPATHLEN) + error("Emulator path length is too large"); /* * Allocate the argv vector to be used for arguments to Erlang. @@ -163,7 +164,7 @@ int main(int argc, char** argv) eargv_base = (char **) emalloc(eargv_size*sizeof(char*)); eargv = eargv_base; eargc = 0; - push_words(emulator); + PUSH(strsave(emulator)); eargc_base = eargc; eargv = eargv + eargv_size/2; eargc = 0; @@ -294,26 +295,6 @@ int main(int argc, char** argv) return run_erlang(eargv[0], eargv); } -static void -push_words(char* src) -{ - char sbuf[MAXPATHLEN]; - char* dst; - - dst = sbuf; - while ((*dst++ = *src++) != '\0') { - if (isspace((int)*src)) { - *dst = '\0'; - PUSH(strsave(sbuf)); - dst = sbuf; - do { - src++; - } while (isspace((int)*src)); - } - } - if (sbuf[0]) - PUSH(strsave(sbuf)); -} #ifdef __WIN32__ wchar_t *make_commandline(char **argv) { diff --git a/erts/etc/common/dialyzer.c b/erts/etc/common/dialyzer.c index c45626606c..cac1464bf6 100644 --- a/erts/etc/common/dialyzer.c +++ b/erts/etc/common/dialyzer.c @@ -65,7 +65,6 @@ static int eargc; /* Number of arguments in eargv. */ static void error(char* format, ...); static char* emalloc(size_t size); static char* strsave(char* string); -static void push_words(char* src); static int run_erlang(char* name, char** argv); static char* get_default_emulator(char* progname); #ifdef __WIN32__ @@ -189,7 +188,7 @@ int main(int argc, char** argv) eargv_base = (char **) emalloc(eargv_size*sizeof(char*)); eargv = eargv_base; eargc = 0; - push_words(emulator); + PUSH(strsave(emulator)); eargc_base = eargc; eargv = eargv + eargv_size/2; eargc = 0; @@ -269,27 +268,6 @@ int main(int argc, char** argv) return run_erlang(eargv[0], eargv); } -static void -push_words(char* src) -{ - char sbuf[MAXPATHLEN]; - char* dst; - - dst = sbuf; - while ((*dst++ = *src++) != '\0') { - if (isspace((int)*src)) { - *dst = '\0'; - PUSH(strsave(sbuf)); - dst = sbuf; - do { - src++; - } while (isspace((int)*src)); - } - } - if (sbuf[0]) - PUSH(strsave(sbuf)); -} - #ifdef __WIN32__ wchar_t *make_commandline(char **argv) { diff --git a/erts/etc/common/erlc.c b/erts/etc/common/erlc.c index f9d909e01c..049afc526a 100644 --- a/erts/etc/common/erlc.c +++ b/erts/etc/common/erlc.c @@ -200,7 +200,7 @@ int main(int argc, char** argv) eargv_base = (char **) emalloc(eargv_size*sizeof(char*)); eargv = eargv_base; eargc = 0; - push_words(emulator); + PUSH(strsave(emulator)); eargc_base = eargc; eargv = eargv + eargv_size/2; eargc = 0; @@ -330,26 +330,6 @@ process_opt(int* pArgc, char*** pArgv, int offset) return argv[1]; } -static void -push_words(char* src) -{ - char sbuf[MAXPATHLEN]; - char* dst; - - dst = sbuf; - while ((*dst++ = *src++) != '\0') { - if (isspace((int)*src)) { - *dst = '\0'; - PUSH(strsave(sbuf)); - dst = sbuf; - do { - src++; - } while (isspace((int)*src)); - } - } - if (sbuf[0]) - PUSH(strsave(sbuf)); -} #ifdef __WIN32__ wchar_t *make_commandline(char **argv) { diff --git a/erts/etc/common/escript.c b/erts/etc/common/escript.c index 7fd02ed436..a5c6d0d40b 100644 --- a/erts/etc/common/escript.c +++ b/erts/etc/common/escript.c @@ -74,7 +74,6 @@ static void error(char* format, ...); static char* emalloc(size_t size); static void efree(void *p); static char* strsave(char* string); -static void push_words(char* src); static int run_erlang(char* name, char** argv); static char* get_default_emulator(char* progname); #ifdef __WIN32__ @@ -432,7 +431,7 @@ main(int argc, char** argv) emulator = get_default_emulator(argv[0]); } - if (strlen(emulator) >= PMAX) + if (strlen(emulator) >= MAXPATHLEN) error("Value of environment variable ESCRIPT_EMULATOR is too large"); /* @@ -445,7 +444,7 @@ main(int argc, char** argv) eargv_base = (char **) emalloc(eargv_size*sizeof(char*)); eargv = eargv_base; eargc = 0; - push_words(emulator); + PUSH(strsave(emulator)); eargc_base = eargc; eargv = eargv + eargv_size/2; eargc = 0; @@ -554,26 +553,6 @@ main(int argc, char** argv) return run_erlang(eargv[0], eargv); } -static void -push_words(char* src) -{ - char sbuf[PMAX]; - char* dst; - - dst = sbuf; - while ((*dst++ = *src++) != '\0') { - if (isspace((int)*src)) { - *dst = '\0'; - PUSH(strsave(sbuf)); - dst = sbuf; - do { - src++; - } while (isspace((int)*src)); - } - } - if (sbuf[0]) - PUSH(strsave(sbuf)); -} #ifdef __WIN32__ wchar_t *make_commandline(char **argv) { diff --git a/erts/etc/common/heart.c b/erts/etc/common/heart.c index 01ef840b5d..9571b83ffd 100644 --- a/erts/etc/common/heart.c +++ b/erts/etc/common/heart.c @@ -718,14 +718,12 @@ do_terminate(int erlin_fd, int reason) { print_error("Would reboot. Terminating."); else { kill_old_erlang(); - /* suppress gcc warning with 'if' */ ret = system(command); print_error("Executed \"%s\" -> %d. Terminating.",command, ret); } free_env_val(command); } else { kill_old_erlang(); - /* suppress gcc warning with 'if' */ ret = system((char*)&cmd[0]); print_error("Executed \"%s\" -> %d. Terminating.",cmd, ret); } diff --git a/erts/etc/common/typer.c b/erts/etc/common/typer.c index 0aa0996808..7ff8aa76e2 100644 --- a/erts/etc/common/typer.c +++ b/erts/etc/common/typer.c @@ -65,7 +65,6 @@ static int eargc; /* Number of arguments in eargv. */ static void error(char* format, ...); static char* emalloc(size_t size); static char* strsave(char* string); -static void push_words(char* src); static int run_erlang(char* name, char** argv); static char* get_default_emulator(char* progname); #ifdef __WIN32__ @@ -129,6 +128,9 @@ main(int argc, char** argv) emulator = get_default_emulator(argv[0]); + if (strlen(emulator) >= MAXPATHLEN) + error("Emulator path length is too large"); + /* * Allocate the argv vector to be used for arguments to Erlang. * Arrange for starting to pushing information in the middle of @@ -139,7 +141,7 @@ main(int argc, char** argv) eargv_base = (char **) emalloc(eargv_size*sizeof(char*)); eargv = eargv_base; eargc = 0; - push_words(emulator); + PUSH(strsave(emulator)); eargc_base = eargc; eargv = eargv + eargv_size/2; eargc = 0; @@ -192,26 +194,6 @@ main(int argc, char** argv) return run_erlang(eargv[0], eargv); } -static void -push_words(char* src) -{ - char sbuf[MAXPATHLEN]; - char* dst; - - dst = sbuf; - while ((*dst++ = *src++) != '\0') { - if (isspace((int)*src)) { - *dst = '\0'; - PUSH(strsave(sbuf)); - dst = sbuf; - do { - src++; - } while (isspace((int)*src)); - } - } - if (sbuf[0]) - PUSH(strsave(sbuf)); -} #ifdef __WIN32__ wchar_t *make_commandline(char **argv) { diff --git a/erts/preloaded/ebin/init.beam b/erts/preloaded/ebin/init.beam Binary files differindex 851513b2e9..73dfb3d351 100644 --- a/erts/preloaded/ebin/init.beam +++ b/erts/preloaded/ebin/init.beam diff --git a/erts/preloaded/src/init.erl b/erts/preloaded/src/init.erl index c4e37b76f1..0ad5824ad1 100644 --- a/erts/preloaded/src/init.erl +++ b/erts/preloaded/src/init.erl @@ -167,7 +167,6 @@ stop(Status) -> init ! {stop,{stop,Status}}, ok. boot(BootArgs) -> register(init, self()), process_flag(trap_exit, true), - start_on_load_handler_process(), {Start0,Flags,Args} = parse_boot_args(BootArgs), Start = map(fun prepare_run_args/1, Start0), Flags0 = flags_to_atoms_again(Flags), @@ -225,6 +224,7 @@ code_path_choice() -> end. boot(Start,Flags,Args) -> + start_on_load_handler_process(), BootPid = do_boot(Flags,Start), State = #state{flags = Flags, args = Args, diff --git a/lib/compiler/doc/src/notes.xml b/lib/compiler/doc/src/notes.xml index bd85f22462..daf3bd3af9 100644 --- a/lib/compiler/doc/src/notes.xml +++ b/lib/compiler/doc/src/notes.xml @@ -458,22 +458,28 @@ <p> EEP43: New data type - Maps</p> <p> - With Maps you may for instance: <taglist> <item><c>M0 = - #{ a => 1, b => 2}, % create - associations</c></item> <item><c>M1 = M0#{ a := 10 }, % - update values</c></item> <item><c>M2 = M1#{ "hi" => - "hello"}, % add new associations</c></item> <item><c>#{ - "hi" := V1, a := V2, b := V3} = M2. % match keys with - values</c></item> </taglist></p> + With Maps you may for instance:</p> + <taglist> + <tag/> <item><c>M0 = #{ a => 1, b => 2}, % create + associations</c></item> + <tag/><item><c>M1 = M0#{ a := 10 }, % update values</c></item> + <tag/><item><c>M2 = M1#{ "hi" => + "hello"}, % add new associations</c></item> + <tag/><item><c>#{ "hi" := V1, a := V2, b := V3} = M2. + % match keys with values</c></item> + </taglist> <p> For information on how to use Maps please see Map Expressions in the <seealso marker="doc/reference_manual:expressions#map_expressions"> Reference Manual</seealso>.</p> <p> The current implementation is without the following - features: <taglist> <item>No variable keys</item> - <item>No single value access</item> <item>No map - comprehensions</item> </taglist></p> + features:</p> + <taglist> + <tag/><item>No variable keys</item> + <tag/><item>No single value access</item> + <tag/><item>No map comprehensions</item> + </taglist> <p> Note that Maps is <em>experimental</em> during OTP 17.0.</p> <p> diff --git a/lib/crypto/doc/src/crypto.xml b/lib/crypto/doc/src/crypto.xml index 291a5145e4..563a090e98 100644 --- a/lib/crypto/doc/src/crypto.xml +++ b/lib/crypto/doc/src/crypto.xml @@ -66,29 +66,29 @@ <section> <title>DATA TYPES </title> - <p><code>key_value() = integer() | binary() </code></p> + <code>key_value() = integer() | binary() </code> <p>Always <c>binary()</c> when used as return value</p> - <p><code>rsa_public() = [key_value()] = [E, N] </code></p> + <code>rsa_public() = [key_value()] = [E, N] </code> <p> Where E is the public exponent and N is public modulus. </p> - <p><code>rsa_private() = [key_value()] = [E, N, D] | [E, N, D, P1, P2, E1, E2, C] </code></p> + <code>rsa_private() = [key_value()] = [E, N, D] | [E, N, D, P1, P2, E1, E2, C] </code> <p>Where E is the public exponent, N is public modulus and D is the private exponent.The longer key format contains redundant information that will make the calculation faster. P1,P2 are first and second prime factors. E1,E2 are first and second exponents. C is the CRT coefficient. Terminology is taken from <url href="http://www.ietf.org/rfc/rfc3477.txt"> RFC 3447</url>.</p> - <p><code>dss_public() = [key_value()] = [P, Q, G, Y] </code></p> + <code>dss_public() = [key_value()] = [P, Q, G, Y] </code> <p>Where P, Q and G are the dss parameters and Y is the public key.</p> - <p><code>dss_private() = [key_value()] = [P, Q, G, X] </code></p> + <code>dss_private() = [key_value()] = [P, Q, G, X] </code> <p>Where P, Q and G are the dss parameters and X is the private key.</p> - <p><code>srp_public() = key_value() </code></p> + <code>srp_public() = key_value() </code> <p>Where is <c>A</c> or <c>B</c> from <url href="http://srp.stanford.edu/design.html">SRP design</url></p> - <p><code>srp_private() = key_value() </code></p> + <code>srp_private() = key_value() </code> <p>Where is <c>a</c> or <c>b</c> from <url href="http://srp.stanford.edu/design.html">SRP design</url></p> <p>Where Verifier is <c>v</c>, Generator is <c>g</c> and Prime is<c> N</c>, DerivedKey is <c>X</c>, and Scrambler is @@ -96,29 +96,29 @@ Version = '3' | '6' | '6a' </p> - <p><code>dh_public() = key_value() </code></p> + <code>dh_public() = key_value() </code> - <p><code>dh_private() = key_value() </code></p> + <code>dh_private() = key_value() </code> - <p><code>dh_params() = [key_value()] = [P, G] </code></p> + <code>dh_params() = [key_value()] = [P, G] </code> - <p><code>ecdh_public() = key_value() </code></p> + <code>ecdh_public() = key_value() </code> - <p><code>ecdh_private() = key_value() </code></p> + <code>ecdh_private() = key_value() </code> - <p><code>ecdh_params() = ec_named_curve() | ec_explicit_curve()</code></p> + <code>ecdh_params() = ec_named_curve() | ec_explicit_curve()</code> - <p><code>ec_explicit_curve() = - {ec_field(), Prime :: key_value(), Point :: key_value(), Order :: integer(), CoFactor :: none | integer()} </code></p> + <code>ec_explicit_curve() = + {ec_field(), Prime :: key_value(), Point :: key_value(), Order :: integer(), CoFactor :: none | integer()} </code> - <p><code>ec_field() = {prime_field, Prime :: integer()} | - {characteristic_two_field, M :: integer(), Basis :: ec_basis()}</code></p> + <code>ec_field() = {prime_field, Prime :: integer()} | + {characteristic_two_field, M :: integer(), Basis :: ec_basis()}</code> - <p><code>ec_basis() = {tpbasis, K :: non_neg_integer()} | + <code>ec_basis() = {tpbasis, K :: non_neg_integer()} | {ppbasis, K1 :: non_neg_integer(), K2 :: non_neg_integer(), K3 :: non_neg_integer()} | - onbasis</code></p> + onbasis</code> - <p><code>ec_named_curve() -> + <code>ec_named_curve() -> sect571r1| sect571k1| sect409r1| sect409k1| secp521r1| secp384r1| secp224r1| secp224k1| secp192k1| secp160r2| secp128r2| secp128r1| sect233r1| sect233k1| sect193r2| sect193r1| sect131r2| sect131r1| sect283r1| sect283k1| sect163r2| secp256k1| secp160k1| secp160r1| @@ -128,42 +128,42 @@ brainpoolP224t1| brainpoolP256r1| brainpoolP256t1| brainpoolP320r1| brainpoolP320t1| brainpoolP384r1| brainpoolP384t1| brainpoolP512r1| brainpoolP512t1 </code> - Note that the <em>sect</em> curves are GF2m (characteristic two) curves and are only supported if the + <p>Note that the <em>sect</em> curves are GF2m (characteristic two) curves and are only supported if the underlying OpenSSL has support for them. See also <seealso marker="#supports-0">crypto:supports/0</seealso> </p> - <p><code>stream_cipher() = rc4 | aes_ctr </code></p> + <code>stream_cipher() = rc4 | aes_ctr </code> - <p><code>block_cipher() = aes_cbc128 | aes_cfb8 | aes_cfb128 | aes_ige256 | blowfish_cbc | + <code>block_cipher() = aes_cbc128 | aes_cfb8 | aes_cfb128 | aes_ige256 | blowfish_cbc | blowfish_cfb64 | des_cbc | des_cfb | des3_cbc | des3_cbf - | des_ede3 | rc2_cbc </code></p> + | des_ede3 | rc2_cbc </code> - <p><code>aead_cipher() = aes_gcm | chacha20_poly1305 </code></p> + <code>aead_cipher() = aes_gcm | chacha20_poly1305 </code> - <p><code>stream_key() = aes_key() | rc4_key() </code></p> + <code>stream_key() = aes_key() | rc4_key() </code> - <p><code>block_key() = aes_key() | blowfish_key() | des_key()| des3_key() </code></p> + <code>block_key() = aes_key() | blowfish_key() | des_key()| des3_key() </code> - <p><code>aes_key() = iodata() </code> Key length is 128, 192 or 256 bits</p> + <code>aes_key() = iodata() </code> <p>Key length is 128, 192 or 256 bits</p> - <p><code>rc4_key() = iodata() </code> Variable key length from 8 bits up to 2048 bits (usually between 40 and 256)</p> + <code>rc4_key() = iodata() </code> <p>Variable key length from 8 bits up to 2048 bits (usually between 40 and 256)</p> - <p><code>blowfish_key() = iodata() </code> Variable key length from 32 bits up to 448 bits</p> + <code>blowfish_key() = iodata() </code> <p>Variable key length from 32 bits up to 448 bits</p> - <p><code>des_key() = iodata() </code> Key length is 64 bits (in CBC mode only 8 bits are used)</p> + <code>des_key() = iodata() </code> <p>Key length is 64 bits (in CBC mode only 8 bits are used)</p> - <p><code>des3_key() = [binary(), binary(), binary()] </code> Each key part is 64 bits (in CBC mode only 8 bits are used)</p> + <code>des3_key() = [binary(), binary(), binary()] </code> <p>Each key part is 64 bits (in CBC mode only 8 bits are used)</p> - <p><code>digest_type() = md5 | sha | sha224 | sha256 | sha384 | sha512</code></p> + <code>digest_type() = md5 | sha | sha224 | sha256 | sha384 | sha512</code> - <p><code> hash_algorithms() = md5 | ripemd160 | sha | sha224 | sha256 | sha384 | sha512 </code> md4 is also supported for hash_init/1 and hash/2. + <code> hash_algorithms() = md5 | ripemd160 | sha | sha224 | sha256 | sha384 | sha512 </code> <p>md4 is also supported for hash_init/1 and hash/2. Note that both md4 and md5 are recommended only for compatibility with existing applications. </p> - <p><code> cipher_algorithms() = des_cbc | des_cfb | des3_cbc | des3_cbf | des_ede3 | - blowfish_cbc | blowfish_cfb64 | aes_cbc128 | aes_cfb8 | aes_cfb128| aes_cbc256 | aes_ige256 | aes_gcm | chacha20_poly1305 | rc2_cbc | aes_ctr| rc4 </code> </p> - <p><code> public_key_algorithms() = rsa |dss | ecdsa | dh | ecdh | ec_gf2m</code> - Note that ec_gf2m is not strictly a public key algorithm, but a restriction on what curves are supported + <code> cipher_algorithms() = des_cbc | des_cfb | des3_cbc | des3_cbf | des_ede3 | + blowfish_cbc | blowfish_cfb64 | aes_cbc128 | aes_cfb8 | aes_cfb128| aes_cbc256 | aes_ige256 | aes_gcm | chacha20_poly1305 | rc2_cbc | aes_ctr| rc4 </code> + <code> public_key_algorithms() = rsa |dss | ecdsa | dh | ecdh | ec_gf2m</code> + <p>Note that ec_gf2m is not strictly a public key algorithm, but a restriction on what curves are supported with ecdsa and ecdh. </p> @@ -381,8 +381,8 @@ </type> <desc> <p>Computes a HMAC of type <c>Type</c> from <c>Data</c> using - <c>Key</c> as the authentication key.</p> <c>MacLength</c> - will limit the size of the resultant <c>Mac</c>. + <c>Key</c> as the authentication key.</p> <p><c>MacLength</c> + will limit the size of the resultant <c>Mac</c>.</p> </desc> </func> @@ -601,8 +601,11 @@ </type> <desc> <p>Generates N bytes randomly uniform 0..255, and returns the - result in a binary. Uses the <c>crypto</c> library pseudo-random - number generator.</p> + result in a binary. Uses the <c>crypto</c> library pseudo-random + number generator.</p> + <p>This function is not recommended for cryptographic purposes. + Please use <seealso marker="#strong_rand_bytes/1"> + strong_rand_bytes/1</seealso> instead.</p> </desc> </func> @@ -650,7 +653,7 @@ <p>Creates a digital signature.</p> <p>Algorithm <c>dss</c> can only be used together with digest type <c>sha</c>.</p> - See also <seealso marker="public_key:public_key#sign-3">public_key:sign/3</seealso> + <p>See also <seealso marker="public_key:public_key#sign-3">public_key:sign/3</seealso>.</p> </desc> </func> @@ -802,7 +805,7 @@ <p>Algorithm <c>dss</c> can only be used together with digest type <c>sha</c>.</p> - See also <seealso marker="public_key:public_key#verify-4">public_key:verify/4</seealso> + <p>See also <seealso marker="public_key:public_key#verify-4">public_key:verify/4</seealso>.</p> </desc> </func> diff --git a/lib/eunit/doc/overview.edoc b/lib/eunit/doc/overview.edoc index 2789a05792..12ea02f442 100644 --- a/lib/eunit/doc/overview.edoc +++ b/lib/eunit/doc/overview.edoc @@ -907,7 +907,6 @@ the test set is finished, regardless of the outcome (success, failures, timeouts, etc.). To make the descriptions simpler, we first list some definitions: -<center> <table border="0" cellspacing="4"> <tr> <td>`Setup'</td><td>`() -> (R::any())'</td> @@ -928,7 +927,6 @@ To make the descriptions simpler, we first list some definitions: <td>`Where'</td><td>`local | spawn | {spawn, Node::atom()}'</td> </tr> </table> -</center> (these are explained in more detail further below.) The following representations specify fixture handling for test sets: diff --git a/lib/inets/src/http_client/httpc_handler.erl b/lib/inets/src/http_client/httpc_handler.erl index 1044cffe6f..e6dcfee818 100644 --- a/lib/inets/src/http_client/httpc_handler.erl +++ b/lib/inets/src/http_client/httpc_handler.erl @@ -1113,8 +1113,8 @@ handle_http_body(Body, #state{headers = Headers, case case_insensitive_header(TransferEnc) of "chunked" -> ?hcrt("handle_http_body - chunked", []), - case http_chunk:decode(Body, State#state.max_body_size, - State#state.max_header_size) of + try http_chunk:decode(Body, State#state.max_body_size, + State#state.max_header_size) of {Module, Function, Args} -> ?hcrt("handle_http_body - new mfa", [{module, Module}, @@ -1139,6 +1139,13 @@ handle_http_body(Body, #state{headers = Headers, handle_response(State#state{headers = NewHeaders, body = NewBody2}) end + catch throw:{error, Reason} -> + NewState = + answer_request(Request, + httpc_response:error(Request, + Reason), + State), + {stop, normal, NewState} end; Enc when Enc =:= "identity"; Enc =:= undefined -> ?hcrt("handle_http_body - identity", []), diff --git a/lib/inets/src/http_lib/http_chunk.erl b/lib/inets/src/http_lib/http_chunk.erl index 2f8476a49d..9699856bf8 100644 --- a/lib/inets/src/http_lib/http_chunk.erl +++ b/lib/inets/src/http_lib/http_chunk.erl @@ -147,7 +147,7 @@ decode_size(Data = <<?CR, ?LF, ChunkRest/binary>>, HexList, AccHeaderSize, {MaxBodySize, Body, AccLength, MaxHeaderSize}) -> - try http_util:hexlist_to_integer(lists:reverse(HexList)) of + try http_util:hexlist_to_integer(lists:reverse(string:strip(HexList, left))) of 0 -> % Last chunk, there was no data ignore_extensions(Data, remaing_size(MaxHeaderSize, AccHeaderSize), MaxHeaderSize, {?MODULE, decode_trailer, diff --git a/lib/inets/test/http_format_SUITE.erl b/lib/inets/test/http_format_SUITE.erl index a927adc75e..e977bd1b9b 100644 --- a/lib/inets/test/http_format_SUITE.erl +++ b/lib/inets/test/http_format_SUITE.erl @@ -38,6 +38,7 @@ groups() -> [chunk_decode, chunk_encode, chunk_extensions_otp_6005, chunk_decode_otp_6264, chunk_decode_empty_chunk_otp_6511, + chunk_whitespace_suffix, chunk_decode_trailer, chunk_max_headersize, chunk_max_bodysize, chunk_not_hex]}]. init_per_suite(Config) -> @@ -157,6 +158,21 @@ chunk_decode_empty_chunk_otp_6511(Config) when is_list(Config) -> ?HTTP_MAX_BODY_SIZE, ?HTTP_MAX_HEADER_SIZE). %%------------------------------------------------------------------------- +chunk_whitespace_suffix() -> + [{doc, "Test whitespace after chunked length header"}]. +chunk_whitespace_suffix(Config) when is_list(Config) -> + ChunkedBody = "1a ; ignore-stuff-here" ++ ?CRLF ++ + "abcdefghijklmnopqrstuvwxyz" ++ ?CRLF ++ "10 " ++ ?CRLF + ++ "1234567890abcdef" ++ ?CRLF ++ "0 " ++ ?CRLF + ++ "some-footer:some-value" ++ ?CRLF + ++ "another-footer:another-value" ++ ?CRLF ++ ?CRLF, + {ok, {["content-length:42", "another-footer:another-value", + "some-footer:some-value", ""], + <<"abcdefghijklmnopqrstuvwxyz1234567890abcdef">>}} = + http_chunk:decode(list_to_binary(ChunkedBody), + ?HTTP_MAX_BODY_SIZE, ?HTTP_MAX_HEADER_SIZE). + +%%------------------------------------------------------------------------- chunk_decode_trailer() -> [{doc,"Make sure trailers are handled correctly. Trailers should" "become new headers"}]. diff --git a/lib/inets/test/httpc_SUITE.erl b/lib/inets/test/httpc_SUITE.erl index 989563cdbc..c6c59ab1af 100644 --- a/lib/inets/test/httpc_SUITE.erl +++ b/lib/inets/test/httpc_SUITE.erl @@ -106,6 +106,7 @@ only_simulated() -> bad_response, internal_server_error, invalid_http, + invalid_chunk_size, headers_dummy, headers_with_obs_fold, empty_response_header, @@ -765,6 +766,22 @@ invalid_http(Config) when is_list(Config) -> ct:print("Parse error: ~p ~n", [Reason]). %%------------------------------------------------------------------------- + +invalid_chunk_size(doc) -> + ["Test parse error of HTTP chunk size"]; +invalid_chunk_size(suite) -> + []; +invalid_chunk_size(Config) when is_list(Config) -> + + URL = url(group_name(Config), "/invalid_chunk_size.html", Config), + + {error, {chunk_size, _} = Reason} = + httpc:request(get, {URL, []}, [], []), + + ct:print("Parse error: ~p ~n", [Reason]). + +%%------------------------------------------------------------------------- + emulate_lower_versions(doc) -> [{doc, "Perform request as 0.9 and 1.0 clients."}]; emulate_lower_versions(Config) when is_list(Config) -> @@ -1876,6 +1893,10 @@ handle_uri(_,"/invalid_http.html",_,_,_,_) -> "HTTP/1.1 301\r\nDate:Sun, 09 Dec 2007 13:04:18 GMT\r\n" ++ "Transfer-Encoding:chunked\r\n\r\n"; +handle_uri(_,"/invalid_chunk_size.html",_,_,_,_) -> + "HTTP/1.1 200 ok\r\n" ++ + "Transfer-Encoding:chunked\r\n\r\nåäö\r\n"; + handle_uri(_,"/missing_reason_phrase.html",_,_,_,_) -> "HTTP/1.1 200\r\n" ++ "Content-Length: 32\r\n\r\n" diff --git a/lib/snmp/doc/src/snmp_agent_netif.xml b/lib/snmp/doc/src/snmp_agent_netif.xml index 769fd23115..9583f1f521 100644 --- a/lib/snmp/doc/src/snmp_agent_netif.xml +++ b/lib/snmp/doc/src/snmp_agent_netif.xml @@ -76,8 +76,7 @@ <c>{Domain, Addr}</c> tuple where <c>Domain</c> is <c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv4</c>, and <c>Addr</c> is an - <c>{<seealso marker="kernel:inet#type-ip_address">IpAddr</seealso>, - IpPort}</c> tuple.</p> + <c>{</c><seealso marker="kernel:inet#type-ip_address"><c>IpAddr</c></seealso><c>,IpPort}</c> tuple.</p> <section> <marker id="outgoing_messages"></marker> diff --git a/lib/snmp/doc/src/snmp_app.xml b/lib/snmp/doc/src/snmp_app.xml index 234a076eda..39aac8e7d7 100644 --- a/lib/snmp/doc/src/snmp_app.xml +++ b/lib/snmp/doc/src/snmp_app.xml @@ -135,16 +135,16 @@ <marker id="agent_opts_and_types"></marker> <p>Agent specific config options and types:</p> <taglist> - <marker id="agent_type"></marker> - <tag><c><![CDATA[agent_type() = master | sub <optional>]]></c></tag> + <tag><marker id="agent_type"></marker> + <c><![CDATA[agent_type() = master | sub <optional>]]></c></tag> <item> <p>If <c>master</c>, one master agent is started. Otherwise, no agents are started. </p> <p>Default is <c>master</c>.</p> </item> - <marker id="agent_disco"></marker> - <tag><c><![CDATA[agent_discovery() = [agent_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_disco"></marker> + <c><![CDATA[agent_discovery() = [agent_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_discovery_opt() = {terminating, agent_terminating_discovery_opts()} | @@ -156,8 +156,8 @@ <p>For defaults see the options in <c>agent_discovery_opt()</c>.</p> </item> - <marker id="agent_term_disco_opts"></marker> - <tag><c><![CDATA[agent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_term_disco_opts"></marker> + <c><![CDATA[agent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_terminating_discovery_opt() = {enable, boolean()} | @@ -174,8 +174,8 @@ </list> </item> - <marker id="agent_orig_disco_opts"></marker> - <tag><c><![CDATA[agent_originating_discovery_opts() = [agent_originating_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_orig_disco_opts"></marker> + <c><![CDATA[agent_originating_discovery_opts() = [agent_originating_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_originating_discovery_opt() = {enable, boolean()}</c></p> @@ -188,38 +188,39 @@ </list> </item> - <marker id="agent_mt"></marker> - <tag><c><![CDATA[multi_threaded() = bool() <optional>]]></c></tag> + <tag><marker id="agent_mt"></marker> + <c><![CDATA[multi_threaded() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, the agent is multi-threaded, with one thread for each get request. </p> <p>Default is <c>false</c>.</p> </item> - <marker id="agent_data_dir"></marker> - <tag><c><![CDATA[db_dir() = string() <mandatory>]]></c></tag> + <tag><marker id="agent_data_dir"></marker> + <c><![CDATA[db_dir() = string() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP agent internal db files are stored.</p> </item> - <marker id="agent_gb_max_vbs"></marker> - <tag><c><![CDATA[gb_max_vbs() = pos_integer() | infinity <optional>]]></c></tag> + + <tag><marker id="agent_gb_max_vbs"></marker> + <c><![CDATA[gb_max_vbs() = pos_integer() | infinity <optional>]]></c></tag> <item> <p>Defines the maximum number of varbinds allowed in a Get-BULK response.</p> <p>Default is <c>1000</c>.</p> </item> - <marker id="agent_local_db"></marker> - <tag><c><![CDATA[local_db() = [local_db_opt()] <optional>]]></c></tag> + <tag><marker id="agent_local_db"></marker> + <c><![CDATA[local_db() = [local_db_opt()] <optional>]]></c></tag> <item> <p><c>local_db_opt() = {repair, agent_repair()} | {auto_save, agent_auto_save()} | {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent local database.</p> <p>For defaults see the options in <c>local_db_opt()</c>.</p> </item> - <marker id="agent_ldb_repair"></marker> - <tag><c><![CDATA[agent_repair() = false | true | force <optional>]]></c></tag> + <tag><marker id="agent_ldb_repair"></marker> + <c><![CDATA[agent_repair() = false | true | force <optional>]]></c></tag> <item> <p>When starting snmpa_local_db it always tries to open an existing database. If <c>false</c>, and some errors occur, a new @@ -229,16 +230,16 @@ <p>Default is <c>true</c>.</p> </item> - <marker id="agent_ldb_auto_save"></marker> - <tag><c><![CDATA[agent_auto_save() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="agent_ldb_auto_save"></marker> + <c><![CDATA[agent_auto_save() = integer() | infinity <optional>]]></c></tag> <item> <p>The auto save interval. The table is flushed to disk whenever not accessed for this amount of time.</p> <p>Default is <c>5000</c>.</p> </item> - <marker id="agent_net_if"></marker> - <tag><c><![CDATA[agent_net_if() = [agent_net_if_opt()] <optional>]]></c></tag> + <tag><marker id="agent_net_if"></marker> + <c><![CDATA[agent_net_if() = [agent_net_if_opt()] <optional>]]></c></tag> <item> <p><c>agent_net_if_opt() = {module, agent_net_if_module()} | {verbosity, verbosity()} | {options, agent_net_if_options()}</c></p> <p>Defines options specific for the SNMP agent network interface @@ -246,8 +247,8 @@ <p>For defaults see the options in <c>agent_net_if_opt()</c>.</p> </item> - <marker id="agent_ni_module"></marker> - <tag><c><![CDATA[agent_net_if_module() = atom() <optional>]]></c></tag> + <tag><marker id="agent_ni_module"></marker> + <c><![CDATA[agent_net_if_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface part for the SNMP agent. Must implement the @@ -255,8 +256,8 @@ <p>Default is <c>snmpa_net_if</c>.</p> </item> - <marker id="agent_ni_opts"></marker> - <tag><c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag> + <tag><marker id="agent_ni_opts"></marker> + <c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag> <item> <p><c>agent_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | @@ -270,15 +271,15 @@ <p>For defaults see the options in <c>agent_net_if_option()</c>.</p> </item> - <marker id="agent_ni_req_limit"></marker> - <tag><c><![CDATA[req_limit() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="agent_ni_req_limit"></marker> + <c><![CDATA[req_limit() = integer() | infinity <optional>]]></c></tag> <item> <p>Max number of simultaneous requests handled by the agent.</p> <p>Default is <c>infinity</c>.</p> </item> - <marker id="agent_ni_filter_opts"></marker> - <tag><c><![CDATA[agent_net_if_filter_options() = [agent_net_if_filter_option()] <optional>]]></c></tag> + <tag><marker id="agent_ni_filter_opts"></marker> + <c><![CDATA[agent_net_if_filter_options() = [agent_net_if_filter_option()] <optional>]]></c></tag> <item> <p><c>agent_net_if_filter_option() = {module, agent_net_if_filter_module()}</c></p> <p>These options are actually specific to the used module. @@ -288,8 +289,8 @@ <c>agent_net_if_filter_option()</c>.</p> </item> - <marker id="agent_ni_filter_module"></marker> - <tag><c><![CDATA[agent_net_if_filter_module() = atom() <optional>]]></c></tag> + <tag><marker id="agent_ni_filter_module"></marker> + <c><![CDATA[agent_net_if_filter_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface filter part for the SNMP agent. Must implement the @@ -297,8 +298,8 @@ <p>Default is <c>snmpa_net_if_filter</c>.</p> </item> - <marker id="agent_mibs"></marker> - <tag><c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag> + <tag><marker id="agent_mibs"></marker> + <c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag> <item> <p>Specifies a list of MIBs (including path) that defines which MIBs are initially loaded into the SNMP master agent. </p> @@ -312,8 +313,8 @@ <p>Default is <c>[]</c>.</p> </item> - <marker id="agent_mib_storage"></marker> - <tag><c><![CDATA[mib_storage() = [mib_storage_opt()] <optional>]]></c></tag> + <tag><marker id="agent_mib_storage"></marker> + <c><![CDATA[mib_storage() = [mib_storage_opt()] <optional>]]></c></tag> <item> <p><c>mib_storage_opt() = {module, mib_storage_module()} | {options, mib_storage_options()}</c></p> <p>This option specifies how basic mib data is stored. @@ -322,8 +323,8 @@ <p>Default is <c>[{module, snmpa_mib_storage_ets}]</c>. </p> </item> - <marker id="agent_mst_module"></marker> - <tag><c><![CDATA[mib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()]]></c></tag> + <tag><marker id="agent_mst_module"></marker> + <c><![CDATA[mib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()]]></c></tag> <item> <p>Defines the mib storage module of the SNMP agent as defined by the <seealso marker="snmpa_mib_storage">snmpa_mib_storage</seealso> @@ -337,8 +338,8 @@ <p>Default module is <c>snmpa_mib_storage_ets</c>. </p> </item> - <marker id="agent_mst_options"></marker> - <tag><c><![CDATA[mib_storage_options() = list() <optional>]]></c></tag> + <tag><marker id="agent_mst_options"></marker> + <c><![CDATA[mib_storage_options() = list() <optional>]]></c></tag> <item> <p>This is implementattion depended. That is, it depends on the module. For each module a specific set of options are valid. @@ -427,16 +428,16 @@ </list> </item> - <marker id="agent_mib_server"></marker> - <tag><c><![CDATA[mib_server() = [mib_server_opt()] <optional>]]></c></tag> + <tag><marker id="agent_mib_server"></marker> + <c><![CDATA[mib_server() = [mib_server_opt()] <optional>]]></c></tag> <item> <p><c>mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}</c></p> <p>Defines options specific for the SNMP agent mib server. </p> <p>For defaults see the options in <c>mib_server_opt()</c>.</p> </item> - <marker id="agent_ms_meo"></marker> - <tag><c><![CDATA[mibentry_override() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_meo"></marker> + <c><![CDATA[mibentry_override() = bool() <optional>]]></c></tag> <item> <p>If this value is false, then when loading a mib each mib- entry is checked prior to installation of the mib. @@ -445,8 +446,8 @@ <p>Default is <c>false</c>.</p> </item> - <marker id="agent_ms_teo"></marker> - <tag><c><![CDATA[trapentry_override() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_teo"></marker> + <c><![CDATA[trapentry_override() = bool() <optional>]]></c></tag> <item> <p>If this value is false, then when loading a mib each trap is checked prior to installation of the mib. @@ -455,11 +456,12 @@ <p>Default is <c>false</c>.</p> </item> - <marker id="agent_ms_data_module"></marker> <!-- - <tag><c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | snmpa_mib_data_ttln | module() <optional>]]></c></tag> + <tag><marker id="agent_ms_data_module"></marker> + <c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | snmpa_mib_data_ttln | module() <optional>]]></c></tag> --> - <tag><c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | module() <optional>]]></c></tag> + <tag><marker id="agent_ms_data_module"></marker> + <c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | module() <optional>]]></c></tag> <item> <p>Defines the backend data module of the SNMP agent mib-server as defined by the @@ -476,24 +478,24 @@ <p>Default module is <c>snmpa_mib_data_tttn</c>. </p> </item> - <marker id="agent_ms_cache"></marker> - <tag><c><![CDATA[mibs_cache() = bool() | mibs_cache_opts() <optional>]]></c></tag> + <tag><marker id="agent_ms_cache"></marker> + <c><![CDATA[mibs_cache() = bool() | mibs_cache_opts() <optional>]]></c></tag> <item> <p>Shall the agent utilize the mib server lookup cache or not.</p> <p>Default is <c>true</c> (in which case the <c>mibs_cache_opts()</c> default values apply).</p> </item> - <marker id="agent_ms_cache_opts"></marker> - <tag><c><![CDATA[mibs_cache_opts() = [mibs_cache_opt()] <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_opts"></marker> + <c><![CDATA[mibs_cache_opts() = [mibs_cache_opt()] <optional>]]></c></tag> <item> <p><c>mibs_cache_opt() = {autogc, mibs_cache_autogc()} | {gclimit, mibs_cache_gclimit()} | {age, mibs_cache_age()}</c></p> <p>Defines options specific for the SNMP agent mib server cache. </p> <p>For defaults see the options in <c>mibs_cache_opt()</c>.</p> </item> - <marker id="agent_ms_cache_autogc"></marker> - <tag><c><![CDATA[mibs_cache_autogc() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_autogc"></marker> + <c><![CDATA[mibs_cache_autogc() = bool() <optional>]]></c></tag> <item> <p>Defines if the mib server shall perform cache gc automatically or leave it to the user (see @@ -501,8 +503,8 @@ <p>Default is <c>true</c>.</p> </item> - <marker id="agent_ms_cache_age"></marker> - <tag><c><![CDATA[mibs_cache_age() = integer() > 0 <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_age"></marker> + <c><![CDATA[mibs_cache_age() = integer() > 0 <optional>]]></c></tag> <item> <p>Defines how old the entries in the cache will be allowed to become before they are GC'ed (assuming GC is performed). @@ -511,8 +513,8 @@ <p>Default is <c>10 timutes</c>.</p> </item> - <marker id="agent_ms_cache_gclimit"></marker> - <tag><c><![CDATA[mibs_cache_gclimit() = integer() > 0 | infinity <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_gclimit"></marker> + <c><![CDATA[mibs_cache_gclimit() = integer() > 0 | infinity <optional>]]></c></tag> <item> <p>When performing a GC, this is the max number of cache entries that will be deleted from the cache. </p> @@ -522,8 +524,8 @@ <p>Default is <c>100</c>.</p> </item> - <marker id="agent_error_report_mod"></marker> - <tag><c><![CDATA[error_report_mod() = atom() <optional>]]></c></tag> + <tag><marker id="agent_error_report_mod"></marker> + <c><![CDATA[error_report_mod() = atom() <optional>]]></c></tag> <item> <p>Defines an error report module, implementing the <seealso marker="snmpa_error_report">snmpa_error_report</seealso> @@ -532,38 +534,38 @@ <p>Default is <c>snmpa_error_logger</c>.</p> </item> - <marker id="agent_symbolic_store"></marker> - <tag><c>symbolic_store() = [symbolic_store_opt()]</c></tag> + <tag><marker id="agent_symbolic_store"></marker> + <c>symbolic_store() = [symbolic_store_opt()]</c></tag> <item> <p><c>symbolic_store_opt() = {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent symbolic store. </p> <p>For defaults see the options in <c>symbolic_store_opt()</c>.</p> </item> - <marker id="agent_target_cache"></marker> - <tag><c>target_cache() = [target_cache_opt()]</c></tag> + <tag><marker id="agent_target_cache"></marker> + <c>target_cache() = [target_cache_opt()]</c></tag> <item> <p><c>target_cache_opt() = {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent target cache. </p> <p>For defaults see the options in <c>target_cache_opt()</c>.</p> </item> - <marker id="agent_config"></marker> - <tag><c><![CDATA[agent_config() = [agent_config_opt()] <mandatory>]]></c></tag> + <tag><marker id="agent_config"></marker> + <c><![CDATA[agent_config() = [agent_config_opt()] <mandatory>]]></c></tag> <item> <p><c>agent_config_opt() = {dir, agent_config_dir()} | {force_load, force_load()} | {verbosity, verbosity()}</c></p> <p>Defines specific config related options for the SNMP agent. </p> <p>For defaults see the options in <c>agent_config_opt()</c>.</p> </item> - <marker id="agent_config_dir"></marker> - <tag><c><![CDATA[agent_config_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="agent_config_dir"></marker> + <c><![CDATA[agent_config_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP agent configuration files are stored.</p> </item> - <marker id="agent_force_load"></marker> - <tag><c><![CDATA[force_load() = bool() <optional>]]></c></tag> + <tag><marker id="agent_force_load"></marker> + <c><![CDATA[force_load() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c> the configuration files are re-read during start-up, and the contents of the configuration @@ -577,16 +579,16 @@ <marker id="manager_opts_and_types"></marker> <p>Manager specific config options and types:</p> <taglist> - <marker id="manager_server"></marker> - <tag><c><![CDATA[server() = [server_opt()] <optional>]]></c></tag> + <tag><marker id="manager_server"></marker> + <c><![CDATA[server() = [server_opt()] <optional>]]></c></tag> <item> <p><c>server_opt() = {timeout, server_timeout()} | {verbosity, verbosity()}</c></p> <p>Specifies the options for the manager server process.</p> <p>Default is <c>silence</c>.</p> </item> - <marker id="manager_server_timeout"></marker> - <tag><c><![CDATA[server_timeout() = integer() <optional>]]></c></tag> + <tag><marker id="manager_server_timeout"></marker> + <c><![CDATA[server_timeout() = integer() <optional>]]></c></tag> <item> <p>Asynchronous request cleanup time. For every requests, some info is stored internally, in order to be able to @@ -606,44 +608,44 @@ <p>Default is <c>30000</c>.</p> </item> - <marker id="manager_config"></marker> - <tag><c><![CDATA[manager_config() = [manager_config_opt()] <mandatory>]]></c></tag> + <tag><marker id="manager_config"></marker> + <c><![CDATA[manager_config() = [manager_config_opt()] <mandatory>]]></c></tag> <item> <p><c>manager_config_opt() = {dir, manager_config_dir()} | {db_dir, manager_db_dir()} | {db_init_error, db_init_error()} | {repair, manager_repair()} | {auto_save, manager_auto_save()} | {verbosity, verbosity()}</c></p> <p>Defines specific config related options for the SNMP manager. </p> <p>For defaults see the options in <c>manager_config_opt()</c>.</p> </item> - <marker id="manager_config_dir"></marker> - <tag><c><![CDATA[manager_config_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="manager_config_dir"></marker> + <c><![CDATA[manager_config_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP manager configuration files are stored.</p> </item> - <marker id="manager_config_db_dir"></marker> - <tag><c><![CDATA[manager_db_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="manager_config_db_dir"></marker> + <c><![CDATA[manager_db_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP manager store persistent data.</p> </item> - <marker id="manager_config_repair"></marker> - <tag><c><![CDATA[manager_repair() = false | true | force <optional>]]></c></tag> + <tag><marker id="manager_config_repair"></marker> + <c><![CDATA[manager_repair() = false | true | force <optional>]]></c></tag> <item> <p>Defines the repair option for the persistent database (if and how the table is repaired when opened). </p> <p>Default is <c>true</c>.</p> </item> - <marker id="manager_config_auto_save"></marker> - <tag><c><![CDATA[manager_auto_save() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="manager_config_auto_save"></marker> + <c><![CDATA[manager_auto_save() = integer() | infinity <optional>]]></c></tag> <item> <p>The auto save interval. The table is flushed to disk whenever not accessed for this amount of time.</p> <p>Default is <c>5000</c>.</p> </item> - <marker id="manager_irb"></marker> - <tag><c><![CDATA[manager_irb() = auto | user | {user, integer()} <optional>]]></c></tag> + <tag><marker id="manager_irb"></marker> + <c><![CDATA[manager_irb() = auto | user | {user, integer()} <optional>]]></c></tag> <item> <p>This option defines how the manager will handle the sending of response (acknowledgment) to received inform-requests. </p> @@ -672,16 +674,16 @@ <p>Default is <c>auto</c>.</p> </item> - <marker id="manager_mibs"></marker> - <tag><c><![CDATA[manager_mibs() = [string()] <optional>]]></c></tag> + <tag><marker id="manager_mibs"></marker> + <c><![CDATA[manager_mibs() = [string()] <optional>]]></c></tag> <item> <p>Specifies a list of MIBs (including path) and defines which MIBs are initially loaded into the SNMP manager. </p> <p>Default is <c>[]</c>.</p> </item> - <marker id="manager_net_if"></marker> - <tag><c><![CDATA[manager_net_if() = [manager_net_if_opt()] <optional>]]></c></tag> + <tag><marker id="manager_net_if"></marker> + <c><![CDATA[manager_net_if() = [manager_net_if_opt()] <optional>]]></c></tag> <item> <p><c>manager_net_if_opt() = {module, manager_net_if_module()} | {verbosity, verbosity()} | @@ -691,8 +693,8 @@ <p>For defaults see the options in <c>manager_net_if_opt()</c>.</p> </item> - <marker id="manager_ni_opts"></marker> - <tag><c><![CDATA[manager_net_if_options() = [manager_net_if_option()] <optional>]]></c></tag> + <tag><marker id="manager_ni_opts"></marker> + <c><![CDATA[manager_net_if_options() = [manager_net_if_option()] <optional>]]></c></tag> <item> <p><c>manager_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | @@ -705,8 +707,8 @@ <p>For defaults see the options in <c>manager_net_if_option()</c>.</p> </item> - <marker id="manager_ni_module"></marker> - <tag><c><![CDATA[manager_net_if_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_ni_module"></marker> + <c><![CDATA[manager_net_if_module() = atom() <optional>]]></c></tag> <item> <p>The module which handles the network interface part for the SNMP manager. It must implement the @@ -714,8 +716,8 @@ <p>Default is <c>snmpm_net_if</c>.</p> </item> - <marker id="manager_ni_filter_opts"></marker> - <tag><c><![CDATA[manager_net_if_filter_options() = [manager_net_if_filter_option()] <optional>]]></c></tag> + <tag><marker id="manager_ni_filter_opts"></marker> + <c><![CDATA[manager_net_if_filter_options() = [manager_net_if_filter_option()] <optional>]]></c></tag> <item> <p><c>manager_net_if_filter_option() = {module, manager_net_if_filter_module()}</c></p> <p>These options are actually specific to the used module. @@ -725,8 +727,8 @@ <c>manager_net_if_filter_option()</c>.</p> </item> - <marker id="manager_ni_filter_module"></marker> - <tag><c><![CDATA[manager_net_if_filter_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_ni_filter_module"></marker> + <c><![CDATA[manager_net_if_filter_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface filter part for the SNMP manager. Must implement the @@ -734,16 +736,16 @@ <p>Default is <c>snmpm_net_if_filter</c>.</p> </item> - <marker id="manager_def_user_module"></marker> - <tag><c><![CDATA[def_user_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_def_user_module"></marker> + <c><![CDATA[def_user_module() = atom() <optional>]]></c></tag> <item> <p>The module implementing the default user. See the <seealso marker="snmpm_user">snmpm_user</seealso> behaviour.</p> <p>Default is <c>snmpm_user_default</c>.</p> </item> - <marker id="manager_def_user_data"></marker> - <tag><c><![CDATA[def_user_data() = term() <optional>]]></c></tag> + <tag><marker id="manager_def_user_data"></marker> + <c><![CDATA[def_user_data() = term() <optional>]]></c></tag> <item> <p>Data for the default user. Passed to the user module when calling the callback functions.</p> @@ -754,8 +756,8 @@ <marker id="common_types"></marker> <p>Common config types:</p> <taglist> - <marker id="restart_type"></marker> - <tag><c>restart_type() = permanent | transient | temporary</c></tag> + <tag><marker id="restart_type"></marker> + <c>restart_type() = permanent | transient | temporary</c></tag> <item> <p>See <seealso marker="stdlib:supervisor#child_spec">supervisor</seealso> documentation for more info.</p> @@ -763,8 +765,8 @@ for the manager.</p> </item> - <marker id="db_init_error"></marker> - <tag><c>db_init_error() = terminate | create | create_db_and_dir</c></tag> + <tag><marker id="db_init_error"></marker> + <c>db_init_error() = terminate | create | create_db_and_dir</c></tag> <item> <p>Defines what to do if the agent or manager is unable to open an existing database file. <c>terminate</c> means that the @@ -776,31 +778,31 @@ <p>Default is <c>terminate</c>.</p> </item> - <marker id="prio"></marker> - <tag><c><![CDATA[priority() = atom() <optional>]]></c></tag> + <tag><marker id="prio"></marker> + <c><![CDATA[priority() = atom() <optional>]]></c></tag> <item> <p>Defines the Erlang priority for all SNMP processes.</p> <p>Default is <c>normal</c>.</p> </item> - <marker id="versions"></marker> - <tag><c><![CDATA[versions() = [version()] <optional>]]></c></tag> + <tag><marker id="versions"></marker> + <c><![CDATA[versions() = [version()] <optional>]]></c></tag> <item> <p><c>version() = v1 | v2 | v3</c></p> <p>Which SNMP versions shall be accepted/used.</p> <p>Default is <c>[v1,v2,v3]</c>.</p> </item> - <marker id="verbosity"></marker> - <tag><c><![CDATA[verbosity() = silence | info | log | debug | trace <optional>]]></c></tag> + <tag><marker id="verbosity"></marker> + <c><![CDATA[verbosity() = silence | info | log | debug | trace <optional>]]></c></tag> <item> <p>Verbosity for a SNMP process. This specifies now much debug info is printed.</p> <p>Default is <c>silence</c>.</p> </item> - <marker id="bind_to"></marker> - <tag><c><![CDATA[bind_to() = bool() <optional>]]></c></tag> + <tag><marker id="bind_to"></marker> + <c><![CDATA[bind_to() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, net_if binds to the IP address. If <c>false</c>, net_if listens on any IP address on the host @@ -808,8 +810,8 @@ <p>Default is <c>false</c>.</p> </item> - <marker id="no_reuse"></marker> - <tag><c><![CDATA[no_reuse() = bool() <optional>]]></c></tag> + <tag><marker id="no_reuse"></marker> + <c><![CDATA[no_reuse() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, net_if does not specify that the IP and port address should be reusable. If <c>false</c>, @@ -817,30 +819,30 @@ <p>Default is <c>false</c>.</p> </item> - <marker id="recbuf"></marker> - <tag><c><![CDATA[recbuf() = integer() <optional>]]></c></tag> + <tag><marker id="recbuf"></marker> + <c><![CDATA[recbuf() = integer() <optional>]]></c></tag> <item> <p>Receive buffer size. </p> <p>Default value is defined by <c>gen_udp</c>.</p> </item> - <marker id="sndbuf"></marker> - <tag><c><![CDATA[sndbuf() = integer() <optional>]]></c></tag> + <tag><marker id="sndbuf"></marker> + <c><![CDATA[sndbuf() = integer() <optional>]]></c></tag> <item> <p>Send buffer size. </p> <p>Default value is defined by <c>gen_udp</c>.</p> </item> - <marker id="note_store"></marker> - <tag><c><![CDATA[note_store() = [note_store_opt()] <optional>]]></c></tag> + <tag><marker id="note_store"></marker> + <c><![CDATA[note_store() = [note_store_opt()] <optional>]]></c></tag> <item> <p><c>note_store_opt() = {timeout, note_store_timeout()} | {verbosity, verbosity()}</c></p> <p>Specifies the start-up verbosity for the SNMP note store.</p> <p>For defaults see the options in <c>note_store_opt()</c>.</p> </item> - <marker id="ns_timeout"></marker> - <tag><c><![CDATA[note_store_timeout() = integer() <optional>]]></c></tag> + <tag><marker id="ns_timeout"></marker> + <c><![CDATA[note_store_timeout() = integer() <optional>]]></c></tag> <item> <p>Note cleanup time. When storing a note in the note store, each note is given lifetime. Every <c>timeout</c> the note_store @@ -850,8 +852,8 @@ </item> - <marker id="audit_trail_log"></marker> - <tag><c><![CDATA[audit_trail_log() = [audit_trail_log_opt()] <optional>]]></c></tag> + <tag><marker id="audit_trail_log"></marker> + <c><![CDATA[audit_trail_log() = [audit_trail_log_opt()] <optional>]]></c></tag> <item> <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}</c></p> <p>If present, this option specifies the options for the @@ -861,8 +863,8 @@ <p>If not present, audit trail logging is not used.</p> </item> - <marker id="atl_type"></marker> - <tag><c><![CDATA[atl_type() = read | write | read_write <optional>]]></c></tag> + <tag><marker id="atl_type"></marker> + <c><![CDATA[atl_type() = read | write | read_write <optional>]]></c></tag> <item> <p>Specifies what type of an audit trail log should be used. The effect of the type is actually different for the the agent @@ -883,16 +885,16 @@ <p>Default is <c>read_write</c>.</p> </item> - <marker id="atl_dir"></marker> - <tag><c><![CDATA[atl_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="atl_dir"></marker> + <c><![CDATA[atl_dir = dir() <mandatory>]]></c></tag> <item> <p>Specifies where the audit trail log should be stored.</p> <p>If <c>audit_trail_log</c> specifies that logging should take place, this parameter <em>must</em> be defined.</p> </item> - <marker id="atl_size"></marker> - <tag><c><![CDATA[atl_size() = {integer(), integer()} <mandatory>]]></c></tag> + <tag><marker id="atl_size"></marker> + <c><![CDATA[atl_size() = {integer(), integer()} <mandatory>]]></c></tag> <item> <p>Specifies the size of the audit trail log. This parameter is sent to <c>disk_log</c>. </p> @@ -900,8 +902,8 @@ take place, this parameter <em>must</em> be defined.</p> </item> - <marker id="atl_repair"></marker> - <tag><c><![CDATA[atl_repair() = true | false | truncate | snmp_repair <optional>]]></c></tag> + <tag><marker id="atl_repair"></marker> + <c><![CDATA[atl_repair() = true | false | truncate | snmp_repair <optional>]]></c></tag> <item> <p>Specifies if and how the audit trail log shall be repaired when opened. Unless this parameter has the value <c>snmp_repair</c> @@ -913,8 +915,8 @@ <p>Default is <c>true</c>.</p> </item> - <marker id="atl_seqno"></marker> - <tag><c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag> + <tag><marker id="atl_seqno"></marker> + <c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag> <item> <p>Specifies if the audit trail log entries will be (sequence) numbered or not. The range of the sequence numbers are according diff --git a/lib/snmp/doc/src/snmp_config.xml b/lib/snmp/doc/src/snmp_config.xml index f10574a2a9..a085252d90 100644 --- a/lib/snmp/doc/src/snmp_config.xml +++ b/lib/snmp/doc/src/snmp_config.xml @@ -130,16 +130,16 @@ <marker id="agent_opts_and_types"></marker> <p>Agent specific config options and types:</p> <taglist> - <marker id="agent_type"></marker> - <tag><c><![CDATA[agent_type() = master | sub <optional>]]></c></tag> + <tag><marker id="agent_type"></marker> + <c><![CDATA[agent_type() = master | sub <optional>]]></c></tag> <item> <p>If <c>master</c>, one master agent is started. Otherwise, no agents are started. </p> <p>Default is <c>master</c>.</p> </item> - <marker id="agent_disco"></marker> - <tag><c><![CDATA[agent_discovery() = [agent_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_disco"></marker> + <c><![CDATA[agent_discovery() = [agent_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_discovery_opt() = {terminating, agent_terminating_discovery_opts()} | @@ -151,8 +151,8 @@ <p>For defaults see the options in <c>agent_discovery_opt()</c>.</p> </item> - <marker id="agent_term_disco_opts"></marker> - <tag><c><![CDATA[agent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_term_disco_opts"></marker> + <c><![CDATA[agent_terminating_discovery_opts() = [agent_terminating_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_terminating_discovery_opt() = {enable, boolean()} | @@ -169,8 +169,8 @@ </list> </item> - <marker id="agent_orig_disco_opts"></marker> - <tag><c><![CDATA[agent_originating_discovery_opts() = [agent_originating_discovery_opt()] <optional>]]></c></tag> + <tag><marker id="agent_orig_disco_opts"></marker> + <c><![CDATA[agent_originating_discovery_opts() = [agent_originating_discovery_opt()] <optional>]]></c></tag> <item> <p><c>agent_originating_discovery_opt() = {enable, boolean()}</c></p> @@ -183,38 +183,38 @@ </list> </item> - <marker id="agent_mt"></marker> - <tag><c><![CDATA[multi_threaded() = bool() <optional>]]></c></tag> + <tag><marker id="agent_mt"></marker> + <c><![CDATA[multi_threaded() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, the agent is multi-threaded, with one thread for each get request. </p> <p>Default is <c>false</c>.</p> </item> - <marker id="agent_data_dir"></marker> - <tag><c><![CDATA[db_dir() = string() <mandatory>]]></c></tag> + <tag><marker id="agent_data_dir"></marker> + <c><![CDATA[db_dir() = string() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP agent internal db files are stored.</p> </item> - <marker id="agent_gb_max_vbs"></marker> - <tag><c><![CDATA[gb_max_vbs() = pos_integer() | infinity <optional>]]></c></tag> + <tag><marker id="agent_gb_max_vbs"></marker> + <c><![CDATA[gb_max_vbs() = pos_integer() | infinity <optional>]]></c></tag> <item> <p>Defines the maximum number of varbinds allowed in a Get-BULK response.</p> <p>Default is <c>1000</c>.</p> </item> - <marker id="agent_local_db"></marker> - <tag><c><![CDATA[local_db() = [local_db_opt()] <optional>]]></c></tag> + <tag><marker id="agent_local_db"></marker> + <c><![CDATA[local_db() = [local_db_opt()] <optional>]]></c></tag> <item> <p><c>local_db_opt() = {repair, agent_repair()} | {auto_save, agent_auto_save()} | {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent local database.</p> <p>For defaults see the options in <c>local_db_opt()</c>.</p> </item> - <marker id="agent_ldb_repair"></marker> - <tag><c><![CDATA[agent_repair() = false | true | force <optional>]]></c></tag> + <tag><marker id="agent_ldb_repair"></marker> + <c><![CDATA[agent_repair() = false | true | force <optional>]]></c></tag> <item> <p>When starting snmpa_local_db it always tries to open an existing database. If <c>false</c>, and some errors occur, a new @@ -224,16 +224,16 @@ <p>Default is <c>true</c>.</p> </item> - <marker id="agent_ldb_auto_save"></marker> - <tag><c><![CDATA[agent_auto_save() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="agent_ldb_auto_save"></marker> + <c><![CDATA[agent_auto_save() = integer() | infinity <optional>]]></c></tag> <item> <p>The auto save interval. The table is flushed to disk whenever not accessed for this amount of time.</p> <p>Default is <c>5000</c>.</p> </item> - <marker id="agent_net_if"></marker> - <tag><c><![CDATA[agent_net_if() = [agent_net_if_opt()] <optional>]]></c></tag> + <tag><marker id="agent_net_if"></marker> + <c><![CDATA[agent_net_if() = [agent_net_if_opt()] <optional>]]></c></tag> <item> <p><c>agent_net_if_option() = {module, agent_net_if_module()} | {verbosity, verbosity()} | @@ -243,8 +243,8 @@ <p>For defaults see the options in <c>agent_net_if_opt()</c>.</p> </item> - <marker id="agent_ni_module"></marker> - <tag><c><![CDATA[agent_net_if_module() = atom() <optional>]]></c></tag> + <tag><marker id="agent_ni_module"></marker> + <c><![CDATA[agent_net_if_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface part for the SNMP agent. Must implement the @@ -252,8 +252,8 @@ <p>Default is <c>snmpa_net_if</c>.</p> </item> - <marker id="agent_ni_opts"></marker> - <tag><c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag> + <tag><marker id="agent_ni_opts"></marker> + <c><![CDATA[agent_net_if_options() = [agent_net_if_option()] <optional>]]></c></tag> <item> <p><c>agent_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | @@ -267,15 +267,15 @@ <p>For defaults see the options in <c>agent_net_if_option()</c>.</p> </item> - <marker id="agent_ni_req_limit"></marker> - <tag><c><![CDATA[req_limit() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="agent_ni_req_limit"></marker> + <c><![CDATA[req_limit() = integer() | infinity <optional>]]></c></tag> <item> <p>Max number of simultaneous requests handled by the agent.</p> <p>Default is <c>infinity</c>.</p> </item> - <marker id="agent_ni_filter_opts"></marker> - <tag><c><![CDATA[agent_net_if_filter_options() = [agent_net_if_filter_option()] <optional>]]></c></tag> + <tag><marker id="agent_ni_filter_opts"></marker> + <c><![CDATA[agent_net_if_filter_options() = [agent_net_if_filter_option()] <optional>]]></c></tag> <item> <p><c><![CDATA[agent_net_if_filter_option() = {module, agent_net_if_filter_module()}]]></c></p> <p>These options are actually specific to the used module. @@ -284,8 +284,8 @@ <p>For defaults see the options in <c>agent_net_if_filter_option()</c>.</p> </item> - <marker id="agent_ni_filter_module"></marker> - <tag><c><![CDATA[agent_net_if_filter_module() = atom() <optional>]]></c></tag> + <tag><marker id="agent_ni_filter_module"></marker> + <c><![CDATA[agent_net_if_filter_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface filter part for the SNMP agent. Must implement the @@ -294,8 +294,8 @@ <p>Default is <c>snmpa_net_if_filter</c>.</p> </item> - <marker id="agent_mibs"></marker> - <tag><c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag> + <tag><marker id="agent_mibs"></marker> + <c><![CDATA[agent_mibs() = [string()] <optional>]]></c></tag> <item> <p>Specifies a list of MIBs (including path) that defines which MIBs are initially loaded into the SNMP master agent. </p> @@ -309,8 +309,8 @@ <p>Default is <c>[]</c>.</p> </item> - <marker id="agent_mib_storage"></marker> - <tag><c><![CDATA[mib_storage() = [mib_storage_opt()] <optional>]]></c></tag> + <tag><marker id="agent_mib_storage"></marker> + <c><![CDATA[mib_storage() = [mib_storage_opt()] <optional>]]></c></tag> <item> <p><c>mib_storage_opt() = {module, mib_storage_module()} | {options, mib_storage_options()}</c></p> <p>This option specifies how basic mib data is stored. @@ -319,8 +319,8 @@ <p>Default is <c>[{module, snmpa_mib_storage_ets}]</c>. </p> </item> - <marker id="agent_mst_module"></marker> - <tag><c><![CDATA[mib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()]]></c></tag> + <tag><marker id="agent_mst_module"></marker> + <c><![CDATA[mib_storage_module() = snmpa_mib_data_ets | snmpa_mib_data_dets | snmpa_mib_data_mnesia | module()]]></c></tag> <item> <p>Defines the mib storage module of the SNMP agent as defined by the <seealso marker="snmpa_mib_storage">snmpa_mib_storage</seealso> @@ -334,8 +334,8 @@ <p>Default module is <c>snmpa_mib_storage_ets</c>. </p> </item> - <marker id="agent_mst_options"></marker> - <tag><c><![CDATA[mib_storage_options() = list() <optional>]]></c></tag> + <tag><marker id="agent_mst_options"></marker> + <c><![CDATA[mib_storage_options() = list() <optional>]]></c></tag> <item> <p>This is implementattion depended. That is, it depends on the module. For each module a specific set of options are valid. @@ -429,8 +429,8 @@ This is the old format which is "supported", but not documented, in so far as it will be converted to the new format if found. - <marker id="agent_mib_storage"></marker> - <tag><c><![CDATA[mib_storage() = ets | {ets, Dir} | {ets, Dir, Action} | dets | {dets, Dir} | {dets, Dir, Action} | mnesia | {mnesia, Nodes} | {mnesia, Nodes, Action} <optional>]]></c></tag> + <tag><marker id="agent_mib_storage"></marker> + <c><![CDATA[mib_storage() = ets | {ets, Dir} | {ets, Dir, Action} | dets | {dets, Dir} | {dets, Dir, Action} | mnesia | {mnesia, Nodes} | {mnesia, Nodes, Action} <optional>]]></c></tag> <item> <p>Specifies how info retrieved from the mibs will be stored.</p> <p>If <c>mib_storage</c> is <c>{ets, Dir}</c>, the table will also be @@ -456,16 +456,16 @@ in so far as it will be converted to the new format if found. </item> --> - <marker id="agent_mib_server"></marker> - <tag><c><![CDATA[mib_server() = [mib_server_opt()] <optional>]]></c></tag> + <tag><marker id="agent_mib_server"></marker> + <c><![CDATA[mib_server() = [mib_server_opt()] <optional>]]></c></tag> <item> <p><c>mib_server_opt() = {mibentry_override, mibentry_override()} | {trapentry_override, trapentry_override()} | {verbosity, verbosity()} | {cache, mibs_cache()} | {data_module, mib_server_data_module()}</c></p> <p>Defines options specific for the SNMP agent mib server. </p> <p>For defaults see the options in <c>mib_server_opt()</c>.</p> </item> - <marker id="agent_ms_meo"></marker> - <tag><c><![CDATA[mibentry_override() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_meo"></marker> + <c><![CDATA[mibentry_override() = bool() <optional>]]></c></tag> <item> <p>If this value is false, then when loading a mib each mib- entry is checked prior to installation of the mib. @@ -474,8 +474,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>false</c>.</p> </item> - <marker id="agent_ms_teo"></marker> - <tag><c><![CDATA[trapentry_override() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_teo"></marker> + <c><![CDATA[trapentry_override() = bool() <optional>]]></c></tag> <item> <p>If this value is false, then when loading a mib each trap is checked prior to installation of the mib. @@ -484,11 +484,13 @@ in so far as it will be converted to the new format if found. <p>Default is <c>false</c>.</p> </item> - <marker id="agent_ms_data_module"></marker> + <!-- - <tag><c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | snmpa_mib_data_ttln | module() <optional>]]></c></tag> + <tag><marker id="agent_ms_data_module"></marker> + <c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | snmpa_mib_data_ttln | module() <optional>]]></c></tag> --> - <tag><c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | module() <optional>]]></c></tag> + <tag><marker id="agent_ms_data_module"></marker> + <c><![CDATA[mib_server_data_module() = snmpa_mib_data_tttn | module() <optional>]]></c></tag> <item> <p>Defines the backend data module of the SNMP agent mib-server as defined by the @@ -505,24 +507,24 @@ in so far as it will be converted to the new format if found. <p>Default module is <c>snmpa_mib_data_tttn</c>. </p> </item> - <marker id="agent_ms_cache"></marker> - <tag><c><![CDATA[mibs_cache() = bool() | mibs_cache_opts() <optional>]]></c></tag> + <tag><marker id="agent_ms_cache"></marker> + <c><![CDATA[mibs_cache() = bool() | mibs_cache_opts() <optional>]]></c></tag> <item> <p>Shall the agent utilize the mib server lookup cache or not.</p> <p>Default is <c>true</c> (in which case the <c>mibs_cache_opts()</c> default values apply).</p> </item> - <marker id="agent_ms_cache_opts"></marker> - <tag><c><![CDATA[mibs_cache_opts() = [mibs_cache_opt()] <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_opts"></marker> + <c><![CDATA[mibs_cache_opts() = [mibs_cache_opt()] <optional>]]></c></tag> <item> <p><c>mibs_cache_opt() = {autogc, mibs_cache_autogc()} | {gclimit, mibs_cache_gclimit()} | {age, mibs_cache_age()}</c></p> <p>Defines options specific for the SNMP agent mib server cache. </p> <p>For defaults see the options in <c>mibs_cache_opt()</c>.</p> </item> - <marker id="agent_ms_cache_autogc"></marker> - <tag><c><![CDATA[mibs_cache_autogc() = bool() <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_autogc"></marker> + <c><![CDATA[mibs_cache_autogc() = bool() <optional>]]></c></tag> <item> <p>Defines if the mib server shall perform cache gc automatically or leave it to the user (see @@ -530,8 +532,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>true</c>.</p> </item> - <marker id="agent_ms_cache_age"></marker> - <tag><c><![CDATA[mibs_cache_age() = integer() > 0 <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_age"></marker> + <c><![CDATA[mibs_cache_age() = integer() > 0 <optional>]]></c></tag> <item> <p>Defines how old the entries in the cache will be allowed to become before they are GC'ed (assuming GC is performed). @@ -540,8 +542,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>10 timutes</c>.</p> </item> - <marker id="agent_ms_cache_gclimit"></marker> - <tag><c><![CDATA[mibs_cache_gclimit() = integer() > 0 | infinity <optional>]]></c></tag> + <tag><marker id="agent_ms_cache_gclimit"></marker> + <c><![CDATA[mibs_cache_gclimit() = integer() > 0 | infinity <optional>]]></c></tag> <item> <p>When performing a GC, this is the max number of cache entries that will be deleted from the cache. </p> @@ -551,8 +553,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>100</c>.</p> </item> - <marker id="agent_error_report_mod"></marker> - <tag><c><![CDATA[error_report_mod() = atom() <optional>]]></c></tag> + <tag><marker id="agent_error_report_mod"></marker> + <c><![CDATA[error_report_mod() = atom() <optional>]]></c></tag> <item> <p>Defines an error report module, implementing the <seealso marker="snmpa_error_report">snmpa_error_report</seealso> @@ -561,38 +563,38 @@ in so far as it will be converted to the new format if found. <p>Default is <c>snmpa_error_logger</c>.</p> </item> - <marker id="agent_symbolic_store"></marker> - <tag><c>symbolic_store() = [symbolic_store_opt()]</c></tag> + <tag><marker id="agent_symbolic_store"></marker> + <c>symbolic_store() = [symbolic_store_opt()]</c></tag> <item> <p><c>symbolic_store_opt() = {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent symbolic store. </p> <p>For defaults see the options in <c>symbolic_store_opt()</c>.</p> </item> - <marker id="agent_target_cache"></marker> - <tag><c>target_cache() = [target_cache_opt()]</c></tag> + <tag><marker id="agent_target_cache"></marker> + <c>target_cache() = [target_cache_opt()]</c></tag> <item> <p><c>target_cache_opt() = {verbosity, verbosity()}</c></p> <p>Defines options specific for the SNMP agent target cache. </p> <p>For defaults see the options in <c>target_cache_opt()</c>.</p> </item> - <marker id="agent_config"></marker> - <tag><c><![CDATA[agent_config() = [agent_config_opt()] <mandatory>]]></c></tag> + <tag><marker id="agent_config"></marker> + <c><![CDATA[agent_config() = [agent_config_opt()] <mandatory>]]></c></tag> <item> <p><c>agent_config_opt() = {dir, agent_config_dir()} | {force_load, force_load()} | {verbosity, verbosity()}</c></p> <p>Defines specific config related options for the SNMP agent. </p> <p>For defaults see the options in <c>agent_config_opt()</c>.</p> </item> - <marker id="agent_config_dir"></marker> - <tag><c><![CDATA[agent_config_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="agent_config_dir"></marker> + <c><![CDATA[agent_config_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP agent configuration files are stored.</p> </item> - <marker id="agent_force_load"></marker> - <tag><c><![CDATA[force_load() = bool() <optional>]]></c></tag> + <tag><marker id="agent_force_load"></marker> + <c><![CDATA[force_load() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c> the configuration files are re-read during start-up, and the contents of the configuration @@ -606,16 +608,16 @@ in so far as it will be converted to the new format if found. <marker id="manager_opts_and_types"></marker> <p>Manager specific config options and types:</p> <taglist> - <marker id="manager_server"></marker> - <tag><c><![CDATA[server() = [server_opt()] <optional>]]></c></tag> + <tag><marker id="manager_server"></marker> + <c><![CDATA[server() = [server_opt()] <optional>]]></c></tag> <item> <p><c>server_opt() = {timeout, server_timeout()} | {verbosity, verbosity()}</c></p> <p>Specifies the options for the manager server process.</p> <p>Default is <c>silence</c>.</p> </item> - <marker id="manager_server_timeout"></marker> - <tag><c><![CDATA[server_timeout() = integer() <optional>]]></c></tag> + <tag><marker id="manager_server_timeout"></marker> + <c><![CDATA[server_timeout() = integer() <optional>]]></c></tag> <item> <p>Asynchronous request cleanup time. For every requests, some info is stored internally, in order to be able to @@ -635,44 +637,44 @@ in so far as it will be converted to the new format if found. <p>Default is <c>30000</c>.</p> </item> - <marker id="manager_config"></marker> - <tag><c><![CDATA[manager_config() = [manager_config_opt()] <mandatory>]]></c></tag> + <tag><marker id="manager_config"></marker> + <c><![CDATA[manager_config() = [manager_config_opt()] <mandatory>]]></c></tag> <item> <p><c>manager_config_opt() = {dir, manager_config_dir()} | {db_dir, manager_db_dir()} | {db_init_error, db_init_error()} | {repair, manager_repair()} | {auto_save, manager_auto_save()} | {verbosity, verbosity()}</c></p> <p>Defines specific config related options for the SNMP manager. </p> <p>For defaults see the options in <c>manager_config_opt()</c>.</p> </item> - <marker id="manager_config_dir"></marker> - <tag><c><![CDATA[manager_config_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="manager_config_dir"></marker> + <c><![CDATA[manager_config_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP manager configuration files are stored.</p> </item> - <marker id="manager_config_db_dir"></marker> - <tag><c><![CDATA[manager_db_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="manager_config_db_dir"></marker> + <c><![CDATA[manager_db_dir = dir() <mandatory>]]></c></tag> <item> <p>Defines where the SNMP manager store persistent data.</p> </item> - <marker id="manager_config_repair"></marker> - <tag><c><![CDATA[manager_repair() = false | true | force <optional>]]></c></tag> + <tag><marker id="manager_config_repair"></marker> + <c><![CDATA[manager_repair() = false | true | force <optional>]]></c></tag> <item> <p>Defines the repair option for the persistent database (if and how the table is repaired when opened). </p> <p>Default is <c>true</c>.</p> </item> - <marker id="manager_config_auto_save"></marker> - <tag><c><![CDATA[manager_auto_save() = integer() | infinity <optional>]]></c></tag> + <tag><marker id="manager_config_auto_save"></marker> + <c><![CDATA[manager_auto_save() = integer() | infinity <optional>]]></c></tag> <item> <p>The auto save interval. The table is flushed to disk whenever not accessed for this amount of time.</p> <p>Default is <c>5000</c>.</p> </item> - <marker id="manager_irb"></marker> - <tag><c><![CDATA[manager_irb() = auto | user | {user, integer()} <optional>]]></c></tag> + <tag><marker id="manager_irb"></marker> + <c><![CDATA[manager_irb() = auto | user | {user, integer()} <optional>]]></c></tag> <item> <p>This option defines how the manager will handle the sending of response (acknowledgment) to received inform-requests. </p> @@ -701,16 +703,16 @@ in so far as it will be converted to the new format if found. <p>Default is <c>auto</c>.</p> </item> - <marker id="manager_mibs"></marker> - <tag><c><![CDATA[manager_mibs() = [string()] <optional>]]></c></tag> + <tag><marker id="manager_mibs"></marker> + <c><![CDATA[manager_mibs() = [string()] <optional>]]></c></tag> <item> <p>Specifies a list of MIBs (including path) and defines which MIBs are initially loaded into the SNMP manager. </p> <p>Default is <c>[]</c>.</p> </item> - <marker id="manager_net_if"></marker> - <tag><c><![CDATA[manager_net_if() = [manager_net_if_opt()] <optional>]]></c></tag> + <tag><marker id="manager_net_if"></marker> + <c><![CDATA[manager_net_if() = [manager_net_if_opt()] <optional>]]></c></tag> <item> <p><c>manager_net_if_opt() = {module, manager_net_if_module()} | {verbosity, verbosity()} | @@ -720,8 +722,8 @@ in so far as it will be converted to the new format if found. <p>For defaults see the options in <c>manager_net_if_opt()</c>.</p> </item> - <marker id="manager_ni_opts"></marker> - <tag><c><![CDATA[manager_net_if_options() = [manager_net_if_option()] <optional>]]></c></tag> + <tag><marker id="manager_ni_opts"></marker> + <c><![CDATA[manager_net_if_options() = [manager_net_if_option()] <optional>]]></c></tag> <item> <p><c>manager_net_if_option() = {bind_to, bind_to()} | {sndbuf, sndbuf()} | @@ -734,8 +736,8 @@ in so far as it will be converted to the new format if found. <p>For defaults see the options in <c>manager_net_if_option()</c>.</p> </item> - <marker id="manager_ni_module"></marker> - <tag><c><![CDATA[manager_net_if_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_ni_module"></marker> + <c><![CDATA[manager_net_if_module() = atom() <optional>]]></c></tag> <item> <p>The module which handles the network interface part for the SNMP manager. It must implement the @@ -743,8 +745,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>snmpm_net_if</c>. </p> </item> - <marker id="manager_ni_filter_opts"></marker> - <tag><c><![CDATA[manager_net_if_filter_options() = [manager_net_if_filter_option()] <optional>]]></c></tag> + <tag><marker id="manager_ni_filter_opts"></marker> + <c><![CDATA[manager_net_if_filter_options() = [manager_net_if_filter_option()] <optional>]]></c></tag> <item> <p><c>manager_net_if_filter_option() = {module, manager_net_if_filter_module()}</c></p> <p>These options are actually specific to the used module. @@ -754,8 +756,8 @@ in so far as it will be converted to the new format if found. <c>manager_net_if_filter_option()</c>.</p> </item> - <marker id="manager_ni_filter_module"></marker> - <tag><c><![CDATA[manager_net_if_filter_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_ni_filter_module"></marker> + <c><![CDATA[manager_net_if_filter_module() = atom() <optional>]]></c></tag> <item> <p>Module which handles the network interface filter part for the SNMP manager. Must implement the @@ -763,16 +765,16 @@ in so far as it will be converted to the new format if found. <p>Default is <c>snmpm_net_if_filter</c>.</p> </item> - <marker id="manager_def_user_module"></marker> - <tag><c><![CDATA[def_user_module() = atom() <optional>]]></c></tag> + <tag><marker id="manager_def_user_module"></marker> + <c><![CDATA[def_user_module() = atom() <optional>]]></c></tag> <item> <p>The module implementing the default user. See the <seealso marker="snmpm_user">snmpm_user</seealso> behaviour.</p> <p>Default is <c>snmpm_user_default</c>.</p> </item> - <marker id="manager_def_user_data"></marker> - <tag><c><![CDATA[def_user_data() = term() <optional>]]></c></tag> + <tag><marker id="manager_def_user_data"></marker> + <c><![CDATA[def_user_data() = term() <optional>]]></c></tag> <item> <p>Data for the default user. Passed to the user when calling the callback functions.</p> @@ -783,8 +785,8 @@ in so far as it will be converted to the new format if found. <marker id="common_types"></marker> <p>Common config types:</p> <taglist> - <marker id="restart_type"></marker> - <tag><c>restart_type() = permanent | transient | temporary</c></tag> + <tag><marker id="restart_type"></marker> + <c>restart_type() = permanent | transient | temporary</c></tag> <item> <p>See <seealso marker="stdlib:supervisor#child_spec">supervisor</seealso> documentation for more info.</p> @@ -792,8 +794,8 @@ in so far as it will be converted to the new format if found. for the manager.</p> </item> - <marker id="db_init_error"></marker> - <tag><c>db_init_error() = terminate | create | create_db_and_dir</c></tag> + <tag><marker id="db_init_error"></marker> + <c>db_init_error() = terminate | create | create_db_and_dir</c></tag> <item> <p>Defines what to do if the agent is unable to open an existing database file. <c>terminate</c> means that the @@ -805,31 +807,31 @@ in so far as it will be converted to the new format if found. <p>Default is <c>terminate</c>.</p> </item> - <marker id="prio"></marker> - <tag><c><![CDATA[priority() = atom() <optional>]]></c></tag> + <tag><marker id="prio"></marker> + <c><![CDATA[priority() = atom() <optional>]]></c></tag> <item> <p>Defines the Erlang priority for all SNMP processes.</p> <p>Default is <c>normal</c>.</p> </item> - <marker id="versions"></marker> - <tag><c><![CDATA[versions() = [version()] <optional>]]></c></tag> + <tag><marker id="versions"></marker> + <c><![CDATA[versions() = [version()] <optional>]]></c></tag> <item> <p><c>version() = v1 | v2 | v3</c></p> <p>Which SNMP versions shall be accepted/used.</p> <p>Default is <c>[v1,v2,v3]</c>.</p> </item> - <marker id="verbosity"></marker> - <tag><c><![CDATA[verbosity() = silence | info | log | debug | trace <optional>]]></c></tag> + <tag><marker id="verbosity"></marker> + <c><![CDATA[verbosity() = silence | info | log | debug | trace <optional>]]></c></tag> <item> <p>Verbosity for a SNMP process. This specifies now much debug info is printed.</p> <p>Default is <c>silence</c>.</p> </item> - <marker id="bind_to"></marker> - <tag><c><![CDATA[bind_to() = bool() <optional>]]></c></tag> + <tag><marker id="bind_to"></marker> + <c><![CDATA[bind_to() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, net_if binds to the IP address. If <c>false</c>, net_if listens on any IP address on the host @@ -837,8 +839,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>false</c>.</p> </item> - <marker id="no_reuse"></marker> - <tag><c><![CDATA[no_reuse() = bool() <optional>]]></c></tag> + <tag><marker id="no_reuse"></marker> + <c><![CDATA[no_reuse() = bool() <optional>]]></c></tag> <item> <p>If <c>true</c>, net_if does not specify that the IP and port address should be reusable. If <c>false</c>, @@ -846,30 +848,30 @@ in so far as it will be converted to the new format if found. <p>Default is <c>false</c>.</p> </item> - <marker id="recbuf"></marker> - <tag><c><![CDATA[recbuf() = integer() <optional>]]></c></tag> + <tag><marker id="recbuf"></marker> + <c><![CDATA[recbuf() = integer() <optional>]]></c></tag> <item> <p>Receive buffer size. </p> <p>Default value is defined by <c>gen_udp</c>.</p> </item> - <marker id="sndbuf"></marker> - <tag><c><![CDATA[sndbuf() = integer() <optional>]]></c></tag> + <tag><marker id="sndbuf"></marker> + <c><![CDATA[sndbuf() = integer() <optional>]]></c></tag> <item> <p>Send buffer size. </p> <p>Default value is defined by <c>gen_udp</c>.</p> </item> - <marker id="note_store"></marker> - <tag><c><![CDATA[note_store() = [note_store_opt()] <optional>]]></c></tag> + <tag><marker id="note_store"></marker> + <c><![CDATA[note_store() = [note_store_opt()] <optional>]]></c></tag> <item> <p><c>note_store_opt() = {timeout, note_store_timeout()} | {verbosity, verbosity()}</c></p> <p>Specifies the options for the SNMP note store.</p> <p>For defaults see the options in <c>note_store_opt()</c>.</p> </item> - <marker id="ns_timeout"></marker> - <tag><c><![CDATA[note_store_timeout() = integer() <optional>]]></c></tag> + <tag><marker id="ns_timeout"></marker> + <c><![CDATA[note_store_timeout() = integer() <optional>]]></c></tag> <item> <p>Note cleanup time. When storing a note in the note store, each note is given lifetime. Every <c>timeout</c> the note_store @@ -878,8 +880,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>30000</c>.</p> </item> - <marker id="audit_trail_log"></marker> - <tag><c><![CDATA[audit_trail_log() [audit_trail_log_opt()] <optional>]]></c></tag> + <tag><marker id="audit_trail_log"></marker> + <c><![CDATA[audit_trail_log() [audit_trail_log_opt()] <optional>]]></c></tag> <item> <p><c>audit_trail_log_opt() = {type, atl_type()} | {dir, atl_dir()} | {size, atl_size()} | {repair, atl_repair()} | {seqno, atl_seqno()}</c></p> <p>If present, this option specifies the options for the @@ -889,8 +891,8 @@ in so far as it will be converted to the new format if found. <p>If not present, audit trail logging is not used.</p> </item> - <marker id="atl_type"></marker> - <tag><c><![CDATA[atl_type() = read | write | read_write <optional>]]></c></tag> + <tag><marker id="atl_type"></marker> + <c><![CDATA[atl_type() = read | write | read_write <optional>]]></c></tag> <item> <p>Specifies what type of an audit trail log should be used. The effect of the type is actually different for the the agent @@ -911,16 +913,16 @@ in so far as it will be converted to the new format if found. <p>Default is <c>read_write</c>.</p> </item> - <marker id="atl_dir"></marker> - <tag><c><![CDATA[atl_dir = dir() <mandatory>]]></c></tag> + <tag><marker id="atl_dir"></marker> + <c><![CDATA[atl_dir = dir() <mandatory>]]></c></tag> <item> <p>Specifies where the audit trail log should be stored.</p> <p>If <c>audit_trail_log</c> specifies that logging should take place, this parameter <em>must</em> be defined.</p> </item> - <marker id="atl_size"></marker> - <tag><c><![CDATA[atl_size() = {integer(), integer()} <mandatory>]]></c></tag> + <tag><marker id="atl_size"></marker> + <c><![CDATA[atl_size() = {integer(), integer()} <mandatory>]]></c></tag> <item> <p>Specifies the size of the audit trail log. This parameter is sent to <c>disk_log</c>. </p> @@ -928,8 +930,8 @@ in so far as it will be converted to the new format if found. take place, this parameter <em>must</em> be defined.</p> </item> - <marker id="atl_repair"></marker> - <tag><c><![CDATA[atl_repair() = true | false | truncate | snmp_repair <optional>]]></c></tag> + <tag><marker id="atl_repair"></marker> + <c><![CDATA[atl_repair() = true | false | truncate | snmp_repair <optional>]]></c></tag> <item> <p>Specifies if and how the audit trail log shall be repaired when opened. Unless this parameter has the value <c>snmp_repair</c> @@ -941,8 +943,8 @@ in so far as it will be converted to the new format if found. <p>Default is <c>true</c>.</p> </item> - <marker id="atl_seqno"></marker> - <tag><c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag> + <tag><marker id="atl_seqno"></marker> + <c><![CDATA[atl_seqno() = true | false <optional>]]></c></tag> <item> <p>Specifies if the audit trail log entries will be (sequence) numbered or not. The range of the sequence numbers are according diff --git a/lib/snmp/doc/src/snmp_manager_netif.xml b/lib/snmp/doc/src/snmp_manager_netif.xml index 8454d03b17..98d4e7fd96 100644 --- a/lib/snmp/doc/src/snmp_manager_netif.xml +++ b/lib/snmp/doc/src/snmp_manager_netif.xml @@ -75,8 +75,7 @@ <p>In this section a <c>Domain</c> field is the transport domain i.e one of <c>transportDomainUdpIpv4</c> or <c>transportDomainUdpIpv6</c>, and an <c>Addr</c> field is an - <c>{<seealso marker="kernel:inet#type-ip_address">IpAddr</seealso>, - IpPort}</c> tuple.</p> + <c>{</c><seealso marker="kernel:inet#type-ip_address"><c>IpAddr</c></seealso><c>,IpPort}</c> tuple.</p> <p>Net if must send the following message when it receives an SNMP PDU from the network that is aimed for the MasterAgent: diff --git a/lib/snmp/doc/src/snmpa.xml b/lib/snmp/doc/src/snmpa.xml index f205af6e88..c84eeec524 100644 --- a/lib/snmp/doc/src/snmpa.xml +++ b/lib/snmp/doc/src/snmpa.xml @@ -622,12 +622,12 @@ notification_delivery_info() = #snmpa_notification_delivery_info{} <p>Converts an Audit Trail Log to a readable format and prints it on stdio. <c>LogName</c> defaults to "snmpa_log". - <c>LogFile</c> defaults to "snmpa.log". + <c>LogFile</c> defaults to "snmpa.log".</p> <p>The <c>Block</c> option indicates if the log should be blocked during conversion. This could be usefull when converting large logs (when otherwise the log could wrap during conversion). Defaults to <c>true</c>. </p> - See <seealso marker="snmp#log_to_io">snmp:log_to_io</seealso> + <p>See <seealso marker="snmp#log_to_io">snmp:log_to_io</seealso> for more info.</p> <marker id="change_log_size"></marker> diff --git a/lib/snmp/doc/src/snmpm.xml b/lib/snmp/doc/src/snmpm.xml index b14c0e6afd..ab288fd020 100644 --- a/lib/snmp/doc/src/snmpm.xml +++ b/lib/snmp/doc/src/snmpm.xml @@ -1241,12 +1241,12 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1 <p>Converts an Audit Trail Log to a readable text file. <c>OutFile</c> defaults to "./snmpm_log.txt". <c>LogName</c> defaults to "snmpm_log". - <c>LogFile</c> defaults to "snmpm.log". + <c>LogFile</c> defaults to "snmpm.log".</p> <p>The <c>Block</c> argument indicates if the log should be blocked during conversion. This could be usefull when converting large logs (when otherwise the log could wrap during conversion). Defaults to <c>true</c>. </p> - See <seealso marker="snmp#log_to_txt">snmp:log_to_txt</seealso> + <p>See <seealso marker="snmp#log_to_txt">snmp:log_to_txt</seealso> for more info.</p> <marker id="log_to_io"></marker> @@ -1280,12 +1280,12 @@ priv_key = [integer()] (length is 16 if priv = usmDESPrivProtocol | usmAesCfb1 <p>Converts an Audit Trail Log to a readable format and prints it on stdio. <c>LogName</c> defaults to "snmpm_log". - <c>LogFile</c> defaults to "snmpm.log". + <c>LogFile</c> defaults to "snmpm.log".</p> <p>The <c>Block</c> argument indicates if the log should be blocked during conversion. This could be usefull when converting large logs (when otherwise the log could wrap during conversion). Defaults to <c>true</c>. </p> - See <seealso marker="snmp#log_to_io">snmp:log_to_io</seealso> + <p>See <seealso marker="snmp#log_to_io">snmp:log_to_io</seealso> for more info.</p> <marker id="change_log_size"></marker> diff --git a/lib/ssh/doc/src/notes.xml b/lib/ssh/doc/src/notes.xml index bb111c8e0e..012d7051eb 100644 --- a/lib/ssh/doc/src/notes.xml +++ b/lib/ssh/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2004</year><year>2014</year> + <year>2004</year><year>2015</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -216,9 +216,9 @@ <p> Thanks to Simon Cornish</p> <p> - Own Id: OTP-12760 Aux Id: <a + Own Id: OTP-12760 Aux Id: <url href="https://github.com/erlang/otp/pull/715">pull req - 715</a> </p> + 715</url> </p> </item> <item> <p> @@ -384,13 +384,13 @@ </item> <item> <p> - Made Codenomicon Defensics test suite pass: <list> + Made Codenomicon Defensics test suite pass:</p> <list> <item>limit number of algorithms in kexinit message</item> <item>check 'e' and 'f' parameters in kexdh</item> <item>implement 'keyboard-interactive' user authentication on server side</item> <item> return plain text message to bad version exchange message</item> - </list></p> + </list> <p> Own Id: OTP-12784</p> </item> diff --git a/lib/ssh/doc/src/using_ssh.xml b/lib/ssh/doc/src/using_ssh.xml index 91185a0f6e..6826f20fb3 100644 --- a/lib/ssh/doc/src/using_ssh.xml +++ b/lib/ssh/doc/src/using_ssh.xml @@ -234,7 +234,7 @@ <title>SFTP Client with TAR Compression and Encryption</title> <p>Example of writing and then reading a tar file follows:</p> - <code type="erlang"> + <code type="erl"> {ok,HandleWrite} = ssh_sftp:open_tar(ChannelPid, ?tar_file_name, [write]), ok = erl_tar:add(HandleWrite, .... ), ok = erl_tar:add(HandleWrite, .... ), @@ -249,10 +249,10 @@ </code> <p>The previous write and read example can be extended with encryption and decryption as follows:</p> - <code type="erlang"> + <code type="erl"> %% First three parameters depending on which crypto type we select: Key = <<"This is a 256 bit key. abcdefghi">>, -Ivec0 = crypto:rand_bytes(16), +Ivec0 = crypto:strong_rand_bytes(16), DataSize = 1024, % DataSize rem 16 = 0 for aes_cbc %% Initialization of the CryptoState, in this case it is the Ivector. diff --git a/lib/stdlib/doc/src/rand.xml b/lib/stdlib/doc/src/rand.xml index e7d4728ef7..50057259c6 100644 --- a/lib/stdlib/doc/src/rand.xml +++ b/lib/stdlib/doc/src/rand.xml @@ -104,7 +104,7 @@ strong. If a strong cryptographic random number generator is needed, use one of functions in the <seealso marker="crypto:crypto">crypto</seealso> - module, for example <c>crypto:rand_bytes/1</c>.</p></note> + module, for example <c>crypto:strong_rand_bytes/1</c>.</p></note> </description> <datatypes> <datatype> diff --git a/lib/stdlib/doc/src/random.xml b/lib/stdlib/doc/src/random.xml index d3d7c90c31..fc4f796863 100644 --- a/lib/stdlib/doc/src/random.xml +++ b/lib/stdlib/doc/src/random.xml @@ -48,7 +48,7 @@ tuple of three integers.</p> <p>It should be noted that this random number generator is not cryptographically strong. If a strong cryptographic random number generator is needed for - example <c>crypto:rand_bytes/1</c> could be used instead.</p> + example <c>crypto:strong_rand_bytes/1</c> could be used instead.</p> <note><p>The new and improved <seealso marker="stdlib:rand">rand</seealso> module should be used instead of this module.</p></note> |