Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Geo-IP2Location for 
openSUSE:Factory checked in at 2023-01-24 19:42:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Geo-IP2Location (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Geo-IP2Location.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Geo-IP2Location"

Tue Jan 24 19:42:50 2023 rev:3 rq:1060471 version:8.70

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/perl-Geo-IP2Location/perl-Geo-IP2Location.changes    
    2022-06-23 10:24:44.651770880 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-Geo-IP2Location.new.32243/perl-Geo-IP2Location.changes
     2023-01-24 20:28:23.039122659 +0100
@@ -1,0 +2,9 @@
+Wed Jan 18 16:05:24 UTC 2023 - Elisei Roca <[email protected]>
+
+- Update to 8.70
+    Twenty-third release under the Geo::IP2Location
+    Added new function "get_district" 
+    Added new function "get_asn" 
+    Added new function "get_as" 
+
+-------------------------------------------------------------------

Old:
----
  Geo-IP2Location-8.60.tar.gz

New:
----
  Geo-IP2Location-8.70.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Geo-IP2Location.spec ++++++
--- /var/tmp/diff_new_pack.m07ohX/_old  2023-01-24 20:28:23.463124859 +0100
+++ /var/tmp/diff_new_pack.m07ohX/_new  2023-01-24 20:28:23.471124900 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Geo-IP2Location
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,11 +18,11 @@
 
 %define cpan_name Geo-IP2Location
 Name:           perl-Geo-IP2Location
-Version:        8.60
+Version:        8.70
 Release:        0
 #Upstream: CHECK(Artistic-1.0 or GPL-1.0-or-later)
-Summary:        Lookup of country, region, city, latitude, longitude, ZIP 
code, time zon[cut]
 License:        MIT
+Summary:        Lookup of country, region, city, latitude, longitude, ZIP 
code, time zon[cut]
 URL:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/L/LO/LOCATION/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml
@@ -35,9 +35,9 @@
 This Perl module provides fast lookup of country, region, city, latitude,
 longitude, ZIP code, time zone, ISP, domain name, connection type, IDD
 code, area code, weather station code and station, MCC, MNC, mobile carrier
-brand, elevation, usage type, IP address type and IAB advertising category
-from IP address using IP2Location database. This module uses a file based
-BIN database available at at
+brand, elevation, usage type, IP address type, IAB advertising category,
+district, AS number and AS name from IP address using IP2Location database.
+This module uses a file based BIN database available at at
 https://www.ip2location.com/database/ip2location upon subscription. You can
 visit at https://www.ip2location.com/development-libraries to download BIN
 sample files. This database consists of IP address as keys and other

++++++ Geo-IP2Location-8.60.tar.gz -> Geo-IP2Location-8.70.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Geo-IP2Location-8.60/Changes 
new/Geo-IP2Location-8.70/Changes
--- old/Geo-IP2Location-8.60/Changes    2022-06-21 02:00:00.000000000 +0200
+++ new/Geo-IP2Location-8.70/Changes    2023-01-03 01:00:00.000000000 +0100
@@ -1,5 +1,11 @@
 Revision history for Perl extension Geo::IP2Location.
 
+8.70  Tue January 3 16:00:00 2023
+      Twenty-third release under the Geo::IP2Location
+      Added new function "get_district"
+      Added new function "get_asn"
+      Added new function "get_as"
+
 8.60  Tue June 21 16:00:00 2022
       Twenty-second release under the Geo::IP2Location
       Reduced file I/O to improve query performance
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Geo-IP2Location-8.60/LICENSE 
new/Geo-IP2Location-8.70/LICENSE
--- old/Geo-IP2Location-8.60/LICENSE    2022-06-21 02:00:00.000000000 +0200
+++ new/Geo-IP2Location-8.70/LICENSE    2023-01-03 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2022 IP2Location.com
+Copyright (c) 2023 IP2Location.com
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Geo-IP2Location-8.60/META.yml 
new/Geo-IP2Location-8.70/META.yml
--- old/Geo-IP2Location-8.60/META.yml   2022-06-21 02:00:00.000000000 +0200
+++ new/Geo-IP2Location-8.70/META.yml   2023-01-03 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 # http://module-build.sourceforge.net/META-spec.html
 name:         Geo-IP2Location
-version:      8.60
+version:      8.70
 version_from: lib/Geo/IP2Location.pm
 installdirs:  site
 requires:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Geo-IP2Location-8.60/README 
new/Geo-IP2Location-8.70/README
--- old/Geo-IP2Location-8.60/README     2022-06-21 02:00:00.000000000 +0200
+++ new/Geo-IP2Location-8.70/README     2023-01-03 01:00:00.000000000 +0100
@@ -1,7 +1,7 @@
 Geo::IP2Location
 ================
 
-This Perl module provides fast lookup of country, region, city, latitude, 
longitude, ZIP code, time zone, ISP, domain name, connection type, IDD code, 
area code, weather station code and station, MCC, MNC, mobile carrier brand, 
elevation, usage type, IP address type and IAB advertising category from IP 
address using IP2Location database. This module uses a file based BIN database 
available at https://www.ip2location.com/database/ip2location upon 
subscription. You can visit https://www.ip2location.com/development-libraries 
to download BIN sample files. This database consists of IP address as keys and 
other information as values. It supports all IP addresses in IPv4 and IPv6.
+This Perl module provides fast lookup of country, region, city, latitude, 
longitude, ZIP code, time zone, ISP, domain name, connection type, IDD code, 
area code, weather station code and station, MCC, MNC, mobile carrier brand, 
elevation, usage type, IP address type, IAB advertising category, district, AS 
number and AS name from IP address using IP2Location database. This module uses 
a file based BIN database available at 
https://www.ip2location.com/database/ip2location upon subscription. You can 
visit https://www.ip2location.com/development-libraries to download BIN sample 
files. This database consists of IP address as keys and other information as 
values. It supports all IP addresses in IPv4 and IPv6.
 
 This module can be used in many types of project such as:
 
@@ -33,6 +33,6 @@
 
 COPYRIGHT AND LICENCE
 
-Copyright (C) 2022 by IP2Location.com, [email protected]
+Copyright (C) 2023 by IP2Location.com, [email protected]
 
 This library is released under the MIT license. See the LICENSE file for full 
license information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Geo-IP2Location-8.60/lib/Geo/IP2Location.pm 
new/Geo-IP2Location-8.70/lib/Geo/IP2Location.pm
--- old/Geo-IP2Location-8.60/lib/Geo/IP2Location.pm     2022-06-21 
02:00:00.000000000 +0200
+++ new/Geo-IP2Location-8.70/lib/Geo/IP2Location.pm     2023-01-03 
01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 #MIT License
 #
-#Copyright (c) 2022 IP2Location.com
+#Copyright (c) 2023 IP2Location.com
 #
 #Permission is hereby granted, free of charge, to any person obtaining a copy
 #of this software and associated documentation files (the "Software"), to deal
@@ -27,7 +27,7 @@
 use Math::BigInt;
 use bigint;
 
-$VERSION = '8.60';
+$VERSION = '8.70';
 require Exporter;
 @ISA = qw(Exporter);
 
@@ -66,6 +66,7 @@
 use constant 
IP_COUNTRY_REGION_CITY_LATITUDE_LONGITUDE_ISP_DOMAIN_MOBILE_USAGETYPE => 23;
 use constant 
IP_COUNTRY_REGION_CITY_LATITUDE_LONGITUDE_ZIPCODE_TIMEZONE_ISP_DOMAIN_NETSPEED_AREACODE_WEATHER_MOBILE_ELEVATION_USAGETYPE
 => 24;
 use constant 
IP_COUNTRY_REGION_CITY_LATITUDE_LONGITUDE_ZIPCODE_TIMEZONE_ISP_DOMAIN_NETSPEED_AREACODE_WEATHER_MOBILE_ELEVATION_USAGETYPE_ADDRESSTYPE_CATEGORY
 => 25;
+use constant 
IP_COUNTRY_REGION_CITY_LATITUDE_LONGITUDE_ZIPCODE_TIMEZONE_ISP_DOMAIN_NETSPEED_AREACODE_WEATHER_MOBILE_ELEVATION_USAGETYPE_ADDRESSTYPE_CATEGORY_DISTRICT_ASN
 => 26;
 
 use constant COUNTRYSHORT => 1;
 use constant COUNTRYLONG => 2;
@@ -89,55 +90,65 @@
 use constant USAGETYPE => 20;
 use constant ADDRESSTYPE => 21;
 use constant CATEGORY => 22;
+use constant DISTRICT => 23;
+use constant ASN => 24;
+use constant AS => 25;
 
 use constant ALL => 100;
 use constant IPV4 => 0;
 use constant IPV6 => 1;
 
-my @COUNTRY_POSITION =             (0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
 2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 2);
-my @REGION_POSITION =              (0,  0,  0,  3,  3,  3,  3,  3,  3,  3,  3, 
 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 3);
-my @CITY_POSITION =                (0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4, 
 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 4);
-my @LATITUDE_POSITION =            (0,  0,  0,  0,  0,  5,  5,  0,  5,  5,  5, 
 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 5);
-my @LONGITUDE_POSITION =           (0,  0,  0,  0,  0,  6,  6,  0,  6,  6,  6, 
 6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 6);
-my @ZIPCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  7, 
 7,  7,  0,  7,  7,  7,  0,  7,  0,  7,  7,  7,  0,  7, 7);
