-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathifconfig.c
71 lines (56 loc) · 1.66 KB
/
ifconfig.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*===============================================================
* 文件名称:ifconfig.c
* 创建日期:2016年08月16日
================================================================*/
#include "stdio.h"
#define BUS_RET_SUCCESS (0)
#define BUS_RET_FAILED (-1)
static int api_getWanMac(const char *vpWanIfName, char *vpMacAddress)
{
int ret = BUS_RET_SUCCESS;
char cmd[64] = {0};
char result[128] = {0};
snprintf(cmd, sizeof(cmd), "ifconfig %s|grep HWaddr", vpWanIfName);
FILE *pStream = NULL;
pStream = popen(cmd, "r");
if(NULL == pStream)
{
printf("run \"%s\" failed!\n", cmd);
return BUS_RET_FAILED;
}
if(fread(result, sizeof(char), sizeof(result), pStream) == 0)
//if (fgets(result, sizeof(result), pStream) == NULL)
{
printf("fgets failed!\n");
pclose(pStream);
pStream = NULL;
return BUS_RET_FAILED;
}
printf("result:\n%s\n", result);
//result like this:
//pon_3_0_1 Link encap:Ethernet HWaddr 00:01:02:03:0A:10
if(EOF == sscanf(result, "%*[^ ] %*[^ ] %*[^ ] %*[^ ] %[^\n]", vpMacAddress))
{
printf("read MAC from \"%s\" error.\n", result);
pclose(pStream);
pStream = NULL;
return BUS_RET_FAILED;
}
pclose(pStream);
pStream = NULL;
return BUS_RET_SUCCESS;
}
int main(void)
{
char *ifEth = "";
char MAC[32] = {0};
int ret = BUS_RET_SUCCESS;
ret = api_getWanMac(ifEth, MAC);
if(BUS_RET_SUCCESS != ret)
{
printf("call api_getWANMAC failed\n");
return -1;
}
printf("MAC is %s\n", MAC);
return 0;
}