1cd324d7aSKP Singh // SPDX-License-Identifier: GPL-2.0 2cd324d7aSKP Singh 3cd324d7aSKP Singh /* 4cd324d7aSKP Singh * Copyright (C) 2020 Google LLC. 5cd324d7aSKP Singh */ 6cd324d7aSKP Singh 7cd324d7aSKP Singh #include <test_progs.h> 8cd324d7aSKP Singh #include <linux/limits.h> 9cd324d7aSKP Singh 10cd324d7aSKP Singh #include "local_storage.skel.h" 11cd324d7aSKP Singh #include "network_helpers.h" 12cd324d7aSKP Singh 13cd324d7aSKP Singh int create_and_unlink_file(void) 14cd324d7aSKP Singh { 15cd324d7aSKP Singh char fname[PATH_MAX] = "/tmp/fileXXXXXX"; 16cd324d7aSKP Singh int fd; 17cd324d7aSKP Singh 18cd324d7aSKP Singh fd = mkstemp(fname); 19cd324d7aSKP Singh if (fd < 0) 20cd324d7aSKP Singh return fd; 21cd324d7aSKP Singh 22cd324d7aSKP Singh close(fd); 23cd324d7aSKP Singh unlink(fname); 24cd324d7aSKP Singh return 0; 25cd324d7aSKP Singh } 26cd324d7aSKP Singh 27cd324d7aSKP Singh void test_test_local_storage(void) 28cd324d7aSKP Singh { 29cd324d7aSKP Singh struct local_storage *skel = NULL; 30cd324d7aSKP Singh int err, duration = 0, serv_sk = -1; 31cd324d7aSKP Singh 32cd324d7aSKP Singh skel = local_storage__open_and_load(); 33cd324d7aSKP Singh if (CHECK(!skel, "skel_load", "lsm skeleton failed\n")) 34cd324d7aSKP Singh goto close_prog; 35cd324d7aSKP Singh 36cd324d7aSKP Singh err = local_storage__attach(skel); 37cd324d7aSKP Singh if (CHECK(err, "attach", "lsm attach failed: %d\n", err)) 38cd324d7aSKP Singh goto close_prog; 39cd324d7aSKP Singh 40cd324d7aSKP Singh skel->bss->monitored_pid = getpid(); 41cd324d7aSKP Singh 42cd324d7aSKP Singh err = create_and_unlink_file(); 43cd324d7aSKP Singh if (CHECK(err < 0, "exec_cmd", "err %d errno %d\n", err, errno)) 44cd324d7aSKP Singh goto close_prog; 45cd324d7aSKP Singh 46cd324d7aSKP Singh CHECK(skel->data->inode_storage_result != 0, "inode_storage_result", 47cd324d7aSKP Singh "inode_local_storage not set\n"); 48cd324d7aSKP Singh 49cd324d7aSKP Singh serv_sk = start_server(AF_INET6, SOCK_STREAM, NULL, 0, 0); 50cd324d7aSKP Singh if (CHECK(serv_sk < 0, "start_server", "failed to start server\n")) 51cd324d7aSKP Singh goto close_prog; 52cd324d7aSKP Singh 53cd324d7aSKP Singh CHECK(skel->data->sk_storage_result != 0, "sk_storage_result", 54cd324d7aSKP Singh "sk_local_storage not set\n"); 55cd324d7aSKP Singh 56cd324d7aSKP Singh close(serv_sk); 57cd324d7aSKP Singh 58cd324d7aSKP Singh close_prog: 59cd324d7aSKP Singh local_storage__destroy(skel); 60cd324d7aSKP Singh } 61