hs-test: cat summary file after a failed test run
[vpp.git] / src / plugins / nat / pnat / pnat_api.c
index 442ee7c..a4e7ff1 100644 (file)
@@ -13,6 +13,7 @@
  * limitations under the License.
  */
 #include "pnat.h"
+#include <vnet/vnet.h>
 #include <pnat/pnat.api_enum.h>
 #include <pnat/pnat.api_types.h>
 #include <vlibmemory/api.h>
@@ -35,11 +36,26 @@ static void vl_api_pnat_binding_add_t_handler(vl_api_pnat_binding_add_t *mp) {
     pnat_main_t *pm = &pnat_main;
     vl_api_pnat_binding_add_reply_t *rmp;
     u32 binding_index;
+
+    // for backward compatibility
+    if (mp->match.proto == 0)
+        mp->match.mask |= PNAT_PROTO;
+
     int rv = pnat_binding_add(&mp->match, &mp->rewrite, &binding_index);
     REPLY_MACRO2_END(VL_API_PNAT_BINDING_ADD_REPLY,
                      ({ rmp->binding_index = binding_index; }));
 }
 
+static void
+vl_api_pnat_binding_add_v2_t_handler(vl_api_pnat_binding_add_t *mp) {
+    pnat_main_t *pm = &pnat_main;
+    vl_api_pnat_binding_add_reply_t *rmp;
+    u32 binding_index;
+    int rv = pnat_binding_add(&mp->match, &mp->rewrite, &binding_index);
+    REPLY_MACRO2_END(VL_API_PNAT_BINDING_ADD_V2_REPLY,
+                     ({ rmp->binding_index = binding_index; }));
+}
+
 static void
 vl_api_pnat_binding_attach_t_handler(vl_api_pnat_binding_attach_t *mp) {
     pnat_main_t *pm = &pnat_main;
@@ -100,7 +116,8 @@ static void send_bindings_details(u32 index, vl_api_registration_t *rp,
 
                              /* Endian hack until apigen registers _details
                               * endian functions */
-                             vl_api_pnat_bindings_details_t_endian(rmp);
+                             vl_api_pnat_bindings_details_t_endian(
+                                 rmp, 1 /* to network */);
                              rmp->_vl_msg_id = htons(rmp->_vl_msg_id);
                              rmp->context = htonl(rmp->context);
                          }));
@@ -142,7 +159,7 @@ static void send_interfaces_details(u32 index, vl_api_registration_t *rp,
 
             /* Endian hack until apigen registers _details
              * endian functions */
-            vl_api_pnat_interfaces_details_t_endian(rmp);
+            vl_api_pnat_interfaces_details_t_endian(rmp, 1 /* to network */);
             rmp->_vl_msg_id = htons(rmp->_vl_msg_id);
             rmp->context = htonl(rmp->context);
         }));