## Status
-Version [{{ site.fort-latest-version }}](https://github.com/NICMx/FORT-validator/releases/tag/v{{ site.fort-latest-version }}){:target="_blank"} is the latest official release, includes a bug fix:
-- Whenever multiple TAL's are being validated, if an error occurs while fetching the root certificate from one of them, discard the validation results from the rest of the TALs. This will avoid to send a considerable amount of withdrawal PDUs to the router(s) due to an error that isn't proper of the RPKI validation.
+Version [{{ site.fort-latest-version }}](https://github.com/NICMx/FORT-validator/releases/tag/v{{ site.fort-latest-version }}){:target="_blank"} is the latest official release, includes several updates, including:
+- RRDP support (see [RFC 8182](https://tools.ietf.org/html/rfc8182)).
+- Support HTTPS URIs at TALs (see [RFC 8630](https://tools.ietf.org/html/rfc8630)).
+- Remember last valid SLURM in case of syntax error with a newer version.
+- Setup script to fetch ARINs TAL.
- - Add incidence to validate signed objects DER encoding.
++- Add incidence to validate signed objects DER encoding.
struct thread *thread;
struct fv_param *param;
static pthread_t pid;
+ int *exit_status;
int error;
- if (exit_status == NULL)
- return pr_enomem();
+ error = db_rrdp_add_tal(tal_file);
+ if (error)
+ return error;
+
+ exit_status = malloc(sizeof(int));
++ if (exit_status == NULL) {
++ error = pr_enomem();
++ goto free_db_rrdp;
++ }
+
param = malloc(sizeof(struct fv_param));
if (param == NULL) {
error = pr_enomem();
SLIST_INSERT_HEAD(&threads, thread, next);
return 0;
-free_status:
- free(exit_status);
+free_param:
free(param->tal_file);
free(param);
++free_status:
++ free(exit_status);
+free_db_rrdp:
+ db_rrdp_rem_tal(tal_file);
return error;
}
perform_standalone_validation(struct db_table *table)
{
struct thread *thread;
- int error;
+ int error, t_error;
+ /* Set existent tal RRDP info to non visited */
+ db_rrdp_reset_visited_tals();
+
SLIST_INIT(&threads);
error = process_file_or_dir(config_get_tal(), TAL_FILE_EXTENSION,
__do_file_validation, table);
thread_destroy(thread);
}
+ /* One thread has errors, validation can't keep the resulting table */
+ if (t_error)
+ return t_error;
+
+ /* Remove non-visited rrdps URIS by tal */
+ db_rrdp_rem_nonvisited_tals();
+
return error;
}