version 1.144, 2016/06/30 01:34:53 |
version 1.145, 2016/07/06 05:27:52 |
|
|
*dest = new_dst; /* fix dstaddr in place */ |
*dest = new_dst; /* fix dstaddr in place */ |
} |
} |
} |
} |
|
|
LIST_REMOVE(ifatoia(ifa), ia_hash); |
LIST_REMOVE(ifatoia(ifa), ia_hash); |
|
IN_ADDRHASH_WRITER_REMOVE(ifatoia(ifa)); |
|
|
error = in_ifinit(ifp, ifatoia(ifa), &new_sin, 0, hostIsNew); |
error = in_ifinit(ifp, ifatoia(ifa), &new_sin, 0, hostIsNew); |
|
|
LIST_INSERT_HEAD(&IN_IFADDR_HASH(ifatoia(ifa)->ia_addr.sin_addr.s_addr), |
LIST_INSERT_HEAD(&IN_IFADDR_HASH(ifatoia(ifa)->ia_addr.sin_addr.s_addr), |
ifatoia(ifa), ia_hash); |
ifatoia(ifa), ia_hash); |
|
IN_ADDRHASH_WRITER_INSERT_HEAD(ifatoia(ifa)); |
|
|
if (debug && error) |
if (debug && error) |
{ |
{ |
log(LOG_DEBUG, "%s: sppp_set_ip_addrs: in_ifinit " |
log(LOG_DEBUG, "%s: sppp_set_ip_addrs: in_ifinit " |
|
|
if (sp->ipcp.flags & IPCP_HISADDR_DYN) |
if (sp->ipcp.flags & IPCP_HISADDR_DYN) |
/* replace peer addr in place */ |
/* replace peer addr in place */ |
dest->sin_addr.s_addr = sp->ipcp.saved_hisaddr; |
dest->sin_addr.s_addr = sp->ipcp.saved_hisaddr; |
|
|
LIST_REMOVE(ifatoia(ifa), ia_hash); |
LIST_REMOVE(ifatoia(ifa), ia_hash); |
|
IN_ADDRHASH_WRITER_REMOVE(ifatoia(ifa)); |
|
|
in_ifinit(ifp, ifatoia(ifa), &new_sin, 0, 0); |
in_ifinit(ifp, ifatoia(ifa), &new_sin, 0, 0); |
|
|
LIST_INSERT_HEAD(&IN_IFADDR_HASH(ifatoia(ifa)->ia_addr.sin_addr.s_addr), |
LIST_INSERT_HEAD(&IN_IFADDR_HASH(ifatoia(ifa)->ia_addr.sin_addr.s_addr), |
ifatoia(ifa), ia_hash); |
ifatoia(ifa), ia_hash); |
|
IN_ADDRHASH_WRITER_INSERT_HEAD(ifatoia(ifa)); |
|
|
(void)pfil_run_hooks(if_pfil, |
(void)pfil_run_hooks(if_pfil, |
(struct mbuf **)SIOCDIFADDR, ifp, PFIL_IFADDR); |
(struct mbuf **)SIOCDIFADDR, ifp, PFIL_IFADDR); |
} |
} |