diff options
author | Andrew Tridgell <tridge@samba.org> | 2010-02-25 16:29:47 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2010-02-26 13:59:16 +1100 |
commit | af70728b51d88717c571ebf3d5886006e34db57f (patch) | |
tree | d4da8fc2e6a66fae299c556a755e7216413fd47b /source4/scripting | |
parent | 781ad038c96195031053291414a12225eb818fd9 (diff) | |
download | samba-af70728b51d88717c571ebf3d5886006e34db57f.tar.gz samba-af70728b51d88717c571ebf3d5886006e34db57f.tar.bz2 samba-af70728b51d88717c571ebf3d5886006e34db57f.zip |
pyglue: don't return 127.0.0.0/8 IPs in interface_ips()
We don't generally want loopback addresses in the python code
Diffstat (limited to 'source4/scripting')
-rw-r--r-- | source4/scripting/python/pyglue.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/source4/scripting/python/pyglue.c b/source4/scripting/python/pyglue.c index f072386791..3ae0a0965c 100644 --- a/source4/scripting/python/pyglue.c +++ b/source4/scripting/python/pyglue.c @@ -491,6 +491,8 @@ static PyObject *py_dsdb_load_partition_usn(PyObject *self, PyObject *args) /* return the list of interface IPs we have configured takes an loadparm context, returns a list of IPs in string form + + Does not return addresses on 127.0.0.0/8 */ static PyObject *py_interface_ips(PyObject *self, PyObject *args) { @@ -500,7 +502,7 @@ static PyObject *py_interface_ips(PyObject *self, PyObject *args) PyObject *py_lp_ctx; struct loadparm_context *lp_ctx; struct interface *ifaces; - int i; + int i, ifcount; if (!PyArg_ParseTuple(args, "O", &py_lp_ctx)) return NULL; @@ -517,10 +519,21 @@ static PyObject *py_interface_ips(PyObject *self, PyObject *args) count = iface_count(ifaces); - pylist = PyList_New(count); - for (i = 0; i<count; i++) { - PyList_SetItem(pylist, i, - PyString_FromString(iface_n_ip(ifaces, i))); + /* first count how many are not loopback addresses */ + for (ifcount = i = 0; i<count; i++) { + const char *ip = iface_n_ip(ifaces, i); + if (!iface_same_net(ip, "127.0.0.1", "255.0.0.0")) { + ifcount++; + } + } + + pylist = PyList_New(ifcount); + for (ifcount = i = 0; i<count; i++) { + const char *ip = iface_n_ip(ifaces, i); + if (!iface_same_net(ip, "127.0.0.1", "255.0.0.0")) { + PyList_SetItem(pylist, ifcount, PyString_FromString(ip)); + ifcount++; + } } talloc_free(tmp_ctx); return pylist; |