lb: add APIs for set interface nat4 and nat6 03/21903/3
authorHongjun Ni <hongjun.ni@intel.com>
Mon, 9 Sep 2019 16:49:24 +0000 (00:49 +0800)
committerOle Trøan <otroan@employees.org>
Thu, 26 Sep 2019 11:40:18 +0000 (11:40 +0000)
Type: feature

Change-Id: I5656cd798b108dd780381b87f574554442ed7b23
Signed-off-by: Hongjun Ni <hongjun.ni@intel.com>
src/plugins/lb/api.c
src/plugins/lb/lb.api

index 0543720..e2ab2ac 100644 (file)
@@ -60,6 +60,8 @@ _(LB_ADD_DEL_AS, lb_add_del_as)              \
 _(LB_VIP_DUMP, lb_vip_dump)                  \
 _(LB_AS_DUMP, lb_as_dump)                    \
 _(LB_FLUSH_VIP, lb_flush_vip)                \
+_(LB_ADD_DEL_INTF_NAT4, lb_add_del_intf_nat4)  \
+_(LB_ADD_DEL_INTF_NAT6, lb_add_del_intf_nat6)  \
 
 
 /* Macro to finish up custom dump fns */
@@ -389,6 +391,46 @@ vl_api_lb_flush_vip_t_handler
  REPLY_MACRO (VL_API_LB_FLUSH_VIP_REPLY);
 }
 
+static void vl_api_lb_add_del_intf_nat4_t_handler
+  (vl_api_lb_add_del_intf_nat4_t * mp)
+{
+  lb_main_t *lbm = &lb_main;
+  vl_api_lb_add_del_intf_nat4_reply_t *rmp;
+  u32 sw_if_index = ntohl (mp->sw_if_index);
+  u8 is_del;
+  int rv = 0;
+
+  is_del = !mp->is_add;
+
+  VALIDATE_SW_IF_INDEX (mp);
+
+  rv = lb_nat4_interface_add_del(sw_if_index, is_del);
+
+  BAD_SW_IF_INDEX_LABEL;
+
+  REPLY_MACRO (VL_API_LB_ADD_DEL_INTF_NAT4_REPLY);
+}
+
+static void vl_api_lb_add_del_intf_nat6_t_handler
+  (vl_api_lb_add_del_intf_nat6_t * mp)
+{
+  lb_main_t *lbm = &lb_main;
+  vl_api_lb_add_del_intf_nat6_reply_t *rmp;
+  u32 sw_if_index = ntohl (mp->sw_if_index);
+  u8 is_del;
+  int rv = 0;
+
+  is_del = !mp->is_add;
+
+  VALIDATE_SW_IF_INDEX (mp);
+
+  rv = lb_nat6_interface_add_del(sw_if_index, is_del);
+
+  BAD_SW_IF_INDEX_LABEL;
+
+  REPLY_MACRO (VL_API_LB_ADD_DEL_INTF_NAT6_REPLY);
+}
+
 static void *vl_api_lb_flush_vip_t_print
 (vl_api_lb_flush_vip_t *mp, void * handle)
 {
index b9f5c22..b479b1b 100644 (file)
@@ -1,5 +1,6 @@
 option version = "1.0.0";
 import "plugins/lb/lb_types.api";
+import "vnet/interface_types.api";
 
 /** \brief Configure Load-Balancer global parameters (unlike the CLI, both ip4_src_address and ip6_src_address need to be specified.
     @param client_index - opaque cookie to identify the sender
@@ -143,3 +144,28 @@ define lb_as_details {
   u32 in_use_since;
 };
 
+/** \brief Enable/disable NAT4 feature on the interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - true if add, false if delete
+    @param sw_if_index - software index of the interface
+*/
+autoreply define lb_add_del_intf_nat4 {
+  u32 client_index;
+  u32 context;
+  bool is_add;
+  vl_api_interface_index_t sw_if_index;
+};
+
+/** \brief Enable/disable NAT6 feature on the interface
+    @param client_index - opaque cookie to identify the sender
+    @param context - sender context, to match reply w/ request
+    @param is_add - true if add, false if delete
+    @param sw_if_index - software index of the interface
+*/
+autoreply define lb_add_del_intf_nat6 {
+  u32 client_index;
+  u32 context;
+  bool is_add;
+  vl_api_interface_index_t sw_if_index;
+};