-my @TIMEZONE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 8,  8,  7,  8,  8,  8,  7,  8,  0,  8,  8,  8,  0,  8, 8);
-my @ISP_POSITION =                 (0,  0,  3,  0,  5,  0,  7,  5,  7,  0,  8, 
 0,  9,  0,  9,  0,  9,  0,  9,  7,  9,  0,  9,  7,  9, 9);
-my @DOMAIN_POSITION =              (0,  0,  0,  0,  0,  0,  0,  6,  8,  0,  9, 
 0, 10,  0, 10,  0, 10,  0, 10,  8, 10,  0, 10,  8, 10, 10);
-my @NETSPEED_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  8, 11,  0, 11,  8, 11,  0, 11,  0, 11,  0, 11, 11);
-my @IDDCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  9, 12,  0, 12,  0, 12,  9, 12,  0, 12, 12);
-my @AREACODE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0, 10, 13,  0, 13,  0, 13, 10, 13,  0, 13, 13);
-my @WEATHERSTATIONCODE_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  9, 14,  0, 14,  0, 14,  0, 14, 14);
-my @WEATHERSTATIONNAME_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0, 10, 15,  0, 15,  0, 15,  0, 15, 15);
-my @MCC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  9, 16,  0, 16,  9, 16, 16);
-my @MNC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0, 10, 17,  0, 17, 10, 17, 17);
-my @MOBILEBRAND_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0, 11, 18,  0, 18, 11, 18, 18);
-my @ELEVATION_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 19,  0, 19, 19);
-my @USAGETYPE_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 20, 20);
-my @ADDRESSTYPE_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21);
-my @CATEGORY_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22);
-
-my @IPV6_COUNTRY_POSITION =             (0,  2,  2,  2,  2,  2,  2,  2,  2,  
2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 2);
-my @IPV6_REGION_POSITION =              (0,  0,  0,  3,  3,  3,  3,  3,  3,  
3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 3);
-my @IPV6_CITY_POSITION =                (0,  0,  0,  4,  4,  4,  4,  4,  4,  
4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 4);
-my @IPV6_LATITUDE_POSITION =            (0,  0,  0,  0,  0,  5,  5,  0,  5,  
5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 5);
-my @IPV6_LONGITUDE_POSITION =           (0,  0,  0,  0,  0,  6,  6,  0,  6,  
6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 6);
-my @IPV6_ZIPCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  
7,  7,  7,  7,  0,  7,  7,  7,  0,  7,  0,  7,  7,  7,  0,  7, 7);
-my @IPV6_TIMEZONE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  8,  8,  7,  8,  8,  8,  7,  8,  0,  8,  8,  8,  0,  8, 8);
-my @IPV6_ISP_POSITION =                 (0,  0,  3,  0,  5,  0,  7,  5,  7,  
0,  8,  0,  9,  0,  9,  0,  9,  0,  9,  7,  9,  0,  9,  7,  9, 9);
-my @IPV6_DOMAIN_POSITION =              (0,  0,  0,  0,  0,  0,  0,  6,  8,  
0,  9,  0, 10,  0, 10,  0, 10,  0, 10,  8, 10,  0, 10,  8, 10, 10);
-my @IPV6_NETSPEED_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  8, 11,  0, 11,  8, 11,  0, 11,  0, 11,  0, 11, 11);
-my @IPV6_IDDCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  9, 12,  0, 12,  0, 12,  9, 12,  0, 12, 12);
-my @IPV6_AREACODE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0, 10, 13,  0, 13,  0, 13, 10, 13,  0, 13, 13);
-my @IPV6_WEATHERSTATIONCODE_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  9, 14,  0, 14,  0, 14,  0, 14, 14);
-my @IPV6_WEATHERSTATIONNAME_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0, 10, 15,  0, 15,  0, 15,  0, 15, 15);
-my @IPV6_MCC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9, 16,  0, 16,  9, 16, 16);
-my @IPV6_MNC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 17,  0, 17, 10, 17, 17);
-my @IPV6_MOBILEBRAND_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 18,  0, 18, 11, 18, 18);
-my @IPV6_ELEVATION_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 19,  0, 19, 19);
-my @IPV6_USAGETYPE_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 20, 20);
-my @IPV6_ADDRESSTYPE_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21);
-my @IPV6_CATEGORY_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22);
-
+my @COUNTRY_POSITION =             (0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 
 2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 2, 2);
