diff options
-rw-r--r-- | libglouglou/libggnet_traceroute.c | 11 | ||||
-rw-r--r-- | libglouglou/utils.c | 12 |
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); } |