diff options
author | Michal Cmarada <michal.cmarada@pantheon.tech> | 2018-05-11 12:16:10 +0200 |
---|---|---|
committer | Marek Gradzki <mgradzki@cisco.com> | 2018-05-11 11:02:10 +0000 |
commit | 149d172a8d41dc02bd9ae47ff5db76ba751900b4 (patch) | |
tree | 26f50ed162bfcc124627658350e8e49405e45f2e | |
parent | 6e6b56482dddb1575820b62ae4a39b6006293e9a (diff) |
HC2VPP-297 - MPLS model updates
This patch updates MPLS models to:
- hc2vpp-ietf-mpls-static@2017-07-02.yang
(draft at: https://tools.ietf.org/html/draft-ietf-mpls-static-yang-05)
Due to odl bugs these models were changed,
see HC2VPP-307 for more details.
see mpls_postman_collection.json for examples and usage
Summary of changes:
- leaf operation in static-lsp->config was replaced
with mpls-operations-type
- paths were refactored and moved to static-lsp
- outgoing-labels container was introduced in
static-lsp->paths
- MPLS docker demo was updated to reflect model changes
Change-Id: I725ec5e4b3a1acea2aeabec41185949fc498ff26
Signed-off-by: Michal Cmarada <michal.cmarada@pantheon.tech>
16 files changed, 1827 insertions, 1554 deletions
diff --git a/examples/docker/mpls_demo/postman_collection.json b/examples/docker/mpls_demo/postman_collection.json index 6c8d5cc54..0420f2a42 100644..100755 --- a/examples/docker/mpls_demo/postman_collection.json +++ b/examples/docker/mpls_demo/postman_collection.json @@ -1,997 +1,1050 @@ { - "id": "775eb149-1920-2405-14f1-0a578e6dfa17", - "name": "Honeycomb SR MPLS", - "description": "Examples of configuring some basic MPLS SR scenariou using hc2vpp", - "order": [], - "folders": [ + "info": { + "_postman_id": "4165ed66-ad4e-4003-99dd-285a50e86f15", + "name": "Honeycomb SR MPLS", + "description": "Examples of configuring some basic MPLS SR scenariou using hc2vpp", + "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" + }, + "item": [ { - "id": "43395a46-591f-06e1-c6f7-2d3be218f4b7", - "name": "vpp1", - "description": "", - "order": [ - "16657be6-c235-6e55-46aa-bfcd9509c677", - "563861ed-4363-071e-9bd5-eaff5eb8c98b", - "2cf9511c-b24b-b79e-d73a-2c22b1ad0399", - "c013c45c-91d1-1a3b-f79d-70b3b64b9e80", - "8822aefb-a139-52a4-b013-d27e34038e3b", - "6180b672-0422-1c86-6982-213d297f644e", - "7c820a89-b5b6-de2d-a24e-272e8652132e", - "5f3d1085-288d-b0cd-d0fc-4c9d5e56bb97", - "b884638e-79a4-525b-45aa-82833fdd1dfb", - "aeb31fa2-4e55-2d4f-eb86-09ee2cf61d18", - "786bf7e9-315d-4367-6bab-044f197182f4", - "c6f22ad3-fb95-f8d5-59ae-46bb1187161d", - "21677d79-6b69-ec38-6547-9aaace9a2a22" - ], - "owner": 0, - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17" - }, - { - "id": "527edbd2-7633-b78f-eef0-f8286979c6ea", - "name": "vpp2", - "description": "", - "order": [ - "8207832c-31f7-3a6c-635d-84acb0dc5aec", - "b9f4ce2e-514f-5bbc-adf1-8a21e9930f0c", - "45abf6ec-633c-24da-ba25-47e918e6de6c", - "c81edfa7-eed8-7034-2b2f-b51d1790769b", - "7db6d85d-ece1-aac3-d22f-d0d1a235cafc", - "747b2251-395e-610b-7645-9a41b0b64488", - "1454328e-2d83-bc67-7a8f-271d11fc18cb", - "336475cb-227c-e04d-5726-c7fcfd87dbaa", - "c8669e95-8c4f-4ab7-2c4a-676349929ecc" - ], - "owner": 0, - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17" - }, - { - "id": "ef180850-5af2-a60b-eeca-85252e9ce8ec", "name": "vpp3", "description": "", - "order": [ - "119ec4e0-605d-08b4-fec1-cf4a131ad000", - "13c7a902-2a09-dbcb-15e2-44bad8fef7db", - "dcbbd269-63b7-910c-a710-4ad8fd0573ee", - "c3f46171-f7c7-f959-ef2d-2c0c7a2b42c9", - "cca562e5-6677-83b3-c694-e2852ae34582", - "21db6249-27ed-7f90-07c3-0596d703916f", - "0fb225aa-cb57-8823-6b10-fe11bfa5b722", - "d968a2a2-8c53-528e-31a7-4d34e85c3fd9", - "5e1eb658-1b3d-7033-3f76-3077d62550b4", - "608eb5d9-ec75-80f8-5f68-ad8393fbaa06", - "cc6688cb-9b65-e4d0-4985-d4d9dec14ca6" - ], - "owner": 0, - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17" + "item": [ + { + "name": "Enable mpls on host-veth341", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth341\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth341", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth341 enable" + }, + "response": [] + }, + { + "name": "List ifcs - cfg", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/ietf-interfaces:interfaces/" + }, + "response": [] + }, + { + "name": "Get mpls (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls" + }, + "response": [] + }, + { + "name": "Enable mpls on host-veth342", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth342\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth342", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth342 enable" + }, + "response": [] + }, + { + "name": "Enable mpls on host-veth31", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth31\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth31", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth31 enable" + }, + "response": [] + }, + { + "name": "Pop 103 and MPLS lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp1\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 103\n \t}\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", + "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 103 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 103" + }, + "response": [] + }, + { + "name": "Swap 104 and forward via veth341", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp2\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 104\n \t}\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n\t\t\t\"config\": {\n\t\t \"next-hop\": \"10.34.1.4\",\n\t\t \"outgoing-label\": 104,\n\t\t \"outgoing-interface\": \"host-veth341\"\n\t\t\t}\n\t\t}\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp2", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.34.1.4 host-veth341 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104" + }, + "response": [] + }, + { + "name": "Swap 104 and forward via veth342", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp3\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 104\n \t}\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n\t\t\t\"config\": {\n\t\t \"next-hop\": \"10.34.2.4\",\n\t\t \"outgoing-label\": 104,\n\t\t \"outgoing-interface\": \"host-veth342\"\n\t\t\t}\n\t\t}\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp3", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.34.2.4 host-veth342 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104" + }, + "response": [] + }, + { + "name": "List ifcs - oper", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.4:8445/restconf/operational/ietf-interfaces:interfaces-state/" + }, + "response": [] + }, + { + "name": "Swap 10341 and forward via veth341", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp4\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 10341\n \t}\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n\t\t\t\"config\": {\n\t\t \"next-hop\": \"10.34.1.4\",\n\t\t \"outgoing-label\": 104,\n\t\t \"outgoing-interface\": \"host-veth341\"\n\t\t\t}\n\t\t}\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp4", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 10341 via 10.34.1.4 host-veth341 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 10341" + }, + "response": [] + }, + { + "name": "Swap 10342 and forward via veth342", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp5\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 10342\n \t}\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n\t\t\t\"config\": {\n\t\t \"next-hop\": \"10.34.2.4\",\n\t\t \"outgoing-label\": 104,\n\t\t \"outgoing-interface\": \"host-veth342\"\n\t\t\t}\n\t\t}\n }\n ]\n}" + }, + "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp5", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 10342 via 10.34.2.4 host-veth342 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 10342" + }, + "response": [] + } + ] }, { - "id": "d51a02ef-c70d-b9cf-496f-9f4bd807476e", "name": "vpp4", "description": "", - "order": [ - "d1f8d9e4-9546-1aae-2b86-b88a5baa53e4", - "0cb9c591-37ea-1f32-403b-a28097796e37", - "045b4a83-98da-a106-a82c-066e4ee6538f", - "2fab46ad-11bd-4d1f-acee-612e03b5c6a2", - "36bd3b64-d122-4f11-69e1-99848539cc47", - "9d7d5222-0fdb-5779-1afd-34d2991d7de7", - "d98ec90f-b870-6ab7-ce74-46b78e4c4615", - "fc075349-ef0d-a0cc-dd7e-1de162c42c64", - "33de5e94-c1fd-96bc-e5e0-3bd586c87886", - "51b46690-bab5-dcfc-bb2e-8b61f666adda", - "c8e47113-0a93-33c7-d2e3-872a831aa0aa", - "51d3fcb9-bbf8-0a54-8d1a-c50372554a45" - ], - "owner": 0, - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17" - } - ], - "timestamp": 1511524812433, - "owner": 0, - "public": false, - "requests": [ - { - "id": "045b4a83-98da-a106-a82c-066e4ee6538f", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/interface/A", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511854983587, - "name": "Configure tap for host A", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"A\",\r\n \"description\": \"Host A\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" : {\r\n \"tap-name\" : \"A\"\r\n },\r\n \"ipv4\" : {\r\n \t\"address\" : [{\r\n \t\t\"ip\" : \"10.100.1.1\",\r\n \t\t\"prefix-length\" : \"24\"\r\n \t}]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "0cb9c591-37ea-1f32-403b-a28097796e37", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/operational/ietf-interfaces:interfaces-state/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511784764401, - "name": "List ifcs - oper", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "0fb225aa-cb57-8823-6b10-fe11bfa5b722", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp2", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511801165058, - "name": "Swap 104 and forward via veth341", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.34.1.4 host-veth341 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp2\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.34.1.4\",\n \"outgoing-label\": 104,\n \"outgoing-interface\": \"host-veth341\"\n }\n }\n ]\n}" - }, - { - "id": "119ec4e0-605d-08b4-fec1-cf4a131ad000", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/ietf-interfaces:interfaces/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787251902, - "name": "List ifcs - cfg", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "13c7a902-2a09-dbcb-15e2-44bad8fef7db", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/operational/ietf-interfaces:interfaces-state/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787294881, - "name": "List ifcs - oper", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "1454328e-2d83-bc67-7a8f-271d11fc18cb", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp3", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511879008223, - "name": "Pop 102 and IPv4 lookup", - "description": "In case 102 is the last label,\npop it and check if we have route for destination.", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp3\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 102\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }\n ]\n}" - }, - { - "id": "16657be6-c235-6e55-46aa-bfcd9509c677", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/ietf-interfaces:interfaces/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511561704894, - "name": "List ifcs - cfg", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "21677d79-6b69-ec38-6547-9aaace9a2a22", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511781091941, - "name": "Get mpls (cfg)", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "21db6249-27ed-7f90-07c3-0596d703916f", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511801154966, - "name": "Pop 103 and MPLS lookup", - "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 103 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 103", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp1\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 103\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }\n ]\n}" - }, - { - "id": "2cf9511c-b24b-b79e-d73a-2c22b1ad0399", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth12", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511782604060, - "name": "Enable mpls on host-veth12", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth12 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth12\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "2fab46ad-11bd-4d1f-acee-612e03b5c6a2", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/interface/B", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511855043182, - "name": "Configure tap for host B", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"B\",\r\n \"description\": \"Host B\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" : {\r\n \"tap-name\" : \"B\"\r\n },\r\n \"ipv4\" : {\r\n \t\"address\" : [{\r\n \t\t\"ip\" : \"10.200.1.1\",\r\n \t\t\"prefix-length\" : \"24\"\r\n \t}]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "336475cb-227c-e04d-5726-c7fcfd87dbaa", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511879106545, - "name": "Send traffic to B via 104", - "description": "Simulates route that could be received via BGP.", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToB\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.200.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.24.1.4\",\n \"outgoing-labels\": [\n 104\n ],\n \"outgoing-interface\": \"host-veth24\"\n }\n ]\n }\n }\n ]\n}" - }, - { - "id": "33de5e94-c1fd-96bc-e5e0-3bd586c87886", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/routing-protocols/routing-protocol/learned-protocol-0", - "preRequestScript": null, - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": null, - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511791932269, - "name": "Create config for vrf0", - "description": "Hc2vpp by default stores it under learned-protocol-0", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n\t\"routing-protocol\":[\n\t\t{\n\t\t\t\"name\":\"learned-protocol-0\",\n\t\t\t\"enabled\":\"true\",\n\t\t\t\"type\":\"static\",\n\t\t\t\"vpp-protocol-attributes\": {\n\t \"primary-vrf\": 0\n }\n\t\t}\t\n\t]\n}" - }, - { - "id": "36bd3b64-d122-4f11-69e1-99848539cc47", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth42", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511784773818, - "name": "Enable mpls on host-veth42", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth42 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth42\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "45abf6ec-633c-24da-ba25-47e918e6de6c", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth21", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511783000679, - "name": "Enable mpls on host-veth21 interface", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth21 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth21\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "51b46690-bab5-dcfc-bb2e-8b61f666adda", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/routing-protocols/routing-protocol/learned-protocol-0/static-routes/ipv4/route/1", - "preRequestScript": null, - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": null, - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511796631088, - "name": "Add reverse direction for 10.12.1.0/24", - "description": "Send reverse traffic using IP.\n\nCorresponding CLI command:\n\nip route add 10.12.1.0/24 via 10.24.1.2 host-veth42", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n\t\"route\": [\n\t\t{\n\t\t\t\"id\": 1,\n\t\t\t\"destination-prefix\": \"10.12.1.0/24\",\n\t\t\t\"next-hop\": \"10.24.1.2\",\n\t\t\t\"outgoing-interface\": \"host-veth42\"\n\t\t\t\n\t\t}]\n}" - }, - { - "id": "51d3fcb9-bbf8-0a54-8d1a-c50372554a45", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511784778628, - "name": "Get mpls (cfg)", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "563861ed-4363-071e-9bd5-eaff5eb8c98b", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/operational/ietf-interfaces:interfaces-state/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511781058381, - "name": "List ifcs - oper", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "5e1eb658-1b3d-7033-3f76-3077d62550b4", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp4", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511801190473, - "name": "Swap 10341 and forward via veth341", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 10341 via 10.34.1.4 host-veth341 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 10341", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp4\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 10341\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.34.1.4\",\n \"outgoing-label\": 104,\n \"outgoing-interface\": \"host-veth341\"\n }\n }\n ]\n}" - }, - { - "id": "5f3d1085-288d-b0cd-d0fc-4c9d5e56bb97", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511857030755, - "name": "Send traffic to A via 103, 104", - "description": "Corresponding CLI command:\n\nip route add 10.100.1.1/24 via 10.13.1.3 host-veth13 out-labels 103 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.100.1.1/24", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToA\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.100.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.13.1.3\",\n \"outgoing-labels\": [\n 103,\n 104\n ],\n \"outgoing-interface\": \"host-veth13\"\n }\n ]\n }\n }\n ]\n}" + "item": [ + { + "name": "Enable mpls on veth431", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth431\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth431", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth431 enable" + }, + "response": [] + }, + { + "name": "Enable mpls on veth432", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth432\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth432", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth432 enable" + }, + "response": [] + }, + { + "name": "Create config for vrf0", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\t\"control-plane-protocol\":[\r\n\t\t{\r\n\t\t\t\"name\":\"learned-protocol-0\",\r\n\t\t\t\"type\":\"static\",\r\n\t\t\t\"vpp-protocol-attributes\": {\r\n\t \"primary-vrf\": 0\r\n }\r\n\t\t}\t\r\n\t]\r\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/control-plane-protocols/control-plane-protocol/hc2vpp-ietf-routing:static/learned-protocol-0", + "description": "Hc2vpp by default stores it under learned-protocol-0" + }, + "response": [] + }, + { + "name": "Add reverse direction for 10.13.1.0/24", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"route\": [\n\t\t{\n\t\t\t\"destination-prefix\": \"10.13.1.0/24\",\n\t\t\t\"next-hop\": {\n \t\"next-hop-address\" : \"10.34.2.3\",\n\t\t\t\t\"outgoing-interface\": \"host-veth432\"\n }\n\t}]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/control-plane-protocols/control-plane-protocol/hc2vpp-ietf-routing:static/learned-protocol-0/static-routes/ipv4/route/10.13.1.0%2f24", + "description": "Send reverse traffic using IP.\n\nCorresponding CLI command:\n\nip route add 10.13.1.0/24 via 10.34.2.3 host-veth432" + }, + "response": [] + }, + { + "name": "List ifcs - oper", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.5:8445/restconf/operational/ietf-interfaces:interfaces-state/" + }, + "response": [] + }, + { + "name": "Configure tap for host A", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"A\",\r\n \"description\": \"Host A\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" : {\r\n \"tap-name\" : \"A\"\r\n },\r\n \"ipv4\" : {\r\n \t\"address\" : [{\r\n \t\t\"ip\" : \"10.100.1.1\",\r\n \t\t\"prefix-length\" : \"24\"\r\n \t}]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/interface/A" + }, + "response": [] + }, + { + "name": "Pop 104 and IPv4 lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp1\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \t\t\"incoming-label\": 104\n \t}\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104" + }, + "response": [] + }, + { + "name": "Add reverse direction for 10.12.1.0/24", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"route\": [\n\t\t{\n\t\t\t\"destination-prefix\": \"10.12.1.0/24\",\n\t\t\t\"next-hop\": {\n \t\"next-hop-address\" : \"10.24.1.2\",\n\t\t\t\t\"outgoing-interface\": \"host-veth42\"\n }\n\t}]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/control-plane-protocols/control-plane-protocol/hc2vpp-ietf-routing:static/learned-protocol-0/static-routes/ipv4/route/10.12.1.0%2F24", + "description": "Send reverse traffic using IP.\n\nCorresponding CLI command:\n\nip route add 10.12.1.0/24 via 10.24.1.2 host-veth42" + }, + "response": [] + }, + { + "name": "Configure tap for host B", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"B\",\r\n \"description\": \"Host B\",\r\n \"type\": \"v3po:tap\",\r\n \"tap\" : {\r\n \"tap-name\" : \"B\"\r\n },\r\n \"ipv4\" : {\r\n \t\"address\" : [{\r\n \t\t\"ip\" : \"10.200.1.1\",\r\n \t\t\"prefix-length\" : \"24\"\r\n \t}]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/interface/B" + }, + "response": [] + }, + { + "name": "Enable mpls on host-veth42", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth42\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth42", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth42 enable" + }, + "response": [] + }, + { + "name": "List ifcs - cfg", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/" + }, + "response": [] + }, + { + "name": "Get mpls (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls" + }, + "response": [] + } + ] }, { - "id": "608eb5d9-ec75-80f8-5f68-ad8393fbaa06", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp5", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511802701919, - "name": "Swap 10342 and forward via veth342", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 10342 via 10.34.2.4 host-veth342 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 10342", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp5\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 10342\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.34.2.4\",\n \"outgoing-label\": 104,\n \"outgoing-interface\": \"host-veth342\"\n }\n }\n ]\n}" - }, - { - "id": "6180b672-0422-1c86-6982-213d297f644e", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511879726989, - "name": "Send traffic to B via 102", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToB\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.200.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"next-hop\": \"10.12.1.2\",\n \"outgoing-label\" : 102,\n \"outgoing-interface\": \"host-veth12\"\n }\n }\n ]\n}" - }, - { - "id": "747b2251-395e-610b-7645-9a41b0b64488", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp2", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511804026118, - "name": "Swap 104 and forward", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.24.1.4 host-veth24 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp2\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.24.1.4\",\n \"outgoing-label\": 104,\n \"outgoing-interface\": \"host-veth24\"\n }\n }\n ]\n}" - }, - { - "id": "786bf7e9-315d-4367-6bab-044f197182f4", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511878077664, - "name": "Delete rule for traffic to A", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "7c820a89-b5b6-de2d-a24e-272e8652132e", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511856670841, - "name": "Delete rule for traffic to B", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "isFromCollection": true, - "collectionRequestId": "8822aefb-a139-52a4-b013-d27e34038e3b", - "folder": "43395a46-591f-06e1-c6f7-2d3be218f4b7", - "rawModeData": "" - }, - { - "id": "7db6d85d-ece1-aac3-d22f-d0d1a235cafc", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511804019361, - "name": "Pop 102 and MPLS lookup", - "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp1\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 102\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }\n ]\n}" - }, - { - "id": "8207832c-31f7-3a6c-635d-84acb0dc5aec", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/ietf-interfaces:interfaces/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511782986509, - "name": "List ifcs - cfg", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "8822aefb-a139-52a4-b013-d27e34038e3b", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511856670841, - "name": "Delete rule for traffic to B", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "9d7d5222-0fdb-5779-1afd-34d2991d7de7", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth431", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511790495962, - "name": "Enable mpls on veth431", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth431 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth431\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "aeb31fa2-4e55-2d4f-eb86-09ee2cf61d18", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511862434935, - "name": "Send traffic to A via 103, 10341", - "description": "Node + adjacency SID example.\n\nSteers traffic to A veth341 (the first interface between vpp3 and vpp4).", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToA\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.100.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.13.1.3\",\n \"outgoing-labels\": [\n 103,\n 10341\n ],\n \"outgoing-interface\": \"host-veth13\"\n }\n ]\n }\n }\n ]\n}" - }, - { - "id": "b884638e-79a4-525b-45aa-82833fdd1dfb", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511878069136, - "name": "Delete rule for traffic to A", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "b9f4ce2e-514f-5bbc-adf1-8a21e9930f0c", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/operational/ietf-interfaces:interfaces-state/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511782992979, - "name": "List ifcs - oper", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "c013c45c-91d1-1a3b-f79d-70b3b64b9e80", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511856993179, - "name": "Send traffic to B via 102,104", - "description": "Corresponding CLI command:\n\nip route add 10.200.1.1/24 via 10.12.1.2 host-veth12 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.200.1.1/24", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToB\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.200.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.12.1.2\",\n \"outgoing-labels\": [\n 102,\n 104\n ],\n \"outgoing-interface\": \"host-veth12\"\n }\n ]\n }\n }\n ]\n}" - }, - { - "id": "c3f46171-f7c7-f959-ef2d-2c0c7a2b42c9", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth341", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787493647, - "name": "Enable mpls on host-veth341", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth341 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth341\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "c6f22ad3-fb95-f8d5-59ae-46bb1187161d", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511862579692, - "name": "Send traffic to A via 103, 10342", - "description": "Node + adjacency SID example.\n\nSteers traffic to A veth342 (the second interface between vpp3 and vpp4).", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToA\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.100.1.1/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.13.1.3\",\n \"outgoing-labels\": [\n 103,\n 10342\n ],\n \"outgoing-interface\": \"host-veth13\"\n }\n ]\n }\n }\n ]\n}" - }, - { - "id": "c81edfa7-eed8-7034-2b2f-b51d1790769b", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth24", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511783009910, - "name": "Enable mpls on host-veth24 interface", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth24 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth24\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "c8669e95-8c4f-4ab7-2c4a-676349929ecc", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511783016510, - "name": "Get mpls (cfg)", - "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" - }, - { - "id": "c8e47113-0a93-33c7-d2e3-872a831aa0aa", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/routing-instance/vpp-routing-instance/routing-protocols/routing-protocol/learned-protocol-0/static-routes/ipv4/route/2", - "preRequestScript": null, - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": null, - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511797454889, - "name": "Add reverse direction for 10.13.1.0/24", - "description": "Send reverse traffic using IP.\n\nCorresponding CLI command:\n\nip route add 10.13.1.0/24 via 10.34.2.3 host-veth432", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n\t\"route\": [\n\t\t{\n\t\t\t\"id\": 2,\n\t\t\t\"destination-prefix\": \"10.13.1.0/24\",\n\t\t\t\"next-hop\": \"10.34.2.3\",\n\t\t\t\"outgoing-interface\": \"host-veth432\"\n\t\t\t\n\t\t}]\n}" - }, - { - "id": "cc6688cb-9b65-e4d0-4985-d4d9dec14ca6", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787309539, - "name": "Get mpls (cfg)", + "name": "vpp1", "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "" + "item": [ + { + "name": "Get mpls (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls" + }, + "response": [] + }, + { + "name": "Enable mpls on host-veth12", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth12\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth12", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth12 enable" + }, + "response": [] + }, + { + "name": "Send traffic to A via 103, 104", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"trafficToA\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"ip-prefix\": \"10.100.1.1/24\"\n\t\t\t},\n\t\t\t\"operation\": \"impose-and-forward\"\n\t\t},\n\t\t\"paths\": {\n\t\t\t\"path\": [{\n\t\t\t\t\"path-index\": 0,\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"path-index\": 0,\n\t\t\t\t\t\"next-hop\": \"10.13.1.3\",\n\t\t\t\t\t\"outgoing-interface\": \"host-veth13\"\n\t\t\t\t}\n\t\t\t}],\n\t\t\t\"outgoing-labels\": {\n\t\t\t\t\"outgoing-labels\": [{\n\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\t\"label\": 103\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\t\"label\": 104\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", + "description": "Corresponding CLI command:\n\nip route add 10.100.1.1/24 via 10.13.1.3 host-veth13 out-labels 103 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.100.1.1/24" + }, + "response": [] + }, + { + "name": "Send traffic to A via 103, 10341", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"trafficToA\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"ip-prefix\": \"10.100.1.1/24\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"impose-and-forward\"\n\t\t},\n\t\t\"paths\": {\n\t\t\t\"path\": [{\n\t\t\t\t\"path-index\": 0,\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"path-index\": 0,\n\t\t\t\t\t\"next-hop\": \"10.13.1.3\",\n\t\t\t\t\t\"outgoing-interface\": \"host-veth13\"\n\t\t\t\t}\n\t\t\t}],\n\t\t\t\"outgoing-labels\": {\n\t\t\t\t\"outgoing-labels\": [{\n\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\t\"label\": 103\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\t\"label\": 10341\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", + "description": "Node + adjacency SID example.\n\nSteers traffic to A veth341 (the first interface between vpp3 and vpp4)." + }, + "response": [] + }, + { + "name": "List ifcs - oper", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.2:8445/restconf/operational/ietf-interfaces:interfaces-state/" + }, + "response": [] + }, + { + "name": "Delete rule for traffic to B", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB" + }, + "response": [] + }, + { + "name": "Send traffic to A via 103, 10342", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"trafficToA\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"ip-prefix\": \"10.100.1.1/24\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"impose-and-forward\"\n\t\t},\n\t\t\"paths\": {\n\t\t\t\"path\": [{\n\t\t\t\t\"path-index\": 0,\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"path-index\": 0,\n\t\t\t\t\t\"next-hop\": \"10.13.1.3\",\n\t\t\t\t\t\"outgoing-interface\": \"host-veth13\"\n\t\t\t\t}\n\t\t\t}],\n\t\t\t\"outgoing-labels\": {\n\t\t\t\t\"outgoing-labels\": [{\n\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\t\"label\": 103\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\t\"label\": 10342\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}]\n}\n" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA", + "description": "Node + adjacency SID example.\n\nSteers traffic to A veth342 (the second interface between vpp3 and vpp4)." + }, + "response": [] + }, + { + "name": "Delete rule for traffic to B", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB" + }, + "response": [] + }, + { + "name": "List ifcs - cfg", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/ietf-interfaces:interfaces/" + }, + "response": [] + }, + { + "name": "Delete rule for traffic to A", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA" + }, + "response": [] + }, + { + "name": "Delete rule for traffic to A", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToA" + }, + "response": [] + }, + { + "name": "Send traffic to B via 102,104", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"trafficToB\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"config\" : {\n\t\t\t\t\t\t\"ip-prefix\": \"10.200.1.1/24\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"impose-and-forward\"\n\t\t},\n\t\t\"paths\": {\n\t\t\t\"path\": [{\n\t\t\t\t\"path-index\": 0,\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"path-index\": 0,\n\t\t\t\t\t\"next-hop\": \"10.12.1.2\",\n\t\t\t\t\t\"outgoing-interface\": \"host-veth12\"\n\t\t\t\t}\n\t\t\t}],\n\t\t\t\"outgoing-labels\": {\n\t\t\t\t\"outgoing-labels\": [{\n\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 0,\n\t\t\t\t\t\t\"label\": 102\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\"config\": {\n\t\t\t\t\t\t\"index\": 1,\n\t\t\t\t\t\t\"label\": 104\n\t\t\t\t\t}\n\t\t\t\t}]\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", + "description": "Corresponding CLI command:\n\nip route add 10.200.1.1/24 via 10.12.1.2 host-veth12 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.200.1.1/24" + }, + "response": [] + }, + { + "name": "Send traffic to B via 102", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"trafficToB\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"ip-prefix\": \"10.200.1.1/24\"\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"impose-and-forward\"\n\t\t},\n\t\t\"simple-path\": {\n\t\t\t\"config\": {\n\t\t\t\t\"next-hop\": \"10.12.1.2\",\n\t\t\t\t\"outgoing-label\": 102,\n\t\t\t\t\"outgoing-interface\": \"host-veth12\"\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.2:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB" + }, + "response": [] + } + ] }, { - "id": "cca562e5-6677-83b3-c694-e2852ae34582", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth342", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787556015, - "name": "Enable mpls on host-veth342", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth342 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth342\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "d1f8d9e4-9546-1aae-2b86-b88a5baa53e4", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/ietf-interfaces:interfaces/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511784757365, - "name": "List ifcs - cfg", + "name": "vpp2", "description": "", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" - }, - { - "id": "d968a2a2-8c53-528e-31a7-4d34e85c3fd9", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp3", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511801173478, - "name": "Swap 104 and forward via veth342", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.34.2.4 host-veth342 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp3\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.34.2.4\",\n \"outgoing-label\": 104,\n \"outgoing-interface\": \"host-veth342\"\n }\n }\n ]\n}" - }, - { - "id": "d98ec90f-b870-6ab7-ce74-46b78e4c4615", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth432", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511790503226, - "name": "Enable mpls on veth432", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth432 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth432\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "dcbbd269-63b7-910c-a710-4ad8fd0573ee", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.4:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth31", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511787499174, - "name": "Enable mpls on host-veth31", - "description": "Correspondig CLI command:\n\nset interface mpls host-veth31 enable", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"host-veth31\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" - }, - { - "id": "fc075349-ef0d-a0cc-dd7e-1de162c42c64", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "https://172.17.0.5:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511804229802, - "name": "Pop 104 and IPv4 lookup", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104", - "collectionId": "775eb149-1920-2405-14f1-0a578e6dfa17", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"lsp1\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }\n ]\n}" + "item": [ + { + "name": "Enable mpls on host-veth24 interface", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth24\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth24", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth24 enable" + }, + "response": [] + }, + { + "name": "List ifcs - oper", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.3:8445/restconf/operational/ietf-interfaces:interfaces-state/" + }, + "response": [] + }, + { + "name": "Enable mpls on host-veth21 interface", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"host-veth21\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/host-veth21", + "description": "Correspondig CLI command:\n\nset interface mpls host-veth21 enable" + }, + "response": [] + }, + { + "name": "List ifcs - cfg", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/ietf-interfaces:interfaces/" + }, + "response": [] + }, + { + "name": "Get mpls (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls" + }, + "response": [] + }, + { + "name": "Send traffic to B via 104", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [\n {\n \"name\": \"trafficToB\",\n \"config\": {\n \"in-segment\": {\n \t\"config\" : {\n \"ip-prefix\": \"10.200.1.1/24\"\n \t}\n },\n \"operation\": \"impose-and-forward\"\n },\n \"simple-path\": {\n\t\t\"config\": {\n\t\t\t\"next-hop\": \"10.24.1.4\",\n\t\t\t\"outgoing-label\": 104,\n\t\t\t\"outgoing-interface\": \"host-veth24\"\n\t\t}\n\t }\n }\n ]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/trafficToB", + "description": "Simulates route that could be received via BGP." + }, + "response": [] + }, + { + "name": "Pop 102 and MPLS lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"lsp1\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"incoming-label\": 102\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"pop-and-lookup\",\n\t\t\t\"vpp-mpls:label-lookup\": {\n\t\t\t\t\"type\": \"mpls\",\n\t\t\t\t\"mpls-lookup-in-table\": 0\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp1", + "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102" + }, + "response": [] + }, + { + "name": "Pop 102 and IPv4 lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"lsp3\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"incoming-label\": 102\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"pop-and-lookup\",\n\t\t\t\"vpp-mpls:label-lookup\": {\n\t\t\t\t\"type\": \"ipv4\",\n\t\t\t\t\"ip4-lookup-in-table\": 0\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp3", + "description": "In case 102 is the last label,\npop it and check if we have route for destination." + }, + "response": [] + }, + { + "name": "Swap 104 and forward", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"static-lsp\": [{\n\t\t\"name\": \"lsp2\",\n\t\t\"config\": {\n\t\t\t\"in-segment\": {\n\t\t\t\t\"config\": {\n\t\t\t\t\t\"incoming-label\": 104\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"operation\": \"swap-and-forward\"\n\t\t},\n\t\t\"simple-path\": {\n\t\t\t\"config\": {\n\t\t\t\t\"next-hop\": \"10.24.1.4\",\n\t\t\t\t\"outgoing-label\": 104,\n\t\t\t\t\"outgoing-interface\": \"host-veth24\"\n\t\t\t}\n\t\t}\n\t}]\n}" + }, + "url": "https://172.17.0.3:8445/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/lsp2", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 via 10.24.1.4 host-veth24 out-labels 104\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104" + }, + "response": [] + } + ] } ] }
\ No newline at end of file diff --git a/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-03-10.yang b/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-07-02.yang index ae8688bbd..9da4bb942 100644..100755 --- a/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-03-10.yang +++ b/mpls/api/src/main/yang/hc2vpp-ietf-mpls-static@2017-07-02.yang @@ -8,10 +8,13 @@ module hc2vpp-ietf-mpls-static { prefix mpls; } -/* - TODO: changed to modified version of ietf-routing that we use - Set back to ietf-routing after HC2VPP-253 is resolved. -*/ + /* + TODO: HC2VPP-307 - Remove workarounds for ODL bugs from ietf-mpls YANG. + */ + /* + TODO: changed to modified version of ietf-routing that we use + Set back to ietf-routing after HC2VPP-298 is resolved. + */ import hc2vpp-ietf-routing { prefix "rt"; } @@ -53,7 +56,6 @@ module hc2vpp-ietf-mpls-static { WG Chair: Ross Callon <mailto:rcallon@juniper.net> - WG Chair: George Swallow <mailto:swallow.ietf@gmail.com> @@ -93,9 +95,9 @@ module hc2vpp-ietf-mpls-static { /* TODO: 2017-07-02 defines grouping in-segment but does not use it. - Bump to newer version after the issue is resolved. + Bump to newer version after HC2VPP-306 is resolved. */ - revision "2017-03-10" { + revision "2017-07-02" { description "Latest revision: - Addressed MPLS-RT review comments"; @@ -112,6 +114,35 @@ module hc2vpp-ietf-mpls-static { configured static LSP."; } + typedef mpls-operations-type { + type enumeration { + enum impose-and-forward { + description + "Operation impose outgoing label(s) and forward to + next-hop"; + } + enum pop-and-forward { + description + "Operation pop incoming label and forward to next-hop"; + } + enum pop-impose-and-forward { + description + "Operation pop incoming label, impose one or more + outgoing label(s) and forward to next-hop"; + } + enum swap-and-forward { + description + "Operation swap incoming label, with outgoing label and + forward to next-hop"; + } + enum pop-and-lookup { + description + "Operation pop incoming label and perform a lookup"; + } + } + description "MPLS operations types"; + } + grouping path-basic_config { description "common definitions for statics"; @@ -134,6 +165,53 @@ module hc2vpp-ietf-mpls-static { } } + grouping path-outgoing-labels_config { + description "Path outgoing labels grouping"; + leaf index { + type uint8 { + range "0..255"; + } + description + "Index of the label. Index 0 indicates + top of the label stack"; + } + leaf label { + type rt-types:mpls-label; + description + "The outgoing MPLS labels to impose"; + } + } + + grouping path-outgoing-labels { + description "Path outgoing labels grouping"; + container outgoing-labels { + description "List of outgoing labels"; + list outgoing-labels { + key "index"; + description "Outgoing label list"; + leaf index { + type leafref { + path "../config/index"; + } + description + "Index of the label. Index 0 indicates + top of the label stack"; + } + container config { + description + "Configuration intended parameters"; + uses path-outgoing-labels_config; + } + container state { + config false; + description + "Configuration applied parameters and state"; + uses path-outgoing-labels_config; + } + } + } + } + grouping path-properties_config { description "MPLS path properties"; @@ -155,13 +233,6 @@ module hc2vpp-ietf-mpls-static { "The address of the next-hop"; } - leaf-list outgoing-labels { - type rt-types:mpls-label; - ordered-by user; - description - "The outgoing MPLS labels to impose"; - } - leaf outgoing-interface { type if:interface-ref; description @@ -197,103 +268,148 @@ module hc2vpp-ietf-mpls-static { } } - grouping static-lsp_config { - description "common definitions for static LSPs"; - - container in-segment { - description - "MPLS incoming segment"; - choice type { - description - "Basic FEC choice"; - case ip-prefix { - leaf ip-prefix { - type inet:ip-prefix; - description "An IP prefix"; + grouping static-lsp-paths { + description "Static LSP path grouping"; + choice out-segment { + description "The MPLS out-segment type choice"; + case simple-path { + container simple-path { + description "Simple path container"; + container config { + description + "Holds the intended configuration"; + uses path-basic_config; } - } - case mpls-label { - leaf incoming-label { - type rt-types:mpls-label; - description "label value on the incoming packet"; + container state { + config false; + description + "Holds the state and inuse configuration"; + uses path-basic_config; } } - /* - Currently not supported. Commented out due to ODL issues (MDSAL-182, YANGTOOLS-677). - case tunnel { - leaf tunnel { - type te:tunnel-ref; - description "TE tunnel FEC mapping"; + } + case multiple-paths { + container paths { + description "List of outgoing paths"; + list path { + key path-index; + description + "The list of MPLS paths associated with the FEC"; + leaf path-index { + type leafref { + path "../config/path-index"; + } + description "Index of the path"; + } + container config { + description + "Holds the intended configuration"; + uses path-properties_config; + } + container state { + config false; + description + "Holds the state and inuse configuration"; + uses path-properties_config; + } } + uses path-outgoing-labels; } - */ - } - leaf incoming-interface { - type if:interface-ref; - description - "Optional incoming interface if FEC is restricted - to traffic incoming on a specific interface"; } } + } - leaf operation { - type enumeration { - enum impose-and-forward { - description - "Operation impose outgoing label(s) and forward to - next-hop"; - } - enum pop-and-forward { - description - "Operation pop incoming label and forward to next-hop"; - } - enum pop-impose-and-forward { - description - "Operation pop incoming label, impose one or more - outgoing label(s) and forward to next-hop"; + grouping in-segment_config { + description "In-segment grouping"; + choice type { + description + "Basic FEC choice"; + case ip-prefix { + leaf ip-prefix { + type inet:ip-prefix; + description "An IP prefix"; } - enum swap-and-forward { - description - "Operation swap incoming label, with outgoing label and - forward to next-hop"; + } + case mpls-label { + leaf incoming-label { + type rt-types:mpls-label; + description "label value on the incoming packet"; } - enum pop-and-lookup { - description - "Operation pop incoming label and perform a lookup"; + } + /* Import TE generic types */ + /* + Yangtools has some issues with ietf-te model. + There is no plan to support tunnels currently, so we simply comment this out. + TODO: remove comment after following issues are resolved: + https://jira.opendaylight.org/browse/MDSAL-182 + https://jira.opendaylight.org/browse/YANGTOOLS-677 + + case tunnel { + leaf tunnel { + type te:tunnel-ref; + description "TE tunnel FEC mapping"; } } + */ + } + leaf incoming-interface { + type if:interface-ref; description - "The MPLS operation to be executed on the incoming packet"; + "Optional incoming interface if FEC is restricted + to traffic incoming on a specific interface"; } + } - choice out-segment { - description "The MPLS out-segment type choice"; - case simple-path { - uses path-basic_config; + grouping in-segment { + description "In-segment grouping"; + container in-segment { + description + "MPLS incoming segment"; + container config { + description + "Holds the intended configuration"; + uses in-segment_config; } - case path-list { - list paths { - key path-index; - description - "The list of MPLS paths associated with the FEC"; - uses path-properties_config; - } + container state { + config false; + description + "Holds the state and inuse configuration"; + uses in-segment_config; } } } - grouping static-lsp { - description "grouping for top level list of static LSPs"; + grouping static-lsp-top_config { + description "Static LSP configuration grouping"; + /* + TODO: 2017-07-02 defines grouping in-segment but was not used - HC2VPP-306. + Added it here as it was in static-lsp-config in 2017-03-10 revision. + This will probably be fixed in next version of this model. + */ + uses in-segment; + leaf name { + type string; + description "name to identify the LSP"; + } + leaf operation { + type mpls-operations-type; + description + "The MPLS operation to be executed on the incoming packet"; + } + } + + grouping static-lsp-top { + description "common definitions for static LSPs"; container config { description "Holds the intended configuration"; - uses static-lsp_config; + uses static-lsp-top_config; } container state { config false; description "Holds the state and inuse configuration"; - uses static-lsp_config; + uses static-lsp-top_config; } } @@ -305,12 +421,14 @@ module hc2vpp-ietf-mpls-static { list static-lsp { key name; description "list of defined static LSPs"; - leaf name { - type string; + type leafref { + path "../config/name"; + } description "name to identify the LSP"; } - uses static-lsp; + uses static-lsp-top; + uses static-lsp-paths; } } } diff --git a/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang b/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang index c417046c0..8b5aa5ee8 100644 --- a/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang +++ b/mpls/api/src/main/yang/vpp-mpls@2017-11-20.yang @@ -15,7 +15,7 @@ module vpp-mpls { import hc2vpp-ietf-mpls-static { prefix "mpls-static"; - revision-date 2017-03-10; + revision-date 2017-07-02; } import yang-ext { diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java index 5e384305c..6a09b3eb7 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/ImposeAndForwardWriter.java @@ -31,21 +31,22 @@ import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.OutSegment; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.Type; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.IpPrefix; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.PathList; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePath; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.Paths; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.OutSegment; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.MultiplePaths; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePath; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.Paths; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.Type; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.IpPrefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.MplsLabel; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** - * Translates {@link Operation#ImposeAndForward ImposeAndForward} operation to ip_add_del_route API. + * Translates {@link MplsOperationsType#ImposeAndForward ImposeAndForward} operation to ip_add_del_route API. * * @see <a href="https://git.fd.io/vpp/tree/src/vnet/ip/ip.api">ip_add_del_route</a> definition */ @@ -66,7 +67,7 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab request.isAdd = booleanToByte(isAdd); translate(config.getInSegment(), request); - translate(config.getOutSegment(), request, ctx); + translate(data.getOutSegment(), request, ctx); // default values based on inspecting VPP's CLI and make test code request.nextHopWeight = 1; @@ -76,8 +77,9 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab } private void translate(@Nonnull final InSegment inSegment, @Nonnull final IpAddDelRoute request) { - checkArgument(inSegment != null, "Configuring impose-and-forward, but in-segment is missing."); - final Type type = inSegment.getType(); + checkArgument(inSegment.getConfig() != null, + "Configuring impose-and-forward, but in-segment config is missing."); + final Type type = inSegment.getConfig().getType(); checkArgument(type instanceof IpPrefix, "Only ip-prefix type is supported, but %s given.", type); // TODO(HC2VPP-264): add support for mpls + v6 @@ -93,8 +95,8 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab final String outgoingInterface; if (outSegment instanceof SimplePath) { outgoingInterface = translate((SimplePath) outSegment, request); - } else if (outSegment instanceof PathList) { - outgoingInterface = translate((PathList) outSegment, request); + } else if (outSegment instanceof MultiplePaths) { + outgoingInterface = translate((MultiplePaths) outSegment, request); } else { throw new IllegalArgumentException("Unsupported out-segment type: " + outSegment); } @@ -104,7 +106,7 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab } private String translate(@Nonnull final SimplePath path, @Nonnull final IpAddDelRoute request) { - final IpAddress nextHop = path.getNextHop(); + final IpAddress nextHop = path.getSimplePath().getConfig().getNextHop(); // TODO(HC2VPP-264): add support for mpls + v6 if (nextHop != null) { @@ -115,18 +117,19 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab request.nextHopAddress = new byte[0]; } - final MplsLabel outgoingLabel = path.getOutgoingLabel(); + final MplsLabel outgoingLabel = path.getSimplePath().getConfig().getOutgoingLabel(); checkArgument(outgoingLabel != null, "Configuring impose-and-forward, but outgoing-label is missing."); request.nextHopOutLabelStack = new FibMplsLabel[] {translate(outgoingLabel.getValue())}; request.nextHopNOutLabels = 1; - return path.getOutgoingInterface(); + return path.getSimplePath().getConfig().getOutgoingInterface(); } - private String translate(@Nonnull final PathList pathList, @Nonnull final IpAddDelRoute request) { - checkArgument(pathList.getPaths() != null && pathList.getPaths().size() == 1, "Only single path is supported"); - final Paths paths = pathList.getPaths().get(0); - final IpAddress nextHop = paths.getNextHop(); + private String translate(@Nonnull final MultiplePaths pathList, @Nonnull final IpAddDelRoute request) { + checkArgument(pathList.getPaths() != null && pathList.getPaths().getPath().size() == 1, + "Only single path is supported"); + final Paths paths = pathList.getPaths(); + final IpAddress nextHop = paths.getPath().get(0).getConfig().getNextHop(); // TODO(HC2VPP-264): add support for mpls + v6 if (nextHop != null) { @@ -137,14 +140,14 @@ final class ImposeAndForwardWriter implements LspWriter, Ipv4Translator, MplsLab request.nextHopAddress = new byte[0]; } - final List<MplsLabel> labels = paths.getOutgoingLabels(); + final List<OutgoingLabels> labels = paths.getOutgoingLabels().getOutgoingLabels(); final int numberOfLabels = labels.size(); checkArgument(numberOfLabels > 0 && numberOfLabels < MAX_LABELS, "Number of labels (%s) not in range (0, %s].", numberOfLabels, MAX_LABELS, numberOfLabels); request.nextHopNOutLabels = (byte) numberOfLabels; - request.nextHopOutLabelStack = - labels.stream().map(label -> translate(label.getValue())).toArray(FibMplsLabel[]::new); + request.nextHopOutLabelStack = labels.stream().map(label -> translate(label.getConfig().getLabel().getValue())) + .toArray(FibMplsLabel[]::new); - return paths.getOutgoingInterface(); + return paths.getPath().get(0).getConfig().getOutgoingInterface(); } } diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java index be26166d3..3b0be1fed 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/Ipv4LookupWriter.java @@ -24,9 +24,8 @@ import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel; import io.fd.vpp.jvpp.core.future.FutureJVppCore; import io.fd.vpp.jvpp.core.types.FibMplsLabel; import javax.annotation.Nonnull; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java index 0e68f0c40..7a67b26db 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/LspWriter.java @@ -21,7 +21,7 @@ import io.fd.hc2vpp.common.translate.util.JvppReplyConsumer; import io.fd.honeycomb.translate.MappingContext; import io.fd.honeycomb.translate.write.WriteFailedException; import javax.annotation.Nonnull; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java index 9f531bba4..e15e50a7d 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsInSegmentTranslator.java @@ -20,9 +20,9 @@ import static com.google.common.base.Preconditions.checkArgument; import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel; import javax.annotation.Nonnull; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.Type; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabel; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.Type; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabel; /** * Mixin that translates {@link InSegment} of {@link MplsLabel} type to {@link MplsRouteAddDel} message. @@ -30,7 +30,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._stati interface MplsInSegmentTranslator { default void translate(@Nonnull final InSegment inSegment, @Nonnull final MplsRouteAddDel request) { checkArgument(inSegment != null, "Missing in-segment"); - final Type type = inSegment.getType(); + final Type type = inSegment.getConfig().getType(); checkArgument(type instanceof MplsLabel, "Expecting in-segment of type mpls-label, but %s given.", type); final Long label = ((MplsLabel) type).getIncomingLabel().getValue(); request.mrLabel = label.intValue(); diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java index 86e7bdee1..c42aedd27 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsLookupWriter.java @@ -24,15 +24,15 @@ import io.fd.vpp.jvpp.core.dto.MplsRouteAddDel; import io.fd.vpp.jvpp.core.future.FutureJVppCore; import io.fd.vpp.jvpp.core.types.FibMplsLabel; import javax.annotation.Nonnull; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** - * Translates {@link StaticLspConfig.Operation#PopAndLookup} operation with {@link LookupType#Mpls} to + * Translates {@link MplsOperationsType#PopAndLookup} operation with {@link LookupType#Mpls} to * mpls_route_add_del API. * * @see <a href="https://git.fd.io/vpp/tree/src/vnet/mpls/mpls.api">mpls_route_add_del</a> definition diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java index 72d9c65ae..c8b47b8da 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsSwapWriter.java @@ -29,16 +29,16 @@ import io.fd.vpp.jvpp.core.types.FibMplsLabel; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.OutSegment; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePath; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.OutSegment; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePath; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.MplsLabel; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; /** - * Translates {@link StaticLspConfig.Operation#SwapAndForward} operation to mpls_route_add_del API. + * Translates {@link MplsOperationsType#SwapAndForward} operation to mpls_route_add_del API. * * @see <a href="https://git.fd.io/vpp/tree/src/vnet/mpls/mpls.api">mpls_route_add_del</a> definition */ @@ -61,7 +61,7 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr request.mrEos = 1; // only SWAP for the last label in the stack is currently supported translate(config.getInSegment(), request); - translate(config.getOutSegment(), request, ctx); + translate(data.getOutSegment(), request, ctx); // default values based on inspecting VPP's CLI and make test code request.mrClassifyTableIndex = -1; @@ -75,7 +75,7 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr @Nonnull final MappingContext ctx) { checkArgument(outSegment instanceof SimplePath, "Unsupported out-segment type: %s", outSegment); final SimplePath path = (SimplePath) outSegment; - final IpAddress nextHop = path.getNextHop(); + final IpAddress nextHop = path.getSimplePath().getConfig().getNextHop(); checkArgument(nextHop != null, "Configuring swap-and-forward, but next-hop is missing."); // TODO(HC2VPP-264): add support for mpls + v6 @@ -83,12 +83,12 @@ final class MplsSwapWriter implements LspWriter, Ipv4Translator, MplsInSegmentTr checkArgument(address != null, "Only IPv4 next-hop address is supported."); request.mrNextHop = ipv4AddressNoZoneToArray(address.getValue()); - final MplsLabel outgoingLabel = path.getOutgoingLabel(); + final MplsLabel outgoingLabel = path.getSimplePath().getConfig().getOutgoingLabel(); checkArgument(outgoingLabel != null, "Configuring swap-and-forward, but outgoing-label is missing."); request.mrNextHopOutLabelStack = new FibMplsLabel[] {translate(outgoingLabel.getValue())}; request.mrNextHopNOutLabels = 1; - final String outgoingInterface = path.getOutgoingInterface(); + final String outgoingInterface = path.getSimplePath().getConfig().getOutgoingInterface(); checkArgument(outgoingInterface != null, "Configuring swap-and-forward, but outgoing-interface is missing."); request.mrNextHopSwIfIndex = interfaceContext.getIndex(outgoingInterface, ctx); } diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java index d81d6fae3..475a06288 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/MplsWriterFactory.java @@ -27,12 +27,15 @@ import io.fd.honeycomb.translate.write.registry.ModifiableWriterRegistryBuilder; import io.fd.vpp.jvpp.core.future.FutureJVppCore; import javax.annotation.Nonnull; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegment; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.Paths; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.Path; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePath; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.Paths; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegment; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.OutgoingLabels; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.interfaces.mpls.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls; @@ -80,10 +83,27 @@ final class MplsWriterFactory implements WriterFactory { // First enable MPLS on interface, then configure it: registry.subtreeAddAfter( ImmutableSet - .of(CONFIG_ID, InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(InSegment.class), - InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(Paths.class), + .of(CONFIG_ID, + InstanceIdentifier.create(StaticLsp.class).child(Config.class).child(InSegment.class), + InstanceIdentifier.create(StaticLsp.class) + .child(Config.class) + .child(InSegment.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.Config.class), InstanceIdentifier.create(StaticLsp.class).child(Config.class) - .augmentation(StaticLspVppLookupAugmentation.class).child(LabelLookup.class)), + .augmentation(StaticLspVppLookupAugmentation.class).child(LabelLookup.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(OutgoingLabels.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabels.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.Config.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(Path.class), + InstanceIdentifier.create(StaticLsp.class).child(Paths.class).child(Path.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.path.Config.class), + InstanceIdentifier.create(StaticLsp.class).child(SimplePath.class), + InstanceIdentifier.create(StaticLsp.class).child(SimplePath.class) + .child(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.Config.class)), new GenericWriter<>(STATIC_LSP_ID, new StaticLspCustomizer(vppApi, ifcContext)), INTERFACE_ID); } diff --git a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java index 6aab1ed42..b97a36974 100644 --- a/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java +++ b/mpls/impl/src/main/java/io/fd/hc2vpp/mpls/StaticLspCustomizer.java @@ -18,9 +18,9 @@ package io.fd.hc2vpp.mpls; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; -import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.ImposeAndForward; -import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.PopAndLookup; -import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig.Operation.SwapAndForward; +import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.ImposeAndForward; +import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.PopAndLookup; +import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType.SwapAndForward; import io.fd.hc2vpp.common.translate.util.NamingContext; import io.fd.honeycomb.translate.MappingContext; @@ -29,10 +29,11 @@ import io.fd.honeycomb.translate.write.WriteContext; import io.fd.honeycomb.translate.write.WriteFailedException; import io.fd.vpp.jvpp.core.future.FutureJVppCore; import javax.annotation.Nonnull; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.Config; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey; + +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.Config; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.LookupType; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.StaticLspVppLookupAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.mpls.rev171120.VppLabelLookupAttributes; @@ -41,7 +42,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * Selects specific {@link LspWriter} based on {@link StaticLspConfig.Operation} and {@link LookupType}. + * Selects specific {@link LspWriter} based on {@link MplsOperationsType} and {@link LookupType}. */ final class StaticLspCustomizer implements ListWriterCustomizer<StaticLsp, StaticLspKey>, LspWriter { private static final Logger LOG = LoggerFactory.getLogger(StaticLspCustomizer.class); @@ -93,7 +94,7 @@ final class StaticLspCustomizer implements ListWriterCustomizer<StaticLsp, Stati @Nonnull final MappingContext ctx, final boolean isAdd) throws WriteFailedException { final Config config = data.getConfig(); checkArgument(config != null, "Config node of static-lsp is missing."); - final StaticLspConfig.Operation operation = config.getOperation(); + final MplsOperationsType operation = config.getOperation(); if (ImposeAndForward.equals(operation)) { imposeAndForward.write(id, data, ctx, isAdd); } else if (PopAndLookup.equals(operation)) { diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java index ca687b502..12312af37 100644 --- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java +++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/ImposeAndForwardTest.java @@ -36,18 +36,20 @@ import org.junit.Test; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.IpPrefixBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.PathListBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePathBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.path.list.PathsBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.MultiplePathsBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.PathsBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.PathBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePathBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.IpPrefixBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.OutgoingLabelsBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing; @@ -73,44 +75,76 @@ public class ImposeAndForwardTest extends WriterCustomizerTest implements ByteDa private static StaticLsp getSimpleLsp(final long label) { return getSimpleLsp(label, IpAddressBuilder.getDefaultInstance("5.6.7.8")); } - private static StaticLsp getSimpleLsp(final long label, - final IpAddress nextHop) { - return new StaticLspBuilder() - .setName(LSP_NAME) - .setConfig(new ConfigBuilder() - .setInSegment(new InSegmentBuilder() - .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("1.2.3.4/24")) - .build()) - .build() - ) - .setOperation(StaticLspConfig.Operation.ImposeAndForward) - .setOutSegment(new SimplePathBuilder() - .setNextHop(nextHop) - .setOutgoingInterface(IF_NAME) - .setOutgoingLabel(new MplsLabel(label)) + + private static StaticLsp getSimpleLsp(final long label, final IpAddress nextHop) { + return new StaticLspBuilder().setName(LSP_NAME) + .setConfig(new ConfigBuilder().setInSegment(new InSegmentBuilder().setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder() + .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("1.2.3.4/24")).build()) + .build()) + .build()) + .setOperation(MplsOperationsType.ImposeAndForward) + .build()) + .setOutSegment( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePathBuilder() + .setSimplePath(new SimplePathBuilder().setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.ConfigBuilder() + .setNextHop(nextHop) + .setOutgoingInterface(IF_NAME) + .setOutgoingLabel(new MplsLabel(label)) + .build()).build()) .build()) - .build()) .build(); } private static StaticLsp getComplexLsp() { - return new StaticLspBuilder() - .setName(LSP_NAME) - .setConfig(new ConfigBuilder() - .setInSegment(new InSegmentBuilder() - .setType(new IpPrefixBuilder().setIpPrefix(getDefaultInstance("10.10.24.0/24")) + return new StaticLspBuilder().setName(LSP_NAME) + .setConfig( + new ConfigBuilder() + .setInSegment( + new InSegmentBuilder() + .setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder() + .setType( + new IpPrefixBuilder() + .setIpPrefix(getDefaultInstance("10.10.24.0/24")) + .build()) + .build()) + .build()) + .setOperation(MplsOperationsType.ImposeAndForward) + .build()) + .setOutSegment( + new MultiplePathsBuilder() + .setPaths( + new PathsBuilder() + .setPath( + Collections.singletonList(new PathBuilder() + .setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.multiple.paths.paths.path.ConfigBuilder() + .setNextHop( + IpAddressBuilder + .getDefaultInstance("10.10.12.2")) + .setOutgoingInterface(IF_NAME) + + .build()).build())) + .setOutgoingLabels( + new OutgoingLabelsBuilder() + .setOutgoingLabels(Arrays.asList( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabelsBuilder() + .setIndex((short) 0) + .setConfig(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.ConfigBuilder() + .setLabel(new MplsLabel(102L)) + .build()) + .build(), + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.OutgoingLabelsBuilder() + .setIndex((short) 1) + .setConfig(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.path.outgoing.labels.outgoing.labels.outgoing.labels.ConfigBuilder() + .setLabel(new MplsLabel(104L)) + .build()) + .build())) + .build()) .build()) - .build() - ) - .setOperation(StaticLspConfig.Operation.ImposeAndForward) - .setOutSegment(new PathListBuilder() - .setPaths(Collections.singletonList(new PathsBuilder() - .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.12.2")) - .setOutgoingInterface(IF_NAME) - .setOutgoingLabels(Arrays.asList(new MplsLabel(102L), new MplsLabel(104L))) - .build())) .build()) - .build()) .build(); } diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java index 434f3b91d..627c3294f 100644 --- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java +++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndIpv4LookupTest.java @@ -30,15 +30,15 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCoreFacade; import io.fd.vpp.jvpp.core.types.FibMplsLabel; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing; @@ -72,12 +72,18 @@ public class PopAndIpv4LookupTest extends WriterCustomizerTest implements ByteDa return new StaticLspBuilder() .setName(LSP_NAME) .setConfig(new ConfigBuilder() - .setInSegment(new InSegmentBuilder() - .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) - .build()) + .setInSegment( + new InSegmentBuilder() + .setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder() + .setType(new MplsLabelBuilder() + .setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) + .build()) + .build()) + .build() ) - .setOperation(StaticLspConfig.Operation.PopAndLookup) + .setOperation(MplsOperationsType.PopAndLookup) .addAugmentation(StaticLspVppLookupAugmentation.class, new StaticLspVppLookupAugmentationBuilder() .setLabelLookup(new LabelLookupBuilder() diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java index a6bc3432a..ab069100b 100644 --- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java +++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/PopAndMplsLookupTest.java @@ -30,15 +30,15 @@ import io.fd.vpp.jvpp.core.future.FutureJVppCoreFacade; import io.fd.vpp.jvpp.core.types.FibMplsLabel; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing; @@ -72,12 +72,16 @@ public class PopAndMplsLookupTest extends WriterCustomizerTest implements ByteDa return new StaticLspBuilder() .setName(LSP_NAME) .setConfig(new ConfigBuilder() - .setInSegment(new InSegmentBuilder() - .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) + .setInSegment(new InSegmentBuilder().setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder() + .setType( + new MplsLabelBuilder() + .setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) + .build()) .build()) .build() ) - .setOperation(StaticLspConfig.Operation.PopAndLookup) + .setOperation(MplsOperationsType.PopAndLookup) .addAugmentation(StaticLspVppLookupAugmentation.class, new StaticLspVppLookupAugmentationBuilder() .setLabelLookup(new LabelLookupBuilder() diff --git a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java index 4a962dd9f..677bb0914 100644 --- a/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java +++ b/mpls/impl/src/test/java/io/fd/hc2vpp/mpls/SwapAndForwardTest.java @@ -32,16 +32,16 @@ import io.fd.vpp.jvpp.core.types.FibMplsLabel; import org.junit.Test; import org.mockito.Mock; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.Mpls1; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.StaticLspConfig; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp.ConfigBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.InSegmentBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.in.segment.type.MplsLabelBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310._static.lsp_config.out.segment.SimplePathBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls.StaticLsps; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLsp; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspBuilder; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170310.routing.mpls._static.lsps.StaticLspKey; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.Mpls1; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.MplsOperationsType; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.SimplePathBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.top.ConfigBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.InSegmentBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment_config.type.MplsLabelBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls.StaticLsps; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLsp; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.routing.mpls._static.lsps.StaticLspKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.Routing1; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls.rev170702.routing.Mpls; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.rev180313.Routing; @@ -73,18 +73,29 @@ public class SwapAndForwardTest extends WriterCustomizerTest implements ByteData return new StaticLspBuilder() .setName(LSP_NAME) .setConfig(new ConfigBuilder() - .setInSegment(new InSegmentBuilder() - .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) - .build()) + .setInSegment( + new InSegmentBuilder() + .setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702.in.segment.in.segment.ConfigBuilder() + .setType(new MplsLabelBuilder().setIncomingLabel(new MplsLabel((long) LOCAL_LABEL)) + .build()) + .build()) .build() ) - .setOperation(StaticLspConfig.Operation.SwapAndForward) - .setOutSegment(new SimplePathBuilder() - .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.24.4")) - .setOutgoingInterface(IF_NAME) - .setOutgoingLabel(new MplsLabel((long) OUT_LABEL)) - .build()) + .setOperation(MplsOperationsType.SwapAndForward) .build()) + .setOutSegment( + new SimplePathBuilder() + .setSimplePath( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.SimplePathBuilder() + .setConfig( + new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.mpls._static.rev170702._static.lsp.paths.out.segment.simple.path.simple.path.ConfigBuilder() + .setNextHop(IpAddressBuilder.getDefaultInstance("10.10.24.4")) + .setOutgoingInterface(IF_NAME) + .setOutgoingLabel(new MplsLabel((long) OUT_LABEL)) + .build()) + .build()) + .build()) .build(); } diff --git a/mpls/mpls_postman_collection.json b/mpls/mpls_postman_collection.json index c40afd791..1bede639b 100644..100755 --- a/mpls/mpls_postman_collection.json +++ b/mpls/mpls_postman_collection.json @@ -1,372 +1,396 @@ { - "id": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "name": "Honeycomb MPLS calls", - "description": "", - "order": [ - "e8d94648-0106-feaa-f436-1c0cd327d89c", - "94581eee-036d-dced-1495-1b5c8c35059d", - "14fedcfb-faf6-00f5-4673-c1074923b92e", - "22964c4c-3ba1-39fe-9a24-de6af2ca53a2", - "48779e1a-5a6d-9e76-c646-8f3eea9433d2", - "65f84720-3266-322f-9739-af804da451b7", - "15a16a52-17fe-f50a-a973-90947ef6c625", - "1b3c51b3-0675-61e3-6670-d8b7fcdd2884", - "6fcda03b-3efa-3ae9-a1a0-5fafef5732a0", - "11f04e55-6c1f-38ad-ed12-dab1f1c5df97", - "15f14fb1-a102-e482-814f-7c8afca13812", - "5a271f51-ab7e-c007-882b-d5e0a99da138", - "b98635ba-fc25-feb7-8281-1654a7639ebd", - "3e9ec3af-3d8b-6b1e-c193-22c702c3e81e", - "590a3bad-ecbc-7309-1357-50e678036e17", - "1297c446-dc5f-51b1-3368-9d64e48fff83", - "27b745d3-2fbe-0f02-d605-904f8188088f" - ], - "folders": [], - "timestamp": 1509091634177, - "owner": 0, - "public": false, - "requests": [ + "info": { + "_postman_id": "a86a2f22-d753-4a4b-a1a4-ade4f9bbfb2f", + "name": "Honeycomb MPLS calls", + "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json" + }, + "item": [ { - "id": "11f04e55-6c1f-38ad-ed12-dab1f1c5df97", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511436906647, - "name": "Swap label and forward", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 123 via 10.10.24.4 loop0 out-labels 123\n\n\nCan be verified via CLI using:\n\nshow mpls fib 123", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp4\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 123\n },\n \"operation\": \"swap-and-forward\",\n \"next-hop\": \"10.10.24.5\",\n \"outgoing-label\": 123,\n \"outgoing-interface\": \"loop0\"\n }\n }\n ]\n}" + "name": "Add loopback ifc ", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"loop0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:loopback\",\r\n \"loopback\" :{\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\"\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/interface/loop0", + "description": "Corresponding CLI command:\n\ncreate loop interface" + }, + "response": [] }, { - "id": "1297c446-dc5f-51b1-3368-9d64e48fff83", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511430765571, - "name": "Delete label swap FIB entry", - "description": "Corresponding CLI command:\n\nmpls local-label del eos 123 via 10.10.24.4 loop0 out-labels 123\n\nCan be verified via CLI using:\n\nshow mpls fib", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "List ifcs - cfg", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/" + }, + "response": [] }, { - "id": "14fedcfb-faf6-00f5-4673-c1074923b92e", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/operational/ietf-interfaces:interfaces-state/", - "pathVariables": {}, - "preRequestScript": "", - "method": "GET", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "data": [], - "dataMode": "raw", "name": "List ifcs - oper", - "description": "", - "descriptionFormat": "html", - "time": 1509094553742, - "version": 2, - "responses": [], - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + }, + "url": "http://localhost:8183/restconf/operational/ietf-interfaces:interfaces-state/" + }, + "response": [] }, { - "id": "15a16a52-17fe-f50a-a973-90947ef6c625", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511436768230, - "name": "Push two MPLS labels", - "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.24.0/24", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp1\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.10.24.0/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"paths\": [\n {\n \"path-index\": 0,\n \"next-hop\": \"10.10.12.2\",\n \"outgoing-labels\": [\n 102,\n 104\n ],\n \"outgoing-interface\": \"loop0\"\n }\n ]\n }\n }\n ]\n}" + "name": "Enable mpls on loop0 interface", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0", + "description": "Correspondig CLI command:\n\nset interface mpls loop0 enable" + }, + "response": [] }, { - "id": "15f14fb1-a102-e482-814f-7c8afca13812", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1509715185345, - "name": "Get static LSPs (cfg)", - "description": "", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Get mpls interfaces (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls" + }, + "response": [] }, { - "id": "1b3c51b3-0675-61e3-6670-d8b7fcdd2884", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511358690276, - "name": "Pop label and MPLS lookup", - "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp2\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 102\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }\n ]\n}" + "name": "Push single MPLS label", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp0\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"ip-prefix\": \"10.10.34.0/24\"\n }\n },\n \"operation\": \"impose-and-forward\"\n },\n \"simple-path\": {\n \"config\": {\n \"next-hop\": \"10.10.13.3\",\n \"outgoing-label\": 111,\n \"outgoing-interface\": \"loop0\"\n }\n }\n }]\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0", + "description": "Corresponding CLI command:\n\nip route add 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.34.0/24" + }, + "response": [] }, { - "id": "22964c4c-3ba1-39fe-9a24-de6af2ca53a2", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511172459957, - "name": "Enable mpls on loop0 interface", - "description": "Correspondig CLI command:\n\nset interface mpls loop0 enable", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"interface\": [\n {\n \"name\": \"loop0\",\n \"config\": {\n \"enabled\": \"true\"\n }\n }\n ]\n}" + "name": "Push two MPLS labels", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n \"static-lsp\": [{\r\n \"name\": \"static-lsp1\",\r\n \"config\": {\r\n \"in-segment\": {\r\n \"config\": {\r\n \"ip-prefix\": \"10.10.24.0/24\"\r\n }\r\n },\r\n \"operation\": \"impose-and-forward\"\r\n },\r\n \"paths\": {\r\n \"path\": [{\r\n \"path-index\": 0,\r\n \"config\" : {\r\n \"path-index\": 0,\r\n \"next-hop\": \"10.10.12.2\",\r\n \"outgoing-interface\": \"loop0\" \r\n }\r\n }],\r\n \"outgoing-labels\": {\r\n \"outgoing-labels\": [\r\n {\r\n \"index\": 0,\r\n \"config\": {\r\n \"index\": 0,\r\n \"label\": 102\r\n }\r\n },\r\n {\r\n \"index\": 1,\r\n \"config\": {\r\n \"index\": 1,\r\n \"label\": 104\r\n }\r\n }\r\n ]\r\n }\r\n }\r\n }]\r\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1", + "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.24.0/24" + }, + "response": [] }, { - "id": "27b745d3-2fbe-0f02-d605-904f8188088f", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511172494988, - "name": "Disable mpls on loop0 interface", - "description": "Correspondig CLI command:\n\nset interface mpls loop0 disable", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Pop label and MPLS lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp2\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 102\n }\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\": {\n \"type\": \"mpls\",\n \"mpls-lookup-in-table\": 0\n }\n }\n }]\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2", + "description": "Corresponding CLI command:\n\nmpls local-label add non-eos 102 mpls-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 102" + }, + "response": [] }, { - "id": "3e9ec3af-3d8b-6b1e-c193-22c702c3e81e", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511436719275, - "name": "Delete label pop and MPLS lookup FIB entry", - "description": "Corresponding CLI command:\n\nmpls local-label del non-eos 102 mpls-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Pop label and IPv4 lookup", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp3\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 104\n }\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\": {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }]\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104" + }, + "response": [] }, { - "id": "48779e1a-5a6d-9e76-c646-8f3eea9433d2", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls", - "preRequestScript": "", - "pathVariables": {}, - "method": "GET", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1509715030301, - "name": "Get mpls interfaces (cfg)", - "description": "", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Swap label and forward", + "request": { + "method": "PUT", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"static-lsp\": [{\n \"name\": \"static-lsp4\",\n \"config\": {\n \"in-segment\": {\n \"config\": {\n \"incoming-label\": 123\n }\n },\n \"operation\": \"swap-and-forward\"\n },\n \"simple-path\": {\n \"config\": {\n \"next-hop\": \"10.10.24.5\",\n \"outgoing-label\": 123,\n \"outgoing-interface\": \"loop0\"\n }\n }\n }]\n}" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4", + "description": "Corresponding CLI command:\n\nmpls local-label add eos 123 via 10.10.24.4 loop0 out-labels 123\n\n\nCan be verified via CLI using:\n\nshow mpls fib 123" + }, + "response": [] }, { - "id": "590a3bad-ecbc-7309-1357-50e678036e17", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511437151063, - "name": "Delete label pop and IPv4 lookup FIB entry", - "description": "Corresponding CLI command:\n\nmpls local-label del eos 104 ip4-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Get static LSPs (cfg)", + "request": { + "method": "GET", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/" + }, + "response": [] }, { - "id": "5a271f51-ab7e-c007-882b-d5e0a99da138", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511172422196, "name": "Delete single MPLS label push FIB entry", - "description": "Corresponding CLI command:\n\nip route del 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0", + "description": "Corresponding CLI command:\n\nip route del 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib" + }, + "response": [] }, { - "id": "65f84720-3266-322f-9739-af804da451b7", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp0", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511436775238, - "name": "Push single MPLS label", - "description": "Corresponding CLI command:\n\nip route add 10.10.34.0/24 via 10.10.13.3 loop0 out-labels 111\n\nCan be verified via CLI using:\n\nshow ip fib 10.10.34.0/24", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp0\",\n \"config\": {\n \"in-segment\": {\n \"ip-prefix\": \"10.10.34.0/24\"\n },\n \"operation\": \"impose-and-forward\",\n \"next-hop\": \"10.10.13.3\",\n \"outgoing-label\": 111,\n \"outgoing-interface\": \"loop0\"\n }\n }\n ]\n}" + "name": "Delete FIB entry that pushes two MPLS labels", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1", + "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib" + }, + "response": [] }, { - "id": "6fcda03b-3efa-3ae9-a1a0-5fafef5732a0", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511360517399, - "name": "Pop label and IPv4 lookup", - "description": "Corresponding CLI command:\n\nmpls local-label add eos 104 ip4-lookup-in-table 0\n\n\nCan be verified via CLI using:\n\nshow mpls fib 104", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\n \"static-lsp\": [\n {\n \"name\": \"static-lsp3\",\n \"config\": {\n \"in-segment\": {\n \"incoming-label\": 104\n },\n \"operation\": \"pop-and-lookup\",\n \"vpp-mpls:label-lookup\" : {\n \"type\": \"ipv4\",\n \"ip4-lookup-in-table\": 0\n }\n }\n }\n ]\n}" + "name": "Delete label pop and MPLS lookup FIB entry", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp2", + "description": "Corresponding CLI command:\n\nmpls local-label del non-eos 102 mpls-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib" + }, + "response": [] }, { - "id": "94581eee-036d-dced-1495-1b5c8c35059d", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/", - "pathVariables": {}, - "preRequestScript": "", - "method": "GET", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "data": [], - "dataMode": "raw", - "name": "List ifcs - cfg", - "description": "", - "descriptionFormat": "html", - "time": 1509094536608, - "version": 2, - "responses": [], - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"testInterface\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"iana-if-type:ethernetCsmacd\",\r\n \"enabled\": \"true\",\r\n \"link-up-down-trap-enable\": \"enabled\",\r\n \"ietf-ip:ipv4\": {\r\n \"enabled\": \"true\",\r\n \"mtu\": \"1500\",\r\n \"address\": [\r\n {\r\n \"ip\": \"1.2.3.0\",\r\n \"netmask\": \"255.255.255.0\"\r\n }\r\n ]\r\n }\r\n }\r\n ]\r\n \r\n}" + "name": "Delete label pop and IPv4 lookup FIB entry", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp3", + "description": "Corresponding CLI command:\n\nmpls local-label del eos 104 ip4-lookup-in-table 0\n\nCan be verified via CLI using:\n\nshow mpls fib" + }, + "response": [] }, { - "id": "b98635ba-fc25-feb7-8281-1654a7639ebd", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp1", - "preRequestScript": "", - "pathVariables": {}, - "method": "DELETE", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511172427485, - "name": "Delete FIB entry that pushes two MPLS labels", - "description": "Corresponding CLI command:\n\nip route add 10.10.24.0/24 via 10.10.12.2 loop1 out-labels 102 104\n\nCan be verified via CLI using:\n\nshow ip fib", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "" + "name": "Delete label swap FIB entry", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/hc2vpp-ietf-mpls-static:static-lsps/static-lsp/static-lsp4", + "description": "Corresponding CLI command:\n\nmpls local-label del eos 123 via 10.10.24.4 loop0 out-labels 123\n\nCan be verified via CLI using:\n\nshow mpls fib" + }, + "response": [] }, { - "id": "e8d94648-0106-feaa-f436-1c0cd327d89c", - "headers": "Authorization: Basic YWRtaW46YWRtaW4=\nContent-Type: application/json\n", - "url": "http://localhost:8183/restconf/config/ietf-interfaces:interfaces/interface/loop0", - "preRequestScript": "", - "pathVariables": {}, - "method": "PUT", - "data": [], - "dataMode": "raw", - "version": 2, - "tests": "", - "currentHelper": "normal", - "helperAttributes": {}, - "time": 1511172015125, - "name": "Add loopback ifc ", - "description": "Corresponding CLI command:\n\ncreate loop interface", - "collectionId": "5e8b5d56-56c7-e7b4-452a-0da051658425", - "responses": [], - "rawModeData": "{\r\n \r\n \"interface\": [\r\n {\r\n \"name\": \"loop0\",\r\n \"description\": \"for testing purposes\",\r\n \"type\": \"v3po:loopback\",\r\n \"loopback\" :{\r\n \"mac\" : \"00:ff:ff:ff:ff:ff\"\r\n }\r\n }\r\n ]\r\n \r\n}" + "name": "Disable mpls on loop0 interface", + "request": { + "method": "DELETE", + "header": [ + { + "key": "Authorization", + "value": "Basic YWRtaW46YWRtaW4=" + }, + { + "key": "Content-Type", + "value": "application/json" + } + ], + "body": { + "mode": "raw", + "raw": "" + }, + "url": "http://localhost:8183/restconf/config/hc2vpp-ietf-routing:routing/hc2vpp-ietf-mpls:mpls/interface/loop0", + "description": "Correspondig CLI command:\n\nset interface mpls loop0 disable" + }, + "response": [] } ] }
\ No newline at end of file |