@@ -31,7 +31,7 @@ getpackageversion() ->
3131 end .
3232
3333getmoduleversion () ->
34- " 2.0 .0" .
34+ " 2.1 .0" .
3535
3636getdatabaseversion () ->
3737 case ets :info (mymeta ) of
@@ -405,8 +405,13 @@ isproxy(Ip) ->
405405query (Ip , Mode ) ->
406406 X = " INVALID IP ADDRESS" ,
407407 Y = " INVALID BIN FILE" ,
408- From = 281470681743360 ,
409- To = 281474976710655 ,
408+ Fromv4mapped = 281470681743360 ,
409+ Tov4mapped = 281474976710655 ,
410+ From6to4 = 42545680458834377588178886921629466624 ,
411+ To6to4 = 42550872755692912415807417417958686719 ,
412+ Fromteredo = 42540488161975842760550356425300246528 ,
413+ Toteredo = 42540488241204005274814694018844196863 ,
414+ Last32bits = 4294967295 ,
410415
411416 case ets :info (mymeta ) of
412417 undefined ->
@@ -441,8 +446,12 @@ query(Ip, Mode) ->
441446 {ok , {X1 , X2 , X3 , X4 , X5 , X6 , X7 , X8 }} ->
442447 Ipnum = (X1 bsl 112 ) + (X2 bsl 96 ) + (X3 bsl 80 ) + (X4 bsl 64 ) + (X5 bsl 48 ) + (X6 bsl 32 ) + (X7 bsl 16 ) + X8 ,
443448 if
444- Ipnum >= From andalso Ipnum =< To ->
445- search4 (S , Ipnum - From , Databasetype , 0 , Ipv4databasecount , Ipv4databaseaddr , Ipv4indexbaseaddr , Ipv4columnsize , Mode );
449+ Ipnum >= Fromv4mapped andalso Ipnum =< Tov4mapped ->
450+ search4 (S , Ipnum - Fromv4mapped , Databasetype , 0 , Ipv4databasecount , Ipv4databaseaddr , Ipv4indexbaseaddr , Ipv4columnsize , Mode );
451+ Ipnum >= From6to4 andalso Ipnum =< To6to4 ->
452+ search4 (S , (Ipnum bsr 80 ) band Last32bits , Databasetype , 0 , Ipv4databasecount , Ipv4databaseaddr , Ipv4indexbaseaddr , Ipv4columnsize , Mode );
453+ Ipnum >= Fromteredo andalso Ipnum =< Toteredo ->
454+ search4 (S , ((bnot Ipnum ) band Last32bits ), Databasetype , 0 , Ipv4databasecount , Ipv4databaseaddr , Ipv4indexbaseaddr , Ipv4columnsize , Mode );
446455 true ->
447456 search6 (S , Ipnum , Databasetype , 0 , Ipv6databasecount , Ipv6databaseaddr , Ipv6indexbaseaddr , Ipv6columnsize , Mode )
448457 end ;
0 commit comments