mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-19 10:53:58 +00:00
Fix CARP in backup mode by properly registering its hooks for INET and INET6
using ipproto_{un,}register() and the newly created ip6proto_{un,}register() so that it can again receive IPPROTO_CARP packets allowing its state machine to work. Reviewed by: bz Approved by: ken (mentor)
This commit is contained in:
parent
e24fa11d3e
commit
15249f73e9
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=212266
@ -2313,6 +2313,7 @@ carp_mod_cleanup(void)
|
||||
if_clone_detach(&carp_cloner);
|
||||
#ifdef INET
|
||||
if (proto_reg[CARP_INET] == 0) {
|
||||
(void)ipproto_unregister(IPPROTO_CARP);
|
||||
pf_proto_unregister(PF_INET, IPPROTO_CARP, SOCK_RAW);
|
||||
proto_reg[CARP_INET] = -1;
|
||||
}
|
||||
@ -2320,6 +2321,7 @@ carp_mod_cleanup(void)
|
||||
#endif
|
||||
#ifdef INET6
|
||||
if (proto_reg[CARP_INET6] == 0) {
|
||||
(void)ip6proto_unregister(IPPROTO_CARP);
|
||||
pf_proto_unregister(PF_INET6, IPPROTO_CARP, SOCK_RAW);
|
||||
proto_reg[CARP_INET6] = -1;
|
||||
}
|
||||
@ -2335,6 +2337,7 @@ carp_mod_cleanup(void)
|
||||
static int
|
||||
carp_mod_load(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
if_detach_event_tag = EVENTHANDLER_REGISTER(ifnet_departure_event,
|
||||
carp_ifdetach, NULL, EVENTHANDLER_PRI_ANY);
|
||||
@ -2357,6 +2360,12 @@ carp_mod_load(void)
|
||||
carp_mod_cleanup();
|
||||
return (EINVAL);
|
||||
}
|
||||
err = ip6proto_register(IPPROTO_CARP);
|
||||
if (err) {
|
||||
printf("carp: error %d registering with INET6\n", err);
|
||||
carp_mod_cleanup();
|
||||
return (EINVAL);
|
||||
}
|
||||
#endif
|
||||
#ifdef INET
|
||||
carp_iamatch_p = carp_iamatch;
|
||||
@ -2367,6 +2376,12 @@ carp_mod_load(void)
|
||||
carp_mod_cleanup();
|
||||
return (EINVAL);
|
||||
}
|
||||
err = ipproto_register(IPPROTO_CARP);
|
||||
if (err) {
|
||||
printf("carp: error %d registering with INET\n", err);
|
||||
carp_mod_cleanup();
|
||||
return (EINVAL);
|
||||
}
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user