[FROG] nhrpd event manager
Jafar Al-Gharaibeh
jafar at atcorp.com
Mon Mar 1 15:48:54 UTC 2021
Joe,
Can you open a Pull Request at https://github.com/FRRouting/frr/pulls
for this ? If not, I will take care of it.
Thanks,
Jafar
On 2/28/21 1:57 AM, Joe Maimon wrote:
> This is still broken, the patch is quite simple.
>
> I do have an upgraded script which is pretty nice.
>
> Joe Maimon wrote:
>> 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"
>>
>>
>>
>
>
> _______________________________________________
> frog mailing list
> frog at lists.frrouting.org
> https://lists.frrouting.org/listinfo/frog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.frrouting.org/pipermail/frog/attachments/20210301/99e44cd4/attachment.htm>
More information about the frog
mailing list