Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet6/in6_mcast.c
Show First 20 Lines • Show All 2,375 Lines • ▼ Show 20 Lines | if (error) { | ||||
__func__); | __func__); | ||||
goto out_in6p_locked; | goto out_in6p_locked; | ||||
} | } | ||||
} | } | ||||
/* | /* | ||||
* Begin state merge transaction at MLD layer. | * Begin state merge transaction at MLD layer. | ||||
*/ | */ | ||||
in_pcbref(inp); | |||||
INP_WUNLOCK(inp); | |||||
IN6_MULTI_LOCK(); | IN6_MULTI_LOCK(); | ||||
if (is_final) { | if (is_final) { | ||||
/* | /* | ||||
* Give up the multicast address record to which | * Give up the multicast address record to which | ||||
* the membership points. | * the membership points. | ||||
*/ | */ | ||||
(void)in6_leavegroup_locked(inm, imf); | (void)in6_leavegroup_locked(inm, imf); | ||||
Show All 10 Lines | else { | ||||
if (error) | if (error) | ||||
CTR1(KTR_MLD, "%s: failed mld downcall", | CTR1(KTR_MLD, "%s: failed mld downcall", | ||||
__func__); | __func__); | ||||
} | } | ||||
IN6_MULTI_LIST_UNLOCK(); | IN6_MULTI_LIST_UNLOCK(); | ||||
} | } | ||||
IN6_MULTI_UNLOCK(); | IN6_MULTI_UNLOCK(); | ||||
INP_WLOCK(inp); | |||||
if (in_pcbrele_wlocked(inp)) | |||||
return (ENXIO); | |||||
if (error) | if (error) | ||||
im6f_rollback(imf); | im6f_rollback(imf); | ||||
else | else | ||||
im6f_commit(imf); | im6f_commit(imf); | ||||
im6f_reap(imf); | im6f_reap(imf); | ||||
▲ Show 20 Lines • Show All 525 Lines • Show Last 20 Lines |