summaryrefslogtreecommitdiffstats
path: root/ChangeLog
blob: b6b2ca0c9abda2e148a5187f16ada5675a0afeb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
1.6.12 2018-01-17

* Populate metro and area code when performing lookups in IPv6 City databases.
  Previously this was only done when using IPv4 City databases.

1.6.11 2017-05-15

* Fix use of a NULL pointer when opening a corrupt database with
  `GeoIP_open`. Reported by Stephan Zeisberg. GitHub #87.

1.6.10 2017-03-29

* GeoIP_database_info now returns the full version string rather than
  incorrectly truncating it. GitHub #79.
* This API is now distributed with a small test copy of GeoIP.dat rather than
  a full copy.
* Fix issue where Visual Studio 2015 was optimizing out initialization code.
  Reported and fixed by Scott Godin. GitHub #81.
* Fix test/benchmark on Windows. Gisle Vanem. GitHub #75.

1.6.9 2016-01-11

* Fix a regression introduced in version 1.6.8, which caused
  GeoIP_database_info to erroneously return NULL.

1.6.8 2016-01-11

* Allow compilation on older systems by relaxing the autoconf and automake
  minimum versions. Thank you, Jose Rubio!
* Avoid potential problems in multi-threaded environments by consistently using
  pread() rather than read().
* Fix various small issues reported by clang's static analyser.

1.6.7 2015-10-30

* Fixed a MSVC parser stack overflow when parsing `regionName.c` and
 `timeZone.c`. Fix by elliotlo. GitHub #64.
* Updated region codes and timezones.
* When using `GEOIP_MEMORY_CACHE` with an invalid database file, the search
  tree traversal could attempt to read memory outside of the memory allocated
  for the memory cache, resulting in a segmentation fault. A check was added
  to ensure that the traversal code does not try to read beyond the end of the
  file, whether in memory, memory mapped, or on disk.
* Previously the return values from file reads were ignored. We now check
  these values to ensure that there were no errors.


1.6.6 2015-07-28

