stats: added optional CLI arg "port" to specify non-default port
[vpp.git] / src / plugins / cnat / cnat_src_policy.c
index e11e912..8f3f337 100644 (file)
@@ -59,8 +59,8 @@ cnat_vip_default_source_policy (vlib_main_t * vm,
       u16 sport;
       sport = udp0->src_port;
       /* Allocate a port only if asked and if we actually sNATed */
-      if ((ct->flags & CNAT_TRANSLATION_FLAG_ALLOCATE_PORT)
-         && (*rsession_flags & CNAT_SESSION_FLAG_HAS_SNAT))
+      if ((ct->flags & CNAT_TR_FLAG_ALLOCATE_PORT) &&
+         (*rsession_flags & CNAT_SESSION_FLAG_HAS_SNAT))
        {
          sport = 0;            /* force allocation */
          session->value.flags |= CNAT_SESSION_FLAG_ALLOC_PORT;
@@ -122,7 +122,10 @@ cnat_allocate_port (u16 * port, ip_protocol_t iproto)
       if (PREDICT_FALSE (*port >= UINT16_MAX))
        *port = clib_bitmap_next_clear (ca->bmap, MIN_SRC_PORT);
       if (PREDICT_FALSE (*port >= UINT16_MAX))
-       return -1;
+       {
+         clib_spinlock_unlock (&ca->lock);
+         return -1;
+       }
     }
   clib_bitmap_set_no_check (ca->bmap, *port, 1);
   *port = clib_host_to_net_u16 (*port);