#!/bin/bash
#
# ip_broadcast bestimmt zu einer gegebenen IP-Adresse mit IP-Netbits die Broadcast Adr.
#
if [[ $# -ne 2 ]]; then
  echo "usage: $0 <ip-address> <netbits>"
else
  IFS='.' read a b c d <<<$1
  if [[ -z "$a" || -z "$b" || -z "$c" || -z "$d" ]]; then
    echo "usage: $(basename $0) <ip-address> <netbits>"
    exit 1
  fi
  nb=$2
  if [[ $nb -lt 0 || $nb -gt 32 ]]; then
    echo "usage: $(basename $0) <ip-address> <netbits>"
    exit 1
  fi
  if [[ $nb -le 8 ]]; then
    echo $(( $nb < 8 ? $a | (255 >> $nb) : $a )).255.255.255
  elif [[ $nb -le 16 ]]; then
    echo $a.$(( $nb < 16 ? $b | (255 >> ($nb-8)) : $b )).255.255
  elif [[ $nb -le 24 ]]; then
    echo $a.$b.$(( $nb < 24 ? $c | (255 >> ($nb-16)) : $c )).255
  else
    echo $a.$b.$c.$(( $d | (255 >> ($nb-24)) ))
  fi
fi
