diff options
author | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-01-19 16:07:27 +0000 |
---|---|---|
committer | Alexander V. Chernikov <melifaro@FreeBSD.org> | 2014-01-19 16:07:27 +0000 |
commit | f6b84910bbabbe59ac2ac5cc991afbc2cf4cce0e (patch) | |
tree | 79ac95730ec1406fe00700a17927490aa778390a /sys/netinet/ip_carp.c | |
parent | b5a9d8b5a732e81370ccbb843a66d97485035e9d (diff) | |
download | src-f6b84910bbabbe59ac2ac5cc991afbc2cf4cce0e.tar.gz src-f6b84910bbabbe59ac2ac5cc991afbc2cf4cce0e.zip |
Further rework netinet6 address handling code:
* Set ia address/mask values BEFORE attaching to address lists.
Inet6 address assignment is not atomic, so the simplest way to
do this atomically is to fill in ia before attach.
* Validate irfa->ia_addr field before use (we permit ANY sockaddr in old code).
* Do some renamings:
in6_ifinit -> in6_notify_ifa (interaction with other subsystems is here)
in6_setup_ifa -> in6_broadcast_ifa (LLE/Multicast/DaD code)
in6_ifaddloop -> nd6_add_ifa_lle
in6_ifremloop -> nd6_rem_ifa_lle
* Split working with LLE and route announce code for last two.
Add temporary in6_newaddrmsg() function to mimic current rtsock behaviour.
* Call device SIOCSIFADDR handler IFF we're adding first address.
In IPv4 we have to call it on every address change since ARP record
is installed by arp_ifinit() which is called by given handler.
IPv6 stack, on the opposite is responsible to call nd6_add_ifa_lle() so
there is no reason to call SIOCSIFADDR often.
Notes
Notes:
svn path=/head/; revision=260882
Diffstat (limited to 'sys/netinet/ip_carp.c')
-rw-r--r-- | sys/netinet/ip_carp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index 5b92b8cd70d4..b6931a0a1235 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -964,7 +964,7 @@ carp_ifa_addroute(struct ifaddr *ifa) case AF_INET6: ifa_add_loopback_route(ifa, (struct sockaddr *)&ifatoia6(ifa)->ia_addr); - in6_ifaddloop(ifa); + nd6_add_ifa_lle(ifatoia6(ifa)); break; #endif } @@ -995,7 +995,7 @@ carp_ifa_delroute(struct ifaddr *ifa) case AF_INET6: ifa_del_loopback_route(ifa, (struct sockaddr *)&ifatoia6(ifa)->ia_addr); - in6_ifremloop(ifa); + nd6_rem_ifa_lle(ifatoia6(ifa)); break; #endif } |