summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2013-08-30 14:59:01 +0200
committerBjörn Jacke <bj@sernet.de>2013-08-30 15:35:18 +0200
commit0e6aca40413fb3cfd4300f282204a69743be4a65 (patch)
tree5d4f1ceab7ac9d85f261329dd3c35b18390edea3
parentba04400d01c6ad05651672e087527391da7fdaf4 (diff)
downloadsamba-0e6aca40413fb3cfd4300f282204a69743be4a65.tar.gz
samba-0e6aca40413fb3cfd4300f282204a69743be4a65.tar.bz2
samba-0e6aca40413fb3cfd4300f282204a69743be4a65.zip
python/pyglue: filter out loopback and linklocal addresses unless all_interfaces is given
Bug: https://bugzilla.samba.org/show_bug.cgi?id=10030 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Bjoern Jacke <bj@sernet.de>
-rw-r--r--python/pyglue.c45
1 files changed, 43 insertions, 2 deletions
diff --git a/python/pyglue.c b/python/pyglue.c
index 735f03a1e1..02fb005071 100644
--- a/python/pyglue.c
+++ b/python/pyglue.c
@@ -164,18 +164,59 @@ static PyObject *py_interface_ips(PyObject *self, PyObject *args)
/* first count how many are not loopback addresses */
for (ifcount = i = 0; i<count; i++) {
const char *ip = iface_list_n_ip(ifaces, i);
- if (!(!all_interfaces && iface_list_same_net(ip, "127.0.0.1", "255.0.0.0"))) {
+
+ if (all_interfaces) {
ifcount++;
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "127.0.0.1", "255.0.0.0")) {
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "169.254.0.0", "255.255.0.0")) {
+ continue;
}
+
+ if (iface_list_same_net(ip, "::1", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")) {
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "fe80::", "ffff:ffff:ffff:ffff::")) {
+ continue;
+ }
+
+ ifcount++;
}
pylist = PyList_New(ifcount);
for (ifcount = i = 0; i<count; i++) {
const char *ip = iface_list_n_ip(ifaces, i);
- if (!(!all_interfaces && iface_list_same_net(ip, "127.0.0.1", "255.0.0.0"))) {
+
+ if (all_interfaces) {
PyList_SetItem(pylist, ifcount, PyString_FromString(ip));
ifcount++;
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "127.0.0.1", "255.0.0.0")) {
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "169.254.0.0", "255.255.0.0")) {
+ continue;
}
+
+ if (iface_list_same_net(ip, "::1", "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff")) {
+ continue;
+ }
+
+ if (iface_list_same_net(ip, "fe80::", "ffff:ffff:ffff:ffff::")) {
+ continue;
+ }
+
+ PyList_SetItem(pylist, ifcount, PyString_FromString(ip));
+ ifcount++;
}
talloc_free(tmp_ctx);
return pylist;