Changeset View
Changeset View
Standalone View
Standalone View
sys/ofed/drivers/infiniband/core/ib_addr.c
Show First 20 Lines • Show All 390 Lines • ▼ Show 20 Lines | if (dst_tmp.sin_addr.s_addr == INADDR_BROADCAST) { | ||||
else if (is_gw) | else if (is_gw) | ||||
addr->network = RDMA_NETWORK_IPV4; | addr->network = RDMA_NETWORK_IPV4; | ||||
} else if (ifp->if_flags & IFF_LOOPBACK) { | } else if (ifp->if_flags & IFF_LOOPBACK) { | ||||
memset(edst, 0, MAX_ADDR_LEN); | memset(edst, 0, MAX_ADDR_LEN); | ||||
error = 0; | error = 0; | ||||
} else { | } else { | ||||
bool is_gw = (nh->nh_flags & NHF_GATEWAY) != 0; | bool is_gw = (nh->nh_flags & NHF_GATEWAY) != 0; | ||||
memset(edst, 0, MAX_ADDR_LEN); | memset(edst, 0, MAX_ADDR_LEN); | ||||
#ifdef INET6 | |||||
if (is_gw && nh->gw_sa.sa_family == AF_INET6) | |||||
error = nd6_resolve(ifp, LLE_SF(AF_INET, 1), NULL, &nh->gw_sa, | |||||
edst, NULL, NULL); | |||||
else | |||||
#endif | |||||
error = arpresolve(ifp, is_gw, NULL, is_gw ? | error = arpresolve(ifp, is_gw, NULL, is_gw ? | ||||
&nh->gw_sa : (const struct sockaddr *)&dst_tmp, | &nh->gw_sa : (const struct sockaddr *)&dst_tmp, | ||||
edst, NULL, NULL); | edst, NULL, NULL); | ||||
if (error != 0) | if (error != 0) | ||||
goto error_put_ifp; | goto error_put_ifp; | ||||
else if (is_gw) | else if (is_gw) | ||||
addr->network = RDMA_NETWORK_IPV4; | addr->network = RDMA_NETWORK_IPV4; | ||||
} | } | ||||
/* | /* | ||||
* Step 4 - update source address, if any | * Step 4 - update source address, if any | ||||
▲ Show 20 Lines • Show All 169 Lines • ▼ Show 20 Lines | if (IN6_IS_ADDR_MULTICAST(&dst_tmp.sin6_addr)) { | ||||
else if (is_gw) | else if (is_gw) | ||||
addr->network = RDMA_NETWORK_IPV6; | addr->network = RDMA_NETWORK_IPV6; | ||||
} else if (nh->nh_ifp->if_flags & IFF_LOOPBACK) { | } else if (nh->nh_ifp->if_flags & IFF_LOOPBACK) { | ||||
memset(edst, 0, MAX_ADDR_LEN); | memset(edst, 0, MAX_ADDR_LEN); | ||||
error = 0; | error = 0; | ||||
} else { | } else { | ||||
bool is_gw = (nh->nh_flags & NHF_GATEWAY) != 0; | bool is_gw = (nh->nh_flags & NHF_GATEWAY) != 0; | ||||
memset(edst, 0, MAX_ADDR_LEN); | memset(edst, 0, MAX_ADDR_LEN); | ||||
error = nd6_resolve(ifp, is_gw, NULL, is_gw ? | error = nd6_resolve(ifp, LLE_SF(AF_INET6, is_gw), NULL, is_gw ? | ||||
&nh->gw_sa : (const struct sockaddr *)&dst_tmp, | &nh->gw_sa : (const struct sockaddr *)&dst_tmp, | ||||
edst, NULL, NULL); | edst, NULL, NULL); | ||||
if (error != 0) | if (error != 0) | ||||
goto error_put_ifp; | goto error_put_ifp; | ||||
else if (is_gw) | else if (is_gw) | ||||
addr->network = RDMA_NETWORK_IPV6; | addr->network = RDMA_NETWORK_IPV6; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 312 Lines • Show Last 20 Lines |