]> git.ipfire.org Git - location/libloc.git/commitdiff
perl: Add function to perform AS number lookups.
authorStefan Schantl <stefan.schantl@ipfire.org>
Wed, 2 Oct 2019 17:10:21 +0000 (19:10 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 3 Oct 2019 18:44:00 +0000 (18:44 +0000)
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/perl/Location.xs

index cdbc7e78387e07e621a33f78758b6cf50dd803d7..b6c4dc52c53796b7b18d91b2ca8c35bb1d43e6b5 100644 (file)
@@ -113,6 +113,29 @@ lookup_country_code(db, address)
        OUTPUT:
                RETVAL
 
+SV*
+lookup_asn(db, address)
+       struct loc_database* db;
+       char* address;
+
+       CODE:
+               RETVAL = &PL_sv_undef;
+
+               // Lookup network
+               struct loc_network *network;
+               int err = loc_database_lookup_from_string(db, address, &network);
+               if (!err) {
+                       // Extract the ASN
+                       unsigned int as_number = loc_network_get_asn(network);
+                       if (as_number > 0) {
+                               RETVAL = newSViv(as_number);
+                       }
+
+                       loc_network_unref(network);
+               }
+       OUTPUT:
+               RETVAL
+
 void
 DESTROY(db)
        struct loc_database* db;