--- /dev/null
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "address-type": "ietf-lisp-address-types:source-dest-key-lcaf",
+ "source-dest-key": {
+ "source": "6.0.1.0/24",
+ "dest": "6.0.2.0/24"
+ }
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": false,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.2"
+ }
+ }
+ ]
+ }
+ }
+}
--- /dev/null
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "address-type": "ietf-lisp-address-types:source-dest-key-lcaf",
+ "source-dest-key": {
+ "source": "6.0.5.0/24",
+ "dest": "6.0.2.0/24"
+ }
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": true,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.3"
+ }
+ }
+ ]
+ }
+ }
+}
+
--- /dev/null
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "address-type": "ietf-lisp-address-types:ipv4-prefix-afi",
+ "ipv4-prefix": "6.0.1.0/24"
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": true,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.1"
+ }
+ }
+ ]
+ }
+ }
+}
--- /dev/null
+{
+ "input": {
+ "mapping-record": {
+ "recordTtl": 1,
+ "action": "NoAction",
+ "authoritative": true,
+ "eid": {
+ "address-type": "ietf-lisp-address-types:ipv4-prefix-afi",
+ "ipv4-prefix": "6.0.5.0/24"
+ },
+ "LocatorRecord": [
+ {
+ "locator-id": "ISP1",
+ "priority": 1,
+ "weight": 1,
+ "multicastPriority": 255,
+ "multicastWeight": 0,
+ "localLocator": true,
+ "rlocProbed": false,
+ "routed": true,
+ "rloc": {
+ "address-type": "ietf-lisp-address-types:ipv4-afi",
+ "ipv4": "6.0.3.1"
+ }
+ }
+ ]
+ }
+ }
+}
--- /dev/null
+lisp_eid_table_dump remote
--- /dev/null
+# Script for checking whether a mapping exists in the vpp's map-cache
+#
+# Params:
+# vat_exec - VAT executable
+# vpp_prefix - shared vpp memory prefix
+# mapping - mapping to verify
+
+import sys
+import subprocess
+import json
+
+def has_mapping(json, mapping):
+ if len (json) == 0:
+ return False
+
+ for obj in json:
+ if obj['eid'] == mapping:
+ return True;
+
+ return False
+
+def verify_mapping(vat_exec, prefix, mapping, vat_path):
+ vat_file = vat_path + '/' + 'dump_remote_mappings.tpl'
+ out = subprocess.Popen([vat_exec, "chroot", "prefix", prefix, "json", "script",
+ "in", vat_file], stdout=subprocess.PIPE).communicate()[0]
+
+ o = json.loads(out)
+ return has_mapping(o, mapping)
+
+if __name__ == "__main__":
+ if len(sys.argv) < 4:
+ raise Exception('expecteds 4 parameters: VAT executable, shared prefix '
+ + ' name, mapping expected, path to vat templates!')
+
+ if verify_mapping(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4]):
+ sys.exit(0)
+ else:
+ sys.exit(1)
assert_rc_ok $? 3_node_star_topo_clean "No ICMP Response!"
}
+function send_ping_from_ns_no_verify
+{
+ ip netns exec "${1}" "${2}" -c 1 "${3}"
+}
+
function test_src_dst
{
3_node_star_topo_setup
print_status $rc "No ICM response!"
exit $test_result
}
+
+function mapping_exists
+{
+ python scripts/vat/mapping_exists.py ${VPP_API_TEST} "$1" "$2" ${VAT_TEMPLATES}
+}
+
+function test_mapping_timers
+{
+ 3_node_star_topo_setup
+ post_curl "add-mapping" "map3.json"
+ post_curl "add-mapping" "map4.json"
+
+ maybe_pause
+
+ test_result=1
+
+ send_ping_from_ns vpp-ns1 ${1} ${2}
+ send_ping_from_ns vpp-ns3 ${1} ${2}
+
+ # wait for map-requests to resolve
+ sleep 2
+
+ mapping_exists "vpp1" "6.0.1.0/24|6.0.2.0/24"
+ assert_rc_ok $? 3_node_star_topo_clean "mapping not in map-cache!"
+ mapping_exists "vpp2" "6.0.1.0/24"
+ assert_rc_ok $? 3_node_star_topo_clean "mapping not in map-cache!"
+
+ # sleep enough so the mapping expires
+ sleep 65
+
+ mapping_exists "vpp1" "6.0.1.0/24|6.0.2.0/24"
+ assert_rc_not_ok $? 3_node_star_topo_clean "mapping still present in map-cache!"
+ mapping_exists "vpp2" "6.0.1.0/24"
+ assert_rc_not_ok $? 3_node_star_topo_clean "mapping still present in map-cache!"
+
+ maybe_pause
+ 3_node_star_topo_clean
+ echo "Test passed."
+ exit 0
+}
--- /dev/null
+#!/usr/bin/env bash
+
+# Test mapping timers expiration for dst-only and src/dst mappings
+
+VPP_LITE_CONF=`pwd`/../configs/vpp_lite_config/sd/4o4
+ODL_CONFIG_DIR=`pwd`/../configs/odl/map_timers
+VAT_TEMPLATES=`pwd`/../vat_templates
+
+source test_driver/src_dst.sh
+
+test_mapping_timers ping "6.0.2.2"