Update to latest upstream release - v0.11

Signed-off-by: David Sommerseth <davids@redhat.com>
This commit is contained in:
David Sommerseth 2014-05-08 15:41:44 +02:00
parent eb9a146ca4
commit 5a451966ad
9 changed files with 19 additions and 607 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ python-ethtool-0.5.tar.bz2
/python-ethtool-0.8.tar.bz2 /python-ethtool-0.8.tar.bz2
/python-ethtool-0.9.tar.bz2 /python-ethtool-0.9.tar.bz2
/python-ethtool-0.10.tar.bz2 /python-ethtool-0.10.tar.bz2
/python-ethtool-0.11.tar.bz2

View File

@ -1,55 +0,0 @@
From b15cd540acf49a283d30c28e1424230e51440772 Mon Sep 17 00:00:00 2001
From: David Sommerseth <davids@redhat.com>
Date: Fri, 10 Jan 2014 17:57:05 +0100
Subject: [PATCH 1/5] Added some extra error checks with libnl calls
Signed-off-by: David Sommerseth <davids@redhat.com>
---
python-ethtool/etherinfo.c | 8 ++++++--
python-ethtool/netlink.c | 4 ++--
2 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/python-ethtool/etherinfo.c b/python-ethtool/etherinfo.c
index bac0fe7..c5e6798 100644
--- a/python-ethtool/etherinfo.c
+++ b/python-ethtool/etherinfo.c
@@ -185,7 +185,9 @@ int get_etherinfo_link(PyEtherInfo *self)
return 0;
}
link = rtnl_link_alloc();
- /* FIXME: Error handling? */
+ if( !link ) {
+ return 0;
+ }
rtnl_link_set_ifindex(link, self->index);
nl_cache_foreach_filter(link_cache, OBJ_CAST(link), callback_nl_link, self);
rtnl_link_put(link);
@@ -236,7 +238,9 @@ PyObject * get_etherinfo_address(PyEtherInfo *self, nlQuery query)
return NULL;
}
addr = rtnl_addr_alloc();
- /* FIXME: Error handling? */
+ if( !addr ) {
+ return NULL;
+ }
rtnl_addr_set_ifindex(addr, self->index);
switch( query ) {
diff --git a/python-ethtool/netlink.c b/python-ethtool/netlink.c
index 9ba8338..d311405 100644
--- a/python-ethtool/netlink.c
+++ b/python-ethtool/netlink.c
@@ -57,8 +57,8 @@ int open_netlink(PyEtherInfo *ethi)
/* No earlier connections exists, establish a new one */
nlconnection = nl_socket_alloc();
- nl_connect(nlconnection, NETLINK_ROUTE);
- if( (nlconnection != NULL) ) {
+ if( nlconnection != NULL ) {
+ nl_connect(nlconnection, NETLINK_ROUTE);
/* Force O_CLOEXEC flag on the NETLINK socket */
if( fcntl(nl_socket_get_fd(nlconnection), F_SETFD, FD_CLOEXEC) == -1 ) {
fprintf(stderr,
--
1.8.3.1

View File

@ -1,134 +0,0 @@
From cb29a4277b2aa5b5c211979c1dd3cdb098e1fcb9 Mon Sep 17 00:00:00 2001
From: David Sommerseth <davids@redhat.com>
Date: Tue, 1 Apr 2014 21:25:15 +0200
Subject: [PATCH 1/2] Improve error handling even more
Ensure that a Python exception is set on more places errors can occur.
Signed-off-by: David Sommerseth <davids@redhat.com>
---
python-ethtool/etherinfo.c | 32 ++++++++++++++++++--------------
1 file changed, 18 insertions(+), 14 deletions(-)
diff --git a/python-ethtool/etherinfo.c b/python-ethtool/etherinfo.c
index 24147bc..14b4796 100644
--- a/python-ethtool/etherinfo.c
+++ b/python-ethtool/etherinfo.c
@@ -26,6 +26,7 @@
#include <arpa/inet.h>
#include <netlink/cache.h>
#include <netlink/addr.h>
+#include <netlink/errno.h>
#include <netlink/route/addr.h>
#include <netlink/route/link.h>
#include <netlink/route/rtnl.h>
@@ -111,34 +112,35 @@ static void callback_nl_address(struct nl_object *obj, void *arg)
* @param self A pointer the current PyEtherInfo Python object which contains the device name
* and the place where to save the corresponding index value.
*
- * @return Returns 1 on success, otherwise 0.
+ * @return Returns 1 on success, otherwise 0. On error, a Python error exception is set.
*/
static int _set_device_index(PyEtherInfo *self)
{
struct nl_cache *link_cache;
struct rtnl_link *link;
- /* Reset errno, as we will use it to report errors further on */
- errno = 0;
-
/* Find the interface index we're looking up.
* As we don't expect it to change, we're reusing a "cached"
* interface index if we have that
*/
if( self->index < 0 ) {
- if( rtnl_link_alloc_cache(get_nlc(), AF_UNSPEC, &link_cache) < 0) {
+ if( (errno = rtnl_link_alloc_cache(get_nlc(), AF_UNSPEC, &link_cache)) < 0) {
+ PyErr_SetString(PyExc_OSError, nl_geterror(errno));
return 0;
}
link = rtnl_link_get_by_name(link_cache, PyString_AsString(self->device));
if( !link ) {
errno = ENODEV;
+ PyErr_SetFromErrno(PyExc_IOError);
nl_cache_free(link_cache);
return 0;
}
self->index = rtnl_link_get_ifindex(link);
- if( self->index < 0 ) {
+ if( self->index <= 0 ) {
+ errno = ENODEV;
+ PyErr_SetFromErrno(PyExc_IOError);
rtnl_link_put(link);
nl_cache_free(link_cache);
return 0;
@@ -167,6 +169,7 @@ int get_etherinfo_link(PyEtherInfo *self)
{
struct nl_cache *link_cache;
struct rtnl_link *link;
+ int err = 0;
if( !self ) {
return 0;
@@ -181,18 +184,18 @@ int get_etherinfo_link(PyEtherInfo *self)
}
if( _set_device_index(self) != 1) {
- if( errno != 0 ) {
- PyErr_SetString(PyExc_IOError, strerror(errno));
- }
return 0;
}
/* Extract MAC/hardware address of the interface */
- if( rtnl_link_alloc_cache(get_nlc(), AF_UNSPEC, &link_cache) < 0) {
+ if( (err = rtnl_link_alloc_cache(get_nlc(), AF_UNSPEC, &link_cache)) < 0) {
+ PyErr_SetString(PyExc_OSError, nl_geterror(err));
return 0;
}
link = rtnl_link_alloc();
if( !link ) {
+ errno = ENOMEM;
+ PyErr_SetFromErrno(PyExc_OSError);
return 0;
}
rtnl_link_set_ifindex(link, self->index);
@@ -220,6 +223,7 @@ PyObject * get_etherinfo_address(PyEtherInfo *self, nlQuery query)
struct nl_cache *addr_cache;
struct rtnl_addr *addr;
PyObject *addrlist = NULL;
+ int err = 0;
if( !self ) {
return NULL;
@@ -234,21 +238,21 @@ PyObject * get_etherinfo_address(PyEtherInfo *self, nlQuery query)
}
if( _set_device_index(self) != 1) {
- if( errno != 0 ) {
- return PyErr_SetFromErrno(PyExc_IOError);
- }
return NULL;
}
/* Query the for requested info via NETLINK */
/* Extract IP address information */
- if( rtnl_addr_alloc_cache(get_nlc(), &addr_cache) < 0) {
+ if( (err = rtnl_addr_alloc_cache(get_nlc(), &addr_cache)) < 0) {
+ PyErr_SetString(PyExc_OSError, nl_geterror(err));
nl_cache_free(addr_cache);
return NULL;
}
addr = rtnl_addr_alloc();
if( !addr ) {
+ errno = ENOMEM;
+ PyErr_SetFromErrno(PyExc_OSError);
return NULL;
}
rtnl_addr_set_ifindex(addr, self->index);
--
1.8.3.1

View File

@ -1,29 +0,0 @@
From c49e4c1a9d36c28acc886793490794e86a955a04 Mon Sep 17 00:00:00 2001
From: David Sommerseth <davids@redhat.com>
Date: Tue, 1 Apr 2014 21:26:40 +0200
Subject: [PATCH 2/2] Don't try to increase reference counter on non-existing
hwaddress
Signed-off-by: David Sommerseth <davids@redhat.com>
---
python-ethtool/etherinfo_obj.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/python-ethtool/etherinfo_obj.c b/python-ethtool/etherinfo_obj.c
index f620157..cd7f2e3 100644
--- a/python-ethtool/etherinfo_obj.c
+++ b/python-ethtool/etherinfo_obj.c
@@ -104,7 +104,9 @@ PyObject *_ethtool_etherinfo_getter(PyEtherInfo *self, PyObject *attr_o)
}
} else if( strcmp(attr, "mac_address") == 0 ) {
get_etherinfo_link(self);
- Py_INCREF(self->hwaddress);
+ if( self->hwaddress ) {
+ Py_INCREF(self->hwaddress);
+ }
return self->hwaddress;
} else if( strcmp(attr, "ipv4_address") == 0 ) {
addrlist = get_etherinfo_address(self, NLQRY_ADDR4);
--
1.8.3.1

View File

@ -1,69 +0,0 @@
From a6f163fafaccd9bea4b2807961ef8ed8776a629a Mon Sep 17 00:00:00 2001
From: "Antoni S. Puimedon" <asegurap@redhat.com>
Date: Mon, 11 Nov 2013 15:21:26 +0000
Subject: [PATCH 2/5] fix get_module errno setting.
The current code is only setting the errno string but doesn't set
the first argument to the IOError exception, i.e., errno.
This patch builds a tuple (errno, strerror(errno)) so that the
Exception has the errno properly set.
Signed-off-by: Antoni S. Puimedon <asegurap@redhat.com>
Signed-off-by: David Sommerseth <davids@redhat.com>
---
python-ethtool/ethtool.c | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/python-ethtool/ethtool.c b/python-ethtool/ethtool.c
index 65abb21..453f08b 100644
--- a/python-ethtool/ethtool.c
+++ b/python-ethtool/ethtool.c
@@ -450,6 +450,7 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
if (err < 0) { /* failed? */
int eno = errno;
+ PyObject *err_obj;
FILE *file;
int found = 0;
char driver[101], dev[101];
@@ -458,8 +459,11 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
/* Before bailing, maybe it is a PCMCIA/PC Card? */
file = fopen("/var/lib/pcmcia/stab", "r");
if (file == NULL) {
- sprintf(buf, "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ err_obj = Py_BuildValue("(is)", eno, strerror(eno));
+ if (err_obj != NULL) {
+ PyErr_SetObject(PyExc_IOError, err_obj);
+ Py_DECREF(err_obj);
+ }
return NULL;
}
@@ -480,8 +484,11 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
}
fclose(file);
if (!found) {
- sprintf(buf, "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ err_obj = Py_BuildValue("(is)", eno, strerror(eno));
+ if (err_obj != NULL) {
+ PyErr_SetObject(PyExc_IOError, err_obj);
+ Py_DECREF(err_obj);
+ }
return NULL;
} else
return PyString_FromString(driver);
@@ -514,8 +521,7 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
--
1.8.3.1

View File

@ -1,243 +0,0 @@
From 505bca305c4c0e2d3a29e24b27bf03c358db11cf Mon Sep 17 00:00:00 2001
From: "Antoni S. Puimedon" <asegurap@redhat.com>
Date: Fri, 17 Jan 2014 23:27:42 +0100
Subject: [PATCH 4/5] exceptions: Simplify errno derived exception handling
Errnos are missing from some exceptions and in others the code could
be simplified by just using the convenience method PyErr_FromErrno.
Signed-off-by: Antoni S. Puimedon <asegurap@redhat.com>
Acked-by: David Sommerseth <davids@redhat.com>
Message-Id: 1389997662-8460-1-git-send-email-asegurap@redhat.com
Signed-off-by: David Sommerseth <davids@redhat.com>
---
python-ethtool/ethtool.c | 86 +++++++++++++-----------------------------------
1 file changed, 23 insertions(+), 63 deletions(-)
diff --git a/python-ethtool/ethtool.c b/python-ethtool/ethtool.c
index 453f08b..0f9cdbb 100644
--- a/python-ethtool/ethtool.c
+++ b/python-ethtool/ethtool.c
@@ -55,10 +55,8 @@ static PyObject *get_active_devices(PyObject *self __unused, PyObject *args __un
PyObject *list;
struct ifaddrs *ifaddr, *ifa;
- if (getifaddrs(&ifaddr) == -1) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
- }
+ if (getifaddrs(&ifaddr) == -1)
+ return PyErr_SetFromErrno(PyExc_OSError);
list = PyList_New(0);
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
@@ -83,15 +81,13 @@ static PyObject *get_devices(PyObject *self __unused, PyObject *args __unused)
FILE *fd = fopen(_PATH_PROCNET_DEV, "r");
if (fd == NULL) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* skip over first two lines */
ret = fgets(buffer, 256, fd);
ret = fgets(buffer, 256, fd);
if( !ret ) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
while (!feof(fd)) {
@@ -134,18 +130,13 @@ static PyObject *get_hwaddress(PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
err = ioctl(fd, SIOCGIFHWADDR, &ifr);
if (err < 0) {
- char buf[2048];
- int eno = errno;
-
- snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
return NULL;
}
@@ -181,17 +172,13 @@ static PyObject *get_ipaddress(PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
err = ioctl(fd, SIOCGIFADDR, &ifr);
if (err < 0) {
- char buf[2048];
- int eno = errno;
- snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
return NULL;
}
@@ -276,7 +263,7 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject *args) {
dev = PyObject_New(PyEtherInfo, &PyEtherInfo_Type);
if( !dev ) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
+ PyErr_SetFromErrno(PyExc_OSError);
free(fetch_devs);
return NULL;
}
@@ -311,15 +298,11 @@ static PyObject *get_flags (PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
err = ioctl(fd, SIOCGIFFLAGS, &ifr);
if(err < 0) {
- char buf[2048];
- int eno = errno;
- snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
return NULL;
}
@@ -348,17 +331,13 @@ static PyObject *get_netmask (PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
err = ioctl(fd, SIOCGIFNETMASK, &ifr);
if (err < 0) {
- char buf[2048];
- int eno = errno;
- snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
return NULL;
}
@@ -392,17 +371,13 @@ static PyObject *get_broadcast(PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
err = ioctl(fd, SIOCGIFBRDADDR, &ifr);
if (err < 0) {
- char buf[2048];
- int eno = errno;
- snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
return NULL;
}
@@ -441,16 +416,14 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
- return NULL;
+ return PyErr_SetFromErrno(PyExc_OSError);
}
/* Get current settings. */
err = ioctl(fd, SIOCETHTOOL, &ifr);
if (err < 0) { /* failed? */
- int eno = errno;
- PyObject *err_obj;
+ PyErr_SetFromErrno(PyExc_IOError);
FILE *file;
int found = 0;
char driver[101], dev[101];
@@ -459,11 +432,6 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
/* Before bailing, maybe it is a PCMCIA/PC Card? */
file = fopen("/var/lib/pcmcia/stab", "r");
if (file == NULL) {
- err_obj = Py_BuildValue("(is)", eno, strerror(eno));
- if (err_obj != NULL) {
- PyErr_SetObject(PyExc_IOError, err_obj);
- Py_DECREF(err_obj);
- }
return NULL;
}
@@ -484,14 +452,11 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
}
fclose(file);
if (!found) {
- err_obj = Py_BuildValue("(is)", eno, strerror(eno));
- if (err_obj != NULL) {
- PyErr_SetObject(PyExc_IOError, err_obj);
- Py_DECREF(err_obj);
- }
return NULL;
- } else
+ } else {
+ PyErr_Clear();
return PyString_FromString(driver);
+ }
}
close(fd);
@@ -528,11 +493,8 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
err = ioctl(fd, SIOCETHTOOL, &ifr);
if (err < 0) { /* failed? */
- int eno = errno;
+ PyErr_SetFromErrno(PyExc_IOError);
close(fd);
-
- sprintf(buf, "[Errno %d] %s", eno, strerror(eno));
- PyErr_SetString(PyExc_IOError, buf);
return NULL;
}
@@ -556,16 +518,14 @@ static int send_command(int cmd, const char *devname, void *value)
/* Open control socket. */
fd = socket(AF_INET, SOCK_DGRAM, 0), err;
if (fd < 0) {
- PyErr_SetString(PyExc_OSError, strerror(errno));
+ PyErr_SetFromErrno(PyExc_OSError);
return -1;
}
/* Get current settings. */
err = ioctl(fd, SIOCETHTOOL, &ifr);
if (err < 0) {
- char buf[2048];
- sprintf(buf, "[Errno %d] %s", errno, strerror(errno));
- PyErr_SetString(PyExc_IOError, buf);
+ PyErr_SetFromErrno(PyExc_IOError);
}
close(fd);
--
1.8.3.1

View File

@ -1,61 +0,0 @@
From 3463fc5556f731aa2e29981bdb27cb50364770dd Mon Sep 17 00:00:00 2001
From: David Sommerseth <davids@redhat.com>
Date: Fri, 7 Feb 2014 13:53:36 +0100
Subject: [PATCH 5/5] Report invalid/non-existing devices as ENODEV
Without this patch py-ethtool will just report with a very
generic system error exception if trying to query a non-existing
network interface. This patch will change this to report the
error using ENODEV instead.
Signed-off-by: David Sommerseth <davids@redhat.com>
Reviewed-by: Antoni S. Puimedon <asegurap@redhat.com>
---
python-ethtool/etherinfo.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/python-ethtool/etherinfo.c b/python-ethtool/etherinfo.c
index c5e6798..24147bc 100644
--- a/python-ethtool/etherinfo.c
+++ b/python-ethtool/etherinfo.c
@@ -118,6 +118,9 @@ static int _set_device_index(PyEtherInfo *self)
struct nl_cache *link_cache;
struct rtnl_link *link;
+ /* Reset errno, as we will use it to report errors further on */
+ errno = 0;
+
/* Find the interface index we're looking up.
* As we don't expect it to change, we're reusing a "cached"
* interface index if we have that
@@ -129,6 +132,7 @@ static int _set_device_index(PyEtherInfo *self)
link = rtnl_link_get_by_name(link_cache, PyString_AsString(self->device));
if( !link ) {
+ errno = ENODEV;
nl_cache_free(link_cache);
return 0;
}
@@ -177,6 +181,9 @@ int get_etherinfo_link(PyEtherInfo *self)
}
if( _set_device_index(self) != 1) {
+ if( errno != 0 ) {
+ PyErr_SetString(PyExc_IOError, strerror(errno));
+ }
return 0;
}
@@ -227,6 +234,9 @@ PyObject * get_etherinfo_address(PyEtherInfo *self, nlQuery query)
}
if( _set_device_index(self) != 1) {
+ if( errno != 0 ) {
+ return PyErr_SetFromErrno(PyExc_IOError);
+ }
return NULL;
}
--
1.8.3.1

View File

@ -3,8 +3,8 @@
Summary: Ethernet settings python bindings Summary: Ethernet settings python bindings
Name: python-ethtool Name: python-ethtool
Version: 0.10 Version: 0.11
Release: 3%{?dist} Release: 1%{?dist}
URL: https://fedorahosted.org/python-ethtool/ URL: https://fedorahosted.org/python-ethtool/
Source: https://fedorahosted.org/releases/p/y/python-ethtool/python-ethtool-%{version}.tar.bz2 Source: https://fedorahosted.org/releases/p/y/python-ethtool/python-ethtool-%{version}.tar.bz2
License: GPLv2 License: GPLv2
@ -12,13 +12,6 @@ Group: System Environment/Libraries
BuildRequires: python-devel libnl3-devel asciidoc BuildRequires: python-devel libnl3-devel asciidoc
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Patch1: 0001-Added-some-extra-error-checks-with-libnl-calls.patch
Patch2: 0002-fix-get_module-errno-setting.patch
Patch4: 0004-exceptions-Simplify-errno-derived-exception-handling.patch
Patch5: 0005-Report-invalid-non-existing-devices-as-ENODEV.patch
Patch6: 0001-Improve-error-handling-even-more.patch
Patch7: 0002-Don-t-try-to-increase-reference-counter-on-non-exist.patch
%description %description
Python bindings for the ethtool kernel interface, that allows querying and Python bindings for the ethtool kernel interface, that allows querying and
changing of Ethernet card settings, such as speed, port, auto-negotiation, and changing of Ethernet card settings, such as speed, port, auto-negotiation, and
@ -26,12 +19,6 @@ PCI locations.
%prep %prep
%setup -q %setup -q
%patch1 -p1
%patch2 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%build %build
%{__python} setup.py build %{__python} setup.py build
@ -62,6 +49,21 @@ rm -rf %{buildroot}
%endif %endif
%changelog %changelog
* Thu May 8 2014 David Sommerseth <davids@redhat.com> - 0.11-1
- Updated to the lastest python-ethtool-0.11 release, which
incorporates all these additional patches and improves
libnl3 connection error checking.
* Mon Apr 7 2014 David Sommerseth <davids@redhat.com> - 0.10-6
- Removed the never close netlink patch
- Added a patch which will ensure it will open a valid socket in open_netlink()
* Wed Apr 2 2014 David Sommerseth <davids@redhat.com> - 0.10-5
- Update patch 8 - to also never close the netlink socket
* Wed Apr 2 2014 David Sommerseth <davids@redhat.com> - 0.10-4
- Added patch 8 - to see of FD_CLOEXEC impacts vdsm
* Tue Apr 1 2014 David Sommerseth <davids@redhat.com> - 0.10-3 * Tue Apr 1 2014 David Sommerseth <davids@redhat.com> - 0.10-3
- Added patch 6 and 7, to improve error handling. Will be removed when released upstream - Added patch 6 and 7, to improve error handling. Will be removed when released upstream

View File

@ -1 +1 @@
c021d7d4fe0a5a0d105f259c8f764739 python-ethtool-0.10.tar.bz2 b505501d928debf69664b72fafa9d0c3 python-ethtool-0.11.tar.bz2