int pcap_lookupnet(const char *, bpf_u_int32 *, bpf_u_int32 *, char *);
此接口用于对特定的设备,获取32进制的网络号和掩码;
获取的ip是网络地址,不是ip地址;
与我们的理解不一致,但是这不是异常。
根据libpcap官方的issue上记录
pcap_lookupnet() is used to determine the network number and mask associated with the network device device. Both netp and maskp are bpf_u_int32 pointers. A return of -1 indicates an error in which case errbuf is filled in with an appropriate error message.
----------
"Network number", not "network address". The old pcap man page, from before the individual man pages were created, says the same thing:
可以使用ioctl接口获取ip地址
-----------------------------------
inet_ntoa
这是整数值转换字符串接口,使用时有一点需要注意,函数内部使用静态内存,不是可重入函数,所以下面调用是错误的,得到的都是同一块控件字符串
printf("[+] Network number: %s\n[+] Subnet mask: %s\n", inet_ntoa(net), inet_ntoa(mask));