Skip to content

Commit 42e2fe3

Browse files
committed
update session/stream commands
1 parent 90d67da commit 42e2fe3

7 files changed

Lines changed: 374 additions & 349 deletions

File tree

code/bngblaster/src/bbl_ctrl.c

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -54,28 +54,30 @@ const char *schema_session_update[] = {
5454
NULL
5555
};
5656
const char *schema_session_summary[] = {
57-
"session-id", "sessions", "session-id-min", "session-id-max",
57+
"session-id", "session-group-id",
58+
"sessions", "session-id-min", "session-id-max",
5859
NULL
5960
};
6061
const char *schema_stream_info[] = {
6162
"flow-id", "debug", NULL
6263
};
63-
const char *schema_stream_summary[] = {
64-
"session-group-id",
65-
"flows", "flow-id-min", "flow-id-max",
64+
const char *schema_stream_args[] = {
65+
"session-id", "session-group-id",
66+
"flows", "flow-id", "flow-id-min", "flow-id-max",
6667
"name", "interface", "direction",
68+
"verified-only", "bidirectional-verified-only",
69+
"pending-only",
6770
NULL
6871
};
69-
const char *schema_stream_start_stop[] = {
70-
"flow-id", "session-id", "session-group-id",
71-
"flows", "flow-id-min", "flow-id-max",
72+
const char *schema_stream_update[] = {
73+
"session-id", "session-group-id",
74+
"flows", "flow-id", "flow-id-min", "flow-id-max",
7275
"name", "interface", "direction",
7376
"verified-only", "bidirectional-verified-only",
77+
"pending-only",
78+
"tcp-flags", "pps",
7479
NULL
7580
};
76-
const char *schema_stream_update[] = {
77-
"flow-id", "tcp-flags", "pps", NULL
78-
};
7981
const char *schema_bgp[] = {
8082
"local-ipv4-address", "peer-ipv4-address",
8183
"local-ipv6-address", "peer-ipv6-address", "ipv6-link-local",
@@ -278,9 +280,9 @@ static const struct action actions[] = {
278280
{"terminate", bbl_ctrl_terminate, schema_session_terminate, false},
279281
{"traffic-start", bbl_ctrl_traffic_start, schema_no_args, false},
280282
{"traffic-stop", bbl_ctrl_traffic_stop, schema_no_args, false},
281-
{"stream-start", bbl_stream_ctrl_start, schema_stream_start_stop, true},
282-
{"stream-stop", bbl_stream_ctrl_stop, schema_stream_start_stop, true},
283-
{"stream-stop-verified", bbl_stream_ctrl_stop_verified, schema_stream_start_stop, true},
283+
{"stream-start", bbl_stream_ctrl_start, schema_stream_args, true},
284+
{"stream-stop", bbl_stream_ctrl_stop, schema_stream_args, true},
285+
{"stream-stop-verified", bbl_stream_ctrl_stop_verified, schema_stream_args, true},
284286
{"stream-update", bbl_stream_ctrl_update, schema_stream_update, true},
285287
{"session-traffic-start", bbl_session_ctrl_traffic_start, schema_session_direction, true},
286288
{"session-traffic-stop", bbl_session_ctrl_traffic_stop, schema_session_direction, true},
@@ -289,7 +291,7 @@ static const struct action actions[] = {
289291
{"stream-info", bbl_stream_ctrl_info, schema_stream_info, true},
290292
{"stream-stats", bbl_stream_ctrl_stats, schema_no_args, true},
291293
{"stream-reset", bbl_stream_ctrl_reset, schema_no_args, false},
292-
{"stream-summary", bbl_stream_ctrl_summary, schema_stream_summary, true},
294+
{"stream-summary", bbl_stream_ctrl_summary, schema_stream_args, true},
293295
{"streams-pending", bbl_stream_ctrl_pending, schema_no_args, true},
294296
{"session-traffic", bbl_session_ctrl_traffic_stats, schema_no_args, true},
295297
{"session-traffic-reset", bbl_session_ctrl_traffic_reset, schema_session_group_id, false},
@@ -379,10 +381,10 @@ static const struct action actions[] = {
379381
{"commands", bbl_ctrl_commands, schema_no_args, true},
380382
{"session-traffic-enabled", bbl_session_ctrl_traffic_start, schema_session_direction, true},
381383
{"session-traffic-disabled", bbl_session_ctrl_traffic_stop, schema_session_direction, true},
382-
{"stream-traffic-enabled", bbl_stream_ctrl_start, schema_stream_start_stop, true},
383-
{"stream-traffic-start", bbl_stream_ctrl_start, schema_stream_start_stop, true},
384-
{"stream-traffic-disabled", bbl_stream_ctrl_stop, schema_stream_start_stop, true},
385-
{"stream-traffic-stop", bbl_stream_ctrl_stop, schema_stream_start_stop, true},
384+
{"stream-traffic-enabled", bbl_stream_ctrl_start, schema_stream_args, true},
385+
{"stream-traffic-start", bbl_stream_ctrl_start, schema_stream_args, true},
386+
{"stream-traffic-disabled", bbl_stream_ctrl_stop, schema_stream_args, true},
387+
{"stream-traffic-stop", bbl_stream_ctrl_stop, schema_stream_args, true},
386388
/* END */
387389
{NULL, NULL, NULL, false},
388390
};

code/bngblaster/src/bbl_session.c

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,10 +2097,12 @@ int
20972097
bbl_session_ctrl_summary(int fd, uint32_t session_id, json_t *arguments)
20982098
{
20992099
int result = 0;
2100+
int session_group_id = -1;
2101+
int size;
2102+
int intv;
21002103

2101-
int session_id_min = 0;
2102-
int session_id_max = 0;
2103-
int size, i;
2104+
uint32_t session_id_min = 1;
2105+
uint32_t session_id_max = g_ctx->sessions;
21042106

21052107
json_t *jobj, *jobj_array, *sessions;
21062108
bbl_session_s *session;
@@ -2111,16 +2113,27 @@ bbl_session_ctrl_summary(int fd, uint32_t session_id, json_t *arguments)
21112113
return bbl_ctrl_status(fd, "error", 400, "sessions must be of type array e.g. [1,2,3]");
21122114
}
21132115
} else {
2114-
if(json_unpack(arguments, "{s:i}", "session-id-min", &session_id_min) != 0) {
2115-
return bbl_ctrl_status(fd, "error", 400, "sessions or session-id-min/max required");
2116+
if(json_unpack(arguments, "{s:i}", "session-id-min", &intv) == 0) {
2117+
if(intv < 1 || (uint32_t)intv > UINT32_MAX) {
2118+
return bbl_ctrl_status(fd, "warning", 400, "invalid session-id-min");
2119+
}
2120+
session_id_min = intv;
21162121
}
2117-
if(json_unpack(arguments, "{s:i}", "session-id-max", &session_id_max) != 0) {
2118-
return bbl_ctrl_status(fd, "error", 400, "session-id-max missing");
2122+
if(json_unpack(arguments, "{s:i}", "session-id-max", &intv) == 0) {
2123+
if(intv < 0 || (uint32_t)intv > UINT32_MAX) {
2124+
return bbl_ctrl_status(fd, "warning", 400, "invalid session-id-max");
2125+
}
2126+
if((uint32_t)intv < g_ctx->sessions) session_id_max = intv;
21192127
}
21202128
if(session_id_min > session_id_max) {
21212129
return bbl_ctrl_status(fd, "error", 400, "session-id-min > max");
21222130
}
21232131
}
2132+
if(json_unpack(arguments, "{s:i}", "session-group-id", &session_group_id) == 0) {
2133+
if(session_group_id < 0 || session_group_id > UINT16_MAX) {
2134+
return bbl_ctrl_status(fd, "error", 400, "invalid session-group-id");
2135+
}
2136+
}
21242137

21252138
jobj_array = json_array();
21262139
if(session_id) {
@@ -2134,7 +2147,7 @@ bbl_session_ctrl_summary(int fd, uint32_t session_id, json_t *arguments)
21342147
}
21352148
if(sessions) {
21362149
size = json_array_size(sessions);
2137-
for (i = 0; i < size; i++) {
2150+
for(int i = 0; i < size; i++) {
21382151
jobj = json_array_get(sessions, i);
21392152
if(json_is_number(jobj)) {
21402153
session = bbl_session_get(json_number_value(jobj));
@@ -2150,7 +2163,7 @@ bbl_session_ctrl_summary(int fd, uint32_t session_id, json_t *arguments)
21502163
while(session_id_min <= session_id_max) {
21512164
session_id = session_id_min;
21522165
session = bbl_session_get(session_id);
2153-
if(session) {
2166+
if(session && (session_group_id < 0 || session->session_group_id == session_group_id)) {
21542167
jobj = bbl_session_summary_json(session);
21552168
if(jobj) {
21562169
json_array_append_new(jobj_array, jobj);

code/bngblaster/src/bbl_session.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ typedef struct bbl_session_
271271
struct {
272272
uint16_t group_id;
273273
bbl_stream_s *head;
274+
bbl_stream_s *tail;
274275
} streams;
275276

276277
struct {

0 commit comments

Comments
 (0)