+my @REGION_POSITION =              (0,  0,  0,  3,  3,  3,  3,  3,  3,  3,  3, 
 3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 3, 3);
+my @CITY_POSITION =                (0,  0,  0,  4,  4,  4,  4,  4,  4,  4,  4, 
 4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 4, 4);
+my @LATITUDE_POSITION =            (0,  0,  0,  0,  0,  5,  5,  0,  5,  5,  5, 
 5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 5, 5);
+my @LONGITUDE_POSITION =           (0,  0,  0,  0,  0,  6,  6,  0,  6,  6,  6, 
 6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 6, 6);
+my @ZIPCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  7, 
 7,  7,  0,  7,  7,  7,  0,  7,  0,  7,  7,  7,  0,  7, 7, 7);
+my @TIMEZONE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 8,  8,  7,  8,  8,  8,  7,  8,  0,  8,  8,  8,  0,  8, 8, 8);
+my @ISP_POSITION =                 (0,  0,  3,  0,  5,  0,  7,  5,  7,  0,  8, 
 0,  9,  0,  9,  0,  9,  0,  9,  7,  9,  0,  9,  7,  9, 9, 9);
+my @DOMAIN_POSITION =              (0,  0,  0,  0,  0,  0,  0,  6,  8,  0,  9, 
 0, 10,  0, 10,  0, 10,  0, 10,  8, 10,  0, 10,  8, 10, 10, 10);
