Skip to content

lyd_diff_apply_all fails on replace operation for non-existing leaf (RFC compliance question) #2372

Open
@vilkovalexander

Description

@vilkovalexander

Hello, and thank you for your work on libyang!

According to RFC 7950, section 7.6.7, the replace operation is intended to behave as a combination of delete and create. In the context of a operation, this implies that if a leaf does not exist and is targeted with replace, it should be created.

However, when using lyd_diff_apply_all() with a diff that includes a replace operation on a non-existent leaf, the function returns an error instead of creating the leaf node.

Example:

leaf foo {
  type string;
}

If the current data tree does not contain foo, and the diff contains a replace operation like foo = "bar", the operation fails rather than creating the foo node with the new value.

Question: Is this the intended behavior in libyang, or is this a deviation from RFC 7950?

Thank you in advance for your clarification!

Metadata

Metadata

Assignees

No one assigned

    Labels

    is:questionIssue is actually a question.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions