diff options
Diffstat (limited to 'libglouglou/libggnet_traceroute.c')
-rw-r--r-- | libglouglou/libggnet_traceroute.c | 11 |
1 files changed, 8 insertions, 3 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); |