#!/bin/bash
#
# ip_check_net
#
#################################
#
IFS='.' read a b c d <<<$1
if [[ -z "$a" || -z "$b" || -z "$c" || -z "$d" ]]; then
  echo "usage: $(basename $0) <ip-address>"
  exit 1
fi

tp=$(( (( $a * 256 + $b) * 256 + $c) * 256 + $d ))
ip -o -4 a show scope global primary | sed -n 's|^.*: *\([^ ]*\)  *inet  *\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\([0-9]*\) .*|\1 \2 \3 \4 \5 \6|p' | while read dev a b c d m; do
  mask=$(( 4294967295 & ~( 4294967295 >> $m ) ))
  t=$(( (( $a * 256 + $b) * 256 + $c) * 256 + $d ))
  if [[ $(( $t & $mask )) = $(( $tp & $mask )) ]]; then
    echo $dev $m
  fi
done
