- iso_again:
- if (rt && rt->rt_gateway && (rt->rt_flags & RTF_UP)) {
- if (rt->rt_flags & RTF_GATEWAY) {
- if (rt->rt_llinfo) {
- rt = (struct rtentry *)rt->rt_llinfo;
- goto iso_again;
- }
- } else {
- register struct sockaddr_dl *sdl =
- (struct sockaddr_dl *)rt->rt_gateway;
- if (sdl && sdl->sdl_family == AF_LINK
- && sdl->sdl_alen > 0) {
- bcopy(LLADDR(sdl), (char *)edst,
- sizeof(edst));
- goto iso_resolved;
- }
- }
- }
- if ((error = iso_snparesolve(ifp, (struct sockaddr_iso *)dst,
- (char *)edst, &snpalen)) > 0)
+ if (rt && (sdl = (struct sockaddr_dl *)rt->rt_gateway) &&
+ sdl->sdl_family == AF_LINK && sdl->sdl_alen > 0) {
+ bcopy(LLADDR(sdl), (caddr_t)edst, sizeof(edst));
+ } else if (error =
+ iso_snparesolve(ifp, (struct sockaddr_iso *)dst,
+ (char *)edst, &snpalen))