1d9f0492fSopenharmony_ci/* 2d9f0492fSopenharmony_ci * Copyright (c) 2021 Huawei Device Co., Ltd. 3d9f0492fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4d9f0492fSopenharmony_ci * you may not use this file except in compliance with the License. 5d9f0492fSopenharmony_ci * You may obtain a copy of the License at 6d9f0492fSopenharmony_ci * 7d9f0492fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8d9f0492fSopenharmony_ci * 9d9f0492fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10d9f0492fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11d9f0492fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12d9f0492fSopenharmony_ci * See the License for the specific language governing permissions and 13d9f0492fSopenharmony_ci * limitations under the License. 14d9f0492fSopenharmony_ci */ 15d9f0492fSopenharmony_ci#ifndef PARAM_TEST_STUB 16d9f0492fSopenharmony_ci#define PARAM_TEST_STUB 17d9f0492fSopenharmony_ci#include <cstdio> 18d9f0492fSopenharmony_ci#include <cstdlib> 19d9f0492fSopenharmony_ci#include <cstring> 20d9f0492fSopenharmony_ci#include <gtest/gtest.h> 21d9f0492fSopenharmony_ci#include <sys/socket.h> 22d9f0492fSopenharmony_ci#include <sys/types.h> 23d9f0492fSopenharmony_ci 24d9f0492fSopenharmony_ci#ifndef OHOS_LITE 25d9f0492fSopenharmony_ci#include "init_eng.h" 26d9f0492fSopenharmony_ci#include "init_context.h" 27d9f0492fSopenharmony_ci#endif 28d9f0492fSopenharmony_ci#include "param_manager.h" 29d9f0492fSopenharmony_ci#include "param_security.h" 30d9f0492fSopenharmony_ci#include "param_utils.h" 31d9f0492fSopenharmony_ci#include "securec.h" 32d9f0492fSopenharmony_ci 33d9f0492fSopenharmony_ci#ifdef __cplusplus 34d9f0492fSopenharmony_ci#if __cplusplus 35d9f0492fSopenharmony_ciextern "C" { 36d9f0492fSopenharmony_ci#endif 37d9f0492fSopenharmony_ci#endif 38d9f0492fSopenharmony_ci 39d9f0492fSopenharmony_ci#ifdef SUPPORT_64BIT 40d9f0492fSopenharmony_ci#define MODULE_LIB_NAME "/system/lib64/init" 41d9f0492fSopenharmony_ci#else 42d9f0492fSopenharmony_ci#define MODULE_LIB_NAME "/system/lib/init" 43d9f0492fSopenharmony_ci#endif 44d9f0492fSopenharmony_ci 45d9f0492fSopenharmony_ci#define DEFAULT_ERROR (-65535) 46d9f0492fSopenharmony_ci 47d9f0492fSopenharmony_ci#ifndef PARAM_SUPPORT_SELINUX 48d9f0492fSopenharmony_citypedef struct ParameterNode { 49d9f0492fSopenharmony_ci const char *paraName; 50d9f0492fSopenharmony_ci const char *paraContext; 51d9f0492fSopenharmony_ci int index; 52d9f0492fSopenharmony_ci} ParameterNode; 53d9f0492fSopenharmony_ci 54d9f0492fSopenharmony_citypedef struct ParamContextsList { 55d9f0492fSopenharmony_ci struct ParameterNode info; 56d9f0492fSopenharmony_ci struct ParamContextsList *next; 57d9f0492fSopenharmony_ci} ParamContextsList; 58d9f0492fSopenharmony_ci 59d9f0492fSopenharmony_citypedef struct SrcInfo { 60d9f0492fSopenharmony_ci int sockFd; 61d9f0492fSopenharmony_ci struct ucred uc; 62d9f0492fSopenharmony_ci} SrcInfo; 63d9f0492fSopenharmony_ci#endif 64d9f0492fSopenharmony_ci 65d9f0492fSopenharmony_civoid CreateTestFile(const char *fileName, const char *data); 66d9f0492fSopenharmony_civoid PrepareInitUnitTestEnv(void); 67d9f0492fSopenharmony_civoid TestSetSelinuxOps(void); 68d9f0492fSopenharmony_civoid SetTestPermissionResult(int result); 69d9f0492fSopenharmony_civoid TestSetParamCheckResult(const char *prefix, uint16_t mode, int result); 70d9f0492fSopenharmony_ciint TestCheckParamPermission(const ParamLabelIndex *labelIndex, 71d9f0492fSopenharmony_ci const ParamSecurityLabel *srcLabel, const char *name, uint32_t mode); 72d9f0492fSopenharmony_ciint TestFreeLocalSecurityLabel(ParamSecurityLabel *srcLabel); 73d9f0492fSopenharmony_ci 74d9f0492fSopenharmony_citypedef enum { 75d9f0492fSopenharmony_ci STUB_SPRINTF, 76d9f0492fSopenharmony_ci STUB_MOUNT, 77d9f0492fSopenharmony_ci STUB_MKNODE, 78d9f0492fSopenharmony_ci STUB_EXECV, 79d9f0492fSopenharmony_ci STUB_UMOUNT, 80d9f0492fSopenharmony_ci STUB_MAX 81d9f0492fSopenharmony_ci} STUB_TYPE; 82d9f0492fSopenharmony_civoid SetStubResult(STUB_TYPE type, int result); 83d9f0492fSopenharmony_civoid PrepareCmdLineData(); 84d9f0492fSopenharmony_ciParamLabelIndex *TestGetParamLabelIndex(const char *name); 85d9f0492fSopenharmony_ci 86d9f0492fSopenharmony_ci// for test 87d9f0492fSopenharmony_civoid HandleUevent(const struct Uevent *uevent); 88d9f0492fSopenharmony_ci 89d9f0492fSopenharmony_ci#ifndef OHOS_LITE 90d9f0492fSopenharmony_civoid EngineerOverlay(void); 91d9f0492fSopenharmony_civoid DebugFilesOverlay(const char *source, const char *target); 92d9f0492fSopenharmony_civoid BindMountFile(const char *source, const char *target); 93d9f0492fSopenharmony_civoid MountEngPartitions(void); 94d9f0492fSopenharmony_civoid BuildMountCmd(char *buffer, size_t len, const char *mp, const char *dev, const char *fstype); 95d9f0492fSopenharmony_cibool IsFileExistWithType(const char *file, FileType type); 96d9f0492fSopenharmony_ci 97d9f0492fSopenharmony_ciint DoRoot_(const char *jobName, int type); 98d9f0492fSopenharmony_ciint DoRebootShutdown(int id, const char *name, int argc, const char **argv); 99d9f0492fSopenharmony_ciint DoRebootFlashed(int id, const char *name, int argc, const char **argv); 100d9f0492fSopenharmony_ciint DoRebootOther(int id, const char *name, int argc, const char **argv); 101d9f0492fSopenharmony_ci 102d9f0492fSopenharmony_ci//remount_overlay 103d9f0492fSopenharmony_cibool MntNeedRemount(const char *mnt); 104d9f0492fSopenharmony_cibool IsSkipRemount(const struct mntent mentry); 105d9f0492fSopenharmony_ciint ExecCommand(int argc, char **argv); 106d9f0492fSopenharmony_ciint GetDevSize(const char *fsBlkDev, uint64_t *devSize); 107d9f0492fSopenharmony_ciint FormatExt4(const char *fsBlkDev, const char *fsMntPoint); 108d9f0492fSopenharmony_civoid OverlayRemountPre(const char *mnt); 109d9f0492fSopenharmony_civoid OverlayRemountPost(const char *mnt); 110d9f0492fSopenharmony_cibool DoRemount(struct mntent *mentry, bool *result); 111d9f0492fSopenharmony_cibool DirectoryExists(const char *path); 112d9f0492fSopenharmony_cibool DoSystemRemount(struct mntent *mentry, bool *result); 113d9f0492fSopenharmony_ci 114d9f0492fSopenharmony_ci//remount 115d9f0492fSopenharmony_ciint Modem2Exchange(const char *modemPath, const char *exchangePath); 116d9f0492fSopenharmony_ciint Exchange2Modem(const char *modemPath, const char *exchangePath); 117d9f0492fSopenharmony_ci 118d9f0492fSopenharmony_ciSubInitContext *GetSubInitContext(InitContextType type); 119d9f0492fSopenharmony_ciuint64_t LookupErofsEnd(const char *dev); 120d9f0492fSopenharmony_civoid AllocDmName(const char *name, char *nameRofs, const uint64_t nameRofsLen, 121d9f0492fSopenharmony_ci char *nameExt4, const uint64_t nameExt4Len); 122d9f0492fSopenharmony_ci#endif 123d9f0492fSopenharmony_ci#ifdef __cplusplus 124d9f0492fSopenharmony_ci#if __cplusplus 125d9f0492fSopenharmony_ci} 126d9f0492fSopenharmony_ci#endif 127d9f0492fSopenharmony_ci#endif 128d9f0492fSopenharmony_ci#endif // PARAM_TEST_STUB_ 129