comparison mgw/mdcx.c @ 34:7dae2bae56a1

themwi-mgw: implement MDCX parameter validation
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 09 Jul 2022 23:17:15 -0800
parents b3f74df7b808
children 020ba624bdd8
comparison
equal deleted inserted replaced
33:2b072ad13de6 34:7dae2bae56a1
24 if (req->setup_mask & TMGW_CTRL_MASK_GSM_CONN) { 24 if (req->setup_mask & TMGW_CTRL_MASK_GSM_CONN) {
25 if (ep->ep_type != TMGW_EP_TYPE_GATEWAY) { 25 if (ep->ep_type != TMGW_EP_TYPE_GATEWAY) {
26 resp->res = TMGW_RESP_ERR_PROT; 26 resp->res = TMGW_RESP_ERR_PROT;
27 return(-1); 27 return(-1);
28 } 28 }
29 if (req->gsm_addr.ss_family != AF_INET) {
30 resp->res = TMGW_RESP_ERR_PARAM;
31 return(-1);
32 }
33 switch (req->gsm_payload_msg_type) {
34 case GSM_TCHF_FRAME:
35 break;
36 case GSM_TCHF_FRAME_EFR:
37 case GSM_TCHH_FRAME:
38 case GSM_TCH_FRAME_AMR:
39 resp->res = TMGW_RESP_ERR_NOTSUP;
40 return(-1);
41 default:
42 resp->res = TMGW_RESP_ERR_PARAM;
43 return(-1);
44 }
29 bcopy(&req->gsm_addr, &ep->rtp_gsm.remote_addr, 45 bcopy(&req->gsm_addr, &ep->rtp_gsm.remote_addr,
30 sizeof(struct sockaddr_in)); 46 sizeof(struct sockaddr_in));
31 ep->gsm_payload_type = req->gsm_payload_type; 47 ep->gsm_payload_type = req->gsm_payload_type;
32 ep->gsm_payload_msg_type = req->gsm_payload_msg_type; 48 ep->gsm_payload_msg_type = req->gsm_payload_msg_type;
33 } 49 }
34 if (req->setup_mask & TMGW_CTRL_MASK_PSTN_CONN) { 50 if (req->setup_mask & TMGW_CTRL_MASK_PSTN_CONN) {
35 if (ep->ep_type != TMGW_EP_TYPE_GATEWAY) { 51 if (ep->ep_type != TMGW_EP_TYPE_GATEWAY) {
36 resp->res = TMGW_RESP_ERR_PROT; 52 resp->res = TMGW_RESP_ERR_PROT;
53 return(-1);
54 }
55 if (req->pstn_addr.ss_family != AF_INET) {
56 resp->res = TMGW_RESP_ERR_PARAM;
57 return(-1);
58 }
59 switch (req->pstn_payload_type) {
60 case PSTN_CODEC_PCMU:
61 case PSTN_CODEC_PCMA:
62 break;
63 default:
64 resp->res = TMGW_RESP_ERR_PARAM;
37 return(-1); 65 return(-1);
38 } 66 }
39 bcopy(&req->pstn_addr, &ep->rtp_pstn.remote_addr, 67 bcopy(&req->pstn_addr, &ep->rtp_pstn.remote_addr,
40 sizeof(struct sockaddr_in)); 68 sizeof(struct sockaddr_in));
41 ep->pstn_payload_type = req->pstn_payload_type; 69 ep->pstn_payload_type = req->pstn_payload_type;