Skip to content

Commit e7b24f8

Browse files
committed
add get v4&v6
1 parent 556c029 commit e7b24f8

File tree

3 files changed

+34
-11
lines changed

3 files changed

+34
-11
lines changed

.idea/gradle.xml

-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/example/jnihook/MainActivity.java

+10
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@
33

44
import android.app.Activity;
55
import android.os.Bundle;
6+
import android.content.Context;
7+
import android.net.wifi.WifiInfo;
8+
import android.net.wifi.WifiManager;
9+
import android.provider.CallLog;
10+
import android.util.Log;
11+
12+
import java.net.InetAddress;
13+
import java.net.NetworkInterface;
14+
import java.net.SocketException;
15+
import java.util.Enumeration;
616

717
public class MainActivity extends Activity {
818

app/src/main/jni/main.cpp

+24-10
Original file line numberDiff line numberDiff line change
@@ -90,29 +90,43 @@
9090
#include <netinet/ip.h>
9191
#include <netlink/ifaddrs.h>
9292
#include <bionic_netlink.h>
93+
#include <netdb.h>
9394

9495

95-
96-
int listmacaddrs(void) {
96+
int listmacaddrs() {
9797
struct ifaddrs *ifap, *ifaptr;
9898

9999
if (myGetifaddrs(&ifap) == 0) {
100-
for (ifaptr = ifap; ifaptr != NULL; ifaptr = (ifaptr)->ifa_next) {
101-
char macp[INET6_ADDRSTRLEN];
100+
for (ifaptr = ifap; ifaptr != nullptr; ifaptr = (ifaptr)->ifa_next) {
102101
if(ifaptr->ifa_addr!= nullptr) {
103-
if (((ifaptr)->ifa_addr)->sa_family == AF_PACKET) {
102+
sa_family_t family = ((ifaptr)->ifa_addr)->sa_family;
103+
if (family == AF_PACKET) {
104+
//get mac info
105+
char macp[INET6_ADDRSTRLEN];
104106
auto *sockadd = (struct sockaddr_ll *) (ifaptr->ifa_addr);
105107
int i;
106108
int len = 0;
107109
for (i = 0; i < 6; i++) {
108110
len += sprintf(macp + len, "%02X%s", sockadd->sll_addr[i],( i < 5 ? ":" : ""));
109111
}
110-
//LOGE("%s %s ",(ifaptr)->ifa_name,macp)
111-
if(strcmp(ifaptr->ifa_name,"wlan0")== 0){
112-
LOGE("%s %s ",(ifaptr)->ifa_name,macp)
113-
freeifaddrs(ifap);
114-
return 1;
112+
LOGE("AF_PACKET %s %s ",(ifaptr)->ifa_name,macp)
113+
// if(strcmp(ifaptr->ifa_name,"wlan0")== 0){
114+
// LOGE("%s %s ",(ifaptr)->ifa_name,macp)
115+
// freeifaddrs(ifap);
116+
// return 1;
117+
// }
118+
} else if(family == AF_INET || family == AF_INET6){
119+
//get v4 & v6 info
120+
char host[NI_MAXHOST];
121+
int ret = getnameinfo(ifaptr->ifa_addr,
122+
(family == AF_INET) ? sizeof(struct sockaddr_in) :
123+
sizeof(struct sockaddr_in6),
124+
host, NI_MAXHOST,
125+
nullptr, 0, NI_NUMERICHOST);
126+
if (ret != 0) {
127+
LOGE("AF_INET6 getnameinfo() failed %s ",gai_strerror(ret))
115128
}
129+
LOGE("AF_INET6 %s ",host)
116130
}
117131
}
118132

0 commit comments

Comments
 (0)