Add L2TP session data rx/tx stats

This commit is contained in:
Christian Giese
2021-03-10 18:08:14 +01:00
parent 150579e355
commit aa6f0cd0fa
4 changed files with 19 additions and 7 deletions
+5 -3
View File
@@ -281,8 +281,8 @@ Following an example with 30 L2TP LNS servers.
"control-packets-rx-out-of-order": 0,
"control-packets-tx": 102,
"control-packets-tx-retry": 0,
"control-data-rx": 1406,
"control-data-tx": 206
"data-packets-rx": 1406,
"data-packets-tx": 206
}
]
}
@@ -311,7 +311,9 @@ The `l2tp-sessions` command returns all L2TP sessions.
"peer-tx-bps": 48000,
"peer-rx-bps": 1000,
"peer-ari": "DEU.RTBRICK.1",
"peer-aci": "0.0.0.0/0.0.0.0 eth 0:1"
"peer-aci": "0.0.0.0/0.0.0.0 eth 0:1",
"data-packets-rx": 79,
"data-packets-tx": 79
}
]
}
+6 -4
View File
@@ -768,8 +768,8 @@ bbl_ctrl_l2tp_tunnels(int fd, bbl_ctx_s *ctx, session_key_t *key __attribute__((
"control-packets-rx-out-of-order", l2tp_tunnel->stats.control_rx_ooo,
"control-packets-tx", l2tp_tunnel->stats.control_tx,
"control-packets-tx-retry", l2tp_tunnel->stats.control_retry,
"control-data-rx", l2tp_tunnel->stats.data_rx,
"control-data-tx", l2tp_tunnel->stats.data_tx);
"data-packets-rx", l2tp_tunnel->stats.data_rx,
"data-packets-tx", l2tp_tunnel->stats.data_tx);
json_array_append(tunnels, tunnel);
}
l2tp_server = l2tp_server->next;
@@ -791,7 +791,7 @@ bbl_ctrl_l2tp_tunnels(int fd, bbl_ctx_s *ctx, session_key_t *key __attribute__((
json_t *
l2tp_session_json(bbl_l2tp_session_t *l2tp_session) {
return json_pack("{ss si si si si ss ss ss ss si si ss ss}",
return json_pack("{ss si si si si ss ss ss ss si si ss ss si si}",
"state", l2tp_session_state_string(l2tp_session->state),
"tunnel-id", l2tp_session->key.tunnel_id,
"session-id", l2tp_session->key.session_id,
@@ -804,7 +804,9 @@ l2tp_session_json(bbl_l2tp_session_t *l2tp_session) {
"peer-tx-bps", l2tp_session->peer_tx_bps,
"peer-rx-bps", l2tp_session->peer_rx_bps,
"peer-ari", string_or_na(l2tp_session->peer_ari),
"peer-aci", string_or_na(l2tp_session->peer_aci));
"peer-aci", string_or_na(l2tp_session->peer_aci),
"data-packets-rx", l2tp_session->stats.data_rx,
"data-packets-tx", l2tp_session->stats.data_tx);
}
ssize_t
+2
View File
@@ -491,6 +491,7 @@ bbl_l2tp_send_data(bbl_l2tp_session_t *l2tp_session, uint16_t protocol, void *ne
q->packet_len = len;
CIRCLEQ_INSERT_TAIL(&interface->l2tp_tx_qhead, q, tx_qnode);
l2tp_tunnel->stats.data_tx++;
l2tp_session->stats.data_tx++;
interface->stats.l2tp_data_tx++;
} else {
LOG(ERROR, "L2TP Data Encode Error!\n");
@@ -847,6 +848,7 @@ bbl_l2tp_data_rx(bbl_ethernet_header_t *eth, bbl_l2tp_t *l2tp, bbl_interface_s *
return;
}
l2tp_session->stats.data_rx++;
switch (l2tp->protocol) {
case PROTOCOL_LCP:
lcp_rx = (bbl_lcp_t*)l2tp->next;
+6
View File
@@ -212,6 +212,11 @@ typedef struct bbl_l2tp_session_
uint16_t session_id;
} key;
struct {
uint64_t data_rx; /* Session data traffic received */
uint64_t data_tx; /* Session data traffic send */
} stats;
uint16_t peer_session_id;
bool data_sequencing;
@@ -250,6 +255,7 @@ typedef struct bbl_l2tp_session_
char *peer_sub_address;
char *peer_ari;
char *peer_aci;
} bbl_l2tp_session_t;
const char* l2tp_message_string(l2tp_message_type type);