Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-client-c by
source/libCoap/src/sn_coap_header_check.c@4:5d91b0f5038c, 2016-04-02 (annotated)
- Committer:
- Yogesh Pande
- Date:
- Sat Apr 02 00:39:03 2016 +0300
- Revision:
- 4:5d91b0f5038c
- Parent:
- 1:43f5c94c6771
Latest mbed-client-c sources from Github.
Who changed what in which revision?
User | Revision | Line number | New 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 | } |