- local_ipaddrs[n_local_ipaddrs++] =
- SIN(&ifr.ifr_addr)->sin_addr;
- D( fprintf(stderr, "noip: local addr %s = %s\n", ifn[i].if_name,
- inet_ntoa(local_ipaddrs[n_local_ipaddrs - 1])); )
+ a = &SIN(ifa->ifa_addr)->sin_addr;
+ D( fprintf(stderr, "noip: local addr %s = %s",
+ ifa->ifa_name, inet_ntoa(*a)); )
+ for (i = 0; i < n_local_ipaddrs; i++) {
+ if (local_ipaddrs[i].s_addr == a->s_addr) {
+ D( fprintf(stderr, " (duplicate)\n"); )
+ goto skip;
+ }
+ }
+ D( fprintf(stderr, "\n"); )
+ local_ipaddrs[n_local_ipaddrs] = *a;
+ n_local_ipaddrs++;
+ skip:;