pyroute2 0.9.5
pip install pyroute2
Released:
Python Netlink library
Navigation
Unverified details
These details havenot been verified by PyPIProject links
Meta
- License Expression: GPL-2.0-or-later OR Apache-2.0
SPDXLicense Expression - Author:Peter Saveliev
- Requires: Python >=3.9
- Provides-Extra:
dev,docs,repo
Classifiers
- Development Status
- Intended Audience
- Operating System
- Programming Language
- Topic
Project description
Pyroute2 is a pure Python networking framework. The core requires only Pythonstdlib, no 3rd party libraries. The library was started as an RTNL protocolimplementation, so the name ispyroute2, but now it supports severalprotocols, including non-netlink. Here are some supported netlink familiesand protocols:
dhcp — dynamic host configuration protocol for IPv4
9p2000 — Plan9 file system protocol
Netlink:
rtnl, network settings — addresses, routes, traffic controls
nfnetlink — netfilter API
ipq — simplest userspace packet filtering, iptables QUEUE target
devlink — manage and monitor devlink-enabled hardware
generic — generic netlink families
uevent — same uevent messages as in udev
Netfilter API:
ipset — IP sets
nftables — packet filtering
nfct — connection tracking
Generic netlink:
ethtool — low-level network interface setup
wireguard — VPN setup
nl80211 — wireless functions API (basic support)
taskstats — extended process statistics
acpi_events — ACPI events monitoring
thermal_events — thermal events monitoring
VFS_DQUOT — disk quota events monitoring
On the low level the library provides socket objects with anextended API. The additional functionality aims to:
Help to open/bind netlink sockets
Discover generic netlink protocols and multicast groups
Construct, encode and decode netlink and PF_ROUTE messages
Supported systems
Pyroute2 runs natively on Linux and emulates some limited subsetof RTNL netlink API on BSD systems on top of PF_ROUTE notificationsand standard system tools.
Other platforms are not supported.
IPRoute – synchronous RTNL API
Low-levelIPRoute utility — Linux network configuration, thisclass is almost a 1-to-1 RTNL mapping. There are no implicitinterface lookups and so on.
Get notifications about network settings changes:
frompyroute2importIPRoutewithIPRoute()asipr:ipr.bind()# <--- start listening for RTNL broadcastsformessageinipr.get():# receive the broadcastsprint(message)More examples:
fromsocketimportAF_INETfrompyroute2importIPRoute# get access to the netlink socketipr=IPRoute()# no monitoring here -- thus no bind()# print interfacesforlinkinipr.get_links():print(link)# create VETH pair and move v0p1 to netns 'test'ipr.link('add',ifname='v0p0',peer='v0p1',kind='veth')# wait for the devices:peer,veth=ipr.poll(ipr.link,'dump',timeout=5,ifname=lambdax:xin('v0p0','v0p1'))ipr.link('set',index=peer['index'],net_ns_fd='test')# bring v0p0 up and add an addressipr.link('set',index=veth['index'],state='up')ipr.addr('add',index=veth['index'],address='10.0.0.1',prefixlen=24)# release Netlink socketip.close()AsyncIPRoute – asynchronous RTNL API
WhileIPRoute provides a synchronous RTNL API, it is actually buildaround the asyncio-based core.
The same example as above can look like that:
importasynciofrompyroute2importAsyncIPRouteasyncdefmain():# get access to the netlink socketipr=AsyncIPRoute()# print interfacesasyncforlinkinawaitipr.get_links():print(link)# create VETH pair and move v0p1 to netns 'test'awaitipr.link('add',ifname='v0p0',peer='v0p1',kind='veth')# wait for the devices:peer,veth=awaitipr.poll(ipr.link,'dump',timeout=5,ifname=lambdax:xin('v0p0','v0p1'))awaitipr.link('set',index=peer['index'],net_ns_fd='test')...ipr.close()asyncio.run(main())Please notice that.close() is synchronous in any case.
Network namespace management
frompyroute2importnetns# create netnsnetns.create('test')# listprint(netns.listnetns())# remove netnsnetns.remove('test')Createveth interfaces pair and move tonetns:
frompyroute2importIPRoutewithIPRoute()asipr:# create interface pairipr.link('add',ifname='v0p0',kind='veth',peer='v0p1')# wait for the peer(peer,)=ipr.poll(ipr.link,'dump',timeout=5,ifname='v0p1')# move the peer to the 'test' netns:ipr.link('set',index=peer['index'],net_ns_fd='test')List interfaces in somenetns:
frompyroute2importIPRoutewithIPRoute(netns='test')asipr:forlinkinipr.get_links():print(link)More details and samples see in the documentation.
NDB – high level RTNL API
Key features:
Data integrity
Transactions with commit/rollback changes
State synchronization
Multiple sources, including netns and remote systems
A “Hello world” example:
frompyroute2importNDBwithNDB()asndb:withndb.interfaces['eth0']aseth0:# set one parametereth0.set(state='down')eth0.commit()# make sure that the interface is down# or multiple parameters at onceeth0.set(ifname='hello_world!',state='up')eth0.commit()# rename, bring up and wait for success# --> <-- here you can be sure that the interface is up & renamedInstallation
Using pypi:
pipinstallpyroute2Using git:
pipinstallgit+https://github.com/svinota/pyroute2.gitUsing source, requires make and nox
gitclonehttps://github.com/svinota/pyroute2.gitcdpyroute2makeinstallRequirements
Python >= 3.9
Links
Project details
Unverified details
These details havenot been verified by PyPIProject links
Meta
- License Expression: GPL-2.0-or-later OR Apache-2.0
SPDXLicense Expression - Author:Peter Saveliev
- Requires: Python >=3.9
- Provides-Extra:
dev,docs,repo
Classifiers
- Development Status
- Intended Audience
- Operating System
- Programming Language
- Topic
Release historyRelease notifications |RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more aboutinstalling packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more aboutwheel file names.
Copy a direct link to the current filters
File details
Details for the filepyroute2-0.9.5.tar.gz.
File metadata
- Download URL:pyroute2-0.9.5.tar.gz
- Upload date:
- Size: 969.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | a198ccbe545b031b00b10da4b44df33d548db04af944be8107c05a215ba03872 | |
| MD5 | ed5b0e365ac698f0229e4801a635793e | |
| BLAKE2b-256 | 1db21019ddc278549fb7e64a16d7775e0f7d981135f762b8706e583414d655e3 |
File details
Details for the filepyroute2-0.9.5-py3-none-any.whl.
File metadata
- Download URL:pyroute2-0.9.5-py3-none-any.whl
- Upload date:
- Size: 480.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 | e7d485ce8274cbf473e9092fa65585faf8a3df5fe05ecf497cb9c5b1516ba09f | |
| MD5 | 280074cdc23150de6e8079370556f13d | |
| BLAKE2b-256 | bd66995c65e7566543e941705f9b1b99ebfd7f9d3ed67c8eb7cb47f30168dc72 |