|
Packit Service |
311553 |
# Known Issues
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
## Printer crash
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
There is a bug in Clang 3.4.2 that causes wrong data tree traversal, which results in a crash.
|
|
Packit Service |
311553 |
It can occur during any traversal but it was observed in XML printer while printing default
|
|
Packit Service |
311553 |
values. The solution is to compile using either GCC or newer version of Clang. Starting
|
|
Packit Service |
311553 |
from which version it works we do not exactly know. Clang 5.0.0 works fine.
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
## XPath Expressions
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
### Axes
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
libyang uses its own XPath implementation to evaluate XPath expressions. The implementation
|
|
Packit Service |
311553 |
completely lacks support for [axes](https://www.w3.org/TR/1999/REC-xpath-19991116/#axes).
|
|
Packit Service |
311553 |
Nevertheless, it should always be possible to write equivalent expressions without
|
|
Packit Service |
311553 |
the use of axes.
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
### Deviation Must
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
If there are any XPath expressions defined as part of a deviation, they include literals,
|
|
Packit Service |
311553 |
which are directly compared with identityref nodes (testing whether an identityref has a
|
|
Packit Service |
311553 |
specific identity value), and the identity literal used is from the deviation module
|
|
Packit Service |
311553 |
(meaning it could be written without a prefix), the prefix is mandatory for libyang
|
|
Packit Service |
311553 |
to evaluate the XPath expression correctly.
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
## Nested Notification/Action Validation
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
[NMDA RFC](https://tools.ietf.org/html/rfc8342#section-6.2) specifically defines that
|
|
Packit Service |
311553 |
the parent data node of an invoked nested notification or action must exist in
|
|
Packit Service |
311553 |
the operational datastore. This validation is not implicitly performed by libyang when
|
|
Packit Service |
311553 |
validating the operation so if the validation is supposed to happen in full compliance
|
|
Packit Service |
311553 |
to this RFC, parent existence must be checked explicitly.
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
## Wrong API version
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
Since libyang 1.0, there is a check to make sure that the (user type or extension) plugin
|
|
Packit Service |
311553 |
was compiled with the compatible API version. In case there is a plugin with incompatible
|
|
Packit Service |
311553 |
API version, the following warning is generated by libyang:
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
libyang[1]: Processing "user\_date\_and\_time" user type plugin failed, wrong API version - 1 expected, 0 found.
|
|
Packit Service |
311553 |
|
|
Packit Service |
311553 |
The default path for the plugins is `/usr/local/lib64/libyang/` so you can clean it up
|
|
Packit Service |
311553 |
manually or set a different plugin directory via `LIBYANG_EXTENSIONS_PLUGINS_DIR` or
|
|
Packit Service |
311553 |
`LIBYANG_USER_TYPES_PLUGINS_DIR` environment variables.
|
|
Packit Service |
311553 |
|