]> git.ipfire.org Git - people/ms/libloc.git/blobdiff - src/python/database.c
location-query: Allow filtering networks by family
[people/ms/libloc.git] / src / python / database.c
index 9bd938ca74823e2f488785d47214917d4869a425..2f0a3b0fb1b3c5cba75e68018d405cb96760f4de 100644 (file)
@@ -231,12 +231,13 @@ static PyObject* Database_search_as(DatabaseObject* self, PyObject* args) {
 }
 
 static PyObject* Database_search_networks(DatabaseObject* self, PyObject* args, PyObject* kwargs) {
-       char* kwlist[] = { "country_code", "asn", "flags", NULL };
+       char* kwlist[] = { "country_code", "asn", "flags", "family", NULL };
        const char* country_code = NULL;
        unsigned int asn = 0;
        int flags = 0;
+       int family = 0;
 
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|sii", kwlist, &country_code, &asn, &flags))
+       if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|siii", kwlist, &country_code, &asn, &flags, &family))
                return NULL;
 
        struct loc_database_enumerator* enumerator;
@@ -276,6 +277,16 @@ static PyObject* Database_search_networks(DatabaseObject* self, PyObject* args,
                }
        }
 
+       // Set the family we are searching for
+       if (family) {
+               r = loc_database_enumerator_set_family(enumerator, family);
+
+               if (r) {
+                       PyErr_SetFromErrno(PyExc_SystemError);
+                       return NULL;
+               }
+       }
+
        PyObject* obj = new_database_enumerator(&DatabaseEnumeratorType, enumerator);
        loc_database_enumerator_unref(enumerator);