Lines Matching refs:ro
214 const struct sockaddr_in *gw, struct route *ro, bool stamp_tag) in ip_output_send() argument
275 error = (*ifp->if_output)(ifp, m, (const struct sockaddr *)gw, ro); in ip_output_send()
295 rt_update_ro_flags(struct route *ro) in rt_update_ro_flags() argument
297 int nh_flags = ro->ro_nh->nh_flags; in rt_update_ro_flags()
299 ro->ro_flags &= ~ (RT_REJECT|RT_BLACKHOLE|RT_HAS_GW); in rt_update_ro_flags()
301 ro->ro_flags |= (nh_flags & NHF_REJECT) ? RT_REJECT : 0; in rt_update_ro_flags()
302 ro->ro_flags |= (nh_flags & NHF_BLACKHOLE) ? RT_BLACKHOLE : 0; in rt_update_ro_flags()
303 ro->ro_flags |= (nh_flags & NHF_GATEWAY) ? RT_HAS_GW : 0; in rt_update_ro_flags()
319 ip_output(struct mbuf *m, struct mbuf *opt, struct route *ro, int flags, in ip_output() argument
387 if (ro != NULL) in ip_output()
388 dst = (struct sockaddr_in *)&ro->ro_dst; in ip_output()
391 if (ro == NULL || ro->ro_nh == NULL) { in ip_output()
403 if (inp != NULL && ro != NULL && ro->ro_nh != NULL) in ip_output()
404 NH_VALIDATE(ro, &inp->inp_rt_cookie, fibnum); in ip_output()
413 if (ro != NULL && ro->ro_nh != NULL && in ip_output()
414 ((!NH_IS_VALID(ro->ro_nh)) || dst->sin_family != AF_INET || in ip_output()
416 RO_INVALIDATE_CACHE(ro); in ip_output()
470 } else if (ro != NULL) { in ip_output()
471 if (ro->ro_nh == NULL) { in ip_output()
479 ro->ro_nh = fib4_lookup(fibnum, dst->sin_addr, 0, in ip_output()
482 if (ro->ro_nh == NULL || (!NH_IS_VALID(ro->ro_nh))) { in ip_output()
496 ia = ifatoia(ro->ro_nh->nh_ifa); in ip_output()
497 ifp = ro->ro_nh->nh_ifp; in ip_output()
498 counter_u64_add(ro->ro_nh->nh_pksent, 1); in ip_output()
499 rt_update_ro_flags(ro); in ip_output()
500 if (ro->ro_nh->nh_flags & NHF_GATEWAY) in ip_output()
501 gw = &ro->ro_nh->gw4_sa; in ip_output()
502 if (ro->ro_nh->nh_flags & NHF_HOST) in ip_output()
503 isbroadcast = (ro->ro_nh->nh_flags & NHF_BROADCAST); in ip_output()
508 if (ro->ro_nh->nh_flags & NHF_HOST) in ip_output()
509 mtu = ro->ro_nh->nh_mtu; in ip_output()
553 __func__, mtu, ro, in ip_output()
554 (ro != NULL && ro->ro_nh != NULL) ? ro->ro_nh->nh_flags : 0, ifp)); in ip_output()
716 if (ro != NULL) { in ip_output()
717 RO_NHFREE(ro); in ip_output()
718 ro->ro_prepend = NULL; in ip_output()
812 error = ip_output_send(inp, ifp, m, gw, ro, in ip_output()
850 error = ip_output_send(inp, ifp, m, gw, ro, true); in ip_output()