else
snprintf(alias, sizeof(alias), "%s:%u", ia->iface->name, lun);
TAILQ_FOREACH(iap, &state->addrs, next) {
- if (iap->addr.s_addr == INADDR_ANY) {
+ if (iap->alias[0] != '\0' && iap->addr.s_addr == INADDR_ANY) {
/* No address assigned? Lets use it. */
strlcpy(ia->alias, iap->alias, sizeof(ia->alias));
if (repl)
struct ipv4_state *state;
struct ipv4_addr *ia;
#ifdef ALIAS_ADDR
- int replaced;
+ int replaced, blank;
struct ipv4_addr *replaced_ia;
#endif
inet_ntoa(*addr), inet_ntocidr(*mask));
#ifdef ALIAS_ADDR
+ blank = (ia->alias[0] == '\0');
if ((replaced = ipv4_aliasaddr(ia, &replaced_ia)) == -1) {
logger(ifp->ctx, LOG_ERR, "%s: ipv4_aliasaddr: %m", ifp->name);
free(ia);
return NULL;
}
+ if (blank)
+ logger(ia->iface->ctx, LOG_DEBUG, "%s: aliased %s",
+ ia->alias, ia->saddr);
#endif
logger(ifp->ctx, LOG_DEBUG, "%s: adding IP address %s broadcast %s",
if (ia->alias[0] != '\0')
return 0;
-
state = IPV6_STATE(ia->iface);
/* First find an existng address.
* This can happen when dhcpcd restarts as ND and DHCPv6
* maintain their own lists of addresses. */
TAILQ_FOREACH(iap, &state->addrs, next) {
- if (IN6_ARE_ADDR_EQUAL(&iap->addr, &ia->addr)) {
+ if (iap->alias[0] != '\0' &&
+ IN6_ARE_ADDR_EQUAL(&iap->addr, &ia->addr))
+ {
strlcpy(ia->alias, iap->alias, sizeof(ia->alias));
return 0;
}
else
snprintf(alias, sizeof(alias), "%s:%u", ia->iface->name, unit);
TAILQ_FOREACH(iap, &state->addrs, next) {
+ if (iap->alias[0] == '\0')
+ continue;
if (IN6_IS_ADDR_UNSPECIFIED(&iap->addr)) {
/* No address assigned? Lets use it. */
strlcpy(ia->alias, iap->alias, sizeof(ia->alias));
{
int r;
#ifdef ALIAS_ADDR
- int replaced;
+ int replaced, blank;
struct ipv6_addr *replaced_ia;
+ blank = (ia->alias[0] == '\0');
if ((replaced = ipv6_aliasaddr(ia, &replaced_ia)) == -1)
return -1;
+ if (blank)
+ logger(ia->iface->ctx, LOG_DEBUG, "%s: aliased %s",
+ ia->alias, ia->saddr);
#endif
if ((r = ipv6_addaddr1(ia, now)) == 0) {