A Lybyang é um analisador de linguagem de modelagem de dados Yang e um kit de ferramentas escritos (e fornecendo API) em C. A biblioteca é usada, por exemplo, em projetos LibNetConf2, netopeer2 ou SysRepo.
O projeto usa 2 principais filiais master e devel . Outros ramos não devem ser clonados. No master , existem arquivos do último lançamento oficial. Quaisquer melhorias e alterações mais recentes, que foram testadas pelo menos brevemente são encontradas em devel . Em cada novo lançamento , devel é fundido no master .
Isso significa que, quando apenas lançamentos oficiais estáveis devem ser usados, o master pode ser usado ou liberações específicas baixadas. Se todas as bugs mais recentes devem ser aplicadas, devel Branch será o que é usado. Observe que sempre que um novo problema for criado e ocorre na filial master , a primeira resposta provavelmente será o devel antes de qualquer suporte fornecido adicional.
Olhe para a documentação e o Transition Manual da seção. Isso deve ajudar na migração básica e na capacidade de compilar um projeto. Mas, para realmente usar os novos recursos, é necessário ler toda a documentação e a API.
A implementação atual abrange Yang 1.0 (RFC 6020) e Yang 1.1 (RFC 7950).
RPM binário Pacotes ou Pacotes Deb da versão mais recente podem ser construídos localmente usando apkg , procure README no diretório distro .
pthreads-win32direntdlfcn-win32getopt-win32 A versão do Windows não suporta plugins e o yanglint funciona apenas em um modo não interativo. No Windows, todos os valores de data e hora de Yang são convertidos pela primeira vez no UTC (se o deslocamento do TZ foi especificado) e depois retornado com "fuso horário não especificado".
$ mkdir build; cd build
$ cmake ..
$ make
# make install
Defina a variável CC :
$ CC=/usr/bin/clang cmake ..
Para alterar o prefixo em que a biblioteca, os cabeçalhos e quaisquer outros arquivos são instalados, defina CMAKE_INSTALL_PREFIX variável:
$ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
Prefixo padrão é /usr/local .
Existem dois modos de construção:
O modo Debug é atualmente usado como padrão. Para mudar para o modo Release , digite na linha de comando:
$ cmake -D CMAKE_BUILD_TYPE:String="Release" ..
Quanto às extensões Yang, a Líbia permite carregar plugins de extensão. Por padrão, o diretório para armazenar os plugins é libdir/lybyang. Para alterá -lo, use a seguinte opção CMake com o valor especificando o diretório desejado:
$ cmake -DPLUGINS_DIR:PATH=`pwd`"/src/extensions/" ..
O caminho do diretório também pode ser alterado no tempo de execução via variável de ambiente, por exemplo:
$ LIBYANG_EXTENSIONS_PLUGINS_DIR=`pwd`/my/relative/path yanglint
Observe que os plugins não estão disponíveis no Windows.
Sempre que a revisão mais recente de um esquema deve ser carregada (importação sem revisão específica), ela é realizada da maneira padrão, pela primeira vez. Por padrão, em todas as outras vezes em que a revisão mais recente do mesmo esquema é necessária, a carregada inicialmente é reutilizada. Se você sabe que isso pode causar problemas, o que significa que a última revisão disponível de um esquema pode mudar durante a operação, você pode forçar a Líbia a sempre procurar o esquema Anew By:
$ cmake -DENABLE_LATEST_REVISIONS=OFF ..
Observe que, com o CMake, se você deseja alterar o compilador ou suas opções depois de já executar o CMake, você precisa limpar seu cache primeiro - a maneira mais simples de fazê -lo é remover todo o conteúdo do diretório 'Build'.
Todas as funções da Líbia estão disponíveis através do cabeçalho principal:
#include <libyang/libyang.h>
Para compilar seu programa com a Líbia, é necessário vinculá -lo à Líbia usando os seguintes parâmetros do vinculador:
-lyang
Observe que pode ser necessário chamar ldconfig(8) após a instalação da biblioteca e, se a biblioteca foi instalada em um caminho fora do padrão, o caminho para a Líbia deve ser especificado para o vinculador. Para ajudar na definição de todas as opções do compilador, existe um arquivo libyang.pc para pkg-config(1) disponível na árvore de origem. O arquivo está instalado com a biblioteca.
Se você estiver usando cmake in You Project, também é possível usar o arquivo FindLibYANG.cmake fornecido para detectar a presença da biblioteca da Líbia no sistema.
Não há ligações para outros idiomas diretamente neste projeto, mas estão disponíveis separadamente.
O projeto da Líbia inclui uma ferramenta rica em recursos chamada yanglint(1) para validação e conversão dos esquemas e dados modelados por Yang. Os códigos de origem estão localizados em /tools/lint e podem ser usados para explorar como um aplicativo deve usar a biblioteca da Líbia. yanglint(1) binário e sua página de homem são instalados juntamente com a própria biblioteca.
Há também o ReadMe descrevendo alguns exemplos de uso de yanglint .
A Líbia inclui vários testes construídos com o CMOCKA. Os testes podem ser encontrados no subdiretório tests e foram projetados para verificar a funcionalidade da biblioteca após as alterações do código. Testes de regressão adicionais realizados com um corpus de entradas prejudiciais que causaram falhas anteriormente são feitas. Eles estão disponíveis em tests/fuzz e são construídos automaticamente com os testes de unidade CMOCKA.
Os testes são, por Debug
$ make
No caso do modo Release , os testes não são construídos por padrão (requer dependência adicional), mas eles podem ser ativados via opção CMake:
$ cmake -DENABLE_TESTS=ON ..
Observe que, se os cabeçalhos CMOCKA necessários não estiverem presentes no sistema incluiram caminhos, os testes não estiverem disponíveis, apesar do modo de construção ou das opções do CMake.
Os testes podem ser executados pela meta test da marca:
$ make test
Existe uma ferramenta de medição de desempenho incluída que imprime informações sobre o tempo necessário para executar casos de uso comuns de trabalho com dados da instância Yang.
Para ativar este teste, use uma opção e obtenha resultados representativos, habilite o tipo de compilação de liberação:
$ cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_PERF_TESTS=ON ..
E para executar o teste ao ver sua saída executada:
$ make
$ ctest -V -R ly_perf
Com base nos testes executados, é possível gerar relatório de cobertura de código. Mas deve ser ativado e esses comandos são necessários para gerar o relatório:
$ cmake -DENABLE_COVERAGE=ON ..
$ make
$ make coverage
Múltiplos alvos de nebulização de Yang e instruções de difamação estão disponíveis no diretório tests/fuzz .
Todos os alvos podem ser confundidos com o Libfuzzer e AFL da LLVM, e novos alvos podem ser facilmente adicionados. Exemplos de asciinema que descrevem a configuração da AFL (https://asciinema.org/a/311060) e libfuzzer (https://asciinema.org/a/311035) estão disponíveis.