* Replaced usage of deprecated fileno, read, and lseek on Visual Studio 2005+
  with their ISO C++ conformant replacements. (Fix by ClaudiuHKS. GitHub #55.)
* A warning about using a double as a float was fixed. (Fix by ClaudiuHKS.
  GitHub #56.)
* Fixed segfault when doing a lookup on an empty database. (Fix by NesoK.
  GitHub #62.)
* Fixed a memcheck error from valgrind in the `_check_mtime`
  function. (Reported by yurivct. GitHub #60.)
* Fixed `_check_mtime` to check the return value of `gettimeofday` rather than
  just assuming it worked.


1.6.5 2015-02-25

* A segmentation fault in `geoiplookup` was fixed when the utility was passed
  an invalid database. (Reported in Red Hat bug #1180874.)
* Additional validation was added for validation of the size used in the
  creation of the index cache. (Based on discussion in Red Hat bug #832913.)
* Changed the code to only look up country codes by using functions which
  ensure that we do not try to look past the end of an array. (Reported by
  Ivan Sorokin. GitHub #53)


1.6.4 2015-01-12

* Update Fips codes (Boris Zentner)
* Several issues with the MinGW build were fixed. (Thomas Pöchtrager. Github
  #46.)
* Use a constructor in pread.c to ensure the critical section is always
  initialized. (Thomas Pöchtrager. Github #47.)
* Added missing include of `io.h` on Windows. (Thomas Pöchtrager. Github #49.)
* Fixed `configure` warning that `'missing' script is too old or missing`.
  (Reported by Floren Munteanu. Github #33.)
* Previously `nmake /f Makefile.vc clean` would fail on Windows. This was
  fixed.
* Obsolete win32 and NetWare make files were removed.
* Numerous documentation updates. (Reported by Thomas Pöchtrager. GitHub #48.)


1.6.3 2014-10-29

* Added a GEOIP_SILENCE flag. Include this flag when calling GeoIP_open to
  prevent any messages from being written to stderr. (Philip Prindeville
  and Boris Zentner)
* Mitigate a possible race condition when running under threads in the
  GeoIP_cleanup function. (Anthon Pang)
* Added some recommendations to the docs on using this library in a
  threaded application. (Boriz Zentner)
* Fixed some bugs discovered by coverity, including failure to check some
  system call return values and making sure all strings are
  null-terminated. (Boris Zentner)


1.6.2 2014-07-08

* Two files required for building on Win32 were missing from the 1.6.1
  release. These files were added. There are no changes affecting other
  platforms. (Boris Zentner)


1.6.1 2014-06-26

* Improve Win32 support (Evan Hunt)
* Update FIPS codes (Boris Zentner)


1.6.0 2013-10-29

* Remove geoipupdate (Boris Zentner)


1.5.2 2013-10-29

* Update region and time zones (Boris Zentner)
* Fix benchmark script (Boris Zentner)
* Remove autogenerated files ltmain.sh, man/geoip*.1 (Boris Zentner)
* Explain how to download free geolite databases in the README.md and
  GeoIP.conf.default (Boris Zentner)
* geoipupdate returns 1 on error 0 on success instead of the error code
  (Boris Zentner)
* README is replaced by README.md (Gregory Oschwald)
* Add support for OS X Mavericks (Boris Zentner)


1.5.1 2013-05-14

* Update time_zone for Ontario, Canada (Boris Zentner)
* geoiplookup and geoiplookup6 exit code is 0 when user asked for help
  (Jan Safranek)
* Added -h option to geoiplookup6 (Jan Safranek)
* Do not load the database file if nodes and file size do not make
  sense. (Boris Zentner)
* Keep README and man pages in pure ascii. (Boris Zentner)
* It doesn't make sense to use GEOIP_INDEX_MODE with small databases
  like GEOIP_COUNTRY_EDITION. Instead of undefined behaviour we handle
  it silently as GEOIP_MEMORY_MODE (Boris Zentner)
* Update FIPS codes for Greece (Boris Zentner)


1.5.0 2013-02-21

* Rename custom_directory to GeoIP_custom_directory. (Boris Zentner)
* Make sure the database match the requested type. This is helpful for
  Databases with the same default name and the general geoiplookup form
  (geoiplookup without a specific database) (Boris Zentner)
* apps/geoiplookup6.c use the ipnum instead of the hostname for lookups.
  (Boris Zentner)
* Use configure.ac instead of configure.in (Boris Zentner)
* Region lookup is a bit faster (Boris Zentner)
* Add pkg-config file (Bastien Nocera)
* Updates required to build a Windows DLL under MinGW (Gerald Combs)
* Make API thread safe (Boris Zentner)
* geoiplookup's default charset is UTF8
  -l change the charset back to iso8859-1 (Boris Zentner)
* geoipupdate skips \r otherwise it might be part of the last
  product_id (Boris Zentner)
* Update time zones (Boris Zentner)
* Update Region codes (Boris Zentner)
* Remove the unused CITYCONFIDENCE* database types (Boris Zentner)
* bootstrap rebuilds ltmain.sh (Boris Zentner)
* Update README.OSX for Lion (Boris Zentner)
* Change Macedonia to Macedonia, The Former Yugoslav Republic of
  (Boris Zentner)
* Add region_name to geoiplookup GEOIP_CITY_EDITION_REV1 (Boris Zentner)
* Add region_name to geoiplookup GEOIP_CITY_EDITION_REV0 (Chris Johnson)
* Add a --disable-data-files option. This allows you to build and install
  the library without having a data/GeoIP.dat file. This is useful when
  building the library from a checkout of the source tree, rather than a
  tarball (Dave Rolsky)
* Add GEOIP_ACCURACYRADIUS_EDITION and GEOIP_ACCURACYRADIUS_EDITION_V6
  (Boris Zentner)
* Add more database types GEOIP_COUNTRYCONF_EDITION,
  GEOIP_CITYCONF_EDITION, GEOIP_REGIONCONF_EDITION and
  GEOIP_POSTALCONF_EDITION (Boris Zentner)
* Fix default filenames for GEOIP_NETSPEED_EDITION_REV1 and
  GEOIP_NETSPEED_EDITION_REV1_V6 (Boris Zentner)


1.4.8

* Fix GEOIP_DOMAIN_EDITION_V6 (Boris Zentner)
* Add new Datatypes GEOIP_NETSPEED_EDITION_REV1_V6 and
  GEOIP_NETSPEED_EDITION_REV1 (Boris Zentner)
* Fix possible directory traversal weakness in geoipupdate-pureperl.pl with
  malicious update server (Boris Zentner)
* Fix GEOIP_ORG_EDITION_V6 and GEOIP_ISP_EDITION_V6 (Boris Zentner)


1.4.7 2011-12-19

* Upd timezone.c Add SX, BQ and CW remove AN and FX (Boris Zentner)
* Add support for the new types in geoiplookup6 (Boris Zentner)
* Add new database types GEOIP_CITY_EDITION_REV0_V6,
  GEOIP_CITY_EDITION_REV1_V6, GEOIP_DOMAIN_EDITION_V6,
  GEOIP_ORG_EDITION_V6 and GEOIP_ISP_EDITION_V6 (Boris Zentner)
* Remove AN and FX. Add SX, BQ and CW (Boris Zentner)
* Fix possible segfault in geoipupdate if the connection disappear
  unexpected. (Boris Zentner)
* Add sanity check for geoipupdate-pureperl.pl (Boris Zentner)
* Add GEOIP_USERTYPE_EDITION and GEOIP_USERTYPE_EDITION_V6
  datatypes (Boris Zentner)
* Add new functions GeoIP_is_private_ipnum_v4 and GeoIP_is_private_v4
  (Boris Zentner)
* Add new functions GeoIP_teredo and GeoIP_enable_teredo.
  teredo is enabled by default (Boris Zentner)
* Fix output of geoiplookup for unknown or private regions.
  (Boris Zentner)
* Fix geoipupdate-pureperl.pl to accept more product codes.
  (Boris Zentner)
* Fix minor output issue in geoipupdate -v (Boris Zentner)
* Add support for various databases. (Boris Zentner)
* Add experimental teredo support (Boris Zentner)
* Fix possible buffer overflow in conjunction with
  http_proxies (Elso Andras)
* Remove memcpy/bcopy macro for BSD (Boris Zentner)
* Add GeoIP_lib_version and GeoIP_cleanup (Ladar Levison)
* Upd Makefile.vc (Thomas Winzig)
* Fix typo in DK,18,Midtjylland (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes 20100810 (Boris Zentner)
* Fix continent codes (Boris Zentner)
* Fix 3letter country codes for ATA, BVT, IOT, CXR, CCK, ATF, HMD,
  MYT, SGS and UMI (Boris Zentner)
* Fix typo/segfault in GeoIP_id_by_name_v6 (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes 20100529 (Boris Zentner)
* Remove buffered IO functions, to fix issues with dup'ed file
  descriptors (Boris Zentner)
* Fix very minor memleak in geoipupdate (Boris Zentner)
* Add GEOIP_CITYCONFIDENCEDIST_EDITION, GEOIP_LARGE_COUNTRY_EDITION
  and GEOIP_LARGE_COUNTRY_EDITION_V6 database types (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes 20100422 (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes 20100420 (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes 20100221 (Boris Zentner)
* Add missing timezones (Boris Zentner)
* Add missing include for Windows 2000 (Jaap Keute)
* 'GeoIP Database up to date' and 'Updated database' prints to stdout
  instead of stderr (Boris Zentner)
* Add missing GeoIPRecord_delete to geoiplookup.c (Piotr Kaczuba)
* Add some IPv4 helper functions
  unsigned long GeoIP_addr_to_num(const char *addr);
  char * GeoIP_num_to_addr(unsigned long ipnum); (Boris Zentner)
* Fix default name for the accuracy radius database to GeoIPDistance.dat (Boris Zentner)
* Add GEOIP_CITYCONFIDENCE_EDITION database type. (Boris Zentner)
* geoiplookup use GeoIPDistance.dat files if avail (Boris Zentner)
* Fix geoiplookup/geoiplookup6 output, when the databaseinfo string is
  not avail. (Boris Zentner)
* Change continent code for RU from AS to EU (Boris Zentner)
* Add GEOIP_ACCURACYRADIUS_EDITION database type. (Boris Zentner)
* Add GEOIP_LOCATIONA_EDITION the database to map back from binary to
  the csv database (Boris Zentner)
* Change Turkey's continent code from Asia to Europe (Boris Zentner)
* Rename _iso_8859_1__utf8 to _GeoIP_iso_8859_1__utf8 (Boris Zentner)
* GEOIP_ORG_EDITION, GEOIP_ISP_EDITION, GEOIP_DOMAIN_EDITION and
  GEOIP_ASNUM_EDITION databases return UTF8 results, if gi->charset is set
  to GEOIP_CHARSET_UTF8 (Boris Zentner)
* Avoid unnecesary call to gettimeofday when GEOIP_CHECK_CACHE is not set (John Douglass)
* Delayed loading of changed database files for 60 seconds. To avoid
  reading halve written databases (Boris Zentner)
* Update README.OSX for Leopard  and Snow Leopard (Boris Zentner)
* Add more IPv6 functions (Boris Zentner)
  const char *GeoIP_country_code_by_addr_v6 (GeoIP* gi, const char *addr);
  const char *GeoIP_country_code_by_name_v6 (GeoIP* gi, const char *host);
  const char *GeoIP_country_code3_by_addr_v6 (GeoIP* gi, const char *addr);
  const char *GeoIP_country_code3_by_name_v6 (GeoIP* gi, const char *host);
  const char *GeoIP_country_name_by_addr_v6 (GeoIP* gi, const char *addr);
  const char *GeoIP_country_name_by_name_v6 (GeoIP* gi, const char *host);
* Make sure that GeoIP_*_v6 functions refuse GEOIP_PROXY_EDITION and
  GEOIP_NETSPEED_EDITION databases (Boris Zentner)
* Update libGeoIP/regionName.c with FIPS codes from 20090723 (Boris Zentner)
* Fix geoipupdate's -v option to not change the license filename (Thom May)
* Fix geoipupdate's exit code (Thom May)
* Add support for ASNUM_EDITION (Boris Zentner)
* Fix -i output for larger values, sign issue (Boris Zentner)
* Add -i flag for more information on netmask, range_by_ip and the current network range (Boris Zentner)
* Add support for DOMAIN_EDITION database type (Boris Zentner)
* Fix apps/geoipupdate-pureperl.pl output layer on W32 (Boris Zentner)


1.4.6 2009-02-25

* Fix geoipupdate's my_printf function (Boris Zentner)
* Fix typo in apps/geoipupdate-pureperl.pl replace PerlIO::Gzip with PerlIO::gzip (Boris Zentner)
* Update region codes in libGeoIP/regionName.c (Boris Zentner)
* Fix regioncode/generate_regionName.pl to handle regioncodes with ',' correct (Boris Zentner)
* Update fips codes 20090201 (Boris Zentner)
* Fix unicode builds on WIN32 and eliminate some warnings (Stu Redman)
* Fix sign error in _iso_8859_1__utf8 for PPC64 (Boris Zentner)
* Change WIN32 to _WIN32, since _WIN32 is defined by default. _WIN32 is also defined for WIN64 machines (Boris Zentner)
! Remove the WSAStartup call from GeoIP_open. All Applications need to call WSAStartup and WSACleanup to initialize the Windows Socket library. Before they use any of the GeoIP_*_by_name functions. (Boris Zentner)
* geoiplookup and test-geoip-* output N/A instead of (null) (Boris Zentner)
* Silence various warnings. (Boris Zentner)
* Add more timezone region's for Australia
* Fix possible segfault in apps/geoiplookup with null pointers in non gnu printf implementations for example solaris (Boris Zentner)
* Add README.OSX to build fat binaries easy (Boris Zentner)
* Silence vasprintf warning via AC_GNU_SOURCE (Boris Zentner)
* Add several Makefiles to build a static GeoIP.lib for w32 (Stanislaw Pusep and Randy Kobes)
* Silence signedness warnings (Peter Volkov)
* Remove --with-city configure option. (Boris Zentner)
* Remove configure's --with-dbdir option. Use the similar --datadir instead (Peter Volkov)
* Various autotools improvements and cleanups. Including parallel
  build fix (Peter Volkov)
* Fix libGeoIP/timeZone.c (Martin Haller)
* Fix timezone/generate_timeZone.pl (Boris Zenter)
* Sync FIPS codes again Jan 14th, 2009 (Boris Zentner)
* Fix CA,NL regioncode. (Boris Zentner)
* Change logic in generate_regionName.pl and GeoIP_region_name_by_code to handle any mixture of two letter fips codes matching [A-Z0-9]{2} the change allow GZ and WE region codes (Boris Zentner)
* Sync regionName.c with http://www.maxmind.com/app/fips10_4 from Dec 17th, 2008 (Boris Zentner)
* Fix _GeoIP_lookupaddress for 64bit big endian systems like ppc64 (Peter Volkov)
* Add proper WIN32/64 support (Gerald Combs)
* Escape - in all manpages (Patrick Matthäi)
* Add manpage for geoiplookup6 (Boris Zentner)
* Fix -d command line option (Klaus Heinz)
* GeoIPUpdate.c use vasprintf if avail, otherwise try vsnprintf and sprintf (Boris Zentner)
* avoid pre/postincrement and assignment on the same variable (Boris Zentner)


1.4.5 2008-09-16

* metro_code replace the depreciated dma_code field (Boris Zentner)
* Add new function GeoIP_range_by_ip_delete
  r = GeoIP_range_by_ip(gi, '24.24.24.24');
  ...
  GeoIP_range_by_ip_delete(r); (Boris Zentner)
* Fix small memoryleak and wrap around in GeoIP_range_by_ip (Boris Zentner)
* CHECK_CACHE stat the database file not faster than once a second anymore (Patrick McManus)
* Fixed a typo in the geoipupdate(1) manpage and also an non-existent path on Debian (Patrick Matthäi)
* Fixes two little format errors (hyphen used as minus sign) in both manpages (Patrick Matthäi)
* Sync regionName.c with a recent fips code list (Boris Zentner)
* Fix segfault when open failed for a custom file (-f) (Boris Zentner)
* Fix sync geoiplookup's man page with the code (Klaus Heinz)
* remove unused code from GeoIP_country_name_by_addr and GeoIP_country_code3_by_addr (Boris Zentner)
* Fix geoiplookup and geoiplookup6 to distinguish between failed namelookups and unknown ips (Boris Zentner)
* add geoiplookup6 that can handle the new database type GEOIP_COUNTRY_EDITION_V6 (Boris Zentner)
* add new functions to handle ipv6:
    GEOIP_API const char *GeoIP_country_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API const char *GeoIP_country_code_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API const char *GeoIP_country_code3_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API char *GeoIP_org_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API char *GeoIP_org_by_addr_v6 (GeoIP* gi, const char *addr);
    GEOIP_API char *GeoIP_org_by_name_v6 (GeoIP* gi, const char *name);
    GEOIP_API int GeoIP_id_by_addr_v6 (GeoIP* gi, const char *addr);
    GEOIP_API int GeoIP_id_by_name_v6 (GeoIP* gi, const char *host);
    GEOIP_API int GeoIP_id_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API GeoIPRegion * GeoIP_region_by_addr_v6 (GeoIP* gi, const char *addr);
    GEOIP_API GeoIPRegion * GeoIP_region_by_name_v6 (GeoIP* gi, const char *host);
    GEOIP_API GeoIPRegion * GeoIP_region_by_ipnum_v6 (GeoIP *gi, geoipv6_t ipnum);
    GEOIP_API void GeoIP_assign_region_by_inetaddr_v6(GeoIP* gi, geoipv6_t inetaddr, GeoIPRegion *gir);
    GEOIP_API char *GeoIP_name_by_ipnum_v6 (GeoIP* gi, geoipv6_t ipnum);
    GEOIP_API char *GeoIP_name_by_addr_v6 (GeoIP* gi, const char *addr);
    GEOIP_API char *GeoIP_name_by_name_v6 (GeoIP* gi, const char *name);

    # allowed input for addr
    2001:4860:0:1001::68
    ::85.8.93.71
    ::1
    ::5508::5d47
    ::ffff:5508::5d47

    # allowed input for host
    ipv6.google.com
    2001:4860:0:1001::68
    ::85.8.93.71
    ::1
    ::5508::5d47
    ::ffff:5508::5d47
     (Boris Zentner)
* Fix geoiplookup usage string (add -d -f) (Boris Zentner)
* Added GeoIP_range_by_ip, returns the start and end IP address for the range containing the IP address.
  This range has a constant value in the GeoIP database.
* Add geoipupdate-pureperl.pl a alternative geoipupdate version. with Proxy Server support via via the "http_proxy" environment variable. Easy to customize. (Boris Zentner)
* Add WIN64 since WIN32 is not defined on WIN64 Systems (Boris Zentner)
* Fix WIN32 compilation by encircle all MMAP functions with #ifdef WIN32 #endif pairs. MMAP is not avail in W32 (Boris Zentner)
* Update timezone/generate_timeZone.pl (Boris Zentner)
* Update libGeoIP/timeZone.c (Boris Zentner)
* Added GeoIP_printf and GeoIP_fprintf as a experimental feature to
  libGeoIPUpdate. (Boris Zentner, Andrew Droffner)
* Added cast in _iso_8859_1__utf8 function to fix NetWare/Win32 compilation issue (Guenter Knauf)
* Add HTTP Proxy Server support for geoipupdate via the "http_proxy"
  environment variable.
  ie: export http_proxy="http://proxy-hostname:port"
  (Andrew Droffner, Derek Nicol)
* Notice, that __YOU__ need to free the results of

    GeoIP_database_info
    GeoIP_name_by_ipnum
    GeoIP_name_by_addr
    GeoIP_name_by_name
    GeoIP_org_by_ipnum
    GeoIP_org_by_addr
    GeoIP_org_by_name

    not libgeoip
  (Boris Zentner, Andrew Cheung)
* Fixed segfault with geoiplookup, if used with a custom_file database, that
  could not be opened. (Boris Zentner)
* Add Usage info for options -f and -d in geoipupdate (Boris Zentner)
* Fixed segfault with geoipupdate when called with a illformed license file
  (Boris Zentner)
* Update add more timezones to GeoIP_time_zone_by_country_and_region
  (Boris Zentner)
* Add array access functions so programs can avoid accessing the
  arrays directly which whould break binary compatability (Ludwig Nussel at SUSE)
* Updated README to state API is only thread-safe if GEOIP_CHECK_CACHE is not used


1.4.4 2008-1-21

* Updated original geoipupdate to return "Invalid product ID or subscription expired"
* Added BL/Saint Barthelemy, MF/Saint Martin (ISO-3166-1 additions)
* Check for illegal IP strings, return 0 if IP is not well formed IPv4 e.g. 1.2.3.4.5 and 1.2.3
* Clarified that while core GeoIP library is LGPL, libGeoIPUpdate depends on md5.c and types.h which are GPL.
* speedup the conversion from ipstring to ipnum in _GeoIP_addr_to_num. Doubles the speed of GEOIP_MEMORY_CACHE and GEOIP_MMAP_CACHE
* Added new mmap shared memory caching option, GEOIP_MMAP_CACHE (Peter Shipley, LookSmart)
  - mmaps: our maps are shared, but we need only private readonly pages


1.4.3 2007-8-30

! CHANGE with geoiplookup facility: -v flag now returns database info for all databases, not just GeoIP Country
* Added ability to get netmask of network block from last lookup using GeoIP_last_netmask
* Fixed GeoIP_database_info bug with GeoLite City
* Replaced 4 with sizeof(char*) to fix issues with geoipupdate on 64 Bit machines
* Added GeoIP_set_charset function - enables UTF8 output of city name if GEOIP_CHARSET_UTF8 flag is passed
to GeoIP_set_charset
* Fixed segfault issue if calling GeoIP_db_avail before opening a database
* Added continent_code to GeoIP City's record struct (Frank Mather)


1.4.2 2007-2-8

* Added -d flag to enable custom path for geoipupdate utility program (Frank Mather)
* Replaced _WIN32 with WIN32 since WIN32 is already set by compilers
* Moved var definitions to top of code, defined size_t (Guenter Knauf)
* Added Makefile.win32, Makefile.netware, get_ver.awk, geoip.ico to EXTRA_DIST in Makefile.am (Guenter Knauf)


1.4.1 2007-1-2

* Replaced CS/Serbia and Montenegro with RS/Serbia, removed ZR/Zaire, added ME/Montenegro
* Added AX/Aland Islands, GG/Guernsey, IM/Isle of Man, JE/Jersey (ISO-3166-1 changes)
* Added GeoIP_time_zone_by_country_and_region, to lookup zoneinfo timezone by country and region (Frank Mather)
* Added GeoIP_region_name_by_code, to lookup region name from region code (Frank Mather)
* added -f and -d flags to enable custom paths for geoiplookup utility program (Frank Mather)
* Added benchmarks for GeoIP Region and City in test/benchmark.c (Frank Mather)
* Fixed build issue when using --as-needed flag (Diego 'Flameeyes' Pettenò)
* Add sanity checking for filename returned by MaxMind.com server for geoipupdate filename
  (Dean Gaudet, arctic.org)
* Fixed memory leaks under error conditions, buffer overflow using sprintf,
  and issue where a corrupted cache file could core dump the file
  (Nick Galbreath, Right Media Inc)


1.4.0 2006-8-7

* Changed license from GPL to LGPL, so that PHP Extension can be included in PECL (Olivier Hill)
* Rewrote GEOIP_CHECK_CACHE code, fixed numerous bugs
  - CheckCache now works if GeoIP file is overwriten by mv command
  - Fixed bug where CheckCache kept reloading in GEOIP_STANDARD_MODE
  - Fixed segfault issue in GEOIP_MEMORY_CACHE mode
  - Fixed garbage data appearing in GEOIP_INDEX_CACHE mode
  - Fixed realloc in case realloc returns new memory block (Andre Morozov of Stone Steps)
* Updated geoipupdate to print status messages for each database instead of just last database
* Check that gi is not null before running code in GeoIP_delete
* Fixed alpha-3 codes ordering, replaced TLS,TKM,TUN,TON with TKM,TUN,TON,TLS
* TP/East Timor changed to TL/Timor-Leste, reflecting changes in ISO-3166

* Added Netware and Windows makefiles (Guenter Knauf)
* Fixed NetWare compiler issue with char block[block_size] declaration (Guenter Knauf)
* Updated geoipupdate example to run weekly


1.3.17 2006-5-14

* Fixed headers for Windows/Netware compilation (Guenter Knauf)
* Fixed Received Error -21 (Sanity check database_info string failed)
  when running geoipupdate with GeoIP Country when UserId and
  productIds were not specified.  Bug was introduced in 1.3.15.


1.3.16 2006-4-17

* Fixed compliation error in GeoIPUpdate.c


1.3.15 2006-4-14

* Updated README documentation
* Updated geoipupdate so that it writes file as it is uncompressed instead
of storing entire GeoIP.dat file in memory (Frank Mather)
* Updated geoiplookup so that it returns GeoIP Domain Name if available
  (Frank Mather)
* Updated geoipupdate so that it reports whether databases are updated
in non-verbose mode (Frank Mather)


1.3.14 2005-9-7

* Check if byte, ushort, ulong, u16, u32 are defined in configure
  script.  Fixes compilation issue on FreeBSD systems.
* Check for Big Endian byte order (needed for MD5 code in geoipupdate
  to work properly on Mac OS X and other Big Endian processors)
* Fixed GEOIP_CHECK_CACHE mode when used with GEOIP_STANDARD to
  only refresh upon file change
* Fixed memory leak when refreshing file in GEOIP_CHECK_CACHE mode
* Updated ltmain.sh to support Debian GNU/k*BSD bug #315425 (Marek Habersack)
* Added lookup functions using IP numeric representation as input (Frank Mather)
* Removed geoipexport
* Replaced Yugoslavia with Serbia and Montenegro
* Updated geoiplookup to only perform country lookup once instead of twice by
  using GeoIP_id_by_name


1.3.13 2005-8-1

* Fixed autoconf weirdness that resulted in libraries being
  installed without .so suffix


1.3.12 2005-7-19

* Removed -lGeoIP from libGeoIPUpdate_la_LIBADD - fixes compilation error
  if GeoIP isn't already installed (Thomas Steudten)


1.3.11 2005-7-7

* Fixed gcc warnings and bug.  Use int
  instead of char for checking the return value of getopt in geoipupdate.c.
  Moved the internal functions to GeoIP_internal.h to get rid
  of those 'implicit declaration' warnings. (Ludwig Nussel/SUSE)
* Cleaned up name space by prefixing internal functions with
  _GeoIP* (Ludwig Nussel/SUSE)
* Memory Leak fix for GeoIP City if fread error
* Added more verbose error messages for geoipupdate (Frank Mather)
* Added check for zlib.h to configure.in


1.3.10 2005-4-17

* Added types.h to Makefile.am - fixes compilation error


1.3.9 2005-4-14

* fixed bug with GEOIP_INDEX_CACHE (Frank Mather)
* fixed segfault issue if GeoIP.dat not found (Frank Mather)
* Updated MD5 checksum code to use GnuPG code which works
  on 64bit machines (Frank Mather)
* Fixed memory leak in test-geoip-isp.c and test-geoip-org.c
* Added support for GeoIP Domain Names in geoipupdate


1.3.8 2004-11-7

* Updated geoipupdate to report invalid userID and productID errors
* Check if gethostbyname_r is version that returns int or is other version
  - should fix compile errors on Solaris and FreeBSD
* Updated URL to get license key, userId, and product Ids in conf/GeoIP.conf.default
* Updated test case, removed www.asahi.com
* Added support for GEOIP_INDEX_CACHE - which just caches
  the most frequently access index portion of the database, resulting
  in faster lookups than GEOIP_STANDARD, but less memory usage than
  GEOIP_MEMORY_CACHE (Frank Mather)


1.3.7 2004-10-5

* Updated test case, removed www.bundesregierung.de added www.asahi.com


1.3.6 2004-8-8

* Check for gethostbyname_r support in configure (Mac OS X doesn't support gethostbyname_r)
* Made GeoIP City code thread safe
* Fixed bug with geoipupdate reading in product ids
* Added support for GeoIP Netspeed geoipupdate
* Fix memleak in lookupaddress (Ludwig Nussel/SUSE)
* Add prototype for _full_path_to to make 64bit clean
  (Ludwig Nussel/SUSE)
* Add return values to test programs (Ludwig Nussel/SUSE)


1.3.5 2004-7-5

* Added more documentation to README file
* Made GEOIP_CHECK_CACHE work with GEOIP_STANDARD mode - reloads filehandle
  in case file changes.
* Added GeoIP_country_code_by_ipnum and GeoIP_id_by_ipnum to use
  existing ulong IP Address in numeric form instead of having to
  convert it to string (Boris Hajduk)
* Made code thread safe by replacing gethostbyname with gethostbyname_r


1.3.4 2004-6-4

* Fixed bug where *.gz file(s) didn't get removed after geoipupdate


1.3.3 2004-6-2

* Added support for NetSpeed lookup to geoiplookup
* inet_addr patch for 64 bit systems (Thomas Steudten)
* Added Support for automated downloads of GeoIP Region, City, ISP and
  Organization databases (Frank Mather)
* INADDR_NONE Patch for Solaris 9 (John Young)


1.3.2 2004-4-20

* Added support for Maxmind NetSpeed

* MinGW patch from Stanislaw Pusep

  I was re-compiling Geolizer (http://sysd.org/log.php#glzr) on Win32 so I
  firstly needed to put up-to-date Win32 compatibility of libGeoIP itself.
  Fortunately MinGW plataform evolved a lot since last time I used it to
  compile libGeoIP. I'm sending you the patch with changes required for
  libGeoIP to work on both Win32 and UN*X. UN*X behavior is unaffected. Now,
  detailed explanation of what I did at all:

  1) Made correct header imports for both Win32 and UN*X. UN*X imports netdb.h
     & netinet/in.h and Win32 imports windows.h & winsock.h
  2) Win32 gethostbyname() is only able to resolve hostnames, it can't convert
     "127.0.0.1" string to 32-bit IP address. Thus I added lookupaddress()
     function that safely resolves any string to IP address and replaced all
     gethostbyname() calls by it.
  3) Database files were referenced by pre-compiled static strings. I
     malloc()ed buffers for file names so they can be changed "on fly". Thus,
     on Win32 version GeoIP.dat & other files are being seeked in the same
     directory as executable file or library.
  4) Added README.MinGW file with brief explanation on how to get GeoIP
     working under MinGW system.


1.3.1 2003-11-11

* Check for stdint.h in autoconf (Sean Chittenden)
* prevent the geoipupdate man page from trying to install itself directly in
  the system directory (Gyepi Sam)


1.3.0 2003-09-29

* Fixed includes to compile on Windows (Fabrice Colin)
* Removed the _addr_to_num() calls from GeoIP_*_by_name()
* _seek_record() optimizations (Maurice Cinquini)
 1) Use a single buf ptr inside the loops.
    Set to the stack buffer or the cached memory the start of the function.
 2) Unroll the i=0,1 loop to allow constant folding.
 3) Unroll the j loop for the common case of j = STANDARD_RECORD_LENGTH
    (I've already done the above changes see attached function.)
    With gcc -O2 calculating x[0] and x[1] for STANDARD_RECORD_LENGTH now
    only takes 15 (was > 100) i80x86 instructions with 6 byte accesses of RAM.
 4) only calculate x[0], x[1] when needed, may be a bigger win
    than the above since all the other optimizations above only reduced
                    CPU instructions operating on CPU cached RAM.
! IMPORTANT API Change: Changed GeoIPRegion to have region in structure. Saves space and a malloc.
  Since GeoIPRegion.region is no longer a pointer but an in-structure
  array so test the first byte of region == 0 rather testing if the region
  pointer is NULL. (Maurice Cinquini)
* Added GeoIP_assign_region_by_inetaddr which doesn't do any mallocs and made all other region APIs go thru it (Maurice Cinquini)
* Replaced _h_addr_to_num() with ntohl() and removed _h_addr_to_num() (Maurice Cinquini)
* Fixed bug when IP address not found in region rev1 database (Jason Linhart)
* Added added extern "C" to GeoIPCity.h fixes problems when included in C++ library


1.2.2 2003-08-10

* Added support for GeoIP ISP Edition identifier
* Fixed bug in GeoIP_database_info (Jason Linhart)
* Added support for GeoIP AS Number Edition
! renamed GeoIP_org_by_* functions to GeoIP_name_by_* to reduce confusion
  since these functions are used by GeoIP ISP and GeoIP ASNum as well
  as GeoIP Organization
* Added support for GeoIP Proxy Edition
! renamed GeoIP_country_id_by_* functions to GeoIP_id_by_*


1.2.1 2003-07-12

* Added GeoIP_record_id_by_addr and GeoIP_next_record functions
* Added support for new GeoIP Region format, including Canadian Provinces


1.2.0 2003-04-26

* Added support for GeoIP City format revision 1, including dma code and area code
* geoiplookup returns results from GeoIP Region, City, ISP and Organization databases
* Standardized location for GeoIP Region, City, ISP and Organization databases
* Added GeoIP_open_type to open database from default location for other dbs besides country
* Added check to make sure that the appropriate database is loaded for each lookup method
* Updated update code to check for first 12 characters of license key
* Added GeoIP_country_continent array to lookup continent by country ID


1.1.9 2003-03-10

* merged windows patch into main code base (Kenneth R. Robinette)
* Changed const int to #define for windows compatibility


1.1.8 2003-03-04

* Fixed bug with city database introduced in 1.1.6


1.1.7 2003-03-04

* Fixed bug introduced in 1.1.6 when run in GEOIP_STANDARD mode
* Added test to test GEOIP_STANDARD


1.1.6 2003-03-03

* Added spec for building RPMs (Ryan Weaver)
* Added support for 4byte records for Organization database
* Changed Taiwan, Province of China to Taiwan


1.1.5 2003-02-10

* Added support for GeoIP Organization database


1.1.4 2002-12-30

* Cast number to int in _num_to_addr in geoipexport (Ralf S. Engelschall)
* Removed printf debug statements from geoipexport
* correct library build ordering (Ralf S. Engelschall)
* ulong -> unsigned long (Sean Chittenden)


1.1.3 2002-12-24

* Added GeoIPUpdate.h to EXTRA_DISTS
* Compile fixes for Solaris, FreeBSD (Michael McClennen, Corris Randall)
* Handle NULL in printf in test-geoip-region


1.1.2 2002-12-16

* Added support for postal codes
* Added geoipexport, program to export bit binary file to
  binary tree format and csv format
* Split update code into separate library, GeoIPUpdate.la
* Allow passing NULL callback to GeoIP_update_database function
  (Sean Chittenden)
* Added geoipexport program, exports to CSV file
* Added GeoIP_database_edition method
* Changed DATADIR to GEOIPDATADIR


1.1.1 2002-11-07

* Fixed segfault issue with GeoIPRegion_delete
* Handle test failures where lookup returns NULL more gracefully


1.1.0 2002-11-06

* Perform sanity checking before installing datebase using geoipupdate
* Removed file locking, since we install file by renaming instead of writing to it.
* Fixed geoipupdate to check for NULL return value
* Added constants for different editions
* Added O1 code for "Other country", used in per-country city editions
* fixed multi-line string literals warning in test-geoip.c
* Use enum constants for GeoIP_update_database values
* Added GEOIP_CHECK_CACHE option (not working yet)


1.0.10 2002-10-28

* IMPORTANT API Change - Return NULL instead of '--' and 'N/A'
  Be sure to check the return value for NULL to avoid segmentation faults!!!!
* Added callback to print messages from GeoIP_update_database
* Moved GeoIPConfFile to geoipupdate.c
* Changed databaseSegments to unsigned int (Chris Gibbs)
* Fixed compiler warnings (Chris Gibbs)
* API Change - GeoIPRegion region member set to NULL when no region available
* Change short int to int (Chris Gibbs)
* Added write/read file locking for GeoIPUpdate.c/GeoIP.c


1.0.9 2002-10-16

* removed -ansi from Makefile.am to avoid compile error on Solaris 8
* Compile fix for FreeBSD Stable (Kimura Fuyuki)


1.0.8 2002-10-05

* Included header required for *BSD (Akinori Musha)


1.0.7 2002-10-05

* Fixed compilation error with GeoIPUpdate.c


1.0.6 2002-10-04

* Moved update code into separate file
* Added md5 checksums to update code
* Fixed memory leak when running geoiplookup -v
* Moved const RECORD_LENGTH to #define RECORD_LENGTH for Windows compatibility
  (Randy Kobes)
* Cleaned up GeoIP_new code


1.0.5 2002-09-23

* Supports GeoIP Regional Edition
* Macau is now "Macao" per ISO 3166-1 change
* Romania "ROM" is now "ROU" per ISO 3166-1 change
* Added #define for memcpy -> BSD's bcopy (Chris Gibbs)
* Removed "private" functions from GeoIP.h


1.0.4 2002-08-27

* rewrote _seek_country to use loop instead of recursion for faster performance
* Removed "orphan" nodes from demo database resulting in smaller size (Jason Linhart)
* Moved changes for building windows DLL into separate patch
* Fixed segfaults when passed malformed IP addresses


1.0.3 2002-08-26

* Added more changes for windows compatibility
  (Stanislaw Pusep)
* Added benchmark program


1.0.2 2002-08-21

* Open database using "rb" for windows compatibility
  (Stanislaw Pusep)
* Removed superfluous inet_ntop command (Stanislaw Pusep)


1.0.1 2002-08-20

* Fixed bug with resolving hostnames
* More fixes for compiler warnings (Chris Gibbs)
* Changed int to unsigned int in _is_ipaddr (Chris Gibbs)


1.0.0 2002-08-12

* Changed license to GPL
* Don't perform Reverse DNS lookups on IP addresses
* Only include getopt.h on Linux (OpenPKG patch)
* Avoid the_license_key_str warning (OpenPKG patch)
* Added license for March 2002 database


0.3.0 2002-08-04

* Added support for 'A2', Satellite Providers


0.2.8 2002-07-30

* Handle malformed input gracefully
* Added section to README on Solaris workarounds
* Added geoipupdate man page


0.2.7 2002-07-27

* Added section to README on automatic updates
* link to socket library on solaris


0.2.6 2002-07-25

* optimized GeoIP_open (Chris Gibbs)
* check for partial file read in GeoIP_open (Chris Gibbs)
* optimized _addr_to_num() (Chris Gibbs)
* changed write and read to send and recv for sockets
* Only install GeoIP.conf and GeoIP.dat if not already installed


0.2.5 2002-07-22

* Added verbose option to GeoIP_update_database


0.2.4 2002-07-22

* Fix for GeoIP_update_database


0.2.3 2002-07-22

* Fixes for FreeBSD
* All calls to malloc are checked for NULL pointer (Chris Gibbs)
* Fixed spelling of "Kazakhstan" (Chris Gibbs)
* Initialize cache_buf to NULL (Chris Gibbs)
* More memory leak fixes (Chris Gibbs)


0.2.2 2002-07-18

* Added update database function
* Fixed memory leak in GeoIP_new (Chris Gibbs)


0.2.1 2002-07-03

* Added support for anonymous proxies


0.2.0 2002-06-23

* Added new memory caching option for improved performance


0.1.7 2002-05-29

* Only add -lnsl for systems that support libnsl
* Added decl for 3 letter country code array to GeoIP.h


0.1.6 2002-05-25

* Added 3 letter country code


0.1.5 2002-05-23

* Added -lnsl fixed compile errors


0.1.4 2002-05-11

* Fixed bugs in demo March 2002 database


0.1.3 2002-04-21

* Fixed bug related to signed int (Brian Grossman)
* Better error handling when hostname not found
* Fixed bug when netmask=32 for netblock


0.1.2 2002-04-20

* Added two new functions, GeoIP_country_id_by_addr
  and GeoIP_country_id_by_name.
* Made GeoIP_country_code and GeoIP_country_name
  viewable outside of library, to be with with
  GeoIP_country_id_by_* functions.


0.1.1 2002-04-07

* GeoIP.h is now installed to includedir
* constructor and destructor are now provided by
    GeoIP_new, GeoIP_open, and GeoIP_delete


0.1.0 2002-04-07

* Initial release