|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vladimir Podgorny 2:5020/400 26 Mar 2002 17:00:00 To : Stephen V Avdeyev Subject : Re: IP и маски -------------------------------------------------------------------------------- Stephen V Avdeyev <Stephen.V.Avdeyev@f44.n5090.z2.fidonet.org> wrote: > Добрый день/вечер, Proext! > > Tuesday March 19 2002 12:10, PROext wrote to All: > > P> Есть адрес в формате address/masklen, например: > P> 195.230.128.0/19 > > P> Как наиболее быстро определить, попадает ли мой адрес (например, > P> 195.230.131.18) в эту область? > use Net::Netmask qw(); sub isinnetwork($$) { my($addr, $cidr) = @_; my $block = new2 Net::Netmask($cidr) or return(); return($block->match($addr) ? 1 : ()); } > > sub isinnetwork () { > my ($an_ip, $a_net) = @_; > if ($a_net !~ /\//) { > return ($an_ip eq $a_net); > } > my ($n_addr, $sfx) = split /\//, $a_net; > $sfx = 32 unless defined $sfx; > my $imask = 0xFFFFFFFF ^ ((1 << (32 - $sfx)) -1); > my $p_ip = unpack('N',pack('C4', split /\./,$an_ip)); > my $p_net = unpack('N',pack('C4', split /\./,$n_addr)); > return ($p_ip & $imask) == ($p_net & $imask); > } > > > За сим откланиваюсь, Stephen [Argus team] > > ... http://www.ktk.ru/ - "Крастелеком" /телекоммуникационные технологии -- VP992-RIPE --- ifmail v.2.15dev5 * Origin: Adamant ISP news server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/12034071b1639.html, оценка из 5, голосов 10
|