print_check "mptcp_info ${info1:0:8}=$exp1:$exp2"
 
-       cnt1=$(ss -N $ns1 -inmHM | grep "$info1:" |
-              sed -n 's/.*\('"$info1"':\)\([[:digit:]]*\).*$/\2/p;q')
-       cnt2=$(ss -N $ns2 -inmHM | grep "$info2:" |
-              sed -n 's/.*\('"$info2"':\)\([[:digit:]]*\).*$/\2/p;q')
+       cnt1=$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value "$info1" "$info1")
+       cnt2=$(ss -N $ns2 -inmHM | mptcp_lib_get_info_value "$info2" "$info2")
        # 'ss' only display active connections and counters that are not 0.
        [ -z "$cnt1" ] && cnt1=0
        [ -z "$cnt2" ] && cnt2=0
                return
        fi
 
-       type=$(grep "type:$e_type," $evt | sed -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q')
-       family=$(grep "type:$e_type," $evt | sed -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q')
-       sport=$(grep "type:$e_type," $evt | sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+       type=$(mptcp_lib_evts_get_info type "$evt" "$e_type")
+       family=$(mptcp_lib_evts_get_info family "$evt" "$e_type")
+       sport=$(mptcp_lib_evts_get_info sport "$evt" "$e_type")
        if [ $family ] && [ $family = $AF_INET6 ]; then
-               saddr=$(grep "type:$e_type," $evt | sed -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
+               saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" "$e_type")
        else
-               saddr=$(grep "type:$e_type," $evt | sed -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q')
+               saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" "$e_type")
        fi
 
        if [ $type ] && [ $type = $e_type ] &&
 pedit_action_pkts()
 {
        tc -n $ns2 -j -s action show action pedit index 100 | \
-               grep "packets" | \
-               sed 's/.*"packets":\([0-9]\+\),.*/\1/'
+               mptcp_lib_get_info_value \"packets\" packets
 }
 
 fail_tests()
 
        local server_token
        local server_serverside
 
-       client_token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
-       client_port=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
-       client_serverside=$(sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q'\
-                                     "$client_evts")
-       server_token=$(grep "type:1," "$server_evts" |
-                      sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
-       server_serverside=$(grep "type:1," "$server_evts" |
-                           sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q')
+       client_token=$(mptcp_lib_evts_get_info token "$client_evts")
+       client_port=$(mptcp_lib_evts_get_info sport "$client_evts")
+       client_serverside=$(mptcp_lib_evts_get_info server_side "$client_evts")
+       server_token=$(mptcp_lib_evts_get_info token "$server_evts")
+       server_serverside=$(mptcp_lib_evts_get_info server_side "$server_evts")
 
        print_test "Established IP${is_v6} MPTCP Connection ns2 => ns1"
        if [ "$client_token" != "" ] && [ "$server_token" != "" ] && [ "$client_serverside" = 0 ] &&
        local dport
        local id
 
-       type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+       type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
+       token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
        if [ "$e_af" = "v6" ]
        then
-               addr=$(sed --unbuffered -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
+               addr=$(mptcp_lib_evts_get_info daddr6 "$evt" $e_type)
        else
-               addr=$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
+               addr=$(mptcp_lib_evts_get_info daddr4 "$evt" $e_type)
        fi
-       dport=$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       id=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+       dport=$(mptcp_lib_evts_get_info dport "$evt" $e_type)
+       id=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
 
        check_expected "type" "token" "addr" "dport" "id"
 }
           $client_addr_id dev ns2eth1 > /dev/null 2>&1
 
        local type
-       type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       type=$(mptcp_lib_evts_get_info type "$server_evts")
        print_test "ADD_ADDR 10.0.2.2 (ns2) => ns1, invalid token"
        if [ "$type" = "" ]
        then
        local token
        local id
 
-       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")
+       type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
+       token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
+       id=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
 
        check_expected "type" "token" "id"
 }
           $client_addr_id > /dev/null 2>&1
        print_test "RM_ADDR id:${client_addr_id} ns2 => ns1, invalid token"
        local type
-       type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       type=$(mptcp_lib_evts_get_info type "$server_evts")
        if [ "$type" = "" ]
        then
                test_pass
        ip netns exec "$ns2" ./pm_nl_ctl rem token "$client4_token" id\
           $invalid_id > /dev/null 2>&1
        print_test "RM_ADDR id:${invalid_id} ns2 => ns1, invalid id"
-       type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       type=$(mptcp_lib_evts_get_info type "$server_evts")
        if [ "$type" = "" ]
        then
                test_pass
                fi
        fi
 
-       type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       family=$(sed --unbuffered -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       dport=$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       locid=$(sed --unbuffered -n 's/.*\(loc_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
-       remid=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+       type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
+       token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
+       family=$(mptcp_lib_evts_get_info family "$evt" $e_type)
+       dport=$(mptcp_lib_evts_get_info dport "$evt" $e_type)
+       locid=$(mptcp_lib_evts_get_info loc_id "$evt" $e_type)
+       remid=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
        if [ "$family" = "$AF_INET6" ]
        then
-               saddr=$(sed --unbuffered -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
-               daddr=$(sed --unbuffered -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
+               saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" $e_type)
+               daddr=$(mptcp_lib_evts_get_info daddr6 "$evt" $e_type)
        else
-               saddr=$(sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
-               daddr=$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
+               saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" $e_type)
+               daddr=$(mptcp_lib_evts_get_info daddr4 "$evt" $e_type)
        fi
 
        check_expected "type" "token" "daddr" "dport" "family" "saddr" "locid" "remid"
        kill_wait $listener_pid
 
        local sport
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW from server to client machine
        :>"$server_evts"
        # Delete the listener from the client ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW6 from server to client machine
        :>"$server_evts"
        # Delete the listener from the client ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW from server to client machine
        :>"$server_evts"
        # Delete the listener from the server ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW from client to server machine
        :>"$client_evts"
        # Delete the listener from the server ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW6 from client to server machine
        :>"$client_evts"
        # Delete the listener from the server ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW from client to server machine
        :>"$client_evts"
        # Delete the listener from the server ns, if one was created
        kill_wait $listener_pid
 
-       sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+       sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
 
        # DESTROY_SUBFLOW from client to server machine
        :>"$client_evts"
                print_test "CLOSE_LISTENER $e_saddr:$e_sport"
        fi
 
-       type=$(grep "type:$e_type," $evt |
-              sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q')
-       family=$(grep "type:$e_type," $evt |
-                sed --unbuffered -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q')
-       sport=$(grep "type:$e_type," $evt |
-               sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+       type=$(mptcp_lib_evts_get_info type $evt $e_type)
+       family=$(mptcp_lib_evts_get_info family $evt $e_type)
+       sport=$(mptcp_lib_evts_get_info sport $evt $e_type)
        if [ $family ] && [ $family = $AF_INET6 ]; then
-               saddr=$(grep "type:$e_type," $evt |
-                       sed --unbuffered -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
+               saddr=$(mptcp_lib_evts_get_info saddr6 $evt $e_type)
        else
-               saddr=$(grep "type:$e_type," $evt |
-                       sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q')
+               saddr=$(mptcp_lib_evts_get_info saddr4 $evt $e_type)
        fi
 
        check_expected "type" "family" "saddr" "sport"