snat_main_t *sm = &snat_main;
vlib_worker_thread_t *w =
vlib_worker_threads + worker_index + sm->first_worker_index;
+ u32 len = vec_len (w->name);
- rmp = vl_msg_api_alloc (sizeof (*rmp) + ARRAY_LEN (w->name) - 1);
- clib_memset (rmp, 0, sizeof (*rmp) + ARRAY_LEN (w->name) - 1);
+ if (len)
+ --len;
+
+ rmp = vl_msg_api_alloc (sizeof (*rmp) + len);
+ clib_memset (rmp, 0, sizeof (*rmp) + len);
rmp->_vl_msg_id = ntohs (VL_API_NAT_WORKER_DETAILS + sm->msg_id_base);
rmp->context = context;
rmp->worker_index = htonl (worker_index);
rmp->lcore_id = htonl (w->cpu_id);
- vl_api_to_api_string (ARRAY_LEN (w->name) - 1, (char *) w->name,
- &rmp->name);
+ if (len)
+ vl_api_to_api_string (len, (char *) w->name, &rmp->name);
vl_api_send_msg (reg, (u8 *) rmp);
}
FINISH;
}
+static void
+vl_api_nat_set_log_level_t_handler (vl_api_nat_set_log_level_t * mp)
+{
+ snat_main_t *sm = &snat_main;
+ vl_api_nat_set_log_level_reply_t *rmp;
+ int rv = 0;
+
+ if (sm->log_level > NAT_LOG_DEBUG)
+ rv = VNET_API_ERROR_UNSUPPORTED;
+ else
+ sm->log_level = mp->log_level;
+
+ REPLY_MACRO (VL_API_NAT_SET_WORKERS_REPLY);
+}
+
+static void *
+vl_api_nat_set_log_level_t_print (vl_api_nat_set_log_level_t *
+ mp, void *handle)
+{
+ u8 *s;
+
+ s = format (0, "SCRIPT: nat_set_log_level ");
+ s = format (s, "log_level %d", mp->log_level);
+
+ FINISH;
+}
+
static void
vl_api_nat_ipfix_enable_disable_t_handler (vl_api_nat_ipfix_enable_disable_t *
mp)
goto send_reply;
}
+ len = vl_api_string_len (&mp->tag);
+
+ if (len > 64)
+ {
+ rv = VNET_API_ERROR_INVALID_VALUE;
+ goto send_reply;
+ }
+
memcpy (&local_addr.as_u8, mp->local_ip_address, 4);
memcpy (&external_addr.as_u8, mp->external_ip_address, 4);
else if (mp->flags & NAT_API_IS_SELF_TWICE_NAT)
twice_nat = TWICE_NAT_SELF;
- len = vl_api_string_len (&mp->tag);
-
tag = vec_new (u8, len);
+
memcpy (tag, mp->tag.buf, len);
vec_terminate_c_string (tag);
rmp = vl_msg_api_alloc (len);
clib_memset (rmp, 0, len);
- sp = (void *) &m->locals +
+ sp = (void *) &rmp->locals +
sizeof (vl_api_nat44_lb_addr_port_t) * pool_elts (m->locals);
vl_api_to_api_string (vec_len (m->tag), (char *) m->tag, sp);
}
ip6_address_t prefix;
int rv = 0;
- memcpy (&prefix.as_u8, mp->prefix.prefix, 16);
+ memcpy (&prefix.as_u8, mp->prefix.address, 16);
rv =
nat64_add_del_prefix (&prefix, mp->prefix.len,
u8 *s;
s = format (0, "SCRIPT: nat64_add_del_prefix %U/%u vrf_id %u %s\n",
- format_ip6_address, mp->prefix.prefix, mp->prefix.len,
+ format_ip6_address, mp->prefix.address, mp->prefix.len,
ntohl (mp->vrf_id), mp->is_add ? "" : "del");
FINISH;
rmp = vl_msg_api_alloc (sizeof (*rmp));
clib_memset (rmp, 0, sizeof (*rmp));
rmp->_vl_msg_id = ntohs (VL_API_NAT64_PREFIX_DETAILS + sm->msg_id_base);
- clib_memcpy (rmp->prefix.prefix, &(p->prefix), 16);
+ clib_memcpy (rmp->prefix.address, &(p->prefix), 16);
rmp->prefix.len = p->plen;
rmp->vrf_id = ntohl (p->vrf_id);
rmp->context = ctx->context;
_(NAT_SHOW_CONFIG, nat_show_config) \
_(NAT_SET_WORKERS, nat_set_workers) \
_(NAT_WORKER_DUMP, nat_worker_dump) \
+_(NAT_SET_LOG_LEVEL, nat_set_log_level) \
_(NAT_IPFIX_ENABLE_DISABLE, nat_ipfix_enable_disable) \
_(NAT_SET_REASS, nat_set_reass) \
_(NAT_GET_REASS, nat_get_reass) \