Skip to content

Commit

Permalink
Merge pull request FRRouting#14800 from idryzhov/nb-validate-errors
Browse files Browse the repository at this point in the history
Print all errors when validating NB configuration
  • Loading branch information
donaldsharp authored Nov 15, 2023
2 parents 4cce1e4 + 51a2a4b commit 520bb40
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
11 changes: 8 additions & 3 deletions lib/northbound.c
Original file line number Diff line number Diff line change
Expand Up @@ -871,9 +871,14 @@ int nb_candidate_update(struct nb_config *candidate)
int nb_candidate_validate_yang(struct nb_config *candidate, bool no_state,
char *errmsg, size_t errmsg_len)
{
if (lyd_validate_all(&candidate->dnode, ly_native_ctx,
no_state ? LYD_VALIDATE_NO_STATE
: LYD_VALIDATE_PRESENT,
uint32_t options = LYD_VALIDATE_MULTI_ERROR;

if (no_state)
SET_FLAG(options, LYD_VALIDATE_NO_STATE);
else
SET_FLAG(options, LYD_VALIDATE_PRESENT);

if (lyd_validate_all(&candidate->dnode, ly_native_ctx, options,
NULL) != 0) {
yang_print_errors(ly_native_ctx, errmsg, errmsg_len);
return NB_ERR_VALIDATION;
Expand Down
15 changes: 6 additions & 9 deletions lib/yang.c
Original file line number Diff line number Diff line change
Expand Up @@ -676,26 +676,23 @@ static void ly_log_cb(LY_LOG_LEVEL level, const char *msg, const char *path)
const char *yang_print_errors(struct ly_ctx *ly_ctx, char *buf, size_t buf_len)
{
struct ly_err_item *ei;
const char *path;

ei = ly_err_first(ly_ctx);
if (!ei)
return "";

strlcpy(buf, "YANG error(s):\n", buf_len);
for (; ei; ei = ei->next) {
strlcat(buf, " ", buf_len);
if (ei->path) {
strlcat(buf, " Path: ", buf_len);
strlcat(buf, ei->path, buf_len);
strlcat(buf, "\n", buf_len);
}
strlcat(buf, " Error: ", buf_len);
strlcat(buf, ei->msg, buf_len);
strlcat(buf, "\n", buf_len);
}

path = ly_errpath(ly_ctx);
if (path) {
strlcat(buf, " YANG path: ", buf_len);
strlcat(buf, path, buf_len);
strlcat(buf, "\n", buf_len);
}

ly_err_clean(ly_ctx, NULL);

return buf;
Expand Down

0 comments on commit 520bb40

Please sign in to comment.