168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik/* 22268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * Copyright (c) 2016-2017, The Linux Foundation. All rights reserved. 368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * Redistribution and use in source and binary forms, with or without 568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * modification, are permitted provided that the following conditions are 668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * met: 768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * * Redistributions of source code must retain the above copyright 868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * notice, this list of conditions and the following disclaimer. 968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * * Redistributions in binary form must reproduce the above 1068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * copyright notice, this list of conditions and the following 1168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * disclaimer in the documentation and/or other materials provided 1268f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * with the distribution. 1368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * * Neither the name of The Linux Foundation nor the names of its 1468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * contributors may be used to endorse or promote products derived 1568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * from this software without specific prior written permission. 1668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 1768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 1868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 1968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 2068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 2168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2268f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 2468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 2568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 2668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 2768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik */ 2968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 3068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#ifndef __NAN_CERT_H__ 3168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#define __NAN_CERT_H__ 3268f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 3368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 3468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#ifdef __cplusplus 3568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaikextern "C" 3668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik{ 3768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#endif /* __cplusplus */ 3868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 392268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki#define NAN_CERT_VERSION 2 402268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki#define NAN_MAX_DEBUG_MESSAGE_DATA_LEN 100 412268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 4268f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaiktypedef struct { 4368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* NAN master rank being advertised by DE */ 4468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u64 master_rank; 4568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* NAN master preference being advertised by DE */ 4668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u8 master_pref; 4768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* random value being advertised by DE */ 4868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u8 random_factor; 4968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* hop_count from anchor master */ 5068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u8 hop_count; 5168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u32 beacon_transmit_time; 5268f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* NDP channel Frequency */ 5368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik u32 ndp_channel_freq; 5468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik} NanStaParameter; 5568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 562268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* NAN Data Path Supported Band */ 572268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 582268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_SUPPORTED_BAND_2G = 1, 592268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_SUPPORTED_BAND_5G = 2, 602268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_SUPPORT_DUAL_BAND = 3 612268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NdpSupportedBand; 622268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 632268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* NAN Responder mode policy */ 642268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 652268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_RESPONDER_MODE_AUTO = 0, 662268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_RESPONDER_MODE_ACCEPT = 1, 672268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_RESPONDER_MODE_REJECT = 2, 682268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_RESPONDER_MODE_COUNTER = 3, 692268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_RESPONDER_MODE_COUNTER_NO_CHANNEL_CHANGE = 4 702268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NanDataResponderMode; 712268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 722268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* NAN Data Path M4 response type */ 732268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 742268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_M4_RESPONSE_ACCEPT = 1, 752268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_M4_RESPONSE_REJECT = 2, 762268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_DATA_PATH_M4_RESPONSE_BADMIC = 3 772268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NdpM4ResponseType; 782268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 792268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* NAN NMF Security Clear type */ 802268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 812268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_NMF_CLEAR_DISABLE = 0, 822268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_NMF_CLEAR_ENABLE = 1 832268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NanNmfClearConfig; 842268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 852268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* NAN Schedule type */ 862268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 872268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_SCHED_VALID = 0, 882268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_SCHED_INVALID_BAD_FA = 1, 892268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_SCHED_INVALID_BAD_NDC = 2, 902268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_SCHED_INVALID_BAD_IMMU = 3 912268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NanSchedType; 922268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 932268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki /* 942268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * Definitions of debug subcommand type for the 952268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * generic debug command. 962268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki */ 972268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef enum { 982268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_AVAILABILITY = 1, 992268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE = 2, 1002268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL = 3, 1012268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_SUPPORTED_BANDS = 4, 1022268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_AUTO_RESPONDER_MODE = 5, 1032268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_M4_RESPONSE_TYPE = 6, 1042268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_SCHED_TYPE = 7, 1052268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_NMF_CLEAR_CONFIG = 8, 1062268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY = 9, 1072268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NEGOTIATE = 10, 1082268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NOTIFY = 11, 1092268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NAN_TEST_MODE_CMD_NAN_AVAILABILITY_MAP_ORDER = 12 1102268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NanDebugModeCmd; 1112268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki 1122268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki/* 1132268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * This debug command carries any one command type 1142268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * followed by corresponding command data content 1152268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * as indicated below. 1162268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1172268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_AVAILABILITY 1182268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: NAN Avaiability attribute blob 1192268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1202268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NDP_INCLUDE_IMMUTABLE 1212268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 value (0 - Ignore 1 - Include immuatable, 1222268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 2 - Don't include immutable) 1232268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1242268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NDP_AVOID_CHANNEL 1252268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 channel_frequency; (0 - Ignore) 1262268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1272268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_SUPPORTED_BANDS 1282268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 supported_bands; (0 . Ignore, 1 . 2g, 1292268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 2 . 5g, 3 . 2g & 5g) 1302268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1312268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_AUTO_RESPONDER_MODE 1322268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 auto_resp_mode; (0 . Auto, 1 . Accept, 1332268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 2 . Reject, 3 . Counter) 1342268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1352268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_M4_RESPONSE_TYPE 1362268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 m4_response_type; (0.Ignore, 1.Accept, 1372268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 2.Reject, 3.BadMic) 1382268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1392268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_SCHED_TYPE 1402268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 invalid_nan_schedule; (0. Valid sched, 1412268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1.Invalid Sched bad FA, 1422268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 2.Invalid schedbad NDC, 1432268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 3.Invalid sched bad Immutable) 1442268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1452268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_NMF_CLEAR_CONFIG 1462268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 nmf_security_config_val;(0:NAN_NMF_CLEAR_DISABLE, 1472268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1:NAN_NMF_CLEAR_ENABLE) 1482268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1492268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_ULW_NOTIFY 1502268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 channel_availability;(0/1) 1512268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1522268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NEGOTIATE 1532268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: responder_nmi_mac (Responder NMI Mac Address) 1542268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1552268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_SCHED_UPDATE_NDL_NOTIFY 1562268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: NONE 1572268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1582268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * command: NAN_TEST_MODE_CMD_NAN_AVAILABILITY_MAP_ORDER 1592268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * content: u32 map_order_val; (0/1) 1602268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * 1612268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki */ 1622268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkitypedef struct PACKED { 16368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* 1642268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * To indicate the debug command type. 1652268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki */ 1662268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki u32 cmd; 16768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik /* 1682268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * To hold the data for the above command 1692268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki * type. 1702268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki */ 1712268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki u8 debug_cmd_data[NAN_MAX_DEBUG_MESSAGE_DATA_LEN]; 1722268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki} NanDebugParams; 17368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 17468f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik/* 17568f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik Function to get the sta_parameter expected by Sigma 17668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik as per CAPI spec. 17768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik*/ 17868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaikwifi_error nan_get_sta_parameter(transaction_id id, 17968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik wifi_interface_handle iface, 18068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik NanStaParameter* msg); 18168f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 1822268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunkiwifi_error nan_debug_command_config(transaction_id id, 18368f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik wifi_interface_handle iface, 1842268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki NanDebugParams msg, 1852268d748b893f82330f1be50b09d699cb8e7f9d3Rakesh Sunki int debug_msg_length); 18668f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#ifdef __cplusplus 18768f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik} 18868f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#endif /* __cplusplus */ 18968f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik#endif /* __NAN_CERT_H__ */ 19068f9bfdb788eceecc52e8f2edb330b72fc6a3d41Subhani Shaik 191