{
if (!dm->sessions[i + user_offset].in_port)
{
- if (__sync_bool_compare_and_swap
+ if (clib_atomic_bool_cmp_and_swap
(&dm->sessions[i + user_offset].in_port, 0, in_port))
{
dm->sessions[i + user_offset].out.as_u64 = out->as_u64;
dm->sessions[i + user_offset].state = SNAT_SESSION_UNKNOWN;
dm->sessions[i + user_offset].expire = 0;
- __sync_add_and_fetch (&dm->ses_num, 1);
+ clib_atomic_add_fetch (&dm->ses_num, 1);
return &dm->sessions[i + user_offset];
}
}
always_inline void
snat_det_ses_close (snat_det_map_t * dm, snat_det_session_t * ses)
{
- if (__sync_bool_compare_and_swap (&ses->in_port, ses->in_port, 0))
+ if (clib_atomic_bool_cmp_and_swap (&ses->in_port, ses->in_port, 0))
{
ses->out.as_u64 = 0;
- __sync_add_and_fetch (&dm->ses_num, -1);
+ clib_atomic_add_fetch (&dm->ses_num, -1);
}
}