Posted to tcl by kbk at Mon Dec 02 13:50:45 GMT 2013view raw
- set spec 192.168.1.0/28
- regexp {(\d+)[.](\d+)[.](\d+)[.](\d+)/(\d+)} $spec -> b0 b1 b2 b3 size
- set quad [expr {($b0 << 24) | ($b1 << 16) | ($b2 << 8) | $b3}]
- for {set i 0} {$i < (1<<(32-$size))} {incr i} {
- set q2 [expr {$quad + $i}]
- set result [expr {$q2 & 0xff}]
- for {set j 0} {$j < 3} {incr j} {
- set q2 [expr {$q2 >> 8}]
- set result [expr {$q2 & 0xff}].$result
- }
- puts $result
- }