| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
get_devices() includes this loop:
char buffer[256];
...snip...
char *end = buffer;
...snip...
while (end && *end != ':')
end++;
The condition "end" within the while guard will always be true, given that
buffer is on the stack and thus will never be near the zero value. It
should be *end instead, to check for the NUL terminator byte: this code
will likely crash if the string does not contain a colon character.
This appears to have been present in the initial commit of the code
(8d6ad996f5d60d569532cdba4febb19c69bdf488)
Found by Braňo Náter using the "cppcheck" static analyzer.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
get_module() includes this scanf call:
if (sscanf(buf, "%*d\t%*s\t%100s\t%*d\t%100s\n", driver, dev) > 0) {
i.e. "%100s" for each of driver and dev. i.e. a maximum field width of
100 for each.
However, this field width does not include the NUL terminator.
Increase the size of driver and dev from 100 to 101 to allow for the NUL byte.
This appears to have been present in the initial commit of the code
(8d6ad996f5d60d569532cdba4febb19c69bdf488)
Found by Braňo Náter using the "cppcheck" static analyzer.
|
| |
|
|
|
|
|
|
|
| |
Do not open a NETLINK connection when loading the module, but rahter
open it when needed. In a case where multiple users needs the
connection, it will be shared and only closed when the last active
user is done.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
|
|
|
|
|
|
|
| |
Several places python-ethtool leaked memory, mostly due to missing
Py_DECREF() calls on objects being put in to python lists (via
PyList_Append() calls).
This revealed an issue in addition where the IPv6 addresses pointers
in some cases could freed more times. This is fixed as well.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
|
|
| |
This is useful to identify the python-ethtool version at runtime.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
|
|
|
|
|
|
| |
The struct nl_handle was wrapped inside struct _nlconnection. This
is really not needed if open_netlink() and close_netlink() functions
uses "pointer's pointer" (struct nl_handle **) instead. Removes also
the need to declare a static struct _nlconnection, as the
global nlconnection variable can now be a pointer as well.
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
| |
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As the IPv6 protocol allows a single device to have more than one IPv6 address,
the previous implementation did not provide all IPv6 information. It would reject
all except the last parsed IPv6 address.
NOTE: This implementation will break the previous API.
This change removes the ethtool.etherinfo.ipv6_address and
ethtool.etherinfo.ipv6_netmask members. A new member is added,
ethtool.etherinfo.ipv6_addresses (in plural). This contains a tupple list
containing of ethtool.etherinfo_ipv6addr objects, one object for each configured
IPv6 address on the device. These objects have the following members available:
.address - The IPv6 address
.netmask - The IPv6 netmask (in bit notation)
.scope - A string with the IPv6 address scope
Example code:
import ethtool
devs = ethtool.get_interfaces_info('eth0')
for ip6 in devs[0].ipv6_addresses:
print "[%s] %s/%i" % (ip6.scope, ip6.address, ip6.netmask)
Signed-off-by: David Sommerseth <davids@redhat.com>
|
| |
|
|
|
| |
This is to make it a bit clearer that the result type of this function always will be
a list of ethtool.etherinfo objects.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
| |
It can handle a string with a device name or a list or a tuple list
with more devices.
dev = ethtool.get_interface_info(['lo','eth0','pan0'])
dev = ethtool.get_interface_info(('eth0','virbr0'))
dev = ethtool.get_interface_info('lo')
dev = ethtool.get_interface_info()
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It will return a list of Python etherinfo objects. These objects
have the following properties:
.device - Device name
.mac_address - Hardware address
.ipv4_address
.ipv4_netmask
.ipv4_broadcast
.ipv6_address
.ipv6_netmask
In addition, it will produce a human readable output if these objects
are treated as strings.
It will not be possible to modify any of the properties in these objects.
|
| | |
|
| |
|
|
| |
for all devices
|
| |
|
|
| |
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
|
| |
Signed-off-by: Ruben Kerkhof <ruben@rubenkerkhof.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
|
|
| |
Part of the fedora review process.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
|
|
|
| |
python-ethtool/ethtool.c: In function 'get_tso':
python-ethtool/ethtool.c:480: warning: 'value' may be used uninitialized in this function
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
| |
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
| |
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
And support in pethtool (aka ethtool-cmd.py) for setting all the coalesce
parameters, providing, as usual, an interface that mimics the one provided by
the ethtool command.
This cset also introduces struct_desc_from_dict, that will help with other dict
based python bindings, not just in python-ethtool. Please let me know if I'm
reinventing the wheel, i.e. if there are other Python dict to C struct
facilities out there (I bet there is, but heck, this one was easy enough to
implement and doesn't requires external support to get this done 8)).
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
| |
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
| |
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
| |
|
|
|
|
| |
Will be used for ETHTOOL_GCOALESCE and others that retrieve a struct.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|
|
|
From code in fedora's rhpl. Code indented, offload methods (tso, etc) added.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
|