#!/usr/bin/env bash

## - Test of valid IPv4 Address
## -
## -    Returns 0 if valid, > 0 otherwise
## -
is_valid_ipv4() {
  local -a octets=( ${1//\./ } )
  local RETURNVALUE=0
 
  # return an error if the IP doesn't have exactly 4 octets
  [[ ${#octets[@]} -ne 4 ]] && return 1
 
  for octet in ${octets[@]}
  do
    if [[ ${octet} =~ ^[0-9]{1,3}$ ]]
    then # shift number by 8 bits, anything larger than 255 will be > 0
      ((RETURNVALUE += octet>>8 ))
    else # octet wasn't numeric, return error
      return 1
    fi
  done
  return ${RETURNVALUE}
}

if [ "X$@" = "X" ]; then
   echo -e "\n\t\033[33m\033[1mNo argumnet given!\033[m\n"
   exit 1
fi

if is_valid_ipv4 $@ ; then
   echo -e "\n\t\033[32m\033[1m$@ is a valid IPv4 Address\033[m\n"
else
   echo -e "\n\t\033[31m\033[1m$@ is NOT a valid IPv4 Address\033[m\n"
fi

exit
