#!/bin/sh
#
# $Id$
#

. /etc/ya.subr

hostname=`hostname -s`
date=`date "+on %D at %T"`
basename=`basename $0`

if ! command -v ya_get_ipaddr > /dev/null; then
	echo 1>&2 "Please update /etc/ya.subr"
	exit 1
fi

if ! ip=`ya_get_ipaddr`; then
	echo 1>&2 "Cannot get ip address"
	exit 1
fi

if ! eval `ya_network_info $ip`; then
	echo 1>&2 "Cannot get network information"
	exit 1
fi

get_broadcast_config()
{
	cat <<EOF
disable auth
disable stats
broadcastclient
EOF
}

get_alone_config()
{
	cat <<EOF
disable auth
disable stats
server 95.108.129.181 # ntp1.yandex.net
server 95.108.129.183 # ntp2.yandex.net
server 37.140.149.198 # ntp3.yandex.net
server 37.140.149.199 # ntp4.yandex.net
EOF
}

get_peers()
{
	local _porter _peers

	for _porter in $ya_porters; do
		if [ "$ip" = "${_porter}" ]; then
			continue
		fi
		if is_ipv4_belong_net "${_porter}" "$ya_net"; then
			echo "peer ${_porter}"
		fi
	done
}

# set broadcast configuration by default
conf=`get_broadcast_config`

# overwrite configuration to alone if network has no porter
if ! is_ipv4_belong_net "$ya_porter" "$ya_net"; then
	conf=`get_alone_config`
fi

# overwrite configuration to alone for specific hosts
case "$hostname" in
balancer*)
	conf=`get_alone_config`
	;;
porter*|yasm*)
	conf="`get_alone_config`"
	peers="`get_peers`"
	if [ -z "${ya_broadcast:-}" ]; then
		echo 1>&2 "Cannot get broadcast address"
		exit 1
	fi
	broadcast="broadcast $ya_broadcast minpoll 4"
	;;
esac

out="# Generated $date by $basename for $hostname (inet $ip netmask $ya_netmask)
${conf}${peers:+\n}${peers}${broadcast:+\n}${broadcast}"

printf "${out}\n"

exit 0
