Signed-off-by: Stefan Schantl stefan.schantl@ipfire.org --- src/perl/Location.xs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/src/perl/Location.xs b/src/perl/Location.xs index ab27f0b..63410c4 100644 --- a/src/perl/Location.xs +++ b/src/perl/Location.xs @@ -117,6 +117,32 @@ lookup_country_code(db, address) OUTPUT: RETVAL
+unsigned int +lookup_asn(db, address) + struct loc_database* db; + char* address; + + CODE: + // Lookup network + struct loc_network *network; + int err = loc_database_lookup_from_string(db, address, &network); + if (err) { + croak("Could not look up for %s\n", address); + } + + // Extract the ASN + unsigned int as_number = loc_network_get_asn(network); + loc_network_unref(network); + + if (as_number) { + RETVAL = as_number; + } else { + //RETVAL = NULL; + RETVAL = 0; + } + OUTPUT: + RETVAL + void DESTROY(db) struct loc_database* db;
On 1 Oct 2019, at 07:16, Stefan Schantl stefan.schantl@ipfire.org wrote:
Signed-off-by: Stefan Schantl stefan.schantl@ipfire.org
src/perl/Location.xs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/src/perl/Location.xs b/src/perl/Location.xs index ab27f0b..63410c4 100644 --- a/src/perl/Location.xs +++ b/src/perl/Location.xs @@ -117,6 +117,32 @@ lookup_country_code(db, address) OUTPUT: RETVAL
+unsigned int +lookup_asn(db, address)
- struct loc_database* db;
- char* address;
- CODE:
// Lookup network
struct loc_network *network;
I like to initialise variables like this with NULL.
Not sure if that is only considered style.
int err = loc_database_lookup_from_string(db, address, &network);
if (err) {
croak("Could not look up for %s\n", address);
}
// Extract the ASN
unsigned int as_number = loc_network_get_asn(network);
loc_network_unref(network);
if (as_number) {
RETVAL = as_number;
} else {
//RETVAL = NULL;
RETVAL = 0;
}
So either you just put the return value of loc_network_get_asn into RETVAL, or you use NULL.
I would prefer NULL here, because 0 is a reserved ASN. Will most likely never be used, but we should follow the RFCs here.
-Michael
- OUTPUT:
RETVAL
void DESTROY(db) struct loc_database* db; -- 2.20.1