}
}
- if (net_open(&ctl, host) != 0) {
+ if (net_open(&ctl, res) != 0) {
error(0, 0, "Unable to start net module");
if (ctl.Interactive)
exit(EXIT_FAILURE);
int net_open(
struct mtr_ctl *ctl,
- struct hostent *hostent)
+ struct addrinfo *res)
{
int err;
return err;
}
- net_reopen(ctl, hostent);
+ net_reopen(ctl, res);
return 0;
}
void net_reopen(
struct mtr_ctl *ctl,
- struct hostent *hostent)
+ struct addrinfo *res)
{
int at;
net_reset(ctl);
- ctl->af = remotesockaddr->sa_family = sourcesockaddr->sa_family = hostent->h_addrtype;
+ ctl->af = remotesockaddr->sa_family = sourcesockaddr->sa_family = res->ai_family;
remoteaddress = sockaddr_addr_offset(remotesockaddr);
- memcpy(remoteaddress, hostent->h_addr, sockaddr_addr_size(remotesockaddr));
+ memcpy(remoteaddress, sockaddr_addr_offset(res->ai_addr), sockaddr_addr_size(remotesockaddr));
inet_ntop(remotesockaddr->sa_family, remoteaddress, remoteaddr, sizeof(remoteaddr));
sourceaddress = sockaddr_addr_offset(sourcesockaddr);