Libyang ist ein Yang Data Modeling Language -Parser und Toolkit, geschrieben (und Bereitstellung von API) in C. Die Bibliothek wird in LibnetConf2, Netopeer2 oder SysRepo -Projekten verwendet.
Das Projekt verwendet 2 Hauptzweige master und devel . Andere Zweige sollten nicht kloniert werden. In master gibt es Dateien der letzten offiziellen Veröffentlichung . Alle jüngsten Verbesserungen und Veränderungen, die zumindest kurz getestet wurden, finden sich in devel . Bei jeder neuen Veröffentlichung wird devel in master zusammengeführt.
Dies bedeutet, dass entweder master verwendet werden kann oder bestimmte Veröffentlichungen heruntergeladen werden können, wenn nur stabile offizielle Veröffentlichungen verwendet werden sollen. Wenn alle neuesten Fehler angewendet werden sollten, wird der devel der verwendet. Beachten Sie, dass wenn ein neues Problem erstellt wird und es in der master -Filiale erfolgt, die erste Antwort wahrscheinlich sein wird, bevor devel eine weitere Unterstützung erhalten.
Schauen Sie sich die Dokumentation und das Abschnitt Transition Manual an. Dies sollte bei der grundlegenden Migration und der Fähigkeit, ein Projekt zu erstellen, helfen. Um jedoch die neuen Funktionen zu verwenden, muss die gesamte Dokumentation und die API gelesen werden.
Die aktuelle Implementierung deckt Yang 1.0 (RFC 6020) sowie Yang 1.1 (RFC 7950) ab.
Binäre RPM- oder DEB -Pakete der neuesten Veröffentlichung können lokal mit apkg erstellt werden. Schauen Sie sich README im distro -Verzeichnis an.
pthreads-win32direntdlfcn-win32getopt-win32 Die Windows-Version unterstützt keine Plugins, und der yanglint funktioniert nur in einem nicht-interaktiven Modus. Unter Windows werden alle Yang-Datums- und Zeitwerte zuerst in UTC konvertiert (wenn der TZ-Offset angegeben wurde) und dann mit "nicht spezifizierter Zeitzone" zurückgegeben.
$ mkdir build; cd build
$ cmake ..
$ make
# make install
Setzen Sie CC -Variable:
$ CC=/usr/bin/clang cmake ..
Um das Präfix zu ändern, in dem die Bibliothek, die Header und alle anderen Dateien installiert sind, setzen Sie die Variable CMAKE_INSTALL_PREFIX fest:
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
Das Standardpräfix ist /usr/local .
Es gibt zwei Build -Modi:
Der Debug -Modus wird derzeit als Standard verwendet. Um zum Release -Modus zu wechseln, geben Sie in die Befehlszeile ein:
$ cmake -D CMAKE_BUILD_TYPE:String="Release" ..
In Bezug auf Yang -Erweiterungen ermöglicht Libyang das Laden von Verlängerungs -Plugins. Standardmäßig ist das Verzeichnis zum Speichern der Plugins Libdir/Libyang. Verwenden Sie die folgende CMAKE -Option mit dem Wert, der das gewünschte Verzeichnis angibt:
$ cmake -DPLUGINS_DIR:PATH=`pwd`"/src/extensions/" ..
Der Verzeichnispfad kann auch die Laufzeit über Umgebungsvariable, z. B.:
$ LIBYANG_EXTENSIONS_PLUGINS_DIR=`pwd`/my/relative/path yanglint
Beachten Sie, dass Plugins unter Windows nicht verfügbar sind.
Immer wenn die neueste Überarbeitung eines Schemas geladen werden soll (importieren ohne spezifische Überarbeitung), wird es zum ersten Mal auf Standardweise durchgeführt. Standardmäßig wird bei jedem anderen Mal, wenn die neueste Überarbeitung desselben Schemas benötigt wird, die ursprünglich geladene wiederverwendet. Wenn Sie wissen, dass dies zu Problemen führen kann, was bedeutet, dass die neueste verfügbare Überarbeitung eines Schemas während des Betriebs ändern kann, können Sie Libyang zwingen, immer nach dem neuem Schema zu suchen:
$ cmake -DENABLE_LATEST_REVISIONS=OFF ..
Beachten Sie, dass Sie mit CMake, wenn Sie den Compiler oder seine Optionen nach dem Rennen von CMake ändern möchten, zuerst den Cache löschen müssen. Die einfachste Möglichkeit, alle Inhalte aus dem Verzeichnis "Build" zu entfernen.
Alle Libyang -Funktionen sind über den Hauptkopf erhältlich:
#include <libyang/libyang.h>
Um Ihr Programm mit Libyang zu kompilieren, müssen Sie es mit den folgenden Linkerparametern mit Libyang verknüpfen:
-lyang
Beachten Sie, dass es erforderlich sein kann ldconfig(8) nach der Installation der Bibliothek aufzurufen. Wenn die Bibliothek in einen nicht standardmäßigen Pfad installiert wurde, muss der Pfad zu Libyang dem Linker angegeben werden. Um alle Optionen des Compiler festzulegen, gibt es libyang.pc Datei für pkg-config(1) im Quellbaum. Die Datei ist mit der Bibliothek installiert.
Wenn Sie cmake in Ihrem Projekt verwenden, können Sie auch die bereitgestellte Datei FindLibYANG.cmake verwenden, um das Vorhandensein der Biyang -Bibliothek im System zu erkennen.
In diesem Projekt gibt es keine Bindungen für andere Sprachen, aber sie sind getrennt verfügbar.
Das Libyang-Projekt enthält ein featurereiches Tool namens yanglint(1) zur Validierung und Umwandlung der modellierten Schemas und Yang-Daten. Die Quellcodes befinden sich an /tools/lint und können verwendet werden, um zu untersuchen, wie eine Anwendung die Biyang -Bibliothek verwenden soll. yanglint(1) binär sowie seine Mannseite werden zusammen mit der Bibliothek selbst installiert.
Es gibt auch Readme, die einige Beispiele für die Verwendung yanglint beschreiben.
Libyang umfasst mehrere Tests, die mit Cmocka gebaut wurden. Die Tests finden Sie in tests -Unterverzeichnissen und sind für die Überprüfung der Bibliotheksfunktionen nach Codeänderungen ausgelegt. Zusätzliche Regressionstests mit einem Korpus von Fuzzing -Eingängen, die zuvor zu Abstürzen verursacht wurden, werden durchgeführt. Diese sind in tests/fuzz erhältlich und werden automatisch mit den Cmocka -Unit -Tests erstellt.
Die Tests werden standardmäßig im Debug -Build -Modus durch Ausführen eingebaut
$ make
Im Falle des Release -Modus werden die Tests standardmäßig nicht erstellt (es erfordert zusätzliche Abhängigkeit), können jedoch über die CMAKE -Option aktiviert werden:
$ cmake -DENABLE_TESTS=ON ..
Beachten Sie, dass bei den erforderlichen CMOCKA -Headern im System die Pfade enthalten sind, die Tests trotz des Build -Modus oder der CMAKE -Optionen nicht verfügbar sind.
Tests können durch das test des Make durchgeführt werden:
$ make test
Es gibt ein Leistungsmesswerkzeug, das Informationen über die Zeit druckt, die erforderlich ist, um gemeinsame Anwendungsfälle für die Arbeit mit Yang-Instanzdaten auszuführen.
Um diesen Test zu aktivieren, verwenden Sie eine Option und um repräsentative Ergebnisse zu erzielen. Aktivieren Sie den Release -Build -Typ:
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PERF_TESTS=ON ..
und um den Test mit dem Ausgangslauf durchzuführen:
$ make
$ ctest -V -R ly_perf
Basierend auf den ausgeführten Tests ist es möglich, Code -Deckungsbericht zu erstellen. Es muss jedoch aktiviert werden und diese Befehle sind erforderlich, um den Bericht zu generieren:
$ cmake -DENABLE_COVERAGE=ON ..
$ make
$ make coverage
Mehrere Yang -Fuzzing -Ziele und Fuzzing -Anweisungen finden Sie im Verzeichnis tests/fuzz .
Alle Ziele können mit LLVMs libfuzzer und afl von LLVM und neuen Zielen leicht hinzugefügt werden. Asciinema -Beispiele, die das Fuzzing -Setup für AFL (https://asciinema.org/a/311060) und libfuzzer (https://asciinema.org/a/311035) beschreiben.