gbproxy_peer: Add rate counters when forwarding packets fail
Change-Id: I7fa972ba843993dac84241c04d66d5b7e2a0b40f
diff --git a/include/osmocom/gbproxy/gb_proxy.h b/include/osmocom/gbproxy/gb_proxy.h
index 0657df7..00309e1 100644
--- a/include/osmocom/gbproxy/gb_proxy.h
+++ b/include/osmocom/gbproxy/gb_proxy.h
@@ -50,6 +50,8 @@
GBPROX_PEER_CTR_DROPPED,
GBPROX_PEER_CTR_INV_NSEI,
GBPROX_PEER_CTR_TX_ERR,
+ GBPROX_PEER_CTR_FWD_FROM_SGSN_ERR,
+ GBPROX_PEER_CTR_FWD_FROM_BSS_ERR,
GBPROX_PEER_CTR_LAST,
};
diff --git a/src/gb_proxy.c b/src/gb_proxy.c
index c2b958a..298e132 100644
--- a/src/gb_proxy.c
+++ b/src/gb_proxy.c
@@ -532,6 +532,9 @@
}
}
+ if (rc < 0)
+ rate_ctr_inc(rate_ctr_group_get_ctr(bss_bvc->ctrg, GBPROX_PEER_CTR_FWD_FROM_BSS_ERR));
+
return 0;
}
@@ -606,8 +609,12 @@
default:
break;
}
- return gbprox_relay2peer(msg, bss_bvc, bss_bvc->bvci);
+ rc = gbprox_relay2peer(msg, bss_bvc, bss_bvc->bvci);
+ if (rc < 0)
+ rate_ctr_inc(rate_ctr_group_get_ctr(bss_bvc->ctrg, GBPROX_PEER_CTR_FWD_FROM_SGSN_ERR));
+
+ return rc;
}
/***********************************************************************
diff --git a/src/gb_proxy_peer.c b/src/gb_proxy_peer.c
index 74bde3a..1e300ad 100644
--- a/src/gb_proxy_peer.c
+++ b/src/gb_proxy_peer.c
@@ -39,11 +39,13 @@
extern void *tall_sgsn_ctx;
static const struct rate_ctr_desc bvc_ctr_description[] = {
- [GBPROX_PEER_CTR_BLOCKED] = { "blocked", "BVC Block " },
- [GBPROX_PEER_CTR_UNBLOCKED] = { "unblocked", "BVC Unblock " },
- [GBPROX_PEER_CTR_DROPPED] = { "dropped", "BVC blocked, dropped packet " },
- [GBPROX_PEER_CTR_INV_NSEI] = { "inv-nsei", "NSEI mismatch " },
- [GBPROX_PEER_CTR_TX_ERR] = { "tx-err", "NS Transmission error " },
+ [GBPROX_PEER_CTR_BLOCKED] = { "blocked", "BVC Block " },
+ [GBPROX_PEER_CTR_UNBLOCKED] = { "unblocked", "BVC Unblock " },
+ [GBPROX_PEER_CTR_DROPPED] = { "dropped", "BVC blocked, dropped packet " },
+ [GBPROX_PEER_CTR_INV_NSEI] = { "inv-nsei", "NSEI mismatch " },
+ [GBPROX_PEER_CTR_TX_ERR] = { "tx-err", "NS Transmission error " },
+ [GBPROX_PEER_CTR_FWD_FROM_SGSN_ERR] = { "fwd-sgsn-err", "Forwarding data from SGSN failed" },
+ [GBPROX_PEER_CTR_FWD_FROM_BSS_ERR] = { "fwd-bss-err", "Forwarding data from BSS failed " },
};
osmo_static_assert(ARRAY_SIZE(bvc_ctr_description) == GBPROX_PEER_CTR_LAST, everything_described);