#!/bin/sh -efu

ip="${1%%/*}"
mask="${1##*/}"

rdns_net()
{
    local net="$1";shift
    local pos="$1";shift
    local inc="$1";shift

    local IFS='.'
    set -- $net
    case "$pos" in
	1)
	    printf "%s\n" "$(( $1 + $inc ))"
	;;
	2)
	    printf "%s.%s\n"  "$(( $2 + $inc ))" "$1"
	;;
	3)
	    printf "%s.%s.%s\n"   "$(( $3 + $inc ))" "$2" "$1"
	;;
    esac
}

net="$(netname "$ip/$mask"|cut -f1)"
net="${net%%/$mask}"

if [ "$mask" -gt 0 -a "$mask" -le 8 ];then
    nmask=8
    pos=1

elif [ "$mask" -gt 8 -a "$mask" -le 16 ];then
    nmask=16
    pos=2
elif [ "$mask" -gt 16 -a "$mask" -le 24 ];then
    nmask=24
    pos=3
else
    mask=24
    nmask=24
    pos=3
fi

num="$(( 2**($nmask - $mask) - 1 ))"

for i in `seq 0 $num` ;do
    rdns_net "$net" "$pos" "$i"
done
