#
# route: rules to append route address
#

REVISION_ID='@(#)route	3.6 (motonori/WIDE) 2/26/94'

#|# routing description file
#|#ROUTE_ADDRESS_FILE=

: ${WIDE_EXTENDED_MACRO=no}
if [ "$ROUTE_ADDRESS_FILE" ]
then

	if [ "$REVISION_ID_LIST" ]
	then
		REVISION_ID_LIST="$REVISION_ID_LIST\\
# $REVISION_ID"
	else
		REVISION_ID_LIST="# $REVISION_ID"
	fi

	if [ "$WIDE_EXTENDED_MACRO" != no ]
	then
		_ALLOC_MODE=extend
	else
		_ALLOC_MODE=normal
	fi
	_ALLOC_TYPE=pair
	_ALLOC_DIR=up
	_ALLOC_USAGE='router/destination [route]'

	# preserve argument vector
	ARVG="$@"

HDRROUTE='\
# rout address adding definition\
#DCroute1\
#CCdom1.domain dom2.domain dom3.domain'

ROUTERULE='\
# route address adding rules\
#R$*<@$*DOMAIN_NAME>$*	$:<@ROUTE>:$1@$2DOMAIN_NAME$3\
#R$*<@$*$=C>$*		$:<@$C>:$1@$2$3$4	sample rule with macro/class'

	for RF in $ROUTE_ADDRESS_FILE
	do

	    # if ROUTE_ADDRESS_FILE exists
	    if [ -f "$RF" ]
	    then

		# parse one of ROUTE_ADDRESS_FILE
		exec < "$RF"
		while read LINE
		do

			case "$LINE" in
			'') ;;  # skip
			\#*) ;; # skip
			*)
#				set $LINE
				eval "set `echo $LINE`"

				case "$1" in

				V*|v*)	# version number
shift
REVISION_ID_LIST="$REVISION_ID_LIST\\
# $@" ;;

				G*|g*)	# Gateway description line
					if [ "$CF_FORMAT" = NMTC ]
					then
echo "route: G record should not be used with NMTC." 1>&2
					fi
					# allocate class/macro character pair
					. $MASTERDIR/$CHARALLOC
					CHAR=$_ALLOC_CHAR

ROUTERULE="$ROUTERULE"'\
R$*<@$*$='$CHAR'>$*		$:<@$'$CHAR'>:$1@$2$3$4'
HDRROUTE="$HDRROUTE\\
D$CHAR$2$3" ;;

				D*|d*)	# Domain description line
					if [ "$CF_FORMAT" = NMTC ]
					then
echo "route: D record should not be used with NMTC." 1>&2
					fi
					case "$2" in
					/*)	# use file class
HDRROUTE="$HDRROUTE\\
F$CHAR $2" ;;
					*)	# define a member of the class
						# in config file
shift
HDRROUTE="$HDRROUTE\\
C$CHAR $@" ;;
					esac ;;

				R*|r*)	# static routing definition
					#  without macro/class

ROUTERULE="$ROUTERULE"'\
R$*<@$*'"$2"'>$*	$:<@'"$3$4"'>:$1@$2'"$2"'$3' ;;

				*) ;;	# other lines should be comment lines
				esac ;;
			esac

		done

	    else
		# if ROUTE_ADDRESS_FILE can not be found
		echo "route: $RF not found." 1>&2
	    fi

	done

	# recover argument vector
	set "$ARGV"

fi