+my @NETSPEED_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  8, 11,  0, 11,  8, 11,  0, 11,  0, 11,  0, 11, 11, 11);
+my @IDDCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  9, 12,  0, 12,  0, 12,  9, 12,  0, 12, 12, 12);
+my @AREACODE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0, 10, 13,  0, 13,  0, 13, 10, 13,  0, 13, 13, 13);
+my @WEATHERSTATIONCODE_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  9, 14,  0, 14,  0, 14,  0, 14, 14, 14);
+my @WEATHERSTATIONNAME_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0, 10, 15,  0, 15,  0, 15,  0, 15, 15, 15);
+my @MCC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  9, 16,  0, 16,  9, 16, 16, 16);
+my @MNC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0, 10, 17,  0, 17, 10, 17, 17, 17);
+my @MOBILEBRAND_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0, 11, 18,  0, 18, 11, 18, 18, 18);
+my @ELEVATION_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 19,  0, 19, 19, 19);
+my @USAGETYPE_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 20, 20, 20);
+my @ADDRESSTYPE_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21);
+my @CATEGORY_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22, 22);
+my @DISTRICT_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 23);
+my @ASN_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24);
+my @AS_POSITION =                  (0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 
 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 25);
+my @COLUMN_SIZE =                  (0,  2,  3,  4,  5,  6,  7,  6,  8,  7,  9, 
 8, 10,  8, 11, 10, 13, 10, 15, 11, 18, 11, 19, 12, 20, 22, 25);
+
+my @IPV6_COUNTRY_POSITION =             (0,  2,  2,  2,  2,  2,  2,  2,  2,  
2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2, 2, 2);
+my @IPV6_REGION_POSITION =              (0,  0,  0,  3,  3,  3,  3,  3,  3,  
3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3, 3, 3);
+my @IPV6_CITY_POSITION =                (0,  0,  0,  4,  4,  4,  4,  4,  4,  
4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4, 4, 4);
+my @IPV6_LATITUDE_POSITION =            (0,  0,  0,  0,  0,  5,  5,  0,  5,  
5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5, 5, 5);
+my @IPV6_LONGITUDE_POSITION =           (0,  0,  0,  0,  0,  6,  6,  0,  6,  
6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6, 6, 6);
+my @IPV6_ZIPCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  
7,  7,  7,  7,  0,  7,  7,  7,  0,  7,  0,  7,  7,  7,  0,  7, 7, 7);
+my @IPV6_TIMEZONE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  8,  8,  7,  8,  8,  8,  7,  8,  0,  8,  8,  8,  0,  8, 8, 8);
+my @IPV6_ISP_POSITION =                 (0,  0,  3,  0,  5,  0,  7,  5,  7,  
0,  8,  0,  9,  0,  9,  0,  9,  0,  9,  7,  9,  0,  9,  7,  9, 9, 9);
+my @IPV6_DOMAIN_POSITION =              (0,  0,  0,  0,  0,  0,  0,  6,  8,  
0,  9,  0, 10,  0, 10,  0, 10,  0, 10,  8, 10,  0, 10,  8, 10, 10, 10);
+my @IPV6_NETSPEED_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  8, 11,  0, 11,  8, 11,  0, 11,  0, 11,  0, 11, 11, 11);
+my @IPV6_IDDCODE_POSITION =             (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  9, 12,  0, 12,  0, 12,  9, 12,  0, 12, 12, 12);
+my @IPV6_AREACODE_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0, 10, 13,  0, 13,  0, 13, 10, 13,  0, 13, 13, 13);
+my @IPV6_WEATHERSTATIONCODE_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  9, 14,  0, 14,  0, 14,  0, 14, 14, 14);
+my @IPV6_WEATHERSTATIONNAME_POSITION =  (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0, 10, 15,  0, 15,  0, 15,  0, 15, 15, 15);
+my @IPV6_MCC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9, 16,  0, 16,  9, 16, 16, 16);
+my @IPV6_MNC_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10, 17,  0, 17, 10, 17, 17, 17);
+my @IPV6_MOBILEBRAND_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 18,  0, 18, 11, 18, 18, 18);
+my @IPV6_ELEVATION_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 11, 19,  0, 19, 19, 19);
+my @IPV6_USAGETYPE_POSITION =           (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 12, 20, 20, 20);
+my @IPV6_ADDRESSTYPE_POSITION =         (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 21, 21);
+my @IPV6_CATEGORY_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 22, 22);
+my @IPV6_DISTRICT_POSITION =            (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 23);
+my @IPV6_ASN_POSITION =                 (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 24);
+my @IPV6_AS_POSITION =                  (0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 25);
+my @IPV6_COLUMN_SIZE =                  (0,  2,  3,  4,  5,  6,  7,  6,  8,  
7,  9,  8, 10,  8, 11, 10, 13, 10, 15, 11, 18, 11, 19, 12, 20, 22, 25);
 
 my $IPv6_re = 
