Code Monkey home page Code Monkey logo

sysrepo-plugin-interfaces's Introduction

Sysrepo Plugin Interfaces

DevelopmentDocumentationSupportContributeContributorsLicensing

The goal of this project is to provide a method of configuring networking on generic Linux systems using the Sysrepo NETCONF server implementation.

About this component

This repository contains several Sysrepo plugins related to newtork management.

The first, sysrepo-plugin-interfaces is based on the ietf-interfaces YANG module which contains "a collection of YANG definitions for managing network interfaces". More information about the specific YANG module can be found in RFC 7223: A YANG Data Model for Interface Management.

The second, sysrepo-plugin-routing is based on the ietf-routing YANG module which contains "generic components of a routing data model" and ietf-ipv4-unicast-routing and ietf-ipv6-unicast-routing which augment ietf-routing with IPv4 and IPv6 specific data. More information about ietf-routing is available in RFC 8022: A YANG Data Model for Routing Management

Development

Besides the usual C development environment, the following additional dependencies are required:

Build

First clone the repository:

$ git clone https://github.com/telekom/sysrepo-plugin-interfaces
$ git submodule init
$ git submodule update

Next, create a build directory and generate the build recipes using CMake:

$ mkdir build
$ cd build
$ cmake ..

By default both plugins will be built, but either of them can be disabled by setting the appropriate CMake plugin option to OFF. For example, to build only the routing plugin the following command should be executed instead:

$ cmake -DINTERFACES_PLUGIN=OFF ..

Lastly, invoke the build and install using make:

$ make -j$(nproc)

Build artifacts

Plugin will be built as a standalone application and also as a sysrepo-plugind module. For example, for the ietf-interfaces plugin there are two build artifacts:

  • ietf-interfaces-plugin: standalone application
  • libsrplg-ietf-interfaces.so: sysrepo-plugind module which exposes the plugin init and cleanup callbacks and can be installed by invoking the following command: sysrepo-plugind -P libsrplg-ietf-interfaces.so

Sysrepo/YANG requirements

The plugins require several YANG modules to be loaded into the Sysrepo datastore and several features need to be enabled. For the interfaces plugin this can be achieved by invoking the following commands:

$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/ieee802-dot1q-types.yang
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl --change ietf-interfaces --enable-feature if-mib
$ sysrepoctl --change ietf-if-extensions --enable-feature sub-interfaces

For the routing plugin, the following models have to be installed:

$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected]
$ sysrepoctl -i ./yang/[email protected] -s ./yang

Code of Conduct

This project has adopted the Contributor Covenant in version 2.0 as our code of conduct. Please see the details in our CODE_OF_CONDUCT.md. All contributors must abide by the code of conduct.

Working Language

We decided to apply English as the primary project language.

Consequently, all content will be made available primarily in English. We also ask all interested people to use English as language to create issues, in their code (comments, documentation etc.) and when you send requests to us. The application itself and all end-user facing content will be made available in other languages as needed.

Documentation

The full documentation for the Sysrepo interfaces and routing plugins can be found in the documentation directory.

Support and Feedback

The following channels are available for discussions, feedback, and support requests:

Type Channel
Issues
Other Requests

How to Contribute

Contribution and feedback is encouraged and always welcome. For more information about how to contribute, the project structure, as well as additional contribution information, see our Contribution Guidelines. By participating in this project, you agree to abide by its Code of Conduct at all times.

Contributors

Our commitment to open source means that we are enabling -in fact encouraging- all interested parties to contribute and become part of its developer community.

Licensing

Copyright (C) 2021 Deutsche Telekom AG.

Licensed under the BSD 3-Clause License (the "License"); you may not use this file except in compliance with the License.

You may obtain a copy of the License by reviewing the file LICENSE in the repository.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the LICENSE for the specific language governing permissions and limitations under the License.

sysrepo-plugin-interfaces's People

Contributors

zinccyy avatar metamacro avatar feelqah avatar jvijtiuk avatar dbarac avatar jkuless avatar jpetrina avatar nageshnnazare avatar ciaran2 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.