From c8a23de663715f665cd2010323b399bd13405f0c Mon Sep 17 00:00:00 2001 From: Laurent Ghigonis Date: Thu, 6 Jun 2013 00:29:42 +0200 Subject: libglouglou: add get_iface(ip) to get interface to use to reach an IP --- libglouglou/libglouglou.h | 1 + libglouglou/utils.c | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) 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 #include #include +#include +#include #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; +} -- cgit v1.2.3-59-g8ed1b