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