22. november 2010 - 19:52
Der er
5 kommentarer og 1 løsning
IPv6 Host range
Hejsa. Ja, jeg ved det kan blive mange ;-) Men jeg søger et script der kan returnere et array med host adresser udfra en ipv6 adresse i notationen :::::/nn
Annonceindlæg fra Publicis Sapient
23. november 2010 - 19:32
#2
Sorry. Yderligere forklaring: Hvis jeg f.eks. angiver et ip som: 2a01:e35:aaa4:6860:a5e7:5ba9:965/64 skal der findes start og slut adresse på det segment hvori ovenstående segment findes. 1 1050::5:600:300c:326b/30 2 1050::1:5:600:300c:326b/64 3 1050::2:5:600:300c:326b/64 4 1050::3:5:600:300c:326b/64 5 1050::4:5:600:300c:326b/64 6 1050::5:5:600:300c:326b/64 7 1050::6:5:600:300c:326b/64 8 1050::7:5:600:300c:326b/64 9 1050::8:5:600:300c:326b/64 10 1050::9:5:600:300c:326b/64 11 1050::a:5:600:300c:326b/64 12 1050::b:5:600:300c:326b/64 Så det kunne give noget ala ovenstående.
23. november 2010 - 22:06
#3
Nåå. Det er vel mere et matematisk problem, jeg kan dog ikke gennemskue hvordan du kommer fra "2a01:e35:aaa4:6860:a5e7:5ba9:965/64" til den liste du viser. Hvordan/hvor har du fundet den liste?
24. november 2010 - 08:00
#4
Jeps, de er ikke ens. Jeg fandt et site som kan lave beregninger på ipv6 - og vise sub-subnets ;-) Men det site fortalte mig også at den ipadresse jeg brugte først - ikke var valid.. så jeg måtte benytte mig af en anden. Det jeg nok søger er noget ala følgende (Lettere revideret fra php.net): (bare oversat til at være til ipv6) function host_range ($ip) { // $ip = "192.168.37.215/27"; $ip_arr = explode('/', $ip); if ($ip_arr[1] < 32) { $bin = ''; for($i=1;$i<=32;$i++) { $bin .= $ip_arr[1] >= $i ? '1' : '0'; } $ip_arr[1] = bindec($bin); $ip = ip2long($ip_arr[0]); $nm = ip2long($ip_arr[1]); $nw = ($ip & $nm); $bc = $nw | (~$nm); $host_range = array (long2ip($nw+1), long2ip($bc - 1)); return $host_range; } else return array ($ip_arr[0], $ip_arr[0]); }