> --- devinet.c 2001/09/04 19:18:51 1.1
> +++ devinet.c 2001/09/04 19:31:13
> @@ -530,7 +530,7 @@
>
> if ((in_dev=__in_dev_get(dev)) != NULL) {
> for (ifap=&in_dev->ifa_list; (ifa=*ifap) != NULL;
> ifap=&ifa->ifa_next)
> - if (strcmp(ifr.ifr_name, ifa->ifa_label) == 0)
> + if ((strcmp(ifr.ifr_name, ifa->ifa_label) == 0) ||
> (sin->sin_addr.s_addr == ifa->ifa_address))
> break;
> }
Thanks for trying to help, however, that's not going to work this way, sorry.
1. "sin" is cleared a few lines above, so you end up comparing 0.0.0.0
against "ifa->ifa_address".
2. two interfaces can have the same configured address, your patch might
end up returning the wrong address. You'd need to write && where you
wrote ||, and you'd need to save the old address.
See the patch that I sent.
-- Matthias Andree - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/