qr/:(?::[0-9a-fA-F]{1,4}){0,5}(?:(?::[0-9a-fA-F]{1,4}){1,2}|:(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})))|[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}:(?:[0-9a-fA-F]{1,4}|:)|(?::(?:[0-9a-fA-F]{1,4})?|(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))))|:(?:(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))|[0-9a-fA-F]{1,4}(?::[0-9a-fA-F]{1,4})?|))|(?::(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?
 
[0-9]{1,2}))|:[0-9a-fA-F]{1,4}(?::(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))|(?::[0-9a-fA-F]{1,4}){0,2})|:))|(?:(?::[0-9a-fA-F]{1,4}){0,2}(?::(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))|(?::[0-9a-fA-F]{1,4}){1,2})|:))|(?:(?::[0-9a-fA-F]{1,4}){0,3}(?::(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))|(?::[0-9a-fA-F]{1,4}){1,2})|:))|(?:(?::[0-9a-fA-F]{1,4}){0,4}(?::(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))|(?::[0-9a-fA-F]{1,4}){1,2})|:))/;
 my $IPv4_re = qr/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/;
@@ -546,6 +557,51 @@
        }
 }
 
+sub get_district {
+       my $obj = shift(@_);
+       my $ipaddr = shift(@_);
+       my ($ipv, $ipnum) = $obj->validate_ip($ipaddr);
+       if ($ipv == 4) {
+               return $obj->get_ipv4_record($ipnum, DISTRICT);
+       } else {
+               if ($ipv == 6) {
+                       return $obj->get_ipv6_record($ipnum, DISTRICT); 
+               } else {
+                       return INVALID_IP_ADDRESS;
+               }
+       }
+}
+
+sub get_asn {
+       my $obj = shift(@_);
+       my $ipaddr = shift(@_);
+       my ($ipv, $ipnum) = $obj->validate_ip($ipaddr);
+       if ($ipv == 4) {
+               return $obj->get_ipv4_record($ipnum, ASN);
+       } else {
+               if ($ipv == 6) {
+                       return $obj->get_ipv6_record($ipnum, ASN);      
+               } else {
+                       return INVALID_IP_ADDRESS;
+               }
+       }
+}
+
+sub get_as {
+       my $obj = shift(@_);
+       my $ipaddr = shift(@_);
+       my ($ipv, $ipnum) = $obj->validate_ip($ipaddr);
+       if ($ipv == 4) {
+               return $obj->get_ipv4_record($ipnum, AS);
+       } else {
+               if ($ipv == 6) {
+                       return $obj->get_ipv6_record($ipnum, AS);
+               } else {
+                       return INVALID_IP_ADDRESS;
+               }
+       }
+}
+
 sub get_all {
        my $obj = shift(@_);
        my $ipaddr = shift(@_);
@@ -556,7 +612,7 @@
                if ($ipv == 6) {
                        return $obj->get_ipv6_record($ipnum, ALL);      
                } else {
-                       return (INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS);
+                       return (INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, 
INVALID_IP_ADDRESS, INVALID_IP_ADDRESS, INVALID_IP_ADDRESS);
                }
        }
 }
