aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_carp.c
diff options
context:
space:
mode:
authorAlexander V. Chernikov <melifaro@FreeBSD.org>2014-01-19 16:07:27 +0000
committerAlexander V. Chernikov <melifaro@FreeBSD.org>2014-01-19 16:07:27 +0000
commitf6b84910bbabbe59ac2ac5cc991afbc2cf4cce0e (patch)
tree79ac95730ec1406fe00700a17927490aa778390a /sys/netinet/ip_carp.c
parentb5a9d8b5a732e81370ccbb843a66d97485035e9d (diff)
downloadsrc-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.c4
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
}