aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libstrongswan/networking/tun_device.c7
-rw-r--r--src/libstrongswan/networking/tun_device.h7
2 files changed, 14 insertions, 0 deletions
diff --git a/src/libstrongswan/networking/tun_device.c b/src/libstrongswan/networking/tun_device.c
index 691d96c8e..b0be8688e 100644
--- a/src/libstrongswan/networking/tun_device.c
+++ b/src/libstrongswan/networking/tun_device.c
@@ -192,6 +192,12 @@ METHOD(tun_device_t, get_name, char*,
return this->if_name;
}
+METHOD(tun_device_t, get_fd, int,
+ private_tun_device_t *this)
+{
+ return this->tunfd;
+}
+
METHOD(tun_device_t, write_packet, bool,
private_tun_device_t *this, chunk_t packet)
{
@@ -398,6 +404,7 @@ tun_device_t *tun_device_create(const char *name_tmpl)
.get_mtu = _get_mtu,
.set_mtu = _set_mtu,
.get_name = _get_name,
+ .get_fd = _get_fd,
.set_address = _set_address,
.up = _up,
.destroy = _destroy,
diff --git a/src/libstrongswan/networking/tun_device.h b/src/libstrongswan/networking/tun_device.h
index b22a5d170..3bdb02a5d 100644
--- a/src/libstrongswan/networking/tun_device.h
+++ b/src/libstrongswan/networking/tun_device.h
@@ -95,6 +95,13 @@ struct tun_device_t {
char *(*get_name)(tun_device_t *this);
/**
+ * Get the underlying tun file descriptor.
+ *
+ * @return file descriptor of this tun device
+ */
+ int (*get_fd)(tun_device_t *this);
+
+ /**
* Destroy a tun_device_t
*/
void (*destroy)(tun_device_t *this);