]> git.ipfire.org Git - thirdparty/FORT-validator.git/commitdiff
Update flags documentation
authorAlberto Leiva Popper <ydahhrk@gmail.com>
Fri, 10 Nov 2023 17:27:13 +0000 (11:27 -0600)
committerAlberto Leiva Popper <ydahhrk@gmail.com>
Fri, 10 Nov 2023 21:00:47 +0000 (15:00 -0600)
docs/logging.md
docs/usage.md
man/fort.8
src/config.c
src/init.c

index 50c6ccc8b65bb5d2a7320c0f103560584b954938..fed0230e761c8521b45e66581b6fd0b284c9ef51 100644 (file)
@@ -50,7 +50,6 @@ Operation logs are of likely interest to the operator running Fort; Issues repor
 | RTR Server logs | "Accepted connection from client." | "Huh? Peer is not speaking the RTR protocol." | "Cannot bind to address." |
 | Out of memory errors | - | - | "Out of memory." |
 | Read/write errors on local files | - | "The SLURM directory seems to lack SLURM files." | "I don't have permissions to access the repository cache." |
-| Persistent communication errors with RPKI repositories (see [`--stale-repository-period`](usage.html#--stale-repository-period)) | - | - | "Error requesting URL." | 
 | Start and end of a validation cycle | "Validation cycle ended. I got _R_ ROAs, _K_ router keys, my new serial is _S_, and it took _T_ seconds." | - | - |
 | Programming errors | - | - | "Array size is 1, but array is NULL." |
 
index a0a1661545da7084250cff26c0a5e99b0c244b0e..e8d89ef340348b2c02a692375f3e63661149f522 100644 (file)
@@ -19,7 +19,6 @@ description: Guide to use arguments of FORT Validator.
        6. [`--local-repository`](#--local-repository)
        7. [`--work-offline`](#--work-offline)
        8. [`--daemon`](#--daemon)
-       9. [`--shuffle-uris`](#--shuffle-uris)
        10. [`--maximum-certificate-depth`](#--maximum-certificate-depth)
        11. [`--mode`](#--mode)
        12. [`--server.address`](#--serveraddress)
@@ -60,29 +59,20 @@ description: Guide to use arguments of FORT Validator.
        44. [`--output.bgpsec`](#--outputbgpsec)
        45. [`--output.format`](#--outputformat)
        46. [`--asn1-decode-max-stack`](#--asn1-decode-max-stack)
-       47. [`--stale-repository-period`](#--stale-repository-period)
        48. [`--thread-pool.server.max`](#--thread-poolservermax)
        50. [`--rsync.enabled`](#--rsyncenabled)
        51. [`--rsync.priority`](#--rsyncpriority)
-       52. [`--rsync.strategy`](#--rsyncstrategy)
-               1. [`strict`](#strict)
-               2. [`root`](#root)
-               3. [`root-except-ta`](#root-except-ta)
        53. [`--rsync.retry.count`](#--rsyncretrycount)
        54. [`--rsync.retry.interval`](#--rsyncretryinterval)
        55. [`--configuration-file`](#--configuration-file)
        56. [`rsync.program`](#rsyncprogram)
        57. [`rsync.arguments-recursive`](#rsyncarguments-recursive)
-       58. [`rsync.arguments-flat`](#rsyncarguments-flat)
        59. [`incidences`](#incidences)
 3. [Deprecated arguments](#deprecated-arguments)
-       1. [`--sync-strategy`](#--sync-strategy)
-       2. [`--rrdp.enabled`](#--rrdpenabled)
-       3. [`--rrdp.priority`](#--rrdppriority)
-       4. [`--rrdp.retry.count`](#--rrdpretrycount)
-       5. [`--rrdp.retry.interval`](#--rrdpretryinterval)
-       60. [`init-locations`](#init-locations)
-       41. [`--http.idle-timeout`](#--httpidle-timeout)
+       9. [`--shuffle-uris`](#--shuffle-uris)
+       47. [`--stale-repository-period`](#--stale-repository-period)
+       52. [`--rsync.strategy`](#--rsyncstrategy)
+       58. [`rsync.arguments-flat`](#rsyncarguments-flat)
        49. [`--thread-pool.validation.max`](#--thread-poolvalidationmax)
 
 ## Syntax
@@ -338,23 +328,12 @@ Send process to the background?
 
 All enabled logs will be sent to syslog; [`--log.output`](#--logoutput) and [`--validation-log.output`](#--validation-logoutput) will be ignored.
 
-### `--shuffle-uris`
-
-- **Type:** Boolean (`true`, `false`)
-- **Availability:** `argv` and JSON
-
-Access the URLs from the TALs in random order? (This is meant for load balancing.) Otherwise, Fort will try to access them in sequential order. (Which makes more sense when the URLs are ordered by priority.)
-
-Fort only needs one TA for a successful traversal. As soon as one functioning URL is found, the others are ignored until the next validation cycle.
-
-> This sorting mechanism is secondary to the protocol sorting mechanism. URLs are first sorted according to their protocol's priorities ([`--rsync.priority`](#--rsyncpriority), [`--http.priority`](#--httppriority)), then according to `--shuffle-uris`.
-
 ### `--maximum-certificate-depth`
 
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 32
-- **Range:** 5--([`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)--1)
+- **Range:** [5, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html))
 
 Maximum allowable RPKI tree height. Meant to protect Fort from iterating infinitely due to certificate chain loops.
 
@@ -404,7 +383,7 @@ This is a string because a service alias can be used as a valid value. The avail
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** [`SOMAXCONN`](http://pubs.opengroup.org/onlinepubs/9699919799.2008edition/basedefs/sys_socket.h.html)
-- **Range:** 1--`SOMAXCONN`
+- **Range:** [1, `SOMAXCONN`]
 
 RTR server's listen queue length. It is the second argument of [`listen()`](http://pubs.opengroup.org/onlinepubs/9699919799.2008edition/functions/listen.html):
 
@@ -417,7 +396,7 @@ See the corresponding manual page from your operating system (likely `man 2 list
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 3600
-- **Range:** 60--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [60, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Number of seconds Fort will sleep between validation cycles, when in [`server`](#--mode) mode.
 
@@ -430,7 +409,7 @@ The timer starts counting every time a validation is finished, not every time it
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 3600
-- **Range:** 1--86400
+- **Range:** [1, 86400]
 
 To synchronize their cache of RPKI prefix origin data and router keys, RTR clients (routers) poll Fort's RTR Server at regular intervals.
 
@@ -443,7 +422,7 @@ See [RFC 8210, section 6](https://tools.ietf.org/html/rfc8210#section-6).
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 600
-- **Range:** 1--7200
+- **Range:** [1, 7200]
 
 To synchronize their cache of RPKI prefix origin data and router keys, RTR clients (routers) poll Fort's RTR Server at regular intervals.
 
@@ -456,7 +435,7 @@ See [RFC 8210, section 6](https://tools.ietf.org/html/rfc8210#section-6).
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 7200
-- **Range:** 600--172800
+- **Range:** [600, 172800]
 
 To synchronize their cache of RPKI prefix origin data and router keys, RTR clients (routers) poll Fort's RTR Server at regular intervals.
 
@@ -469,7 +448,7 @@ See [RFC 8210, section 6](https://tools.ietf.org/html/rfc8210#section-6).
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 2
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 When routers first connect to Fort, they request a _snapshot_ of the validation results. (ROAs and Router Keys.) Because they need to keep their validated objects updated, and snapshots tend to be relatively large amounts of information, they request _deltas_ afterwards over configurable intervals. ("Deltas" being the differences between snapshots.)
 
@@ -654,9 +633,9 @@ Mostly intended for debugging.
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 60
-- **Range:** 0--100
+- **Range:** [0, 100]
 
-HTTP's (and therefore RRDP's) precedence when choosing the protocol used to download files (assuming Fort has to choose, and both protocols are [enabled](#--http.enabled)). The protocol with the highest priority is used first, and the runner-up is employed as fallback.
+HTTP's (and therefore RRDP's) precedence when choosing the protocol used to download files (assuming Fort has to choose, and both protocols are [enabled](#--httpenabled)). The protocol with the highest priority is used first, and the runner-up is employed as fallback.
 
 > At the moment, only two protocols (RRDP/HTTP and RSYNC) are supported. Yes, `--http.priority`'s range is overkill.
 
@@ -667,7 +646,7 @@ See [`--rsync.priority`](#--rsyncpriority).
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 0
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Number of additional HTTP requests after a failed attempt.
 
@@ -678,7 +657,7 @@ If a transient error is returned when Fort tries to perform an HTTP transfer, it
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 5
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Period of time (in seconds) to wait between each retry to request an HTTP URI.
 
@@ -699,7 +678,7 @@ The value specified (either by the argument or the default value) is utilized in
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 30
-- **Range:** 1--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [1, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 _**All requests are made using HTTPS, verifying the peer and the certificate name vs host**_
 
@@ -714,7 +693,7 @@ The value specified (either by the argument or the default value) is utilized in
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 0
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 _**All requests are made using HTTPS, verifying the peer and the certificate name vs host**_
 
@@ -729,7 +708,7 @@ The value specified (either by the argument or the default value) is utilized in
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 100000 (100 kilobytes/second)
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 The value Fort employs as [CURLOPT_LOW_SPEED_LIMIT](https://curl.haxx.se/libcurl/c/CURLOPT_LOW_SPEED_LIMIT.html) during every HTTP transfer.
 
@@ -752,7 +731,7 @@ Zero disables the validation.
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 10
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 The value Fort employs as [CURLOPT_LOW_SPEED_TIME](https://curl.haxx.se/libcurl/c/CURLOPT_LOW_SPEED_TIME.html) during every HTTP transfer.
 
@@ -765,7 +744,7 @@ See [`--http.low-speed-limit`](#--httplow-speed-limit) for an example.
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 1,000,000,000 (1 Gigabyte)
-- **Range:** 0--2,000,000,000 (2 Gigabytes)
+- **Range:** [0, 2000000000] (2 Gigabytes)
 
 The maximum amount of bytes files are allowed to length during HTTP transfers. Files that exceed this limit are dropped, either early (through [CURLOPT_MAXFILESIZE](https://curl.haxx.se/libcurl/c/CURLOPT_MAXFILESIZE.html)) or as they hit the limit (when the file size is not known prior to download).
 
@@ -876,37 +855,18 @@ Output format for [`--output.roa`](#--outputroa) and [`--output.bgpsec`](#--outp
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 4096
-- **Range:** 1--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [1, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 ASN1 decoder max allowed stack size in bytes, utilized to avoid a stack overflow when a large nested ASN1 object is parsed.
 
 This check is merely a caution, since ASN1 decoding functions are recursive and might cause a stack overflow. So, this argument probably won't be necessary in most cases, since the RPKI ASN1 objects don't have nested objects that require too much stack allocation (for now).
 
-### `--stale-repository-period`
-
-- **Type:** Integer
-- **Availability:** `argv` and JSON
-- **Default:** 43200 (12 hours)
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
-
-Time period that must lapse to warn about a stale repository (the messages will be sent to the operation log). The time lapse starts once the repository download has been retried (see [`--rsync.retry.count`](#--rsyncretrycount) and [`--http.retry.count`](#--httpretrycount)) and failed after such retries.
-
-A repository is considered stale if its files can't be fetched due to a communication error, and this error persists across validation cycles. This kind of issue can be due to a local misconfiguration (eg. a firewall that blocks incoming data) or a problem at the server (eg. the server is down).
-
-During the downtime, Fort will try to work with the local cache. ([`--local-repository`](#--local-repository))
-
-The communication errors sent to the operation log, are those related to "first level" RPKI servers; commonly this are the servers maintained by the RIRs.
-
-Currently **all** the communication errors are logged in the validation log. `--stale-repository-period` is only used to also send them to the operation log.
-
-A value **equal to 0** means that the communication errors will be logged immediately.
-
 ### `--thread-pool.server.max`
 
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 20
-- **Range:** 1--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [1, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Number of threads the RTR server will reserve for RTR client (router) request handling. The server will be able to handle `--thread-pool.server.max` requests at most, at once. Additional requests will queue.
 
@@ -929,66 +889,20 @@ Mostly intended for debugging.
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 50
-- **Range:** 0--100
+- **Range:** [0, 100]
 
-RSYNC's precedence when choosing the protocol used to download files (assuming Fort has to choose, and both protocols are [enabled](#--mode)). The protocol with the highest priority is used first, and the runner-up is employed as fallback.
+RSYNC's precedence when choosing the protocol used to download files (assuming Fort has to choose, and both protocols are [enabled](#--rsyncenabled)). The protocol with the highest priority is used first, and the runner-up is employed as fallback.
 
 > At the moment, only two protocols (RRDP/HTTP and RSYNC) are supported. Yes, `--rsync.priority`'s range is overkill.
 
 See [`--http.priority`](#--httppriority).
 
-### `--rsync.strategy`
-
-- **Type:** Enumeration (`strict`, `root`, `root-except-ta`)
-- **Availability:** `argv` and JSON
-- **Default:** `root-except-ta`
-
-rsync synchronization strategy. Commands the way rsync URLs are approached during downloads.
-
-#### `strict`
-
-> In order to enable this strategy, recompile using the flag: **_ENABLE\_STRICT\_STRATEGY_**.
->
-> e.g. `$ make FORT_FLAGS='-DENABLE_STRICT_STRATEGY'`
-
-rsyncs every repository publication point separately. Only skips publication points that have already been downloaded during the current validation cycle. (Assuming each synchronization is recursive.)
-
-For example, suppose the validator gets certificates whose caRepository access methods (in their Subject Information Access extensions) point to the following publication points:
-
-1. `rsync://rpki.example.com/foo/bar/`
-2. `rsync://rpki.example.com/foo/qux/`
-3. `rsync://rpki.example.com/foo/bar/`
-4. `rsync://rpki.example.com/foo/corge/grault/`
-5. `rsync://rpki.example.com/foo/corge/`
-6. `rsync://rpki.example.com/foo/corge/waldo/`
-
-A  validator following the `strict` strategy would download `bar`, download `qux`, skip `bar`, download `corge/grault`, download `corge` and skip `corge/waldo`.
-
-Though this strategy is the only "strictly" correct one, it is also extremely slow. Its usage is _not_ recommended, unless your repository contains lots of spam files, awkward permissions or can't be found in a repository rooted in a URL that follows the regular expression "`rsync://.+/.+/`".
-
-#### `root`
-
-For each publication point found, guess the root of its repository and rsync that instead. Then skip
-any subsequent children of said root.
-
-(To guess the root of a repository, the validator counts four slashes, and prunes the rest of the URL.)
-
-Reusing the caRepository URLs from the `strict` strategy (above) as example, a  validator following the `root` strategy would download `rsync://rpki.example.com/foo`, and then skip everything else.
-
-Assuming that the repository is specifically structured to be found within as few roots as possible, and they contain minimal RPKI-unrelated noise files, this is the fastest synchronization strategy. At time of writing, this is true for all the current official repositories.
-
-#### `root-except-ta`
-
-Synchronizes the root certificate (the one pointed by the TAL) in `strict` mode, and once it's validated, synchronizes the rest of the repository in `root` mode.
-
-Useful if you want `root`, but the root certificate is separated from the rest of the repository. Also useful if you don't want the validator to download the entire repository without first confirming the integrity and legitimacy of the root certificate.
-
 ### `--rsync.retry.count`
 
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 0
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Maximum number of retries whenever there's an error executing an RSYNC.
 
@@ -1001,7 +915,7 @@ Whenever is necessary to execute an RSYNC, the validator will try at least one t
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 5
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
 Period of time (in seconds) to wait between each retry to execute an RSYNC.
 
@@ -1190,7 +1104,7 @@ $ {{ page.command }} \
 $ # local-repository is "a", rsync.strategy is "strict" and maximum-certificate-depth is 8
 {% endhighlight %}
 
-### rsync.program
+### `rsync.program`
 
 - **Type:** String
 - **Availability:** JSON only
@@ -1198,7 +1112,7 @@ $ # local-repository is "a", rsync.strategy is "strict" and maximum-certificate-
 
 Name of the program needed to invoke an rsync file transfer.
 
-### rsync.arguments-recursive
+### `rsync.arguments-recursive`
 
 - **Type:** String array
 - **Availability:** JSON only
@@ -1208,16 +1122,6 @@ Arguments needed by [`rsync.program`](#rsyncprogram) to perform a recursive rsyn
 
 Fort will replace `"$REMOTE"` with the remote URL it needs to download, and `"$LOCAL"` with the target local directory where the file is supposed to be dropped.
 
-### rsync.arguments-flat
-
-- **Type:** String array
-- **Availability:** JSON only
-- **Default:** `[ "--times", "--contimeout=20", "--timeout=15", "--max-size=20MB", "--dirs", "$REMOTE", "$LOCAL" ]`
-
-Arguments needed by [`rsync.program`](#rsyncprogram) to perform a single-file rsync.
-
-Fort will replace `"$REMOTE"` with the remote URL it needs to download, and `"$LOCAL"` with the target local directory where the file is supposed to be dropped.
-
 ### `incidences`
 
 - **Type:** JSON Object array
@@ -1227,72 +1131,53 @@ A listing of actions to be performed by validation upon encountering certain err
 
 ## Deprecated arguments
 
-### `--sync-strategy`
-
-- **Type:** Enumeration (`off`, `strict`, `root`, `root-except-ta`)
-- **Availability:** `argv` and JSON
-- **Default:** `root-except-ta`
-
-> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**. Use [`--rsync.strategy`](#--rsyncstrategy) or [`--rsync.enabled`](#--rsyncenabled) (if rsync is meant to be disabled) instead.
-
-rsync synchronization strategy. Commands the way rsync URLs are approached during downloads.
-
-- `off`: will disable rsync execution, setting [`--rsync.enabled`](#--rsyncenabled) as `false`. So, using `--sync-strategy=off` will be the same as `--rsync.enabled=false`.
-- `strict`: will be the same as `--rsync.strategy=strict`, see [`strict`](#strict).
-- `root`: will be the same as `--rsync.strategy=root`, see [`root`](#root).
-- `root-except-ta`: will be the same as `--rsync.strategy=root-except-ta`, see [`root-except-ta`](#root-except-ta).
-
-### `--rrdp.enabled`
+### `--shuffle-uris`
 
 - **Type:** Boolean (`true`, `false`)
 - **Availability:** `argv` and JSON
-- **Default:** `true`
 
-> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**. Use [`--http.enabled`](#--httpenabled) instead.
+> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**.
 
-### `--rrdp.priority`
+Does nothing as of Fort 1.6.0.
+
+### `--stale-repository-period`
 
 - **Type:** Integer
 - **Availability:** `argv` and JSON
-- **Default:** 60
-- **Range:** 0--100
+- **Default:** 43200 (12 hours)
+- **Range:** [0, [`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)]
 
-> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**. Use [`--http.priority`](#--httppriority) instead.
+> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**.
 
-### `--rrdp.retry.count`
+Does nothing as of Fort 1.6.0.
 
-- **Type:** Integer
-- **Availability:** `argv` and JSON
-- **Default:** 2
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+### `--rsync.strategy`
 
-> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**. Use [`--http.retry.count`](#--httpretrycount) instead.
+- **Type:** Enumeration (`strict`, `root`, `root-except-ta`)
+- **Availability:** `argv` and JSON
+- **Default:** `root-except-ta`
 
-### `--rrdp.retry.interval`
+> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**.
 
-- **Type:** Integer
-- **Availability:** `argv` and JSON
-- **Default:** 5
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+Does nothing as of Fort 1.6.0.
 
-> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**. Use [`--http.retry.interval`](#--httpretryinterval) instead.
+### `rsync.arguments-flat`
 
-### `--http.idle-timeout`
+- **Type:** String array
+- **Availability:** JSON only
+- **Default:** `[ "--times", "--contimeout=20", "--timeout=15", "--max-size=20MB", "--dirs", "$REMOTE", "$LOCAL" ]`
 
-- **Type:** Integer
-- **Availability:** `argv` and JSON
-- **Default:** 10
-- **Range:** 0--[`UINT_MAX`](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/limits.h.html)
+> ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**.
 
-Deprecated alias for [`--http.low-speed-time`](#--httplow-speed-time).
+Does nothing as of Fort 1.6.0.
 
 ### `--thread-pool.validation.max`
 
 - **Type:** Integer
 - **Availability:** `argv` and JSON
 - **Default:** 5
-- **Range:** 1--100
+- **Range:** [1, 100]
 
 > ![img/warn.svg](img/warn.svg) This argument **is DEPRECATED**.
 
-Does nothing as of Fort 1.6.0.
\ No newline at end of file
+Does nothing as of Fort 1.6.0.
index ca8c8053696084d5db3ac52ed4b21157cb8863a1..a036f2c9f510b46f861631f89c195b8195e72c1f 100644 (file)
@@ -108,28 +108,25 @@ is "rsync".
 .RE
 .P
 
-.B rsync.arguments-flat
+.B rsync.arguments-recursive
 .RS 4
 Arguments needed by
 .B rsync.program
-to perform a single-file rsync. The arguments are specified as a JSON string
+to perform a recursive rsync. The arguments are specified as a JSON string
 array; its default value is:
-[ "--times", "--contimeout=20", "--timeout=15", "--dirs", "$REMOTE", "$LOCAL" ]
+[ "-rtz", "--delete", "--contimeout=20", "--max-size=20MB",
+"--timeout=15", "--include=*/", "--include=*.cer", "--include=*.crl",
+"--include=*.gbr", "--include=*.mft", "--include=*.roa", "--exclude=*",
+"$REMOTE", "$LOCAL" ]
 .P
 FORT will replace "$REMOTE" with the remote URL it needs to download, and
 "$LOCAL" with the target local directory where the file is supposed to be
 dropped.
 .P
-If \fBrsync.program\fR set is \fIrsync\fR (default value), see more about its
-arguments and behavior at \fIrsync(1)\fR.
+See \fIrsync(1)\fR for a description of each argument.
 .RE
 .P
 
-.B rsync.arguments-recursive
-.RS 4
-Deprecated; does nothing.
-.RE
-.P
 
 .B incidences
 .RS 4
@@ -268,24 +265,6 @@ specific protocol needs to be deactivated, use \fB--rsync.enabled\fR or
 .RE
 .P
 
-.B \-\-shuffle-uris
-.RS 4
-If enabled, FORT will access TAL URLs in random order. This is meant for load
-balancing. If disabled, FORT will access TAL URLs in sequential order.
-.P
-By default, the flag is disabled.
-.P
-This flag is only relevant if the TAL lists more than one URL. Regardless of
-this flag, FORT will stop iterating through the URLs as soon as it finds one
-that yields a successful traversal.
-.P
-If the TAL lists more than one URL, the shuffle is done honoring the priority
-of the protocols (see \fB--rsync.priority\fR and \fB--http.priority\fR). i.e.
-if the HTTP protocol has a higher priority than RSYNC, then all the shuffled
-HTTP URLs will come first.
-.RE
-.P
-
 .B \-\-maximum-certificate-depth=\fIUNSIGNED_INTEGER\fR
 .RS 4
 Maximum allowable certificate chain length. Meant to protect FORT from
@@ -908,12 +887,6 @@ requests.
 .RE
 .P
 
-.B \-\-rsync.strategy=(\fIstrict\fR|\fIroot\fR|\fIroot-except-ta\fR)
-.RS 4
-Deprecated; does nothing.
-.RE
-.P
-
 .B \-\-rsync.retry.count=\fIUNSIGNED_INTEGER\fR
 .RS 4
 Maximum number of retries whenever there's an error executing RSYNC.
@@ -1037,26 +1010,6 @@ Maximum: \fIUINT_MAX\fR
 Default: \fI20\fR
 .RE
 
-.B \-\-thread-pool.validation.max=\fIUNSIGNED_INTEGER\fR
-.RS 4
-Maximum number of threads that will be spawned at an internal thread pool in
-order to run validation cycles.
-.P
-When a validation cycle begins, one thread per configured TAL is utilized; once
-the whole RPKI tree of the TAL is validated, the thread is returned to the pool.
-.P
-If there are more TALs at \fI--tal\fR than \fI--thread-pool.validation.max\fR
-threads at the pool, is very likely that the validation cycles take a bit more
-of time to complete since only \fI--thread-pool.validation.max\fR threads will
-be working at the same time. E.g. if \fI--thread-pool.validation.max=2\fR and
-the location at \fI--tal\fR has 4 TAL files, only 2 TALs will be validated
-simultaneously while the rest waits in a queue until there's an available thread
-at the pool to attend them.
-.P
-By default, it has a value of \fI5\fR. Minimum allowed value: \fI1\fR,
-maximum allowed value \fI100\fR.
-.RE
-
 .B \-\-asn1-decode-max-stack=\fIUNSIGNED_INTEGER\fR
 .RS 4
 ASN1 decoder max allowed stack size in bytes, utilized to avoid a stack
@@ -1066,12 +1019,6 @@ By default, it has a value of \fI4096\fR (4 kB).
 .RE
 .P
 
-.B \-\-stale-repository-period=\fIUNSIGNED_INTEGER\fR
-.RS 4
-Deprecated; does nothing.
-.RE
-.P
-
 .SH EXAMPLES
 .B fort \-\-init-tals \-\-tal=/tmp/tal
 .RS 4
index 941c238e294c16de656d3ccc0787c1c6a4fbd7a0..0ba56ff45534d72b399ab39e2eec8c10ab73cd30 100644 (file)
@@ -423,8 +423,7 @@ static const struct option_field options[] = {
                .name = "rsync.priority",
                .type = &gt_uint,
                .offset = offsetof(struct rpki_config, rsync.priority),
-               .doc = "Deprecated; does nothing.",
-               .deprecated = true,
+               .doc = "rsync's priority for repository file fetching. Higher value means higher priority.",
                .min = 0,
                .max = 100,
        }, {
@@ -491,8 +490,7 @@ static const struct option_field options[] = {
                .name = "http.priority",
                .type = &gt_uint,
                .offset = offsetof(struct rpki_config, http.priority),
-               .doc = "Deprecated; does nothing.",
-               .deprecated = true,
+               .doc = "HTTP's priority for repository file fetching. Higher value means higher priority.",
                .min = 0,
                .max = 100,
        }, {
index 01e796c3baba62954f1d43f76282f7a469204ffc..9018188291459da91e023a0cd1256168efe50301 100644 (file)
@@ -64,18 +64,14 @@ download_tals(void)
 {
        int error;
 
-       /*
-        * https://afrinic.net/resource-certification/tal
-        * https://www.apnic.net/community/security/resource-certification/tal-archive/
-        * https://www.arin.net/resources/manage/rpki/tal/
-        * https://www.lacnic.net/4984/2/lacnic/rpki-rpki-trust-anchor
-        * https://www.ripe.net/manage-ips-and-asns/resource-management/rpki/ripe-ncc-rpki-trust-anchor-structure
-        */
-
+       /* https://afrinic.net/resource-certification/tal */
        error = fetch_url("https://rpki.afrinic.net/tal/afrinic.tal");
        if (error)
                return error;
+
        /*
+        * https://www.apnic.net/community/security/resource-certification/tal-archive/
+        *
         * APNIC is a bit weird. Some thoughts:
         *
         * 1. The 6490 and ripe-validator TALs are obsolete, and Fort has never
@@ -91,13 +87,21 @@ download_tals(void)
        error = fetch_url("https://tal.apnic.net/apnic.tal");
        if (error)
                return error;
+
+       /* https://www.arin.net/resources/manage/rpki/tal/ */
        error = fetch_url("https://www.arin.net/resources/manage/rpki/arin.tal");
        if (error)
                return error;
+
+       /* https://www.lacnic.net/4984/2/lacnic/rpki-rpki-trust-anchor */
        error = fetch_url("https://www.lacnic.net/innovaportal/file/4983/1/lacnic.tal");
        if (error)
                return error;
-       /* I wish they stated why they don't recommend the 8630 TAL. */
+
+       /*
+        * https://www.ripe.net/manage-ips-and-asns/resource-management/rpki/ripe-ncc-rpki-trust-anchor-structure
+        * I wish they stated why they don't recommend the 8630 TAL.
+        */
        return fetch_url("https://tal.rpki.ripe.net/ripe-ncc.tal");
 }