Skip to content

Commit 70cfe33

Browse files
committed
Added support for 6to4 and Teredo.
1 parent 850eac5 commit 70cfe33

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

ip2proxy.erl

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ getpackageversion() ->
3131
end.
3232

3333
getmoduleversion() ->
34-
"2.0.0".
34+
"2.1.0".
3535

3636
getdatabaseversion() ->
3737
case ets:info(mymeta) of
@@ -405,8 +405,13 @@ isproxy(Ip) ->
405405
query(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

Comments
 (0)