#!/bin/sh . /etc/functions.sh config_cb() { local cfg="$CONFIG_SECTION" local cfgtype config_get cfgtype "$cfg" TYPE dudders=/usr/bin/dudders case "$cfgtype" in dudders) config_get enabled $cfg enabled [ "$enabled" = "yes" ] || return 0 config_get tcp $cfg tcp config_get keyname $cfg keyname config_get mname $cfg mname config_get zone $cfg zone config_get keyfile $cfg keyfile config_get hostname $cfg hostname config_get ttl $cfg ttl [ -r "$keyfile" ] || return 1 sleep 1 interface=$(route -n 2>&- \ |grep '^0.0.0.0' \ |sed -e 's/.* \([^ ]\+\)$/\1/') [ -z "$interface" ] && return 0 [ "$DEVICE" = "$interface" -o \ "$IFNAME" = "$interface" -o \ "$PPP_IFACE" = "$interface" ] || return 0 ipaddr=${PPP_LOCAL:-${IPLOCAL:-$(ifconfig "$interface" \ |grep -o 'addr:[^ ]\+' \ |sed -e 's/addr://')}} OPTS=${keyname:+" -k '$keyname'"} [ "$tcp" = "yes" ] && OPTS=$OPTS" -T" OPTS=$OPTS${mname:+" -m '$mname'"} OPTS=$OPTS${zone:+" -z '$zone'"} eval $dudders -k $keyfile $OPTS $hostname $ttl $ipaddr ;; esac } case "${ACTION:-ifup}" in ifup) config_load dudders ;; esac