@@ -569,7 +625,7 @@
 
        if ($ipnum eq "") {
                if ($mode == ALL) {
-                       return (NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP);
+                       return (NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP);
                } else {
                        return NO_IP;
                }
@@ -641,6 +697,15 @@
        if (($mode == CATEGORY) && ($IPV6_CATEGORY_POSITION[$dbtype] == 0)) {
                return NOT_SUPPORTED;
        }
+       if (($mode == DISTRICT) && ($IPV6_DISTRICT_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
+       if (($mode == ASN) && ($IPV6_ASN_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
+       if (($mode == AS) && ($IPV6_AS_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
 
        my $realipno = $ipnum;
        my $handle = $obj->{"filehandle"};
@@ -651,7 +716,7 @@
 
        if ($dbcount == 0) {
                if ($mode == ALL) {
-                       return (IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN);
+                       return (IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, 
IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN, IPV6_ADDRESS_IN_IPV4_BIN);
                } else {
                        return IPV6_ADDRESS_IN_IPV4_BIN;
                }
@@ -710,6 +775,9 @@
                                my $usagetype = NOT_SUPPORTED;
                                my $addresstype = NOT_SUPPORTED;
                                my $category = NOT_SUPPORTED;
+                               my $district = NOT_SUPPORTED;
+                               my $asn = NOT_SUPPORTED;
+                               my $as = NOT_SUPPORTED;
                                
                                if ($IPV6_COUNTRY_POSITION[$dbtype] != 0) {
                                        $country_short = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($IPV6_COUNTRY_POSITION[$dbtype]+2), 
4)));
@@ -777,7 +845,17 @@
                                if ($IPV6_CATEGORY_POSITION[$dbtype] != 0) {
                                        $category = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * 
($IPV6_CATEGORY_POSITION[$dbtype]+2), 4)));
                                }
-                               return ($country_short, $country_long, $region, 
$city, $latitude, $longitude, $zipcode, $timezone, $isp, $domain, $netspeed, 
$iddcode, $areacode, $weatherstationcode, $weatherstationname, $mcc, $mnc, 
$mobilebrand, $elevation, $usagetype, $addresstype, $category);
+                               if ($IPV6_DISTRICT_POSITION[$dbtype] != 0) {
+                                       $district = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * 
($IPV6_DISTRICT_POSITION[$dbtype]+2), 4)));
+                               }
+                               if ($IPV6_ASN_POSITION[$dbtype] != 0) {
+                                       $asn = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($IPV6_ASN_POSITION[$dbtype]+2), 
4)));
+                               }
+                               if ($IPV6_AS_POSITION[$dbtype] != 0) {
+                                       $as = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($IPV6_AS_POSITION[$dbtype]+2), 4)));
+                               }
+
+                               return ($country_short, $country_long, $region, 
$city, $latitude, $longitude, $zipcode, $timezone, $isp, $domain, $netspeed, 
$iddcode, $areacode, $weatherstationcode, $weatherstationname, $mcc, $mnc, 
$mobilebrand, $elevation, $usagetype, $addresstype, $category, $district, $asn, 
$as);
                        }
                        if ($mode == COUNTRYSHORT) {
                                return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($IPV6_COUNTRY_POSITION[$dbtype]+2), 4)));
@@ -849,6 +927,15 @@
                        if ($mode == CATEGORY) {
                                return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($IPV6_CATEGORY_POSITION[$dbtype]+2), 4)));
                        }
+                       if ($mode == DISTRICT) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($IPV6_DISTRICT_POSITION[$dbtype]+2), 4)));
+                       }
+                       if ($mode == ASN) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($IPV6_ASN_POSITION[$dbtype]+2), 4)));
+                       }
+                       if ($mode == AS) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($IPV6_AS_POSITION[$dbtype]+2), 4)));
+                       }
                } else {
                        if ($ipno < $ipfrom) {
                                $high = $mid - 1;
@@ -858,7 +945,7 @@
                }
        }
        if ($mode == ALL) {
-               return (UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN);
+               return (UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN);
        } else {
                return UNKNOWN;
        }
@@ -872,7 +959,7 @@
        
        if ($ipnum eq "") {
                if ($mode == ALL) {
-                       return (NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP);
+                       return (NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, 
NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP, NO_IP);
                } else {
                        return NO_IP;
                }
@@ -944,6 +1031,15 @@
        if (($mode == CATEGORY) && ($CATEGORY_POSITION[$dbtype] == 0)) {
                return NOT_SUPPORTED;
        }
+       if (($mode == DISTRICT) && ($DISTRICT_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
+       if (($mode == ASN) && ($ASN_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
+       if (($mode == AS) && ($AS_POSITION[$dbtype] == 0)) {
+               return NOT_SUPPORTED;
+       }
        
        my $realipno = $ipnum;
        my $handle = $obj->{"filehandle"};
@@ -1002,6 +1098,9 @@
                                my $usagetype = NOT_SUPPORTED;
                                my $addresstype = NOT_SUPPORTED;
                                my $category = NOT_SUPPORTED;
+                               my $district = NOT_SUPPORTED;
+                               my $asn = NOT_SUPPORTED;
+                               my $as = NOT_SUPPORTED;
                                
                                if ($COUNTRY_POSITION[$dbtype] != 0) {
                                        $country_short = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($COUNTRY_POSITION[$dbtype]-1), 4)));
@@ -1070,7 +1169,17 @@
                                if ($CATEGORY_POSITION[$dbtype] != 0) {
                                        $category = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($CATEGORY_POSITION[$dbtype]-1), 
4)));
                                }
