summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2010-02-25 16:29:47 +1100
committerAndrew Tridgell <tridge@samba.org>2010-02-26 13:59:16 +1100
commitaf70728b51d88717c571ebf3d5886006e34db57f (patch)
treed4da8fc2e6a66fae299c556a755e7216413fd47b
parent781ad038c96195031053291414a12225eb818fd9 (diff)
downloadsamba-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
-rw-r--r--source4/scripting/python/pyglue.c23
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;