12e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/** 22e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Copyright(c) 2011 Trusted Logic. All rights reserved. 32e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 42e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * Redistribution and use in source and binary forms, with or without 52e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * modification, are permitted provided that the following conditions 62e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * are met: 72e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 82e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Redistributions of source code must retain the above copyright 92e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * notice, this list of conditions and the following disclaimer. 102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Redistributions in binary form must reproduce the above copyright 112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * notice, this list of conditions and the following disclaimer in 122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * the documentation and/or other materials provided with the 132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * distribution. 142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * * Neither the name Trusted Logic nor the names of its 152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * contributors may be used to endorse or promote products derived 162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * from this software without specific prior written permission. 172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * 182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 262e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 272e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 282e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 292e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley */ 302e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 312e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 322e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifndef __SMC_PROPERTIES_PARSER_H__ 332e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define __SMC_PROPERTIES_PARSER_H__ 342e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 352e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 362e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 372e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#include "s_type.h" 382e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 392e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifdef __cplusplus 402e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyextern "C" { 412e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif 422e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 432e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 442e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* --------------------------------------------------------------------------------- 452e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley Defines 462e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley ---------------------------------------------------------------------------------*/ 472e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 482e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define SYSTEM_SECTION_NAME "Global" 492e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CONFIG_SERVICE_ID_PROPERTY_NAME "config.s.serviceID" 502e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#define CONFIG_PROPERTY_NAME "config." 512e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 522e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 532e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 542e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* --------------------------------------------------------------------------------- 552e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley types definition 562e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley ---------------------------------------------------------------------------------*/ 572e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 582e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct NODE 592e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 602e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct NODE* pLeft; 612e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct NODE* pRight; 622e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct NODE* pNext; 632e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct NODE* pPrevious; 642e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char* pName; 652e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} NODE; 662e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 672e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 682e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 692e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley NODE* pRoot; 702e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley NODE* pFirst; 712e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} LIST; 722e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 732e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 742e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 752e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley NODE sNode; 762e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char* pValue; 772e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley bool bChecked; /* Whether it has been checked that this property is allowed */ 782e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} PROPERTY; 792e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 802e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 812e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 822e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley NODE sNode; 832e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct S_PROPERTY* pProperty; 842e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} S_PROPERTY_NODE; 852e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 862e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct SERVICE_SECTION 872e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 882e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley NODE sNode; 892e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley bool inSCF; 902e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley struct SERVICE_SECTION* pNextInSCF; /* next section defined in config file */ 912e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley S_UUID sUUID; 922e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley uint32_t nFlags; 932e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char* pComment; 942e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley void* pFileInfo; /* used to retreive filename and MD5 hash (optional) */ 952e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sPublicPropertyList; 962e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sPrivatePropertyList; 972e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} SERVICE_SECTION; 982e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 992e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleytypedef struct 1002e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley{ 1012e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley char* pComment; 1022e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sSystemSectionPropertyList; 1032e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley SERVICE_SECTION* pFirstSectionInSCF; /* first section defined in config file */ 1042e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sDriverSectionList; 1052e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sPreinstalledSectionList; 1062e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley LIST sSectionList; 1072e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} CONF_FILE; 1082e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1092e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1102e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1112e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley/* --------------------------------------------------------------------------------- 1122e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley Prototypes 1132e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley ---------------------------------------------------------------------------------*/ 1142e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1152e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyuint32_t SMCPropStringToInt (char* pValue); 1162e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleychar* SMCPropGetSystemProperty (CONF_FILE* pConfFile, char* pPropertyName); 1172e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckleyuint32_t SMCPropGetSystemPropertyAsInt(CONF_FILE* pConfFile, char* pPropertyName); 1182e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan BuckleyS_RESULT SMCPropParseConfigFile (char* pConfigFilename,CONF_FILE* pConfFile); 1192e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1202e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1212e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#ifdef __cplusplus 1222e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley} 1232e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif 1242e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley 1252e9e9eca83c3dee85b7815573a8cf1e6d1780741Bryan Buckley#endif /* __SMC_PROPERTIES_PARSER_H__ */ 126