Fix is pretty straightforward. --- a/nhrpd/nhrp_event.c +++ b/nhrpd/nhrp_event.c @@ -59,9 +59,9 @@ buf[len] = 0; debugf(NHRP_DEBUG_EVENT, "evmgr: msg: %s", buf); - if (sscanf(buf, "eventid=%" SCNu32, &eventid) != 1) + if (sscanf(buf, "eventid=%" SCNu32, &eventid) == 1) continue; - if (sscanf(buf, "result=%63s", result) != 1) + if (sscanf(buf, "result=%63s", result) == 1) continue; } debugf(NHRP_DEBUG_EVENT, "evmgr: received: eventid=%d result=%s", Fledgling script actually works now, forgive email formatting errors ---------cut here---- #!/bin/bash PROGNAME=`basename $0` VERSION="0.0.2" usage() { echo "Usage: $PROGNAME -s nhrp-sock [-i interface-name] [-u user] [-g group] " echo "" echo "-s nhrp-sock file" echo "-i interface-name to execute on, may be repeated multiple times" echo "-u user to own the sock" echo "-g group to own the sock" exit 1 } SOCK="/var/run/frr/nhrp.sock" USER="frr" GROUP="frr" j=0 while getopts s:i:u:g: opt; do case "$opt" in s) SOCK="$OPTARG" ;; i) INTARR[((j++))]="$OPTARG" ;; u) USER="$OPTARG" ;; g) GROUP="$OPTARG" ;; esac; done coproc socat - UNIX-LISTEN:$SOCK,unlink-early,setuid-early=$USER || exit 1 chown $USER:$GROUP $SOCK OLDIFS="$IFS" while read -r S; do if [[ "$S" == "" ]]; then if [[ "$EVID" != "" ]]; then echo -e "eventid=$EVID\nresult=accept\n"; fi for((i=0;i<${#INTARR[@]};i++)); do if [[ "$EVINT" == "" ]]; then break; fi if [[ "${INTARR[$i]}" != "$EVINT" ]]; then continue; fi if [[ "$EVREM" == "" ]]; then break; fi if [[ "$EVNBMA" == "" ]]; then break; fi if [[ "$EVTYPE" != "dynamic" ]]; then break; fi ip neigh add $EVREM dev $EVINT lladdr $EVNBMA nud noarp if [[ "$?" != "0" ]]; then ip neigh replace $EVREM dev $EVINT lladdr $EVNBMA nud noarp fi break done unset EVID unset EVINT unset EVREM unset EVNBMA unset EVTYPE continue; fi IFS="${IFS}=" SA=($S) IFS="$OLDIFS" case "${SA[0]}" in eventid) EVID="${SA[1]}" ;; interface) EVINT="${SA[1]}" ;; type) EVTYPE="${SA[1]}" ;; remote_addr) EVREM="${SA[1]}" ;; remote_nbma) EVNBMA="${SA[1]}" ;; esac done <&"${COPROC[0]}" >&"${COPROC[1]}" kill "$COPROC_PID"