Posted to tcl by kbk at Mon Dec 02 13:50:45 GMT 2013view pretty

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
}