sandbox / mbed-client-c

Fork of mbed-client-c by Christopher Haster

Committer:
Christopher Haster
Date:
Fri Jan 22 16:31:54 2016 -0600
Revision:
1:43f5c94c6771
Child:
4:5d91b0f5038c
Initial move of mbed-client-c to mercurial

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Christopher Haster 1:43f5c94c6771 1 /*
Christopher Haster 1:43f5c94c6771 2 * Copyright (c) 2011-2015 ARM Limited. All rights reserved.
Christopher Haster 1:43f5c94c6771 3 * SPDX-License-Identifier: Apache-2.0
Christopher Haster 1:43f5c94c6771 4 * Licensed under the Apache License, Version 2.0 (the License); you may
Christopher Haster 1:43f5c94c6771 5 * not use this file except in compliance with the License.
Christopher Haster 1:43f5c94c6771 6 * You may obtain a copy of the License at
Christopher Haster 1:43f5c94c6771 7 *
Christopher Haster 1:43f5c94c6771 8 * http://www.apache.org/licenses/LICENSE-2.0
Christopher Haster 1:43f5c94c6771 9 *
Christopher Haster 1:43f5c94c6771 10 * Unless required by applicable law or agreed to in writing, software
Christopher Haster 1:43f5c94c6771 11 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
Christopher Haster 1:43f5c94c6771 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Christopher Haster 1:43f5c94c6771 13 * See the License for the specific language governing permissions and
Christopher Haster 1:43f5c94c6771 14 * limitations under the License.
Christopher Haster 1:43f5c94c6771 15 */
Christopher Haster 1:43f5c94c6771 16
Christopher Haster 1:43f5c94c6771 17 /**
Christopher Haster 1:43f5c94c6771 18 * \file sn_coap_header_check.c
Christopher Haster 1:43f5c94c6771 19 *
Christopher Haster 1:43f5c94c6771 20 * \brief CoAP Header validity checker
Christopher Haster 1:43f5c94c6771 21 *
Christopher Haster 1:43f5c94c6771 22 * Functionality: Checks validity of CoAP Header
Christopher Haster 1:43f5c94c6771 23 *
Christopher Haster 1:43f5c94c6771 24 */
Christopher Haster 1:43f5c94c6771 25
Christopher Haster 1:43f5c94c6771 26 /* * * * INCLUDE FILES * * * */
Christopher Haster 1:43f5c94c6771 27 #include "ns_types.h"
Christopher Haster 1:43f5c94c6771 28 #include "sn_nsdl.h"
Christopher Haster 1:43f5c94c6771 29 #include "sn_coap_header.h"
Christopher Haster 1:43f5c94c6771 30 #include "sn_coap_protocol.h"
Christopher Haster 1:43f5c94c6771 31 #include "sn_coap_header_internal.h"
Christopher Haster 1:43f5c94c6771 32 #include "sn_coap_protocol_internal.h"
Christopher Haster 1:43f5c94c6771 33
Christopher Haster 1:43f5c94c6771 34 /**
Christopher Haster 1:43f5c94c6771 35 * \fn int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
Christopher Haster 1:43f5c94c6771 36 *
Christopher Haster 1:43f5c94c6771 37 * \brief Checks validity of given Header
Christopher Haster 1:43f5c94c6771 38 *
Christopher Haster 1:43f5c94c6771 39 * \param *src_coap_msg_ptr is source for building Packet data
Christopher Haster 1:43f5c94c6771 40 * \param coap_version is version of used CoAP specification
Christopher Haster 1:43f5c94c6771 41 *
Christopher Haster 1:43f5c94c6771 42 * \return Return value is status of validity check. In ok cases 0 and in
Christopher Haster 1:43f5c94c6771 43 * failure cases -1
Christopher Haster 1:43f5c94c6771 44 */
Christopher Haster 1:43f5c94c6771 45 int8_t sn_coap_header_validity_check(sn_coap_hdr_s *src_coap_msg_ptr, coap_version_e coap_version)
Christopher Haster 1:43f5c94c6771 46 {
Christopher Haster 1:43f5c94c6771 47 /* * Check validity of CoAP Version * */
Christopher Haster 1:43f5c94c6771 48 if (coap_version != COAP_VERSION_1) {
Christopher Haster 1:43f5c94c6771 49 return -1;
Christopher Haster 1:43f5c94c6771 50 }
Christopher Haster 1:43f5c94c6771 51
Christopher Haster 1:43f5c94c6771 52 /* * Check validity of Message type * */
Christopher Haster 1:43f5c94c6771 53 switch (src_coap_msg_ptr->msg_type) {
Christopher Haster 1:43f5c94c6771 54 case COAP_MSG_TYPE_CONFIRMABLE:
Christopher Haster 1:43f5c94c6771 55 case COAP_MSG_TYPE_NON_CONFIRMABLE:
Christopher Haster 1:43f5c94c6771 56 case COAP_MSG_TYPE_ACKNOWLEDGEMENT:
Christopher Haster 1:43f5c94c6771 57 case COAP_MSG_TYPE_RESET:
Christopher Haster 1:43f5c94c6771 58 break; /* Ok cases */
Christopher Haster 1:43f5c94c6771 59 default:
Christopher Haster 1:43f5c94c6771 60 return -1; /* Failed case */
Christopher Haster 1:43f5c94c6771 61 }
Christopher Haster 1:43f5c94c6771 62
Christopher Haster 1:43f5c94c6771 63 /* * Check validity of Message code * */
Christopher Haster 1:43f5c94c6771 64 switch (src_coap_msg_ptr->msg_code) {
Christopher Haster 1:43f5c94c6771 65 case COAP_MSG_CODE_EMPTY:
Christopher Haster 1:43f5c94c6771 66 case COAP_MSG_CODE_REQUEST_GET:
Christopher Haster 1:43f5c94c6771 67 case COAP_MSG_CODE_REQUEST_POST:
Christopher Haster 1:43f5c94c6771 68 case COAP_MSG_CODE_REQUEST_PUT:
Christopher Haster 1:43f5c94c6771 69 case COAP_MSG_CODE_REQUEST_DELETE:
Christopher Haster 1:43f5c94c6771 70 case COAP_MSG_CODE_RESPONSE_CREATED:
Christopher Haster 1:43f5c94c6771 71 case COAP_MSG_CODE_RESPONSE_DELETED:
Christopher Haster 1:43f5c94c6771 72 case COAP_MSG_CODE_RESPONSE_VALID:
Christopher Haster 1:43f5c94c6771 73 case COAP_MSG_CODE_RESPONSE_CHANGED:
Christopher Haster 1:43f5c94c6771 74 case COAP_MSG_CODE_RESPONSE_CONTENT:
Christopher Haster 1:43f5c94c6771 75 case COAP_MSG_CODE_RESPONSE_BAD_REQUEST:
Christopher Haster 1:43f5c94c6771 76 case COAP_MSG_CODE_RESPONSE_UNAUTHORIZED:
Christopher Haster 1:43f5c94c6771 77 case COAP_MSG_CODE_RESPONSE_BAD_OPTION:
Christopher Haster 1:43f5c94c6771 78 case COAP_MSG_CODE_RESPONSE_FORBIDDEN:
Christopher Haster 1:43f5c94c6771 79 case COAP_MSG_CODE_RESPONSE_NOT_FOUND:
Christopher Haster 1:43f5c94c6771 80 case COAP_MSG_CODE_RESPONSE_METHOD_NOT_ALLOWED:
Christopher Haster 1:43f5c94c6771 81 case COAP_MSG_CODE_RESPONSE_NOT_ACCEPTABLE:
Christopher Haster 1:43f5c94c6771 82 case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_INCOMPLETE:
Christopher Haster 1:43f5c94c6771 83 case COAP_MSG_CODE_RESPONSE_PRECONDITION_FAILED:
Christopher Haster 1:43f5c94c6771 84 case COAP_MSG_CODE_RESPONSE_REQUEST_ENTITY_TOO_LARGE:
Christopher Haster 1:43f5c94c6771 85 case COAP_MSG_CODE_RESPONSE_UNSUPPORTED_CONTENT_FORMAT:
Christopher Haster 1:43f5c94c6771 86 case COAP_MSG_CODE_RESPONSE_INTERNAL_SERVER_ERROR:
Christopher Haster 1:43f5c94c6771 87 case COAP_MSG_CODE_RESPONSE_NOT_IMPLEMENTED:
Christopher Haster 1:43f5c94c6771 88 case COAP_MSG_CODE_RESPONSE_BAD_GATEWAY:
Christopher Haster 1:43f5c94c6771 89 case COAP_MSG_CODE_RESPONSE_SERVICE_UNAVAILABLE:
Christopher Haster 1:43f5c94c6771 90 case COAP_MSG_CODE_RESPONSE_GATEWAY_TIMEOUT:
Christopher Haster 1:43f5c94c6771 91 case COAP_MSG_CODE_RESPONSE_PROXYING_NOT_SUPPORTED:
Christopher Haster 1:43f5c94c6771 92 break; /* Ok cases */
Christopher Haster 1:43f5c94c6771 93 default:
Christopher Haster 1:43f5c94c6771 94 return -1; /* Failed case */
Christopher Haster 1:43f5c94c6771 95 }
Christopher Haster 1:43f5c94c6771 96
Christopher Haster 1:43f5c94c6771 97 /* Success */
Christopher Haster 1:43f5c94c6771 98 return 0;
Christopher Haster 1:43f5c94c6771 99 }
Christopher Haster 1:43f5c94c6771 100