* Copyright (c) Huawei Technologies Co., Ltd. 2026. All rights reserved.
* K-NET is licensed under the Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "securec.h"
#include "common.h"
#include "mock.h"
#include "knet_capability.h"
struct KnetCapInfo {
uint8_t capEffMap;
char padding[7];
};
extern struct KnetCapInfo g_knetCapInfo;
DTEST_CASE_F(KNET_CAPABILITY, TEST_CAPABILITY_GET_CLEAR_NORMAL, NULL, NULL)
{
KTestMock *Mock = CreateMock();
DT_ASSERT_NOT_EQUAL(Mock, NULL);
Mock->Create(geteuid, TEST_GetFuncRetPositive(1));
KNET_GetCap(0x1f);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x1f);
KNET_ClearCap(0x1f);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x0);
Mock->Delete(geteuid);
DeleteMock(Mock);
}
DTEST_CASE_F(KNET_CAPABILITY, TEST_CAPABILITY_GET_INVALID, NULL, NULL)
{
KTestMock *Mock = CreateMock();
DT_ASSERT_NOT_EQUAL(Mock, NULL);
Mock->Create(geteuid, TEST_GetFuncRetPositive(1));
KNET_GetCap(0x1f);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x1f);
KNET_GetCap(0xff);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x1f);
KNET_ClearCap(0xff);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x1f);
KNET_ClearCap(0x1f);
DT_ASSERT_EQUAL(g_knetCapInfo.capEffMap, 0x0);
Mock->Delete(geteuid);
DeleteMock(Mock);
}