aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libglouglou/libggnet_traceroute.c11
-rw-r--r--libglouglou/utils.c12
2 files changed, 17 insertions, 6 deletions
diff --git a/libglouglou/libggnet_traceroute.c b/libglouglou/libggnet_traceroute.c
index 8c189f0..6003175 100644
--- a/libglouglou/libggnet_traceroute.c
+++ b/libglouglou/libggnet_traceroute.c
@@ -198,7 +198,8 @@ ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, struct addr *ip,
void *data)
{
struct ggnet_traceroute_req *req;
- struct intf_entry intf_entry;
+ struct intf_entry *intfentry;
+ char buf[1024];
req = calloc(1, sizeof(struct ggnet_traceroute_req));
if (!req) {
@@ -211,13 +212,17 @@ ggnet_traceroute_trace(struct ggnet_traceroute *ggtr, struct addr *ip,
exit(1);
}
+ intfentry = (struct intf_entry *)buf;
+ memset(intfentry, 0, sizeof(struct intf_entry));
+ intfentry->intf_len = sizeof(buf);
memcpy(&req->target->ip, ip, sizeof(struct addr));
- if (intf_get_dst(ggtr->intf, &intf_entry, &req->target->ip) < 0) {
+ if (intf_get_dst(ggtr->intf, intfentry, &req->target->ip) < 0) {
printf("error getting source IP for dest IP %s (%p)\n",
addr_ntoa(&req->target->ip), ggtr->intf);
goto err;
}
- memcpy(&req->srcip, &intf_entry.intf_addr, sizeof(struct addr));
+ printf("XXX intfentry->intf_addr %s\n", addr_ntoa(&intfentry->intf_addr));
+ memcpy(&req->srcip, &intfentry->intf_addr, sizeof(struct addr));
req->params = params;
TAILQ_INIT(&req->hops_list);
diff --git a/libglouglou/utils.c b/libglouglou/utils.c
index 050a753..f842857 100644
--- a/libglouglou/utils.c
+++ b/libglouglou/utils.c
@@ -203,15 +203,21 @@ droppriv(char *user, int do_chroot, char *chroot_path)
char *
get_iface(char *ip) {
struct addr dst;
- struct intf_entry entry;
+ char buf[1024];
+ struct intf_entry *entry;
intf_t *intf;
+ entry = (struct intf_entry *)buf;
+ memset(entry, 0, sizeof(*entry));
+ entry->intf_len = sizeof(buf);
intf = intf_open();
addr_aton(ip, &dst);
- if (intf_get_dst(intf, &entry, &dst) < 0)
+ if (intf_get_dst(intf, entry, &dst) < 0)
return NULL;
intf_close(intf);
- return strdup(entry.intf_name);
+ printf("XXX get_iface %s: %s\n", ip, entry->intf_name);
+
+ return strdup(entry->intf_name);
}