#!/bin/sh # LEG21062004 # # Baby router Generator # $1 = current node # $2 = network database # Welcome echo Baby route Generator echo This node: $1 # list of nodes function nodes () { sed '/^$1/D' $2 | cut -d: -f1 | sort -u } echo All nodes: nodes $1 $2 echo # local IP's function local_ips () { sed -n "/$1/s/^\([[:print:]]\+:[[:space:]]*\)\(.*\)\/\(.*\)/\2/p" $2 } echo local IP\'s: local_ips $1 $2 echo # local networks function local_nets () { for i in $( sed -n "/$1/s/^\([[:print:]]\+:[[:space:]]*\)\(.*\)/\2/p" $2); do ipsc -g $i \ | sed -n "/^Network address:/s/^Network address:[[:space:]]*\(.*\)/\1/p" done \ | sort -u } echo local Networks: local_nets $1 $2 echo function neighbours () { for net in $(local_nets $1 $2); do sed "/$1\|^$/D" $2 \ | while read NAME IP ; do THIS_NET=$( ipsc -g $IP \ | sed -n "/^Network address:/s/^Network address:[[:space:]]*\(.*\)/\1/p") if [ "$net" == "$THIS_NET" ]; then echo $NAME $THIS_NET fi done done | cut -d: -f1 } echo Neighbours: neighbours $1 $2 echo # neighbour gateways function neighbour_gws () { LOCAL_NETS=$(local_nets $1 $2) LOCAL_NETS=$(echo $LOCAL_NETS | sed -e "s/ /\\\\|/g") for neighbour in $(neighbours $1 $2); do NEIGH_NETS=$(local_nets $neighbour $2) REMOTE_NETS=$(echo $NEIGH_NETS | sed "s/$LOCAL_NETS//g") [ "$(echo $REMOTE_NETS | sed 's/ //g')" ] && echo $neighbour: $REMOTE_NETS done | sort -u } echo Neighbour gateways: neighbour_gws $1 $2 echo