diff options
-rw-r--r-- | libglouglou/libglouglou.h | 1 | ||||
-rw-r--r-- | libglouglou/utils.c | 17 |
2 files changed, 18 insertions, 0 deletions
diff --git a/libglouglou/libglouglou.h b/libglouglou/libglouglou.h index 5c727b4..fb755a7 100644 --- a/libglouglou/libglouglou.h +++ b/libglouglou/libglouglou.h @@ -204,5 +204,6 @@ void fd_nonblock(int); void addrcpy(struct sockaddr_in *, struct sockaddr_in *); int addrcmp(struct sockaddr_in *, struct sockaddr_in *); void droppriv(char *, int, char *); +char *get_iface(char *); #endif /* _LIBGLOUGLOU_H_ */ diff --git a/libglouglou/utils.c b/libglouglou/utils.c index 2c17eb0..2b56270 100644 --- a/libglouglou/utils.c +++ b/libglouglou/utils.c @@ -15,6 +15,8 @@ #include <pwd.h> #include <grp.h> #include <string.h> +#include <pcap.h> +#include <dnet.h> #include "libglouglou.h" @@ -198,3 +200,18 @@ droppriv(char *user, int do_chroot, char *chroot_path) endpwent(); } +char * +get_iface(char *ip) { + struct addr dst; + struct intf_entry entry; + char *iface; + + intf = intf_open(); + addr_aton(ip, &dst); + if (intf_get_dst(intf, &entry, &dst) < 0) + return NULL; + iface = addr_ntoa(&entry.intf_addr); + intf_close(intf); + + return iface; +} |