vapi: support services
[vpp.git] / src / vpp-api / vapi / vapi_cpp_test.cpp
index c0e0cdc..25df5b7 100644 (file)
 #include <vapi/vapi.hpp>
 #include <vapi/vpe.api.vapi.hpp>
 #include <vapi/interface.api.vapi.hpp>
+#include <vapi/mss_clamp.api.vapi.hpp>
 #include <fake.api.vapi.hpp>
 
 DEFINE_VAPI_MSG_IDS_VPE_API_JSON;
 DEFINE_VAPI_MSG_IDS_INTERFACE_API_JSON;
+DEFINE_VAPI_MSG_IDS_MSS_CLAMP_API_JSON;
 DEFINE_VAPI_MSG_IDS_FAKE_API_JSON;
 
 static char *app_name = nullptr;
@@ -144,6 +146,51 @@ START_TEST (test_loopbacks_1)
               sw_if_indexes[i]);
     }
 
+  { // new context
+    for (int i = 0; i < num_ifs; ++i)
+      {
+       Mss_clamp_enable_disable d (con);
+       auto &req = d.get_request ().get_payload ();
+       req.sw_if_index = sw_if_indexes[i];
+       req.ipv4_mss = 1420;
+       req.ipv4_direction = vapi_enum_mss_clamp_dir::MSS_CLAMP_DIR_RX;
+       auto rv = d.execute ();
+       ck_assert_int_eq (VAPI_OK, rv);
+       WAIT_FOR_RESPONSE (d, rv);
+       ck_assert_int_eq (VAPI_OK, rv);
+      }
+  }
+
+  { // new context
+    bool seen[num_ifs] = { 0 };
+    Mss_clamp_get d (con);
+    d.get_request ().get_payload ().sw_if_index = ~0;
+    auto rv = d.execute ();
+    ck_assert_int_eq (VAPI_OK, rv);
+    WAIT_FOR_RESPONSE (d, rv);
+    ck_assert_int_eq (VAPI_OK, rv);
+    auto &rs = d.get_result_set ();
+    for (auto &r : rs)
+      {
+       auto &p = r.get_payload ();
+       ck_assert_int_eq (p.ipv4_mss, 1420);
+       printf ("tcp-clamp: sw_if_idx %u ip4-mss %d dir %d\n", p.sw_if_index,
+               p.ipv4_mss, p.ipv4_direction);
+       for (int i = 0; i < num_ifs; ++i)
+         {
+           if (sw_if_indexes[i] == p.sw_if_index)
+             {
+               ck_assert_int_eq (0, seen[i]);
+               seen[i] = true;
+             }
+         }
+      }
+    for (int i = 0; i < num_ifs; ++i)
+      {
+       ck_assert_int_eq (1, seen[i]);
+      }
+  }
+
   { // new context
     bool seen[num_ifs] = {0};
     Sw_interface_dump d (con);