return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_BYTES_IN_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = (uint64_t)read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_BYTES_IN_RATE].u) * t->brates_factor;
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_CONN_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_CONN_CUR);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_CONN_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_CONN_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_BYTES_OUT_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = (uint64_t)read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_BYTES_OUT_RATE].u) * t->brates_factor;
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
stktable_release(t, ts);
return !!ptr;
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_GLITCH_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_GLITCH_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GLITCH_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPT, idx);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
if (!ptr)
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPT, 0);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC, idx);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC_RATE, idx);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GPC_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC, 0);
}
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_GPC0_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GPC0_RATE].u);
+
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
else {
/* fallback on the gpc array */
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC_RATE, 0);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GPC_RATE].u);
+
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
}
stktable_release(t, ts);
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC, 1);
}
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_GPC1_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GPC1_RATE].u);
+
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
else {
/* fallback on the gpc array */
ptr = stktable_data_ptr_idx(t, ts, STKTABLE_DT_GPC_RATE, 1);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_GPC_RATE].u);
+
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
}
stktable_release(t, ts);
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_ERR_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_ERR_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_HTTP_ERR_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_FAIL_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_FAIL_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_HTTP_FAIL_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_REQ_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_HTTP_REQ_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_HTTP_REQ_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_BYTES_IN_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_ull) >> 10;
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_BYTES_OUT_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_ull) >> 10;
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_SERVER_ID);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_sint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_SESS_CNT);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = stktable_data_cast(ptr, std_t_uint);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}
return 1;
ptr = stktable_data_ptr(t, ts, STKTABLE_DT_SESS_RATE);
- if (ptr)
+ if (ptr) {
+ HA_RWLOCK_RDLOCK(STK_SESS_LOCK, &ts->lock);
+
smp->data.u.sint = read_freq_ctr_period(&stktable_data_cast(ptr, std_t_frqp),
t->data_arg[STKTABLE_DT_SESS_RATE].u);
+ HA_RWLOCK_RDUNLOCK(STK_SESS_LOCK, &ts->lock);
+ }
+
stktable_release(t, ts);
return !!ptr;
}