summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--isys/isys.c16
-rwxr-xr-xisys/isys.py3
-rw-r--r--network.py4
3 files changed, 22 insertions, 1 deletions
diff --git a/isys/isys.c b/isys/isys.c
index 4ecf947d0..b3466ab04 100644
--- a/isys/isys.c
+++ b/isys/isys.c
@@ -131,6 +131,7 @@ static PyObject * doPrefixToNetmask(PyObject *s, PyObject *args);
static PyObject * doGetBlkidData(PyObject * s, PyObject * args);
static PyObject * doGetDeviceByToken(PyObject *s, PyObject *args);
static PyObject * doIsCapsLockEnabled(PyObject * s, PyObject * args);
+static PyObject * doGetLinkStatus(PyObject * s, PyObject * args);
static PyMethodDef isysModuleMethods[] = {
{ "ejectcdrom", (PyCFunction) doEjectCdrom, METH_VARARGS, NULL },
@@ -177,6 +178,7 @@ static PyMethodDef isysModuleMethods[] = {
{ "getblkid", (PyCFunction) doGetBlkidData, METH_VARARGS, NULL },
{ "getdevicebytoken", (PyCFunction) doGetDeviceByToken, METH_VARARGS, NULL },
{ "isCapsLockEnabled", (PyCFunction) doIsCapsLockEnabled, METH_VARARGS, NULL },
+ { "getLinkStatus", (PyCFunction) doGetLinkStatus, METH_VARARGS, NULL },
{ NULL, NULL, 0, NULL }
} ;
@@ -916,4 +918,18 @@ static PyObject * doIsCapsLockEnabled(PyObject * s, PyObject * args) {
return PyBool_FromLong(state.locked_mods & LockMask);
}
+static PyObject * doGetLinkStatus(PyObject * s, PyObject * args) {
+ char *dev = NULL;
+
+ if (!PyArg_ParseTuple(args, "s", &dev)) {
+ return NULL;
+ }
+
+ if (get_link_status(dev) == 1) {
+ return PyBool_FromLong(1);
+ }
+
+ return PyBool_FromLong(0);
+}
+
/* vim:set shiftwidth=4 softtabstop=4: */
diff --git a/isys/isys.py b/isys/isys.py
index 189bd7fd1..57672d8f6 100755
--- a/isys/isys.py
+++ b/isys/isys.py
@@ -1056,6 +1056,9 @@ def isPaeAvailable():
return isPAE
+def getLinkStatus(dev):
+ return _isys.getLinkStatus(dev)
+
auditDaemon = _isys.auditdaemon
handleSegv = _isys.handleSegv
diff --git a/network.py b/network.py
index cdaa9938c..6a9c6d0f6 100644
--- a/network.py
+++ b/network.py
@@ -352,7 +352,9 @@ class Network:
self.netdevices[dev].set(('HWADDR', device['net.address']))
self.netdevices[dev].set(('DESC', device['description']))
- if ksdevice == dev:
+ if ksdevice == 'link' and isys.getLinkStatus(dev):
+ self.ksdevice = dev
+ elif ksdevice == dev:
self.ksdevice = dev
elif ksdevice.find(':') != -1:
if ksdevice.lower() == device['net.address'].lower():