Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/ip_output.c
Show First 20 Lines • Show All 387 Lines • ▼ Show 20 Lines | #if defined(IPSEC) || defined(IPSEC_SUPPORT) | ||||
mtu = 0; /* Silence GCC warning. */ | mtu = 0; /* Silence GCC warning. */ | ||||
goto sendit; | goto sendit; | ||||
#endif | #endif | ||||
IPSTAT_INC(ips_noroute); | IPSTAT_INC(ips_noroute); | ||||
error = EHOSTUNREACH; | error = EHOSTUNREACH; | ||||
goto bad; | goto bad; | ||||
} | } | ||||
ia = ifatoia(rte->rt_ifa); | ia = ifatoia(rte->rt_ifa); | ||||
if (ia == NULL) { | |||||
/* race with rtrequest1_fib_change */ | |||||
goto again; | |||||
yuripv: Sorry for chiming in late. The only "goto again" below does some cleanup, is it not needed… | |||||
} | |||||
ifp = rte->rt_ifp; | ifp = rte->rt_ifp; | ||||
counter_u64_add(rte->rt_pksent, 1); | counter_u64_add(rte->rt_pksent, 1); | ||||
rt_update_ro_flags(ro); | rt_update_ro_flags(ro); | ||||
if (rte->rt_flags & RTF_GATEWAY) | if (rte->rt_flags & RTF_GATEWAY) | ||||
gw = (struct sockaddr_in *)rte->rt_gateway; | gw = (struct sockaddr_in *)rte->rt_gateway; | ||||
if (rte->rt_flags & RTF_HOST) | if (rte->rt_flags & RTF_HOST) | ||||
isbroadcast = (rte->rt_flags & RTF_BROADCAST); | isbroadcast = (rte->rt_flags & RTF_BROADCAST); | ||||
else if (ifp->if_flags & IFF_BROADCAST) | else if (ifp->if_flags & IFF_BROADCAST) | ||||
▲ Show 20 Lines • Show All 1,103 Lines • Show Last 20 Lines |
Sorry for chiming in late. The only "goto again" below does some cleanup, is it not needed here?