-                               return ($country_short, $country_long, $region, 
$city, $latitude, $longitude, $zipcode, $timezone, $isp, $domain, $netspeed, 
$iddcode, $areacode, $weatherstationcode, $weatherstationname, $mcc, $mnc, 
$mobilebrand, $elevation, $usagetype, $addresstype, $category);
+                               if ($DISTRICT_POSITION[$dbtype] != 0) {
+                                       $district = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($DISTRICT_POSITION[$dbtype]-1), 
4)));
+                               }
+                               if ($ASN_POSITION[$dbtype] != 0) {
+                                       $asn = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($ASN_POSITION[$dbtype]-1), 4)));
+                               }
+                               if ($AS_POSITION[$dbtype] != 0) {
+                                       $as = $obj->readStr($handle, 
unpack("V", substr($raw_positions_row, 4 * ($AS_POSITION[$dbtype]-1), 4)));
+                               }
+
+                               return ($country_short, $country_long, $region, 
$city, $latitude, $longitude, $zipcode, $timezone, $isp, $domain, $netspeed, 
$iddcode, $areacode, $weatherstationcode, $weatherstationname, $mcc, $mnc, 
$mobilebrand, $elevation, $usagetype, $addresstype, $category, $district, $asn, 
$as);
                        }
                        if ($mode == COUNTRYSHORT) {
                                return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($COUNTRY_POSITION[$dbtype]-1), 4)));
@@ -1141,7 +1250,16 @@
                        }
                        if ($mode == CATEGORY) {
                                return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($CATEGORY_POSITION[$dbtype]-1), 4)));
-                       }                       
+                       }
+                       if ($mode == DISTRICT) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($DISTRICT_POSITION[$dbtype]-1), 4)));
+                       }
+                       if ($mode == ASN) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($ASN_POSITION[$dbtype]-1), 4)));
+                       }
+                       if ($mode == AS) {
+                               return $obj->readStr($handle, unpack("V", 
substr($raw_positions_row, 4 * ($AS_POSITION[$dbtype]-1), 4)));
+                       }
                } else {
                        if ($ipno < $ipfrom) {
                                $high = $mid - 1;
@@ -1151,7 +1269,7 @@
                }
        }
        if ($mode == ALL) {
-               return (UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN);
+               return (UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, UNKNOWN, 
UNKNOWN, UNKNOWN, UNKNOWN);
        } else {
                return UNKNOWN;
        }
@@ -1436,7 +1554,7 @@
 
 =head1 NAME
 
-Geo::IP2Location - Lookup of country, region, city, latitude, longitude, ZIP 
code, time zone, ISP, domain name, connection type, IDD code, area code, 
weather station code and station, MCC, MNC, mobile carrier brand name, 
elevation, usage type, IP address type and advertising category by using IP 
address. It supports both IPv4 and IPv6 addressing. Please visit L<IP2Location 
Database|https://www.ip2location.com> for more information.
+Geo::IP2Location - Lookup of country, region, city, latitude, longitude, ZIP 
code, time zone, ISP, domain name, connection type, IDD code, area code, 
weather station code and station, MCC, MNC, mobile carrier brand name, 
elevation, usage type, IP address type, advertising category, district, AS 
number and AS name by using IP address. It supports both IPv4 and IPv6 
addressing. Please visit L<IP2Location Database|https://www.ip2location.com> 
for more information.
 
 =head1 SYNOPSIS
 
@@ -1444,7 +1562,7 @@
 
        eval {
 
-               my $obj = 
Geo::IP2Location->open("IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-ADDRESSTYPE-CATEGORY.BIN");
+               my $obj = 
Geo::IP2Location->open("IP-COUNTRY-REGION-CITY-LATITUDE-LONGITUDE-ZIPCODE-TIMEZONE-ISP-DOMAIN-NETSPEED-AREACODE-WEATHER-MOBILE-ELEVATION-USAGETYPE-ADDRESSTYPE-CATEGORY-DISTRICT-ASN.BIN");
 
                if (!defined($obj)) {
                        print STDERR Geo::IP2Location::get_last_error_message();
@@ -1474,9 +1592,12 @@
                my $usagetype = $obj->get_usagetype("20.11.187.239");
                my $addresstype = $obj->get_addresstype("20.11.187.239");
                my $category = $obj->get_category("20.11.187.239");
+               my $district = $obj->get_district("20.11.187.239");
+               my $asn = $obj->get_asn("20.11.187.239");
+               my $as = $obj->get_as("20.11.187.239");
 
-               ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, 
$ns, $idd, $area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category) = $obj->get_all("20.11.187.239");
-               ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, 
$ns, $idd, $area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category) = 
$obj->get_all("2001:1000:0000:0000:0000:0000:0000:0000");
+               ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, 
$ns, $idd, $area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category, $district, $asn, $as) = $obj->get_all("20.11.187.239");
+               ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, 
$ns, $idd, $area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category, $district, $asn, $as) = 
$obj->get_all("2001:1000:0000:0000:0000:0000:0000:0000");
 
                $obj->close();
 
