1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (c) 2022 Huawei Device Co., Ltd.
4 *
5 * Description: check NewIP enable.
6 *
7 * Author: Yang Yanjun <yangyanjun@huawei.com>
8 *
9 * Data: 2022-09-06
10 */
11#include <stdlib.h>
12#include <string.h>
13#include <stdio.h>
14#include <unistd.h>
15
16#define NIP_DISABLE_PATH        ("/sys/module/newip/parameters/disable")
17#define NIP_DISABLE_LENTH       (5)
18#define NIP_ENABLE_INVALID      (0xFF)
19
20int g_nip_enable = NIP_ENABLE_INVALID;
21
22void _check_nip_enable(void)
23{
24	char tmp[NIP_DISABLE_LENTH];
25	FILE *fn = fopen(NIP_DISABLE_PATH, "r");
26
27	if (!fn) {
28		printf("fail to open %s\n\n", NIP_DISABLE_PATH);
29		return;
30	}
31
32	if (fgets(tmp, NIP_DISABLE_LENTH, fn) == NULL) {
33		printf("fail to gets %s\n\n", NIP_DISABLE_PATH);
34		fclose(fn);
35		return;
36	}
37
38	if (fclose(fn) == EOF) {
39		printf("fclose failed\n");
40		return;
41	}
42	g_nip_enable = atoi(tmp) ? 0 : 1;
43}
44
45int check_nip_enable(void)
46{
47	if (g_nip_enable == NIP_ENABLE_INVALID) {
48		_check_nip_enable();
49		g_nip_enable = (g_nip_enable == 1 ? 1 : 0);
50	}
51
52	return g_nip_enable;
53}
54
55int main(int argc, char **argv)
56{
57	int af_ninet = check_nip_enable();
58
59	if (af_ninet)
60		printf("Support NewIP\n\n");
61	else
62		printf("Not support NewIP\n\n");
63	return 0;
64}
65
66