cnat: add input feature node
[vpp.git] / src / plugins / cnat / cnat_snat.h
index 6ebb803..e34cf03 100644 (file)
 #define __CNAT_SNAT_H__
 
 #include <cnat/cnat_types.h>
+#include <cnat/cnat_session.h>
 
+/* function to use to decide whether to snat connections in the output
+   feature */
+typedef void (*cnat_snat_policy_t) (vlib_main_t *vm, vlib_buffer_t *b,
+                                   cnat_session_t *session,
+                                   cnat_node_ctx_t *ctx, u8 *do_snat);
+
+typedef struct cnat_snat_policy_main_t_
+{
+  /* SNAT policy for the output feature node */
+  cnat_snat_policy_t snat_policy;
+
+} cnat_snat_policy_main_t;
+
+extern cnat_snat_policy_main_t cnat_snat_policy_main;
 
 extern void cnat_set_snat (ip4_address_t * ip4, ip6_address_t * ip6,
                           u32 sw_if_index);
 extern int cnat_add_snat_prefix (ip_prefix_t * pfx);
 extern int cnat_del_snat_prefix (ip_prefix_t * pfx);
+extern void cnat_set_snat_policy (cnat_snat_policy_t fp);
 
 int cnat_search_snat_prefix (ip46_address_t * addr, ip_address_family_t af);