gluon-supernode-docker/batman/entry-point.sh

60 lines
1.9 KiB
Bash

#!/bin/sh
set -e
batctl meshif ${BATMAN_INTERFACE} interface create
ip link set ${BATMAN_INTERFACE} up
# setup ips
if [ "${BATMAN_IPV4}" ] ; then
ip -4 addr add ${BATMAN_IPV4} dev ${BATMAN_INTERFACE}
fi
if [ "${BATMAN_BRIDGE_IPV6}" ] ; then
ip -6 addr add ${BATMAN_IPV6} dev ${BATMAN_INTERFACE}
fi
# mark node as dhcp server
batctl meshif ${BATMAN_INTERFACE} gw server ${BATMAN_LIMIT_DOWNLOAD}Mbit/${BATMAN_LIMIT_UPLOAD}Mbit
if [ "${WIREGUARD_CONFIG}" ] ; then \
nft add table ip nat || true
nft add chain 'ip nat POSTROUTING { type nat hook postrouting priority srcnat; policy accept; }' || true
nft add rule nat POSTROUTING counter masquerade || true
nft add table ip6 nat || true
nft add chain 'ip6 nat POSTROUTING { type nat hook postrouting priority srcnat; policy accept; }' || true
nft add rule ip6 nat POSTROUTING counter masquerade || true
# remove dns defintion, because resolv.conf is write protected in the container
egrep -v '^\s*DNS\s*=' ${WIREGUARD_CONFIG} >/etc/wireguard/${WIREGUARD_INTERFACE}.conf
wg-quick up ${WIREGUARD_INTERFACE}
ip rule add iif ${BATMAN_INTERFACE} table 5000
fi
cat >/etc/radvd.conf <<EOF
interface ${RADVD_INTERFACE} {
AdvSendAdvert on;
IgnoreIfMissing on;
EOF
[ "${RADVD_ADV_MANAGEMENT_FLAG}" ] && \
echo " AdvManagedFlag ${RADVD_ADV_MANAGEMENT_FLAG};" >>/etc/radvd.conf
[ "${RADVD_MTU}" ] && \
echo " AdvLinkMTU ${RADVD_MTU};" >>/etc/radvd.conf
[ "${RADVD_SOURCE_LL_ADDRESS}" ] && \
echo " AdvSourceLLAddress ${RADVD_SOURCE_LL_ADDRESS};" >>/etc/radvd.conf
[ "${RADVD_OTHER_CONFIG_FLAG}" ] && \
echo " AdvOtherConfigFlag ${RADVD_OTHER_CONFIG_FLAG};" >>/etc/radvd.conf
cat >>/etc/radvd.conf <<EOF
prefix ${RADVD_PREFIX}
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
DeprecatePrefix on;
};
};
EOF
/usr/sbin/radvd --config=/etc/radvd.conf --logmethod=stderr --nodaemon