#!/bin/bash
#
# sccl_update_ips
#
# IP-Adresse der U2W-Kommunikation updaten
###########################################################
#
. $(dirname $0)/globals.settings
#
unset LOCAL
while getopts l? op; do
  case "$op" in
   l) LOCAL=1;;
   *) echo "usage: $MYPRG [-l]"
      exit 1
  esac
done
#
shift $(( $OPTIND - 1))
#
BASEDIR=/etc/sccl
#
if [[ ! -f $BASEDIR/sccl.conf ]]; then
  echo "$BASEDIR/sccl.conf nicht gefunden"
  exit 1
fi
#
. $BASEDIR/sccl.conf
#
echo "r 127.0.0.1" >"$U2WHOSTSDAT".new
#
for i in $NODES $HBNODES; do
  if ! grep -q "[[:blank:]]$i[[:blank:]]" <<<" $UNSECURENODES "; then
    H=$(getent ahosts $i 2>/dev/null | sed -n 's/^\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/p' | sort -u)
    if [[ -n "$H" ]]; then
      if [[ "$H" == 127.0.* ]]; then
        ip -4 -o addr show scope global primary | sed -n 's|.*inet \([^/]*\)/.*|r \1|p' >>"$U2WHOSTSDAT".new
      else
      echo "$H" | sed 's/^/r /' >>"$U2WHOSTSDAT".new
      fi
    else
      echo
      echo "Warnung: zum Knoten $i kann keine IP-Adresse bestimmt werden."
      echo
    fi
    ./sccl_get_ips $i | sed 's/^/r /' >>"$U2WHOSTSDAT".new
  fi
done
#
if [[ -f $RESOURCES ]]; then
  awk '/^[^#]*IP:[^:]*:[^:]*:[^:]*:ROUTE/{for(i=3;i<=NF;i++){split($i,s,":");if(s[1]=="IP"&&s[5]=="ROUTE")printf("r %s\n",s[3])}}' $RESOURCES >>"$U2WHOSTSDAT".new
fi
#
if [[ -s "$U2WHOSTSDAT".new ]]; then
  sort -u "$U2WHOSTSDAT".new >"$U2WHOSTSDAT"
  rm "$U2WHOSTSDAT".new
  if [[ -z "$LOCAL" ]]; then
    ./sccl_dist_config "$U2WHOSTSDAT"
  fi
fi
