Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pyroute2 for openSUSE:Factory
checked in at 2024-03-01 23:37:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyroute2 (Old)
and /work/SRC/openSUSE:Factory/.python-pyroute2.new.1770 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pyroute2"
Fri Mar 1 23:37:35 2024 rev:28 rq:1153828 version:0.7.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyroute2/python-pyroute2.changes
2023-12-15 21:48:45.417400485 +0100
+++
/work/SRC/openSUSE:Factory/.python-pyroute2.new.1770/python-pyroute2.changes
2024-03-01 23:37:36.453803162 +0100
@@ -1,0 +2,14 @@
+Fri Mar 1 09:54:09 UTC 2024 - Dirk Müller <[email protected]>
+
+- update to 0.7.12:
+ * cli: move readline import to the script
+ * nl80211: decoder improvements
+ * remote: fix dump() on RemoteIPRoute
+ * ndb: add ensure() call
+ * ethtool: ring support
+ ndb: fix sources objects counting
+ * ethtool: ring support
+ * ndb: fix FDB records index
+ * ndb: fix sources objects counting
+
+-------------------------------------------------------------------
Old:
----
pyroute2-0.7.10.tar.gz
New:
----
pyroute2-0.7.12.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pyroute2.spec ++++++
--- /var/tmp/diff_new_pack.ml7B5U/_old 2024-03-01 23:37:36.969821821 +0100
+++ /var/tmp/diff_new_pack.ml7B5U/_new 2024-03-01 23:37:36.973821967 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-pyroute2
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-pyroute2
-Version: 0.7.10
+Version: 0.7.12
Release: 0
Summary: Python Netlink library
License: Apache-2.0 OR GPL-2.0-or-later
@@ -30,7 +30,7 @@
BuildRequires: fdupes
BuildRequires: python-rpm-macros
Requires(post): update-alternatives
-Requires(postun):update-alternatives
+Requires(postun): update-alternatives
BuildArch: noarch
Provides: python-pyroute2.core = %{version}
Obsoletes: python-pyroute2.core < %{version}
++++++ pyroute2-0.7.10.tar.gz -> pyroute2-0.7.12.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/CHANGELOG.rst
new/pyroute2-0.7.12/CHANGELOG.rst
--- old/pyroute2-0.7.10/CHANGELOG.rst 2023-11-30 09:11:55.000000000 +0100
+++ new/pyroute2-0.7.12/CHANGELOG.rst 2024-02-10 14:52:33.000000000 +0100
@@ -1,6 +1,18 @@
Changelog
=========
+* 0.7.12
+ * cli: move readline import to the script
<https://github.com/svinota/pyroute2/pull/1165>
+ * ci: update tools versions <https://github.com/svinota/pyroute2/pull/1167>
+ * ci: generic make test target, update docs
<https://github.com/svinota/pyroute2/pull/1173>
+ * ci: rename Linux python sessions in nox
<https://github.com/svinota/pyroute2/pull/1172>
+ * nl80211: decoder improvements
<https://github.com/svinota/pyroute2/pull/1168>
+ * remote: fix dump() on RemoteIPRoute
<https://github.com/svinota/pyroute2/pull/1169>
+ * ndb: add ensure() call <https://github.com/svinota/pyroute2/pull/1171>
+* 0.7.11
+ * ethtool: ring support <https://github.com/svinota/pyroute2/pull/1152>
+ * ndb: fix FDB records index
<https://github.com/svinota/pyroute2/pull/1158>
+ * ndb: fix sources objects counting
<https://github.com/svinota/pyroute2/pull/1156>
* 0.7.10
* ss2: fix classful flow data
<https://github.com/svinota/pyroute2/pull/1143>
* ci: add Python versions 3.8 and 3.12, update platform versions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/PKG-INFO new/pyroute2-0.7.12/PKG-INFO
--- old/pyroute2-0.7.10/PKG-INFO 2023-11-30 09:16:18.270647000 +0100
+++ new/pyroute2-0.7.12/PKG-INFO 2024-02-10 16:04:20.602168800 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pyroute2
-Version: 0.7.10
+Version: 0.7.12
Summary: Python Netlink library
Home-page: https://github.com/svinota/pyroute2
Author: Peter Saveliev
@@ -17,12 +17,11 @@
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Development Status :: 4 - Beta
Description-Content-Type: text/x-rst
License-File: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/README.contribute.rst
new/pyroute2-0.7.12/README.contribute.rst
--- old/pyroute2-0.7.10/README.contribute.rst 2023-03-15 11:10:02.000000000
+0100
+++ new/pyroute2-0.7.12/README.contribute.rst 2024-02-10 14:17:37.000000000
+0100
@@ -16,21 +16,13 @@
# git
# python
# GNU make, sed, awk
- #
- # then clone the repo
+
+ # clone the repo
git clone ${pyroute2_git_url}
cd pyroute2
- # create and activate virtualenv
- python -m venv venv
- . venv/bin/activate
-
- # update pip and install nox
- pip install --upgrade pip
- pip install nox
-
- # run the test cycle
- nox
+ # run the test suite
+ make test
OpenBSD
+++++++
@@ -38,33 +30,31 @@
.. code-block:: sh
# install required tools
- pkg_add bash git gmake gsed python
+ pkg_add bash git gmake gsed python rust
# clone the repo
git clone ${pyroute_git_url}
cd pyroute2
- # create and activate virtualenv
- python3.10 -m venv venv
- . venv/bin/activate
-
- # update pip and install nox
- pip install --upgrade pip
- pip install nox
+ # run the test suite
+ gmake test
- # run the platform specific environment
- nox -e openbsd
+Step 2: plan and implement the change
+-------------------------------------
-Step 2: make a change
----------------------
+The best practice is that any change should be covered by tests.
+The test suite is in the `/tests/` folder and is run by `nox`. You
+can add your tests to an existing tests module, or create your
+own module, if it requires some specific environment that is not
+covered yet. In the latter case add a new session to `noxfile.py`.
The project is designed to work on the bare standard library.
But some embedded environments strip even the stdlib, removing
modules like sqlite3.
-So to run pyroute2 even in such environments, the project provdes
+So to run pyroute2 even in such environments, the project provides
two packages, `pyroute2` and `pyroute2.minimal`, with the latter
-providing a minimal distribution, but using no sqlite3 or pickle.
+providing a minimal distribution, with no sqlite3 or pickle.
Modules `pyroute2` and `pyroute2.minimal` are mutually exclusive.
@@ -74,18 +64,15 @@
Step 3: test the change
-----------------------
-Assume the environment is already set up on the step 1. Thus:
+Assume the environment is already set up on the step 1:
.. code-block:: sh
- # run code checks
- nox -e linter
-
- # run unit tests
- nox -e unit
+ # run code linter
+ make format
- # run functional test, some require root
- nox -e linux-3.10
+ # run test suite, some tests may require root
+ make test
Step 4: submit a PR
-------------------
@@ -98,7 +85,7 @@
The code must comply some requirements:
-* the library must work on Python >= 3.6.
-* the code must pass `nox -e linter`
-* the code must not break existing unit and functional tests
-* the `ctypes` usage must not break the library on SELinux
+* the library **must** work on Python >= 3.9
+* the code **must** pass `make format`
+* the code **must** not break existing unit and functional tests (`make test`)
+* the `ctypes` usage **must not** break the library on SELinux
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/VERSION new/pyroute2-0.7.12/VERSION
--- old/pyroute2-0.7.10/VERSION 2023-11-30 09:16:06.000000000 +0100
+++ new/pyroute2-0.7.12/VERSION 2024-02-10 16:04:01.000000000 +0100
@@ -1 +1 @@
-0.7.10
+0.7.12
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/examples/generic/netl.py
new/pyroute2-0.7.12/examples/generic/netl.py
--- old/pyroute2-0.7.10/examples/generic/netl.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/examples/generic/netl.py 2024-01-29
12:26:05.000000000 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import traceback
from pyroute2.netlink import NLM_F_REQUEST
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/examples/ndb/keystone_auth.py
new/pyroute2-0.7.12/examples/ndb/keystone_auth.py
--- old/pyroute2-0.7.10/examples/ndb/keystone_auth.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/examples/ndb/keystone_auth.py 2024-01-29
12:26:05.000000000 +0100
@@ -40,7 +40,7 @@
$ . openstack.rc # <-- your OpenStack APIv3 RC file
$ export PYTHONPATH=`pwd`
- $ python examples/ndb/keystone_auth.py 14080769fe05e1f8b837fb43ca0f0ba4
+ $ python3 examples/ndb/keystone_auth.py 14080769fe05e1f8b837fb43ca0f0ba4
Using this example you can implement services that export NDB via any RPC,
e.g. HTTP, and use Keystone integration. Same scheme may be used for any
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/examples/ndb/radius_auth.py
new/pyroute2-0.7.12/examples/ndb/radius_auth.py
--- old/pyroute2-0.7.10/examples/ndb/radius_auth.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/examples/ndb/radius_auth.py 2024-01-29
12:26:05.000000000 +0100
@@ -32,7 +32,7 @@
export PYTHONPATH=`pwd`
$ . radius.rc
- $ python examples/ndb/radius_auth.py testing secret
+ $ python3 examples/ndb/radius_auth.py testing secret
'''
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/examples/policy/policy.py
new/pyroute2-0.7.12/examples/policy/policy.py
--- old/pyroute2-0.7.10/examples/policy/policy.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/examples/policy/policy.py 2024-01-29
12:26:05.000000000 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
import traceback
from pprint import pprint
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/examples/wifi/nl80211_interfaces.py
new/pyroute2-0.7.12/examples/wifi/nl80211_interfaces.py
--- old/pyroute2-0.7.10/examples/wifi/nl80211_interfaces.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/examples/wifi/nl80211_interfaces.py 2024-01-29
12:26:05.000000000 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
from pyroute2.iwutil import IW
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pr2modules/__init__.py
new/pyroute2-0.7.12/pr2modules/__init__.py
--- old/pyroute2-0.7.10/pr2modules/__init__.py 2023-03-15 11:10:02.000000000
+0100
+++ new/pyroute2-0.7.12/pr2modules/__init__.py 2024-02-07 10:51:28.000000000
+0100
@@ -3,6 +3,7 @@
It will be removed in 0.8.x
'''
+
import sys
import warnings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/bsd/util.py
new/pyroute2-0.7.12/pyroute2/bsd/util.py
--- old/pyroute2-0.7.10/pyroute2/bsd/util.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/bsd/util.py 2024-02-07 10:51:28.000000000
+0100
@@ -6,6 +6,7 @@
Maybe some day it will be ioctl. For now it's ifconfig and netstat.
'''
+
import re
import socket
import subprocess
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/cli/console.py
new/pyroute2-0.7.12/pyroute2/cli/console.py
--- old/pyroute2-0.7.10/pyroute2/cli/console.py 2023-08-02 18:44:38.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/cli/console.py 2024-02-07 15:16:34.000000000
+0100
@@ -6,17 +6,9 @@
from pyroute2.cli.session import Session
from pyroute2.ndb.main import NDB
-try:
- import readline
-
- HAS_READLINE = True
-except ImportError:
- HAS_READLINE = False
-
class Console(code.InteractiveConsole):
def __init__(self, stdout=None, log=None, sources=None):
- global HAS_READLINE
self.db = NDB(log=log, sources=sources)
self.db.config.update(
{'show_format': 'json', 'recordset_pipe': 'true'}
@@ -28,10 +20,6 @@
self.prompt = ''
self.set_prompt()
code.InteractiveConsole.__init__(self)
- if HAS_READLINE:
- readline.parse_and_bind('tab: complete')
- readline.set_completer(self.completer)
- readline.set_completion_display_matches_hook(self.display)
def close(self):
self.db.close()
@@ -92,6 +80,11 @@
self.showtraceback()
continue
+ def set_completer(self, readline):
+ readline.parse_and_bind('tab: complete')
+ readline.set_completer(self.completer)
+ readline.set_completion_display_matches_hook(self.display)
+
def completer(self, text, state):
if state == 0:
d = [x for x in dir(self.session.ptr) if x.startswith(text)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/common.py
new/pyroute2-0.7.12/pyroute2/common.py
--- old/pyroute2-0.7.10/pyroute2/common.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/common.py 2024-02-07 10:51:28.000000000
+0100
@@ -199,7 +199,9 @@
__var_name = re.compile('^[a-zA-Z_]+[a-zA-Z_0-9]*$')
def __dir__(self):
- return [i for i in self if type(i) == str and self.__var_name.match(i)]
+ return [
+ i for i in self if isinstance(i, str) and self.__var_name.match(i)
+ ]
def __getattribute__(self, key, *argv):
try:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/config/version.py
new/pyroute2-0.7.12/pyroute2/config/version.py
--- old/pyroute2-0.7.10/pyroute2/config/version.py 2023-11-30
09:16:06.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/config/version.py 2024-02-10
16:04:01.000000000 +0100
@@ -1 +1 @@
-__version__ = "0.7.10"
+__version__ = "0.7.12"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/dhcp/dhcp4socket.py
new/pyroute2-0.7.12/pyroute2/dhcp/dhcp4socket.py
--- old/pyroute2-0.7.10/pyroute2/dhcp/dhcp4socket.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/dhcp/dhcp4socket.py 2024-02-07
10:51:28.000000000 +0100
@@ -3,6 +3,7 @@
================
'''
+
from pyroute2.common import AddrPool
from pyroute2.dhcp.dhcp4msg import dhcp4msg
from pyroute2.ext.rawsocket import RawSocket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ethtool/ethtool.py
new/pyroute2-0.7.12/pyroute2/ethtool/ethtool.py
--- old/pyroute2-0.7.10/pyroute2/ethtool/ethtool.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ethtool/ethtool.py 2024-02-07
10:51:28.000000000 +0100
@@ -13,7 +13,7 @@
)
from pyroute2.ethtool.ioctl import WAKE_NAMES, IoctlEthtool
from pyroute2.netlink.exceptions import NetlinkError
-from pyroute2.netlink.generic.ethtool import NlEthtool
+from pyroute2.netlink.generic.ethtool import NlEthtool, ethtool_rings_msg
INT32MINUS_UINT32 = c_uint32(-1).value
INT16MINUS_UINT16 = c_uint16(-1).value
@@ -196,11 +196,9 @@
@classmethod
def from_ioctl(cls, link_settings):
- (
- map_supported,
- map_advertising,
- map_lp_advertising,
- ) = IoctlEthtool.get_link_mode_masks(link_settings)
+ (map_supported, map_advertising, map_lp_advertising) = (
+ IoctlEthtool.get_link_mode_masks(link_settings)
+ )
bits_supported = IoctlEthtool.get_link_mode_bits(map_supported)
supported_ports = []
supported_modes = []
@@ -257,6 +255,108 @@
)
+class EthtoolRings(
+ namedtuple(
+ 'EthtoolRings',
+ (
+ "rx_max",
+ "rx_mini_max",
+ "rx_jumbo_max",
+ "tx_max",
+ "rx",
+ "rx_mini",
+ "rx_jumbo",
+ "tx",
+ "rx_buf_len",
+ "tcp_data_split",
+ "cqe_size",
+ "tx_push",
+ "rx_push",
+ "tx_push_buf_len",
+ "tx_push_buf_len_max",
+ ),
+ )
+):
+ nl_attributs_dict = {
+ "rx_max": 'ETHTOOL_A_RINGS_RX_MAX',
+ "rx_mini_max": 'ETHTOOL_A_RINGS_RX_MINI_MAX',
+ "rx_jumbo_max": 'ETHTOOL_A_RINGS_RX_JUMBO_MAX',
+ "tx_max": 'ETHTOOL_A_RINGS_TX_MAX',
+ "rx": 'ETHTOOL_A_RINGS_RX',
+ "rx_mini": 'ETHTOOL_A_RINGS_RX_MINI',
+ "rx_jumbo": 'ETHTOOL_A_RINGS_RX_JUMBO',
+ "tx": 'ETHTOOL_A_RINGS_TX',
+ "rx_buf_len": 'ETHTOOL_A_RINGS_RX_BUF_LEN',
+ "tcp_data_split": 'ETHTOOL_A_RINGS_TCP_DATA_SPLIT',
+ "cqe_size": 'ETHTOOL_A_RINGS_CQE_SIZE',
+ "tx_push": 'ETHTOOL_A_RINGS_TX_PUSH',
+ "rx_push": 'ETHTOOL_A_RINGS_RX_PUSH',
+ "tx_push_buf_len": 'ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN',
+ "tx_push_buf_len_max": 'ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX',
+ }
+
+ def __new__(
+ cls,
+ rx_max=None,
+ rx_mini_max=None,
+ rx_jumbo_max=None,
+ tx_max=None,
+ rx=None,
+ rx_mini=None,
+ rx_jumbo=None,
+ tx=None,
+ rx_buf_len=None,
+ tcp_data_split=None,
+ cqe_size=None,
+ tx_push=None,
+ rx_push=None,
+ tx_push_buf_len=None,
+ tx_push_buf_len_max=None,
+ ):
+ return super(EthtoolRings, cls).__new__(
+ cls,
+ rx_max,
+ rx_mini_max,
+ rx_jumbo_max,
+ tx_max,
+ rx,
+ rx_mini,
+ rx_jumbo,
+ tx,
+ rx_buf_len,
+ tcp_data_split,
+ cqe_size,
+ tx_push,
+ rx_push,
+ tx_push_buf_len,
+ tx_push_buf_len_max,
+ )
+
+ @classmethod
+ def from_netlink(cls, nl_rings):
+ nl_rings = nl_rings[0]
+ return cls(
+ **{
+ cls_attr: nl_rings.get_attr(netlink_attr)
+ for cls_attr, netlink_attr in cls.nl_attributs_dict.items()
+ }
+ )
+
+ def to_netlink(self):
+ nl_rings_attrs = ethtool_rings_msg()
+ for cls_attr, netlink_attr in self.nl_attributs_dict.items():
+ attr = getattr(self, cls_attr)
+ if attr is not None:
+ nl_rings_attrs["attrs"].append((netlink_attr, attr))
+ return nl_rings_attrs
+
+ @classmethod
+ def from_ioctl(cls, ioctl_rings):
+ ioctl_rings = dict(ioctl_rings)
+ ioctl_rings.pop("cmd")
+ return cls(**ioctl_rings)
+
+
class Ethtool:
def __init__(self):
self._with_ioctl = IoctlEthtool()
@@ -330,6 +430,31 @@
wol_mode = self._with_ioctl.get_wol()
return EthtoolWakeOnLan.from_ioctl(wol_mode)
+ def get_rings(self, ifname, with_netlink=None):
+ try:
+ rings = self._nl_exec(
+ self._with_nl.get_rings, with_netlink, ifname
+ )
+ rings = EthtoolRings.from_netlink(rings)
+ except UseIoctl:
+ self._with_ioctl.change_ifname(ifname)
+ rings_info = self._with_ioctl.get_rings()
+ rings = EthtoolRings.from_ioctl(rings_info)
+ return rings
+
+ def set_rings(self, ifname, with_netlink=None, **kwargs):
+ try:
+ rings = EthtoolRings(**kwargs).to_netlink()
+ self._nl_exec(self._with_nl.set_rings, with_netlink, rings, ifname)
+ except UseIoctl:
+ self._with_ioctl.change_ifname(ifname)
+ ioctl_rings = self._with_ioctl.get_rings()
+ for name, value in kwargs.items():
+ if name in ioctl_rings.keys() and ioctl_rings[name] != value:
+ ioctl_rings[name] = value
+
+ self._with_ioctl.set_rings(ioctl_rings)
+
def get_features(self, ifname):
self._with_ioctl.change_ifname(ifname)
return EthtoolFeatures.from_ioctl(self._with_ioctl.get_features())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ethtool/ioctl.py
new/pyroute2-0.7.12/pyroute2/ethtool/ioctl.py
--- old/pyroute2-0.7.10/pyroute2/ethtool/ioctl.py 2023-10-27
20:33:32.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ethtool/ioctl.py 2024-01-29
12:26:05.000000000 +0100
@@ -23,6 +23,9 @@
ETHTOOL_GSTATS = 0x0000001D
ETH_GSTRING_LEN = 32
+ETHTOOL_GRINGPARAM = 0x00000010
+ETHTOOL_SRINGPARAM = 0x00000011
+
ETHTOOL_GRXCSUM = 0x00000014
ETHTOOL_SRXCSUM = 0x00000015
ETHTOOL_GTXCSUM = 0x00000016
@@ -340,6 +343,21 @@
_fields_ = [("off_flags", ctypes.c_uint32), ("features", EthtoolGfeatures)]
+class EthtoolRingParam(DictStruct):
+ _pack_ = 1
+ _fields_ = [
+ ("cmd", ctypes.c_uint32),
+ ("rx_max", ctypes.c_uint32),
+ ("rx_mini_max", ctypes.c_uint32),
+ ("rx_jumbo_max", ctypes.c_uint32),
+ ("tx_max", ctypes.c_uint32),
+ ("rx", ctypes.c_uint32),
+ ("rx_mini", ctypes.c_uint32),
+ ("rx_jumbo", ctypes.c_uint32),
+ ("tx", ctypes.c_uint32),
+ ]
+
+
class IfReqData(ctypes.Union):
dummy = generate_EthtoolGstrings(0)
_fields_ = [
@@ -353,6 +371,7 @@
("sfeatures", ctypes.POINTER(EthtoolSfeatures)),
("glinksettings", ctypes.POINTER(IoctlEthtoolLinkSettings)),
("wolinfo", ctypes.POINTER(EthtoolWolInfo)),
+ ("rings", ctypes.POINTER(EthtoolRingParam)),
]
@@ -627,3 +646,14 @@
self.ifreq.wolinfo = ctypes.pointer(cmd)
self.ioctl()
return cmd
+
+ def get_rings(self):
+ cmd = EthtoolRingParam(cmd=ETHTOOL_GRINGPARAM)
+ self.ifreq.rings = ctypes.pointer(cmd)
+ self.ioctl()
+ return cmd
+
+ def set_rings(self, rings):
+ rings.cmd = ETHTOOL_SRINGPARAM
+ self.ifreq.rings = ctypes.pointer(rings)
+ self.ioctl()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ipdb/linkedset.py
new/pyroute2-0.7.12/pyroute2/ipdb/linkedset.py
--- old/pyroute2-0.7.10/pyroute2/ipdb/linkedset.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/ipdb/linkedset.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,5 +1,6 @@
'''
'''
+
import struct
import threading
from collections import OrderedDict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ipdb/routes.py
new/pyroute2-0.7.12/pyroute2/ipdb/routes.py
--- old/pyroute2-0.7.10/pyroute2/ipdb/routes.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ipdb/routes.py 2024-02-07 10:51:28.000000000
+0100
@@ -598,9 +598,9 @@
if isinstance(labels, (list, tuple, set)):
labels = '/'.join(
map(
- lambda x: str(x['label'])
- if isinstance(x, dict)
- else str(x),
+ lambda x: (
+ str(x['label']) if isinstance(x, dict) else str(x)
+ ),
labels,
)
)
@@ -659,9 +659,11 @@
if field == 'encap' and isinstance(v, (list, tuple, set)):
v = '/'.join(
map(
- lambda x: str(x['label'])
- if isinstance(x, dict)
- else str(x),
+ lambda x: (
+ str(x['label'])
+ if isinstance(x, dict)
+ else str(x)
+ ),
v,
)
)
@@ -727,7 +729,7 @@
ret = Transactional.__getitem__(self, key)
# it doesn't
# (plain dict can be safely discarded)
- if (type(ret) == dict) or not ret:
+ if isinstance(ret, dict) or not ret:
# bake transactionals in place
if key == 'encap':
ret = Encap(parent=self)
@@ -822,7 +824,7 @@
def __setitem__(self, key, value):
if key == 'via' and isinstance(value, dict):
# replace with a new transactional
- if type(value) == Via:
+ if isinstance(value, Via):
with self._direct_state:
return BaseRoute.__setitem__(self, key, value)
# or load the dict
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ipdb/transactional.py
new/pyroute2-0.7.12/pyroute2/ipdb/transactional.py
--- old/pyroute2-0.7.10/pyroute2/ipdb/transactional.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ipdb/transactional.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,5 +1,6 @@
'''
'''
+
import logging
import threading
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/iproute/bsd.py
new/pyroute2-0.7.12/pyroute2/iproute/bsd.py
--- old/pyroute2-0.7.10/pyroute2/iproute/bsd.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/iproute/bsd.py 2024-02-07 10:51:28.000000000
+0100
@@ -43,6 +43,7 @@
`IPRoute.recv(...)` method returns valid netlink RTNL raw binary
payload and `IPRoute.get(...)` returns parsed RTNL messages.
'''
+
import errno
import os
import select
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/iproute/windows.py
new/pyroute2-0.7.12/pyroute2/iproute/windows.py
--- old/pyroute2-0.7.10/pyroute2/iproute/windows.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/iproute/windows.py 2024-02-07
10:51:28.000000000 +0100
@@ -10,6 +10,7 @@
Using pyroute2 on Windows requires installing `win_inet_pton` module,
you can use `pip install win_inet_pton`.
'''
+
import ctypes
import os
from socket import AF_INET
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ipset.py
new/pyroute2-0.7.12/pyroute2/ipset.py
--- old/pyroute2-0.7.10/pyroute2/ipset.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ipset.py 2024-02-07 10:51:28.000000000
+0100
@@ -8,6 +8,7 @@
It supports almost all kernel commands (create, destroy, flush,
rename, swap, test...)
'''
+
import errno
import socket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/cli.py
new/pyroute2-0.7.12/pyroute2/ndb/cli.py
--- old/pyroute2-0.7.10/pyroute2/ndb/cli.py 2023-03-15 11:10:02.000000000
+0100
+++ new/pyroute2-0.7.12/pyroute2/ndb/cli.py 2024-02-07 15:16:34.000000000
+0100
@@ -14,6 +14,10 @@
from pyroute2.cli.auth.auth_radius import RadiusAuthManager
except ImportError:
RadiusAuthManager = None
+try:
+ import readline
+except ImportError:
+ readline = None
def run():
@@ -61,6 +65,8 @@
return 0
else:
console = Console(log=args.l, sources=sources)
+ if readline is not None:
+ console.set_completer(readline)
if args.r:
console.loadrc(args.r)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/main.py
new/pyroute2-0.7.12/pyroute2/ndb/main.py
--- old/pyroute2-0.7.10/pyroute2/ndb/main.py 2023-08-02 18:44:38.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/main.py 2024-02-07 10:51:28.000000000
+0100
@@ -278,6 +278,7 @@
# context manager's __exit__()
'''
+
import atexit
import ctypes
import ctypes.util
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/objects/__init__.py
new/pyroute2-0.7.12/pyroute2/ndb/objects/__init__.py
--- old/pyroute2-0.7.10/pyroute2/ndb/objects/__init__.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/objects/__init__.py 2024-02-09
23:09:58.000000000 +0100
@@ -61,6 +61,7 @@
API
===
'''
+
import collections
import errno
import json
@@ -301,6 +302,9 @@
self.knorm = self.schema.compiled[self.table]['norm_idx']
self.spec = self.schema.compiled[self.table]['all_names']
self.names = self.schema.compiled[self.table]['norm_names']
+ self.lookup_fallbacks = self.schema.compiled[self.table][
+ 'lookup_fallbacks'
+ ]
self.names_count = [self.names.count(x) for x in self.names]
self.last_save = None
if self.event_map is None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/objects/address.py
new/pyroute2-0.7.12/pyroute2/ndb/objects/address.py
--- old/pyroute2-0.7.10/pyroute2/ndb/objects/address.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/objects/address.py 2024-02-07
10:51:28.000000000 +0100
@@ -155,6 +155,7 @@
Please notice that address objects are read-only, you may not change them,
only remove old ones, and create new.
'''
+
from pyroute2.netlink.rtnl.ifaddrmsg import ifaddrmsg
from pyroute2.requests.address import AddressFieldFilter
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/objects/interface.py
new/pyroute2-0.7.12/pyroute2/ndb/objects/interface.py
--- old/pyroute2-0.7.10/pyroute2/ndb/objects/interface.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/objects/interface.py 2024-02-09
23:09:58.000000000 +0100
@@ -655,6 +655,21 @@
return self
@check_auth('obj:modify')
+ def ensure_vlan(self, spec):
+ def do_ensure_vlan(self, mode, spec):
+ try:
+ method = getattr(self.vlan.create(spec), mode)
+ return [method()]
+ except KeyError:
+ return []
+ except Exception as e_s:
+ e_s.trace = traceback.format_stack()
+ return [e_s]
+
+ self._apply_script.append((do_ensure_vlan, {'spec': spec}))
+ return self
+
+ @check_auth('obj:modify')
def del_vlan(self, spec):
def do_del_vlan(self, mode, spec):
try:
@@ -683,6 +698,23 @@
return self
@check_auth('obj:modify')
+ def ensure_neighbour(self, spec=None, **kwarg):
+ spec = spec or kwarg
+
+ def do_ensure_neighbour(self, mode, spec):
+ try:
+ method = getattr(self.neighbours.create(spec), mode)
+ return [method()]
+ except KeyError:
+ return []
+ except Exception as e_s:
+ e_s.trace = traceback.format_stack()
+ return [e_s]
+
+ self._apply_script.append((do_ensure_neighbour, {'spec': spec}))
+ return self
+
+ @check_auth('obj:modify')
def del_neighbour(self, spec=None, **kwarg):
spec = spec or dict(kwarg)
@@ -728,6 +760,23 @@
return self
@check_auth('obj:modify')
+ def ensure_ip(self, spec=None, **kwarg):
+ spec = spec or kwarg
+
+ def do_ensure_ip(self, mode, spec):
+ try:
+ method = getattr(self.ipaddr.create(spec), mode)
+ return [method()]
+ except KeyError:
+ return []
+ except Exception as e_s:
+ e_s.trace = traceback.format_stack()
+ return [e_s]
+
+ self._apply_script.append((do_ensure_ip, {'spec': spec}))
+ return self
+
+ @check_auth('obj:modify')
def del_ip(self, spec=None, **kwarg):
spec = spec or kwarg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/objects/neighbour.py
new/pyroute2-0.7.12/pyroute2/ndb/objects/neighbour.py
--- old/pyroute2-0.7.10/pyroute2/ndb/objects/neighbour.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/objects/neighbour.py 2024-01-29
12:26:05.000000000 +0100
@@ -48,8 +48,9 @@
brmsg_schema = (
ndmsg.sql_schema()
- .unique_index('ifindex', 'NDA_LLADDR', 'NDA_VLAN')
+ .unique_index('ifindex', 'NDA_LLADDR', 'NDA_DST', 'NDA_VLAN')
.constraint('NDA_LLADDR', "NOT NULL DEFAULT ''")
+ .constraint('NDA_DST', "NOT NULL DEFAULT ''")
.constraint('NDA_VLAN', "NOT NULL DEFAULT 0")
.foreign_key(
'interfaces',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/objects/route.py
new/pyroute2-0.7.12/pyroute2/ndb/objects/route.py
--- old/pyroute2-0.7.10/pyroute2/ndb/objects/route.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/objects/route.py 2024-02-07
10:51:28.000000000 +0100
@@ -107,6 +107,7 @@
See here: :ref:`mpls`
'''
+
import json
import struct
import time
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/report.py
new/pyroute2-0.7.12/pyroute2/ndb/report.py
--- old/pyroute2-0.7.10/pyroute2/ndb/report.py 2023-08-02 18:44:38.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/report.py 2024-02-07 10:51:28.000000000
+0100
@@ -31,6 +31,7 @@
2,'eth0','5254.0072.58b2','up'
'''
+
import json
import warnings
from itertools import chain
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/schema.py
new/pyroute2-0.7.12/pyroute2/ndb/schema.py
--- old/pyroute2-0.7.10/pyroute2/ndb/schema.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/schema.py 2024-02-09 23:09:58.000000000
+0100
@@ -116,6 +116,7 @@
all the tables from the DB, and NDB will create them from scratch
on startup.
'''
+
import enum
import json
import random
@@ -460,6 +461,7 @@
'fset': ','.join(f_set),
'knames': ','.join(f_idx),
'fidx': ' AND '.join(f_idx_match),
+ 'lookup_fallbacks': iclass.lookup_fallbacks,
}
@publish
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/source.py
new/pyroute2-0.7.12/pyroute2/ndb/source.py
--- old/pyroute2-0.7.10/pyroute2/ndb/source.py 2023-07-03 16:56:33.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/source.py 2024-02-07 10:51:28.000000000
+0100
@@ -7,10 +7,21 @@
starts with one local RTNL source names `localhost`::
>>> ndb = NDB()
- >>> ndb.sources.details()
- {'kind': u'local', u'nlm_generator': 1, 'target': u'localhost'}
+ >>> ndb.sources.summary().format("json")
+ [
+ {
+ "name": "localhost",
+ "spec": "{'target': 'localhost', 'nlm_generator': 1}",
+ "state": "running"
+ },
+ {
+ "name": "localhost/nsmanager",
+ "spec": "{'target': 'localhost/nsmanager'}",
+ "state": "running"
+ }
+ ]
>>> ndb.sources['localhost']
- [running] <IPRoute {'nlm_generator': 1}>
+ [running] <IPRoute {'target: 'localhost', 'nlm_generator': 1}>
The `localhost` RTNL source starts an additional async cache thread.
The `nlm_generator` option means that instead of collections the
@@ -18,7 +29,7 @@
consume memory regardless of the RTNL objects number::
>>> ndb.sources['localhost'].nl.link('dump')
- <generator object _match at 0x7fa444961e10>
+ <generator object RTNL_API.filter_messages at 0x7f61a99a34a0>
See also: :ref:`iproute`
@@ -68,6 +79,7 @@
See also: :ref:`remote`
'''
+
import errno
import importlib
import queue
@@ -180,6 +192,12 @@
self.ndb.task_manager.db_add_nl_source(self.target, self.kind, spec)
self.load_sql()
+ @classmethod
+ def _count(cls, view):
+ return view.ndb.task_manager.db_fetchone(
+ "SELECT count(*) FROM %s" % view.table
+ )
+
@property
def must_restart(self):
if self.max_errors < 0 or self.errors_counter <= self.max_errors:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/transaction.py
new/pyroute2-0.7.12/pyroute2/ndb/transaction.py
--- old/pyroute2-0.7.10/pyroute2/ndb/transaction.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/ndb/transaction.py 2024-02-07
10:51:28.000000000 +0100
@@ -183,6 +183,7 @@
---
'''
+
import logging
import shlex
import shutil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/ndb/view.py
new/pyroute2-0.7.12/pyroute2/ndb/view.py
--- old/pyroute2-0.7.10/pyroute2/ndb/view.py 2023-08-02 18:44:38.000000000
+0200
+++ new/pyroute2-0.7.12/pyroute2/ndb/view.py 2024-02-09 23:09:58.000000000
+0100
@@ -191,6 +191,17 @@
@cli.change_pointer
@check_auth('obj:modify')
+ def ensure(self, *argspec, **kwspec):
+ try:
+ obj = self.locate(**kwspec)
+ except KeyError:
+ obj = self.create(**kwspec)
+ for key, value in kwspec.items():
+ obj[key] = value
+ return obj
+
+ @cli.change_pointer
+ @check_auth('obj:modify')
def add(self, *argspec, **kwspec):
self.log.warning(
'''\n
@@ -266,11 +277,17 @@
iclass = self.classes[table]
spec = iclass.new_spec(spec)
kspec = self.ndb.schema.compiled[table]['norm_idx']
+ lookup_fallbacks = self.ndb.schema.compiled[table]['lookup_fallbacks']
request = {}
for name in kspec:
name = iclass.nla2name(name)
if name in spec:
request[name] = spec[name]
+ elif name in lookup_fallbacks:
+ fallback = lookup_fallbacks[name]
+ if fallback in spec:
+ request[fallback] = spec[fallback]
+
if not request:
raise KeyError('got an empty key')
return self[request]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/__init__.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/__init__.py 2024-02-09
23:09:58.000000000 +0100
@@ -834,6 +834,7 @@
sql_constraints = {}
sql_extra_fields = ()
sql_extend = ()
+ lookup_fallbacks = {}
nla_flags = 0 # NLA flags
value_map = {}
is_nla = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/devlink/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/devlink/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/devlink/__init__.py 2023-08-02
18:44:38.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/devlink/__init__.py 2024-02-07
10:51:28.000000000 +0100
@@ -2,6 +2,7 @@
devlink module
==============
'''
+
from pyroute2.common import map_namespace
from pyroute2.netlink import genlmsg, nla
from pyroute2.netlink.generic import GenericNetlinkSocket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/diag/ss2.py
new/pyroute2-0.7.12/pyroute2/netlink/diag/ss2.py
--- old/pyroute2-0.7.10/pyroute2/netlink/diag/ss2.py 2023-11-30
08:55:26.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/diag/ss2.py 2024-02-07
10:51:28.000000000 +0100
@@ -528,7 +528,7 @@
vessel[info_k] = {}
# BUG - pyroute2 diag - seems always last info instance from kernel
- if type(tcp_info_raw) != str:
+ if not isinstance(tcp_info_raw, str):
for k, v in tcp_info_raw.items():
if k not in info_refine_tabl:
continue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/event/acpi_event.py
new/pyroute2-0.7.12/pyroute2/netlink/event/acpi_event.py
--- old/pyroute2-0.7.10/pyroute2/netlink/event/acpi_event.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/event/acpi_event.py 2024-02-07
10:51:28.000000000 +0100
@@ -24,6 +24,7 @@
'type': 32768}
'''
+
from pyroute2.common import load_dump
from pyroute2.netlink import genlmsg, nla
from pyroute2.netlink.event import EventSocket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/event/dquot.py
new/pyroute2-0.7.12/pyroute2/netlink/event/dquot.py
--- old/pyroute2-0.7.10/pyroute2/netlink/event/dquot.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/event/dquot.py 2024-02-07
10:51:28.000000000 +0100
@@ -23,6 +23,7 @@
quota warning 8 for uid 0 on 7:0
'''
+
from pyroute2.common import load_dump
from pyroute2.netlink import genlmsg
from pyroute2.netlink.event import EventSocket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/event/thermal.py
new/pyroute2-0.7.12/pyroute2/netlink/event/thermal.py
--- old/pyroute2-0.7.10/pyroute2/netlink/event/thermal.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/event/thermal.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,5 +1,6 @@
'''
'''
+
from enum import Enum
from pyroute2.netlink import genlmsg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/generic/ethtool.py
new/pyroute2-0.7.12/pyroute2/netlink/generic/ethtool.py
--- old/pyroute2-0.7.10/pyroute2/netlink/generic/ethtool.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/generic/ethtool.py 2024-01-29
12:26:05.000000000 +0100
@@ -1,4 +1,10 @@
-from pyroute2.netlink import NLA_F_NESTED, NLM_F_REQUEST, genlmsg, nla
+from pyroute2.netlink import (
+ NLA_F_NESTED,
+ NLM_F_ACK,
+ NLM_F_REQUEST,
+ genlmsg,
+ nla,
+)
from pyroute2.netlink.exceptions import NetlinkError
from pyroute2.netlink.generic import GenericNetlinkSocket
@@ -16,6 +22,12 @@
ETHTOOL_MSG_DEBUG_SET = 8
ETHTOOL_MSG_WOL_GET = 9
ETHTOOL_MSG_WOL_SET = 10
+ETHTOOL_MSG_FEATURES_GET = 11
+ETHTOOL_MSG_FEATURES_SET = 12
+ETHTOOL_MSG_PRIVFLAGS_GET = 13
+ETHTOOL_MSG_PRIVFLAGS_SET = 14
+ETHTOOL_MSG_RINGS_GET = 15
+ETHTOOL_MSG_RINGS_SET = 16
class ethtoolheader(nla):
@@ -149,6 +161,30 @@
ethtoolbitset = ethtoolbitset
+class ethtool_rings_msg(genlmsg):
+ nla_map = (
+ ('ETHTOOL_A_RINGS_UNSPEC', 'none'),
+ ('ETHTOOL_A_RINGS_HEADER', 'ethtoolheader'),
+ ('ETHTOOL_A_RINGS_RX_MAX', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX_MINI_MAX', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX_JUMBO_MAX', 'uint32'),
+ ('ETHTOOL_A_RINGS_TX_MAX', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX_MINI', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX_JUMBO', 'uint32'),
+ ('ETHTOOL_A_RINGS_TX', 'uint32'),
+ ('ETHTOOL_A_RINGS_RX_BUF_LEN', 'uint32'),
+ ('ETHTOOL_A_RINGS_TCP_DATA_SPLIT', 'uint8'),
+ ('ETHTOOL_A_RINGS_CQE_SIZE', 'uint32'),
+ ('ETHTOOL_A_RINGS_TX_PUSH', 'uint8'),
+ ('ETHTOOL_A_RINGS_RX_PUSH', 'uint8'),
+ ('ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN', 'uint32'),
+ ('ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX', 'uint32'),
+ )
+
+ ethtoolheader = ethtoolheader
+
+
class NlEthtool(GenericNetlinkSocket):
def _do_request(self, msg, msg_flags=NLM_F_REQUEST):
return self.nlm_request(msg, msg_type=self.prid, msg_flags=msg_flags)
@@ -231,3 +267,24 @@
self.bind(ETHTOOL_GENL_NAME, ethtool_wol_msg)
return self._do_request(msg)
+
+ def get_rings(self, ifname=None, ifindex=None):
+ msg = ethtool_rings_msg()
+ msg["cmd"] = ETHTOOL_MSG_RINGS_GET
+ msg["version"] = ETHTOOL_GENL_VERSION
+ msg["attrs"].append(
+ ('ETHTOOL_A_RINGS_HEADER', self._get_dev_header(ifname, ifindex))
+ )
+
+ self.bind(ETHTOOL_GENL_NAME, ethtool_rings_msg)
+ return self._do_request(msg)
+
+ def set_rings(self, rings, ifname=None, ifindex=None):
+ rings["cmd"] = ETHTOOL_MSG_RINGS_SET
+ rings["version"] = ETHTOOL_GENL_VERSION
+ rings["attrs"].append(
+ ('ETHTOOL_A_RINGS_HEADER', self._get_dev_header(ifname, ifindex))
+ )
+
+ self.bind(ETHTOOL_GENL_NAME, ethtool_rings_msg)
+ return self._do_request(rings, msg_flags=NLM_F_REQUEST | NLM_F_ACK)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/generic/wireguard.py
new/pyroute2-0.7.12/pyroute2/netlink/generic/wireguard.py
--- old/pyroute2-0.7.10/pyroute2/netlink/generic/wireguard.py 2023-08-02
18:44:38.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/generic/wireguard.py 2024-02-07
10:51:28.000000000 +0100
@@ -63,7 +63,6 @@
}
'''
-
import errno
import logging
import struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/ipq/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/ipq/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/ipq/__init__.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/ipq/__init__.py 2024-02-07
10:51:28.000000000 +0100
@@ -11,6 +11,7 @@
`NF_ACCEPT`, and the packet will be pass the
rule.
'''
+
from pyroute2.netlink import NLM_F_REQUEST, nlmsg
from pyroute2.netlink.nlsocket import Marshal, NetlinkSocket
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/nl80211/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/nl80211/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/nl80211/__init__.py 2023-08-02
18:44:38.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/nl80211/__init__.py 2024-02-07
14:35:28.000000000 +0100
@@ -4,6 +4,7 @@
TODO
'''
+
import datetime
import struct
@@ -217,13 +218,13 @@
'NL80211_SCAN_FLAG_', globals()
)
-NL80211_STA_FLAG_AUTHORIZED = 1
-NL80211_STA_FLAG_SHORT_PREAMBLE = 2
-NL80211_STA_FLAG_WME = 3
-NL80211_STA_FLAG_MFP = 4
-NL80211_STA_FLAG_AUTHENTICATED = 5
-NL80211_STA_FLAG_TDLS_PEER = 6
-NL80211_STA_FLAG_ASSOCIATED = 7
+NL80211_STA_FLAG_AUTHORIZED = 1 << 1
+NL80211_STA_FLAG_SHORT_PREAMBLE = 1 << 2
+NL80211_STA_FLAG_WME = 1 << 3
+NL80211_STA_FLAG_MFP = 1 << 4
+NL80211_STA_FLAG_AUTHENTICATED = 1 << 5
+NL80211_STA_FLAG_TDLS_PEER = 1 << 6
+NL80211_STA_FLAG_ASSOCIATED = 1 << 7
(STA_FLAG_NAMES, STA_FLAG_VALUES) = map_namespace(
'NL80211_STA_FLAG_', globals()
)
@@ -943,9 +944,9 @@
data = data[16:]
if len(data) >= 4:
- rsn_values[
- "group_mgmt_cipher_suite"
- ] = self._get_cipher_list(data)
+ rsn_values["group_mgmt_cipher_suite"] = (
+ self._get_cipher_list(data)
+ )
data = data[4:]
return rsn_values
@@ -1064,9 +1065,9 @@
)
if msg_type == NL80211_BSS_ELEMENTS_VHT_OPERATION:
- self.value[
- "VHT_OPERATION"
- ] = self.binary_vht_operation(offset + 2, length)
+ self.value["VHT_OPERATION"] = (
+ self.binary_vht_operation(offset + 2, length)
+ )
offset += length + 2
@@ -1216,44 +1217,95 @@
self.value["TDLS_PEER"] = False
self.value["ASSOCIATED"] = False
- init = offset = self.offset + 4
- while (offset - init) < (self.length - 4):
- (msg_type, length) = struct.unpack_from(
- 'BB', self.data, offset
- )
- mask, set_ = struct.unpack_from(
- 'II', self.data, offset + 2
- )
+ offset = self.offset + 4
+ mask, set_ = struct.unpack_from('II', self.data, offset)
- if mask & NL80211_STA_FLAG_AUTHORIZED:
- if set_ & NL80211_STA_FLAG_AUTHORIZED:
- self.value["AUTHORIZED"] = True
-
- if mask & NL80211_STA_FLAG_SHORT_PREAMBLE:
- if set_ & NL80211_STA_FLAG_SHORT_PREAMBLE:
- self.value["SHORT_PREAMBLE"] = True
-
- if mask & NL80211_STA_FLAG_WME:
- if set_ & NL80211_STA_FLAG_WME:
- self.value["WME"] = True
-
- if mask & NL80211_STA_FLAG_MFP:
- if set_ & NL80211_STA_FLAG_MFP:
- self.value["MFP"] = True
-
- if mask & NL80211_STA_FLAG_AUTHENTICATED:
- if set_ & NL80211_STA_FLAG_AUTHENTICATED:
- self.value["AUTHENTICATED"] = True
-
- if mask & NL80211_STA_FLAG_TDLS_PEER:
- if set_ & NL80211_STA_FLAG_TDLS_PEER:
- self.value["TDLS_PEER"] = True
-
- if mask & NL80211_STA_FLAG_ASSOCIATED:
- if set_ & NL80211_STA_FLAG_ASSOCIATED:
- self.value["ASSOCIATED"] = True
+ if mask & NL80211_STA_FLAG_AUTHORIZED:
+ if set_ & NL80211_STA_FLAG_AUTHORIZED:
+ self.value["AUTHORIZED"] = True
- offset += length + 2
+ if mask & NL80211_STA_FLAG_SHORT_PREAMBLE:
+ if set_ & NL80211_STA_FLAG_SHORT_PREAMBLE:
+ self.value["SHORT_PREAMBLE"] = True
+
+ if mask & NL80211_STA_FLAG_WME:
+ if set_ & NL80211_STA_FLAG_WME:
+ self.value["WME"] = True
+
+ if mask & NL80211_STA_FLAG_MFP:
+ if set_ & NL80211_STA_FLAG_MFP:
+ self.value["MFP"] = True
+
+ if mask & NL80211_STA_FLAG_AUTHENTICATED:
+ if set_ & NL80211_STA_FLAG_AUTHENTICATED:
+ self.value["AUTHENTICATED"] = True
+
+ if mask & NL80211_STA_FLAG_TDLS_PEER:
+ if set_ & NL80211_STA_FLAG_TDLS_PEER:
+ self.value["TDLS_PEER"] = True
+
+ if mask & NL80211_STA_FLAG_ASSOCIATED:
+ if set_ & NL80211_STA_FLAG_ASSOCIATED:
+ self.value["ASSOCIATED"] = True
+
+ class rate_info(nla):
+ '''
+ Decode the data rate information
+ See nl80211.h: enum nl80211_sta_info,
+ NL80211_STA_INFO_TX_BITRATE
+ NL80211_STA_INFO_RX_BITRATE
+ '''
+
+ prefix = "NL80211_RATE_INFO_"
+ nla_map = (
+ ('__NL80211_RATE_INFO_INVALID', 'hex'),
+ ('NL80211_RATE_INFO_BITRATE', 'uint16'),
+ ('NL80211_RATE_INFO_MCS', 'uint8'),
+ ('NL80211_RATE_INFO_40_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_SHORT_GI', 'flag'),
+ ('NL80211_RATE_INFO_BITRATE32', 'uint32'),
+ ('NL80211_RATE_INFO_VHT_MCS', 'uint8'),
+ ('NL80211_RATE_INFO_VHT_NSS', 'uint8'),
+ ('NL80211_RATE_INFO_80_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_80P80_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_160_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_10_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_5_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_HE_MCS', 'uint8'),
+ ('NL80211_RATE_INFO_HE_NSS', 'uint8'),
+ ('NL80211_RATE_INFO_HE_GI', 'uint8'),
+ ('NL80211_RATE_INFO_HE_DCM', 'uint8'),
+ ('NL80211_RATE_INFO_HE_RU_ALLOC', 'uint8'),
+ ('NL80211_RATE_INFO_320_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_EHT_MCS', 'uint8'),
+ ('NL80211_RATE_INFO_EHT_NSS', 'uint8'),
+ ('NL80211_RATE_INFO_EHT_GI', 'uint8'),
+ ('NL80211_RATE_INFO_EHT_RU_ALLOC', 'uint8'),
+ ('NL80211_RATE_INFO_S1G_MCS', 'uint8'),
+ ('NL80211_RATE_INFO_S1G_NSS', 'uint8'),
+ ('NL80211_RATE_INFO_1_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_2_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_4_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_8_MHZ_WIDTH', 'flag'),
+ ('NL80211_RATE_INFO_16_MHZ_WIDTH', 'flag'),
+ )
+
+ class bss_param(nla):
+ '''
+ Decode the BSS information
+ See nl80211.h: enum nl80211_sta_bss_param,
+ NL80211_STA_INFO_BSS_PARAM
+ '''
+
+ prefix = "NL80211_STA_BSS_PARAM_"
+ nla_map = (
+ ('__NL80211_STA_BSS_PARAM_INVALID', 'hex'),
+ ('NL80211_STA_BSS_PARAM_CTS_PROT', 'flag'),
+ ('NL80211_STA_BSS_PARAM_SHORT_PREAMBLE', 'flag'),
+ ('NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME', 'flag'),
+ ('NL80211_STA_BSS_PARAM_DTIM_PERIOD', 'uint8'),
+ ('NL80211_STA_BSS_PARAM_BEACON_INTERVAL', 'uint16'),
+ )
prefix = 'NL80211_STA_INFO_'
nla_map = (
@@ -1265,14 +1317,14 @@
('NL80211_STA_INFO_PLID', 'uint16'),
('NL80211_STA_INFO_PLINK_STATE', 'uint8'),
('NL80211_STA_INFO_SIGNAL', 'int8'),
- ('NL80211_STA_INFO_TX_BITRATE', 'hex'),
+ ('NL80211_STA_INFO_TX_BITRATE', 'rate_info'),
('NL80211_STA_INFO_RX_PACKETS', 'uint32'),
('NL80211_STA_INFO_TX_PACKETS', 'uint32'),
('NL80211_STA_INFO_TX_RETRIES', 'uint32'),
('NL80211_STA_INFO_TX_FAILED', 'uint32'),
('NL80211_STA_INFO_SIGNAL_AVG', 'int8'),
- ('NL80211_STA_INFO_RX_BITRATE', 'hex'),
- ('NL80211_STA_INFO_BSS_PARAM', 'hex'),
+ ('NL80211_STA_INFO_RX_BITRATE', 'rate_info'),
+ ('NL80211_STA_INFO_BSS_PARAM', 'bss_param'),
('NL80211_STA_INFO_CONNECTED_TIME', 'uint32'),
('NL80211_STA_INFO_STA_FLAGS', 'STAFlags'),
('NL80211_STA_INFO_BEACON_LOSS', 'uint32'),
@@ -1282,12 +1334,12 @@
('NL80211_STA_INFO_NONPEER_PM', 'hex'),
('NL80211_STA_INFO_RX_BYTES64', 'uint64'),
('NL80211_STA_INFO_TX_BYTES64', 'uint64'),
- ('NL80211_STA_INFO_CHAIN_SIGNAL', 'string'),
- ('NL80211_STA_INFO_CHAIN_SIGNAL_AVG', 'string'),
+ ('NL80211_STA_INFO_CHAIN_SIGNAL', '*int8'),
+ ('NL80211_STA_INFO_CHAIN_SIGNAL_AVG', '*int8'),
('NL80211_STA_INFO_EXPECTED_THROUGHPUT', 'uint32'),
('NL80211_STA_INFO_RX_DROP_MISC', 'uint32'),
('NL80211_STA_INFO_BEACON_RX', 'uint64'),
- ('NL80211_STA_INFO_BEACON_SIGNAL_AVG', 'uint8'),
+ ('NL80211_STA_INFO_BEACON_SIGNAL_AVG', 'int8'),
('NL80211_STA_INFO_TID_STATS', 'hex'),
('NL80211_STA_INFO_RX_DURATION', 'uint64'),
('NL80211_STA_INFO_PAD', 'hex'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/proxy.py
new/pyroute2-0.7.12/pyroute2/netlink/proxy.py
--- old/pyroute2-0.7.10/pyroute2/netlink/proxy.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/proxy.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,6 +1,7 @@
'''
Netlink proxy engine
'''
+
import errno
import logging
import struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netlink/rtnl/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/__init__.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/__init__.py 2024-02-07
10:51:28.000000000 +0100
@@ -34,6 +34,7 @@
Module contents:
'''
+
from pyroute2.common import map_namespace
# RTnetlink multicast group flags (for use with bind())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/ifinfmsg/__init__.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/ifinfmsg/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/ifinfmsg/__init__.py
2023-08-02 18:44:38.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/ifinfmsg/__init__.py
2024-02-09 23:09:58.000000000 +0100
@@ -450,6 +450,7 @@
#
sql_constraints = {'index': 'NOT NULL'}
sql_extra_fields = (('state', 'TEXT'),)
+ lookup_fallbacks = {'index': 'ifname'}
fields = (
('family', 'B'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/act_skbedit.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/act_skbedit.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/act_skbedit.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/act_skbedit.py
2024-02-07 10:51:28.000000000 +0100
@@ -42,7 +42,6 @@
- queue: integer
'''
-
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl.tcmsg.common import tc_actions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/cls_u32.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/cls_u32.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/cls_u32.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/cls_u32.py 2024-02-07
10:51:28.000000000 +0100
@@ -54,6 +54,7 @@
# 0xffffff00 = 255.255.255.0 (/24)
# 16 = Destination network field bit offset
'''
+
import struct
from socket import htons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/common.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/common.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/common.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/common.py 2024-02-07
10:51:28.000000000 +0100
@@ -263,7 +263,7 @@
attrs.append(['TCA_FLOW_RSHIFT', rshift_value])
elif op == 'addend':
# Check if an IP was specified
- if type(num) == str and len(num.split('.')) == 4:
+ if isinstance(num, str) and len(num.split('.')) == 4:
if num.startswith('-'):
inverse = True
else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_cake.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_cake.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_cake.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_cake.py
2024-02-07 10:51:28.000000000 +0100
@@ -72,7 +72,6 @@
- wash: False or True (False by default)
'''
-
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl import TC_H_ROOT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_choke.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_choke.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_choke.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_choke.py
2024-02-07 10:51:28.000000000 +0100
@@ -21,6 +21,7 @@
ecn=True)
'''
+
import logging
import struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_clsact.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_clsact.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_clsact.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_clsact.py
2024-02-07 10:51:28.000000000 +0100
@@ -23,6 +23,7 @@
parent="ffff:fff3", classid=1, direct_action=True)
'''
+
from pyroute2.netlink.rtnl import TC_H_CLSACT
parent = TC_H_CLSACT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_drr.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_drr.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_drr.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_drr.py
2024-02-07 10:51:28.000000000 +0100
@@ -10,6 +10,7 @@
ip.tc('add-class', 'drr', interface, '1:20', quantum=1600)
'''
+
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl import TC_H_ROOT
from pyroute2.netlink.rtnl.tcmsg.common import stats2 as c_stats2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_hfsc.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_hfsc.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_hfsc.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_hfsc.py
2024-02-07 10:51:28.000000000 +0100
@@ -19,6 +19,7 @@
* `fsc`: link-share curve
* `usc`: upper-limit curve
'''
+
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl import RTM_DELQDISC, RTM_NEWQDISC, TC_H_ROOT
from pyroute2.netlink.rtnl.tcmsg.common import get_rate, get_time
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_htb.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_htb.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_htb.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_htb.py
2024-02-07 10:51:28.000000000 +0100
@@ -59,6 +59,7 @@
target=0x10020,
keys=["0x5/0xf+0", "0x10/0xff+33"])
'''
+
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl import RTM_DELQDISC, RTM_NEWQDISC, TC_H_ROOT
from pyroute2.netlink.rtnl.tcmsg.common import (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_template.py
new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_template.py
--- old/pyroute2-0.7.10/pyroute2/netlink/rtnl/tcmsg/sched_template.py
2023-03-15 11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/netlink/rtnl/tcmsg/sched_template.py
2024-02-07 10:51:28.000000000 +0100
@@ -5,6 +5,7 @@
All the methods, variables and classes are optional,
but the naming scheme is fixed.
'''
+
from pyroute2.netlink import nla
from pyroute2.netlink.rtnl import TC_H_ROOT
from pyroute2.netlink.rtnl.tcmsg import common
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/netns/__init__.py
new/pyroute2-0.7.12/pyroute2/netns/__init__.py
--- old/pyroute2-0.7.10/pyroute2/netns/__init__.py 2023-10-27
20:33:18.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/netns/__init__.py 2024-02-07
10:51:28.000000000 +0100
@@ -79,6 +79,7 @@
SELinux state with `getenforce` command.
'''
+
import ctypes
import ctypes.util
import errno
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/nftables/main.py
new/pyroute2-0.7.12/pyroute2/nftables/main.py
--- old/pyroute2-0.7.10/pyroute2/nftables/main.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/nftables/main.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,5 +1,6 @@
'''
'''
+
from pyroute2.netlink.nfnetlink import nfgen_msg
from pyroute2.netlink.nfnetlink.nftsocket import (
DATA_TYPE_ID_TO_NAME,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/remote/iproute.py
new/pyroute2-0.7.12/pyroute2/remote/iproute.py
--- old/pyroute2-0.7.10/pyroute2/remote/iproute.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/remote/iproute.py 2024-02-09
15:07:02.000000000 +0100
@@ -130,6 +130,7 @@
raise
self.marshal = MarshalRtnl()
self.target = target
+ self.groups = 67372509
def clone(self):
return type(self)(*self._argv, **self._kwarg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/remote/transport.py
new/pyroute2-0.7.12/pyroute2/remote/transport.py
--- old/pyroute2-0.7.10/pyroute2/remote/transport.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/remote/transport.py 2024-02-07
10:51:28.000000000 +0100
@@ -196,9 +196,9 @@
and ipr._brd_socket is not None
):
inputs.append(ipr._brd_socket.fileno())
- broadcasts[
- ipr._brd_socket.fileno()
- ] = ipr._brd_socket
+ broadcasts[ipr._brd_socket.fileno()] = (
+ ipr._brd_socket
+ )
except Exception as e:
ret = None
error = e
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/requests/main.py
new/pyroute2-0.7.12/pyroute2/requests/main.py
--- old/pyroute2-0.7.10/pyroute2/requests/main.py 2023-07-03
16:56:33.000000000 +0200
+++ new/pyroute2-0.7.12/pyroute2/requests/main.py 2024-02-07
10:51:28.000000000 +0100
@@ -1,6 +1,7 @@
'''
General request and RTNL object data filters.
'''
+
import weakref
from collections import ChainMap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2/requests/neighbour.py
new/pyroute2-0.7.12/pyroute2/requests/neighbour.py
--- old/pyroute2-0.7.10/pyroute2/requests/neighbour.py 2023-03-15
11:10:02.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2/requests/neighbour.py 2024-01-29
12:26:05.000000000 +0100
@@ -28,6 +28,12 @@
def set_state(self, context, value):
return self._state(value)
+ def set_dst(self, context, value):
+ if value:
+ return {'dst': value}
+ else:
+ return {}
+
class NeighbourIPRouteFilter(IPRouteFilter):
def set_dst(self, context, value):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/pyroute2.egg-info/PKG-INFO
new/pyroute2-0.7.12/pyroute2.egg-info/PKG-INFO
--- old/pyroute2-0.7.10/pyroute2.egg-info/PKG-INFO 2023-11-30
09:16:18.000000000 +0100
+++ new/pyroute2-0.7.12/pyroute2.egg-info/PKG-INFO 2024-02-10
16:04:20.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: pyroute2
-Version: 0.7.10
+Version: 0.7.12
Summary: Python Netlink library
Home-page: https://github.com/svinota/pyroute2
Author: Peter Saveliev
@@ -17,12 +17,11 @@
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.6
-Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
Classifier: Development Status :: 4 - Beta
Description-Content-Type: text/x-rst
License-File: LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pyroute2-0.7.10/setup.cfg
new/pyroute2-0.7.12/setup.cfg
--- old/pyroute2-0.7.10/setup.cfg 2023-11-30 09:16:18.271647000 +0100
+++ new/pyroute2-0.7.12/setup.cfg 2024-02-10 16:04:20.603168700 +0100
@@ -20,12 +20,11 @@
Intended Audience :: System Administrators
Intended Audience :: Telecommunications Industry
Programming Language :: Python :: 3
- Programming Language :: Python :: 3.6
- Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
+ Programming Language :: Python :: 3.12
Development Status :: 4 - Beta
[options]