aboutsummaryrefslogtreecommitdiffstats
path: root/src/amr.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@gnumonks.org>2013-05-24 11:56:07 +0200
committerPablo Neira Ayuso <pablo@gnumonks.org>2013-05-24 12:16:49 +0200
commit70214a15d1d575802d821c3555f61c3797a0a89b (patch)
treeb5cf3b05f2b25c93c6694b8044046c4c48f40df4 /src/amr.c
parent9d6d126c230f480510622dbb1a0f13cdef640146 (diff)
osmux: further sanity checkings for AMR FT
According to RFC3267, AMR FT upper 9 should be discarded. This patch adds extra validation to make sure that input RTP traffic encapsulating AMR payload and OSMUX amr_ft field are OK with regards to that restriction.
Diffstat (limited to 'src/amr.c')
-rw-r--r--src/amr.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/amr.c b/src/amr.c
index a6f6a32..55b9300 100644
--- a/src/amr.c
+++ b/src/amr.c
@@ -41,3 +41,22 @@ size_t osmo_amr_bytes(uint8_t amr_ft)
{
return amr_ft_to_bytes[amr_ft];
}
+
+int osmo_amr_ft_valid(uint8_t amr_ft)
+{
+ /*
+ * Extracted from RFC3267:
+ *
+ * "... with a FT value in the range 9-14 for AMR ... the whole packet
+ * SHOULD be discarded."
+ *
+ * "... packets containing only NO_DATA frames (FT=15) SHOULD NOT be
+ * transmitted."
+ *
+ * So, let's discard frames with a AMR FT >= 9.
+ */
+ if (amr_ft >= 9)
+ return 0;
+
+ return 1;
+}