Review at  https://gerrit.osmocom.org/5837

gsm0480: refactor gsm0480_decode_ss_request

Change-Id: Iba734db97ab516f8fce816c4e4225b97b93619f1
---
M src/gsm/gsm0480.c
1 file changed, 14 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/37/5837/1

diff --git a/src/gsm/gsm0480.c b/src/gsm/gsm0480.c
index 25f97a2..ca00999 100644
--- a/src/gsm/gsm0480.c
+++ b/src/gsm/gsm0480.c
@@ -255,17 +255,24 @@
 int gsm0480_decode_ss_request(const struct gsm48_hdr *hdr, uint16_t len,
                                struct ss_request *req)
 {
-       int rc = 0;
+       uint8_t pdisc;
 
-       if (gsm48_hdr_pdisc(hdr) == GSM48_PDISC_NC_SS) {
-               req->transaction_id = hdr->proto_discr & 0x70;
-               rc = parse_ss(hdr, len - sizeof(*hdr), req);
+       /**
+        * Check Protocol Discriminator
+        * see TS GSM 04.07 and GSM 04.80
+        */
+       pdisc = gsm48_hdr_pdisc(hdr);
+       if (pdisc != GSM48_PDISC_NC_SS) {
+               LOGP(0, LOGL_ERROR, "Dropping message with "
+                       "unsupported pdisc=%02x\n", pdisc);
+               return 0;
        }
 
-       if (!rc)
-               LOGP(0, LOGL_DEBUG, "Error occurred while parsing received 
SS!\n");
+       /* GSM 04.80 3.3 Transaction Identifier */
+       req->transaction_id = hdr->proto_discr & 0x70;
 
-       return rc;
+       /* Parse SS request */
+       return parse_ss(hdr, len - sizeof(*hdr), req);
 }
 
 static int parse_ss(const struct gsm48_hdr *hdr, uint16_t len, struct 
ss_request *req)

-- 
To view, visit https://gerrit.osmocom.org/5837
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iba734db97ab516f8fce816c4e4225b97b93619f1
Gerrit-PatchSet: 1
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Owner: Vadim Yanitskiy <axilira...@gmail.com>

Reply via email to