diff options
author | David Sommerseth <davids@redhat.com> | 2010-08-03 10:30:23 +0200 |
---|---|---|
committer | David Sommerseth <davids@redhat.com> | 2010-08-03 10:30:23 +0200 |
commit | b80e65903258d71ac7be0f0775db15aa096a4b54 (patch) | |
tree | b21b10b5a86f96b98312b7d8daf3ab3dd5c0cce2 /python-ethtool/ethtool.c | |
parent | 19be403f729d3064259ca17e57ef24a1cc2ff81b (diff) | |
download | python-ethtool-b80e65903258d71ac7be0f0775db15aa096a4b54.tar.gz python-ethtool-b80e65903258d71ac7be0f0775db15aa096a4b54.tar.xz python-ethtool-b80e65903258d71ac7be0f0775db15aa096a4b54.zip |
Get rid of not needed struct wrapping
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>
Diffstat (limited to 'python-ethtool/ethtool.c')
-rw-r--r-- | python-ethtool/ethtool.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/python-ethtool/ethtool.c b/python-ethtool/ethtool.c index 52e274f..feb6917 100644 --- a/python-ethtool/ethtool.c +++ b/python-ethtool/ethtool.c @@ -31,7 +31,7 @@ #include "etherinfo_obj.h" #include "etherinfo.h" -static struct _nlconnection nlconnection; +static struct nl_handle *nlconnection = NULL; extern PyTypeObject ethtool_etherinfoType; extern PyTypeObject ethtool_etherinfoIPv6Type; @@ -307,7 +307,7 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject *args) { */ objdata->ethinfo->device = strdup(fetch_devs[i]); objdata->ethinfo->index = -1; - objdata->nlc = &nlconnection; /* Global variable */ + objdata->nlc = nlconnection; /* Global variable */ /* Instantiate a new etherinfo object with the device information */ ethinf_py = PyCObject_FromVoidPtr(objdata, NULL); @@ -971,22 +971,22 @@ static struct PyMethodDef PyEthModuleMethods[] = { /** - * Connects to the NETLINK interface and stores the connection handles in the given struct. This - * should be called as part of the main ethtool module init. + * Connects to the NETLINK interface. This should only be + * called once as part of the main ethtool module init. * - * @param nlc Structure which keeps the NETLINK connection handle + * @param nlc Structure which keeps the NETLINK connection handle (struct nl_handle) * * @return Returns 1 on success, otherwise 0. */ -int open_netlink(struct _nlconnection *nlc) +int open_netlink(struct nl_handle **nlc) { - if( !nlc ) { + if( *nlc ) { return 0; } - nlc->nlrt_handle = nl_handle_alloc(); - nl_connect(nlc->nlrt_handle, NETLINK_ROUTE); - return (nlc->nlrt_handle != NULL); + *nlc = nl_handle_alloc(); + nl_connect(*nlc, NETLINK_ROUTE); + return (*nlc != NULL); } @@ -994,25 +994,25 @@ int open_netlink(struct _nlconnection *nlc) * Closes the NETLINK connection. This should be called automatically whenever * the ethtool module is unloaded from Python. * - * @param ptr Points at a struct _nlconnection object with an open NETLINK connection + * @param ptr Pointer to the pointer of struct nl_handle, which contains the NETLINK connection */ -void close_netlink(void *ptr) +void close_netlink(void **ptr) { - struct _nlconnection *nlc; + struct nl_handle *nlc; - if( !ptr ) { + if( !ptr && !*ptr ) { return; } - nlc = (struct _nlconnection *) ptr; - if( !nlc->nlrt_handle ) { + nlc = (struct nl_handle *) *ptr; + if( !nlc ) { return; } /* Close NETLINK connection */ - nl_close(nlc->nlrt_handle); - nl_handle_destroy(nlc->nlrt_handle); - nlc->nlrt_handle = NULL; + nl_close(nlc); + nl_handle_destroy(nlc); + *ptr = NULL; /* reset the pointers pointer address */ } |