Skip to main content

Netlink client for asyncio

Project description

aiortnetlink

Pure-python asyncio rtnetlink client.

Getting started

Install from PyPI:

pip install aiortnetlink

Or, adding to your uv project:

uv add aiortnetlink

Example:

from aiortnetlink import NetlinkClient

async with NetlinkClient() as nl:
    async for link in nl.get_links():
        print(f"{link.index}: {link.name}")

The module ships with a CLI, for example if running from the repository root:

uv run aiortnetlink addr show

Supported features

Links

  • get_links: List all links.
  • get_link: Lookup link by index or name.

Addresses

  • get_links: List all addresses.
  • add_addr: Add IP address to link.
  • del_addr: Remove IP address from link.

Routes

  • get_routes: List all routes.
  • get_route: Get route for the given address.

Rules

  • get_rules: List all rules.

Notifications

  • recv_notification: Receive netlink notification. Notification subscription is done by passing the revelant rtnetlink groups to the netlink client.

Tun/Tap

  • create_tuntap: Create tun or tap device.
  • delete_tuntap: Delete tun or tap device.

Network namespaces

All network operations can be performed in a network namesapce by passing the netns_name argument to the NetlinkClient.

Development

This project uses uv for project management and poe the poet to run development tasks. Linting and code formatting is done using ruff, type checking using mypy and tests using pytest.

For example to run all checks locally:

uvx --from poethepoet poe lint

To format code using ruff:

uvx --from poethepoet poe fmt

Constants generator

Linux user API constants are exposed to C programs as symbols. In order to extract their values for use in a pure-Python module without violating the license we need to write a C program that will import the appropriate linux uapi headers and print their values.

To facilitate development of this library we generate a C program and use its output to generate python source code representing the various constants. The constants are grouped into types using IntEnum.

This is handled by the constants generator. The files in the constants directory and generated in this way and should not be edited manually.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aiortnetlink-0.2.3.tar.gz (47.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aiortnetlink-0.2.3-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page