fi
 }
 
+# $1: var name
+check_expected_one()
+{
+       local var="${1}"
+       local exp="e_${var}"
+
+       [ "${!var}" = "${!exp}" ]
+}
+
+# $@: all var names to check
+check_expected()
+{
+       local ret=0
+       local var
+
+       for var in "${@}"
+       do
+               check_expected_one "${var}" || ret=1
+       done
+
+       if [ ${ret} -eq 0 ]
+       then
+               stdbuf -o0 -e0 printf "[OK]\n"
+               return 0
+       fi
+
+       stdbuf -o0 -e0 printf "[FAIL]\n"
+       exit 1
+}
+
 verify_announce_event()
 {
        local evt=$1
        fi
        dport=$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
        id=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       if [ "$type" = "$e_type" ] && [ "$token" = "$e_token" ] &&
-                  [ "$addr" = "$e_addr" ] && [ "$dport" = "$e_dport" ] &&
-                  [ "$id" = "$e_id" ]
-       then
-               stdbuf -o0 -e0 printf "[OK]\n"
-               return 0
-       fi
-       stdbuf -o0 -e0 printf "[FAIL]\n"
-       exit 1
+
+       check_expected "type" "token" "addr" "dport" "id"
 }
 
 test_announce()
        type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
        token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
        id=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       if [ "$type" = "$e_type" ] && [ "$token" = "$e_token" ] &&
-                  [ "$id" = "$e_id" ]
-       then
-               stdbuf -o0 -e0 printf "[OK]\n"
-               return 0
-       fi
-       stdbuf -o0 -e0 printf "[FAIL]\n"
-       exit 1
+
+       check_expected "type" "token" "id"
 }
 
 test_remove()
                daddr=$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
        fi
 
-       if [ "$type" = "$e_type" ] && [ "$token" = "$e_token" ] &&
-                  [ "$daddr" = "$e_daddr" ] && [ "$e_dport" = "$dport" ] &&
-                  [ "$family" = "$e_family" ] && [ "$saddr" = "$e_saddr" ] &&
-                  [ "$e_locid" = "$locid" ] && [ "$e_remid" = "$remid" ]
-       then
-               stdbuf -o0 -e0 printf "[OK]\n"
-               return 0
-       fi
-       stdbuf -o0 -e0 printf "[FAIL]\n"
-       exit 1
+       check_expected "type" "token" "daddr" "dport" "family" "saddr" "locid" "remid"
 }
 
 test_subflows()
                        sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q')
        fi
 
-       if [ $type ] && [ $type = $e_type ] &&
-          [ $family ] && [ $family = $e_family ] &&
-          [ $saddr ] && [ $saddr = $e_saddr ] &&
-          [ $sport ] && [ $sport = $e_sport ]; then
-               stdbuf -o0 -e0 printf "[OK]\n"
-               return 0
-       fi
-       stdbuf -o0 -e0 printf "[FAIL]\n"
-       exit 1
+       check_expected "type" "family" "saddr" "sport"
 }
 
 test_listener()