Lines Matching refs:namespace

59 APPSPAWN_STATIC void DeleteAppSpawnNamespace(AppSpawnNamespace *namespace)
61 APPSPAWN_CHECK_ONLY_EXPER(namespace != NULL, return);
63 OH_ListRemove(&namespace->extData.node);
64 OH_ListInit(&namespace->extData.node);
66 if (namespace->nsInitPidFd > 0) {
67 close(namespace->nsInitPidFd);
68 namespace->nsInitPidFd = -1;
70 if (namespace->nsSelfPidFd > 0) {
71 close(namespace->nsSelfPidFd);
72 namespace->nsSelfPidFd = -1;
74 free(namespace);
79 AppSpawnNamespace *namespace = ListEntry(data, AppSpawnNamespace, extData);
80 APPSPAWN_CHECK_ONLY_EXPER(namespace != NULL, return);
81 DeleteAppSpawnNamespace(namespace);
87 AppSpawnNamespace *namespace = (AppSpawnNamespace *)calloc(1, sizeof(AppSpawnNamespace));
88 APPSPAWN_CHECK(namespace != NULL, return NULL, "Failed to create sandbox");
89 namespace->nsInitPidFd = -1;
90 namespace->nsSelfPidFd = -1;
92 OH_ListInit(&namespace->extData.node);
93 namespace->extData.dataId = EXT_DATA_NAMESPACE;
94 namespace->extData.freeNode = FreeAppSpawnNamespace;
95 namespace->extData.dumpNode = NULL;
96 return namespace;
179 APPSPAWN_LOGI("Enable pid namespace flags: 0x%{public}x", content->content.sandboxNsFlags);
189 AppSpawnNamespace *namespace = CreateAppSpawnNamespace();
190 APPSPAWN_CHECK(namespace != NULL, return -1, "Failed to create namespace");
193 // check if process pid_ns_init exists, this is the init process for pid namespace
200 DeleteAppSpawnNamespace(namespace);
207 namespace->nsSelfPidFd = GetNsPidFd(getpid());
208 if (namespace->nsSelfPidFd < 0) {
210 DeleteAppSpawnNamespace(namespace);
214 namespace->nsInitPidFd = GetNsPidFd(pid);
215 if (namespace->nsInitPidFd < 0) {
217 DeleteAppSpawnNamespace(namespace);
220 OH_ListAddTail(&content->extData, &namespace->extData.node);
221 APPSPAWN_LOGI("Enable pid namespace success.");
225 // after calling setns, new process will be in the same pid namespace of the input pid
231 APPSPAWN_LOGE("set pid namespace nsType:%{public}d failed", nsType);
240 AppSpawnNamespace *namespace = GetAppSpawnNamespace(content);
241 if (namespace == NULL) {
245 SetPidNamespace(namespace->nsInitPidFd, CLONE_NEWPID); // pid_ns_init is the init process
252 AppSpawnNamespace *namespace = GetAppSpawnNamespace(content);
253 if (namespace == NULL) {
257 SetPidNamespace(namespace->nsSelfPidFd, 0); // go back to original pid namespace