summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/tap.h1
-rw-r--r--net/tap-aix.c6
-rw-r--r--net/tap-bsd.c4
-rw-r--r--net/tap-haiku.c4
-rw-r--r--net/tap-linux.c13
-rw-r--r--net/tap-solaris.c4
-rw-r--r--net/tap_int.h1
7 files changed, 33 insertions, 0 deletions
diff --git a/include/net/tap.h b/include/net/tap.h
index a994f20447..c3eb85a74e 100644
--- a/include/net/tap.h
+++ b/include/net/tap.h
@@ -37,6 +37,7 @@ void tap_set_offload(NetClientState *nc, int csum, int tso4, int tso6, int ecn,
void tap_set_vnet_hdr_len(NetClientState *nc, int len);
int tap_enable(NetClientState *nc);
int tap_disable(NetClientState *nc);
+int tap_get_ifname(NetClientState *nc, char *ifname);
int tap_get_fd(NetClientState *nc);
diff --git a/net/tap-aix.c b/net/tap-aix.c
index 66e0574fd7..e760e9a0e7 100644
--- a/net/tap-aix.c
+++ b/net/tap-aix.c
@@ -69,3 +69,9 @@ int tap_fd_disable(int fd)
{
return -1;
}
+
+int tap_fd_get_ifname(int fd, char *ifname)
+{
+ return -1;
+}
+
diff --git a/net/tap-bsd.c b/net/tap-bsd.c
index cfc7a289f8..4f22109e94 100644
--- a/net/tap-bsd.c
+++ b/net/tap-bsd.c
@@ -156,3 +156,7 @@ int tap_fd_disable(int fd)
return -1;
}
+int tap_fd_get_ifname(int fd, char *ifname)
+{
+ return -1;
+}
diff --git a/net/tap-haiku.c b/net/tap-haiku.c
index 664d40fb4d..b3b5fbb61e 100644
--- a/net/tap-haiku.c
+++ b/net/tap-haiku.c
@@ -70,3 +70,7 @@ int tap_fd_disable(int fd)
return -1;
}
+int tap_fd_get_ifname(int fd, char *ifname)
+{
+ return -1;
+}
diff --git a/net/tap-linux.c b/net/tap-linux.c
index bdb0a790c8..3b21662c13 100644
--- a/net/tap-linux.c
+++ b/net/tap-linux.c
@@ -261,3 +261,16 @@ int tap_fd_disable(int fd)
return ret;
}
+int tap_fd_get_ifname(int fd, char *ifname)
+{
+ struct ifreq ifr;
+
+ if (ioctl(fd, TUNGETIFF, &ifr) != 0) {
+ error_report("TUNGETIFF ioctl() failed: %s",
+ strerror(errno));
+ return -1;
+ }
+
+ pstrcpy(ifname, sizeof(ifr.ifr_name), ifr.ifr_name);
+ return 0;
+}
diff --git a/net/tap-solaris.c b/net/tap-solaris.c
index 12cc392c94..214d95e626 100644
--- a/net/tap-solaris.c
+++ b/net/tap-solaris.c
@@ -236,3 +236,7 @@ int tap_fd_disable(int fd)
return -1;
}
+int tap_fd_get_ifname(int fd, char *ifname)
+{
+ return -1;
+}
diff --git a/net/tap_int.h b/net/tap_int.h
index ca1c21b451..125f83d5b0 100644
--- a/net/tap_int.h
+++ b/net/tap_int.h
@@ -44,5 +44,6 @@ void tap_fd_set_offload(int fd, int csum, int tso4, int tso6, int ecn, int ufo);
void tap_fd_set_vnet_hdr_len(int fd, int len);
int tap_fd_enable(int fd);
int tap_fd_disable(int fd);
+int tap_fd_get_ifname(int fd, char *ifname);
#endif /* QEMU_TAP_H */