Lines 1485-1491
Link Here
|
1485 |
info.rti_flags = ifa->ifa_flags | RTF_HOST | RTF_STATIC; |
1485 |
info.rti_flags = ifa->ifa_flags | RTF_HOST | RTF_STATIC; |
1486 |
info.rti_info[RTAX_DST] = ia; |
1486 |
info.rti_info[RTAX_DST] = ia; |
1487 |
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&null_sdl; |
1487 |
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&null_sdl; |
1488 |
error = rtrequest1_fib(RTM_ADD, &info, &rt, 0); |
1488 |
error = rtrequest1_fib(RTM_ADD, &info, &rt, ifa->ifa_ifp->if_fib); |
1489 |
|
1489 |
|
1490 |
if (error == 0 && rt != NULL) { |
1490 |
if (error == 0 && rt != NULL) { |
1491 |
RT_LOCK(rt); |
1491 |
RT_LOCK(rt); |
Lines 1517-1523
Link Here
|
1517 |
info.rti_flags = ifa->ifa_flags | RTF_HOST | RTF_STATIC; |
1517 |
info.rti_flags = ifa->ifa_flags | RTF_HOST | RTF_STATIC; |
1518 |
info.rti_info[RTAX_DST] = ia; |
1518 |
info.rti_info[RTAX_DST] = ia; |
1519 |
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&null_sdl; |
1519 |
info.rti_info[RTAX_GATEWAY] = (struct sockaddr *)&null_sdl; |
1520 |
error = rtrequest1_fib(RTM_DELETE, &info, NULL, 0); |
1520 |
error = rtrequest1_fib(RTM_DELETE, &info, NULL, ifa->ifa_ifp->if_fib); |
1521 |
|
1521 |
|
1522 |
if (error != 0) |
1522 |
if (error != 0) |
1523 |
log(LOG_DEBUG, "%s: deletion failed: %u\n", __func__, error); |
1523 |
log(LOG_DEBUG, "%s: deletion failed: %u\n", __func__, error); |
Lines 1526-1536
Link Here
|
1526 |
} |
1526 |
} |
1527 |
|
1527 |
|
1528 |
int |
1528 |
int |
1529 |
ifa_switch_loopback_route(struct ifaddr *ifa, struct sockaddr *sa) |
1529 |
ifa_switch_loopback_route(struct ifaddr *ifa, struct sockaddr *sa, int fib) |
1530 |
{ |
1530 |
{ |
1531 |
struct rtentry *rt; |
1531 |
struct rtentry *rt; |
1532 |
|
1532 |
|
1533 |
rt = rtalloc1_fib(sa, 0, 0, 0); |
1533 |
rt = rtalloc1_fib(sa, 0, 0, fib); |
1534 |
if (rt == NULL) { |
1534 |
if (rt == NULL) { |
1535 |
log(LOG_DEBUG, "%s: fail", __func__); |
1535 |
log(LOG_DEBUG, "%s: fail", __func__); |
1536 |
return (EHOSTUNREACH); |
1536 |
return (EHOSTUNREACH); |