Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
jest sobie taki banalnie prosty przyklad:
#!/usr/bin/perl use Net::IP; my $ip = new Net::IP ('192.168.1.0/24') or die (Net::IP::Error()); print ("IP : ".$ip->ip()."\n"); print ("Sho : ".$ip->short()."\n"); print ("Bin : ".$ip->binip()."\n"); print ("Int : ".$ip->intip()."\n"); print ("Mask: ".$ip->mask()."\n"); print ("Last: ".$ip->last_ip()."\n"); print ("Len : ".$ip->prefixlen()."\n"); print ("Size: ".$ip->size()."\n"); print ("Type: ".$ip->iptype()."\n"); print ("Rev: ".$ip->reverse_ip()."\n");
I pieknie wszystko liczy w IPv4.
Ale kiedy dam mu adres IPv6 - celem osiągnięcia takich samych informacji, sprawa się nieco komplikuje, przy adresie IPv6:
#!/usr/bin/perl use Net::IP; my $ip = new Net::IP ('2001:470:6e:d4::2/64') or die (Net::IP::Error()); print ("IP : ".$ip->ip()."\n"); print ("Sho : ".$ip->short()."\n"); print ("Bin : ".$ip->binip()."\n"); print ("Int : ".$ip->intip()."\n"); print ("Mask: ".$ip->mask()."\n"); print ("Last: ".$ip->last_ip()."\n"); print ("Len : ".$ip->prefixlen()."\n"); print ("Size: ".$ip->size()."\n"); print ("Type: ".$ip->iptype()."\n"); print ("Rev: ".$ip->reverse_ip()."\n");
Daje wynik:
./adres Invalid prefix 00100000000000010000010001110000000000000110111000000000110101000000000000000000000000000000000000000000000000000000000000000010/64 at ./adres line 5.
przestudiowałem cały opis modułu Net::IP, i wszystko wyglada niby prawidłowo, a rezultat niestety jest nieprawidłowy.
I nawet nie wiem,czy to błąd w kodzie, czy moduł perla ma uczulenie na maski IPv6.
Bo kiedy wpiszę sam adres IP Ipv6 bez maski, to też pokazuje prawidłowo,a wykłada się na masce.
./adres IP : 2001:0470:006e:00d4:0000:0000:0000:0002 Sho : 2001:470:6e:d4::2 Bin : 00100000000000010000010001110000000000000110111000000000110101000000000000000000000000000000000000000000000000000000000000000010 Int : 42540578165301444715705215526870450178 Mask: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Last: 2001:0470:006e:00d4:0000:0000:0000:0002 Len : 128 Size: 1 Type: GLOBAL-UNICAST Rev: 2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.4.d.0.0.e.6.0.0.0.7.4.0.1.0.0.2.ip6.arpa.
Sam adres użyty do testów jest całkowicie prawidłowy i działający:
sixbone Link encap:IPv6-in-IPv4 inet6 addr: fe80::b2d7:cc51/128 Scope:Link inet6 addr: 2001:470:6e:d4::2/64 Scope:Global UP POINTOPOINT RUNNING NOARP MTU:1280 Metric:1 RX packets:20125 errors:0 dropped:0 overruns:0 frame:0 TX packets:13422 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:23233366 (22.1 MiB) TX bytes:1488476 (1.4 MiB)
Jak to poprawić?
Pozdrawiam
;-)
Ostatnio edytowany przez Jacekalex (2012-03-23 18:23:16)
Offline