Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet6/icmp6.c
Show First 20 Lines • Show All 2,381 Lines • ▼ Show 20 Lines | if (is_router) { | ||||
sgw.sin6_len = sizeof(struct sockaddr_in6); | sgw.sin6_len = sizeof(struct sockaddr_in6); | ||||
bcopy(&redtgt6, &sgw.sin6_addr, | bcopy(&redtgt6, &sgw.sin6_addr, | ||||
sizeof(struct in6_addr)); | sizeof(struct in6_addr)); | ||||
gw = (struct sockaddr *)&sgw; | gw = (struct sockaddr *)&sgw; | ||||
rt_flags |= RTF_GATEWAY; | rt_flags |= RTF_GATEWAY; | ||||
} else | } else | ||||
gw = ifp->if_addr->ifa_addr; | gw = ifp->if_addr->ifa_addr; | ||||
for (fibnum = 0; fibnum < rt_numfibs; fibnum++) | for (fibnum = 0; fibnum < rt_numfibs; fibnum++) | ||||
in6_rtredirect((struct sockaddr *)&sdst, gw, | rtredirect_fib((struct sockaddr *)&sdst, gw, | ||||
(struct sockaddr *)NULL, rt_flags, | rt_flags, (struct sockaddr *)&ssrc, | ||||
(struct sockaddr *)&ssrc, fibnum); | V_icmp6_redirtimeout, fibnum); | ||||
} | } | ||||
/* finally update cached route in each socket via pfctlinput */ | /* finally update cached route in each socket via pfctlinput */ | ||||
{ | { | ||||
struct sockaddr_in6 sdst; | struct sockaddr_in6 sdst; | ||||
bzero(&sdst, sizeof(sdst)); | bzero(&sdst, sizeof(sdst)); | ||||
sdst.sin6_family = AF_INET6; | sdst.sin6_family = AF_INET6; | ||||
sdst.sin6_len = sizeof(struct sockaddr_in6); | sdst.sin6_len = sizeof(struct sockaddr_in6); | ||||
▲ Show 20 Lines • Show All 403 Lines • Show Last 20 Lines |