@@ -1488,7 +1609,7 @@
 
 =head1 DESCRIPTION
 
-This Perl module provides fast lookup of country, region, city, latitude, 
longitude, ZIP code, time zone, ISP, domain name, connection type, IDD code, 
area code, weather station code and station, MCC, MNC, mobile carrier brand, 
elevation, usage type, IP address type and IAB advertising category from IP 
address using IP2Location database. This module uses a file based BIN database 
available at L<IP2Location Product 
Page|https://www.ip2location.com/database/ip2location> upon subscription. You 
can visit L<Libraries|https://www.ip2location.com/development-libraries> to 
download BIN sample files. This database consists of IP address as keys and 
other information as values. It supports all IP addresses in IPv4 and IPv6.
+This Perl module provides fast lookup of country, region, city, latitude, 
longitude, ZIP code, time zone, ISP, domain name, connection type, IDD code, 
area code, weather station code and station, MCC, MNC, mobile carrier brand, 
elevation, usage type, IP address type, IAB advertising category, district, AS 
number and AS name from IP address using IP2Location database. This module uses 
a file based BIN database available at L<IP2Location Product 
Page|https://www.ip2location.com/database/ip2location> upon subscription. You 
can visit L<Libraries|https://www.ip2location.com/development-libraries> to 
download BIN sample files. This database consists of IP address as keys and 
other information as values. It supports all IP addresses in IPv4 and IPv6.
 
 This module can be used in many types of project such as:
 
@@ -1614,9 +1735,21 @@
 
 Returns the IAB content taxonomy category of IP address or domain name.
 
-=item ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, $ns, $idd, 
$area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category) = $obj->get_all( $ip );
+=item $district = $obj->get_district( $ip );
+
+Returns the district of IP address or domain name.
+
+=item $asn = $obj->get_asn( $ip );
+
+Returns the AS number of IP address or domain name.
+
+=item $as = $obj->get_as( $ip );
+
+Returns the AS name of IP address or domain name.
+
+=item ($cos, $col, $reg, $cit, $lat, $lon, $zip, $tmz, $isp, $dom, $ns, $idd, 
$area, $wcode, $wname, $mcc, $mnc, $brand, $elevation, $usagetype, 
$addresstype, $category, $district, $asn, $as) = $obj->get_all( $ip );
 
-Returns an array of country, region, city, latitude, longitude, ZIP code, time 
zone, ISP, domain name, connection type, IDD code, area code, weather station 
code and station, MCC, MNC, mobile carrier brand, elevation, usage type, 
address type and IAB advertising category of IP address.
+Returns an array of country, region, city, latitude, longitude, ZIP code, time 
zone, ISP, domain name, connection type, IDD code, area code, weather station 
code and station, MCC, MNC, mobile carrier brand, elevation, usage type, 
address type, IAB advertising category, district, AS number and AS name of IP 
address.
 
 =item $dbversion = $obj->get_database_version();
 
@@ -1638,11 +1771,11 @@
 
 =head1 VERSION
 
-8.60
+8.70
 
 =head1 AUTHOR
 
-Copyright (c) 2022 IP2Location.com
+Copyright (c) 2023 IP2Location.com
 
 All rights reserved. This package is free software. It is licensed under the 
MIT. See the LICENSE file for full license information.
 

++++++ cpanspec.yml ++++++
--- /var/tmp/diff_new_pack.m07ohX/_old  2023-01-24 20:28:23.687126022 +0100
+++ /var/tmp/diff_new_pack.m07ohX/_new  2023-01-24 20:28:23.691126042 +0100
@@ -14,7 +14,7 @@
 #preamble: |-
 # BuildRequires:  gcc-c++
 post_prep: |-
-sed -i 's/\r$//' samples/WHERE_TO_DOWNLOAD_MORE_SAMPLES.TXT
+  sed -i 's/\r$//' samples/WHERE_TO_DOWNLOAD_MORE_SAMPLES.TXT
 # hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s,  *,,g'`
 # sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL 
 #post_build: |-

Reply via email to