Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/ndp/ndp.c
Show First 20 Lines • Show All 854 Lines • ▼ Show 20 Lines | default: | ||||
exit(1); | exit(1); | ||||
case RTM_ADD: | case RTM_ADD: | ||||
rtm->rtm_addrs |= RTA_GATEWAY; | rtm->rtm_addrs |= RTA_GATEWAY; | ||||
if (expire_time) { | if (expire_time) { | ||||
rtm->rtm_rmx.rmx_expire = expire_time; | rtm->rtm_rmx.rmx_expire = expire_time; | ||||
rtm->rtm_inits = RTV_EXPIRE; | rtm->rtm_inits = RTV_EXPIRE; | ||||
} | } | ||||
rtm->rtm_flags |= (RTF_HOST | RTF_STATIC | RTF_LLDATA); | rtm->rtm_flags |= (RTF_HOST | RTF_STATIC | RTF_LLDATA); | ||||
#if 0 /* we don't support ipv6addr/128 type proxying */ | |||||
if (rtm->rtm_flags & RTF_ANNOUNCE) { | |||||
rtm->rtm_flags &= ~RTF_HOST; | |||||
rtm->rtm_addrs |= RTA_NETMASK; | |||||
} | |||||
#endif | |||||
/* FALLTHROUGH */ | /* FALLTHROUGH */ | ||||
case RTM_GET: | case RTM_GET: | ||||
rtm->rtm_addrs |= RTA_DST; | rtm->rtm_addrs |= RTA_DST; | ||||
} | } | ||||
NEXTADDR(RTA_DST, sin_m); | NEXTADDR(RTA_DST, sin_m); | ||||
NEXTADDR(RTA_GATEWAY, sdl_m); | NEXTADDR(RTA_GATEWAY, sdl_m); | ||||
#if 0 /* we don't support ipv6addr/128 type proxying */ | |||||
memset(&so_mask.sin6_addr, 0xff, sizeof(so_mask.sin6_addr)); | |||||
NEXTADDR(RTA_NETMASK, so_mask); | |||||
#endif | |||||
rtm->rtm_msglen = cp - (char *)&m_rtmsg; | rtm->rtm_msglen = cp - (char *)&m_rtmsg; | ||||
doit: | doit: | ||||
l = rtm->rtm_msglen; | l = rtm->rtm_msglen; | ||||
rtm->rtm_seq = ++seq; | rtm->rtm_seq = ++seq; | ||||
rtm->rtm_type = cmd; | rtm->rtm_type = cmd; | ||||
if ((rlen = write(s, (char *)&m_rtmsg, l)) < 0) { | if ((rlen = write(s, (char *)&m_rtmsg, l)) < 0) { | ||||
if (errno != ESRCH || cmd != RTM_DELETE) { | if (errno != ESRCH || cmd != RTM_DELETE) { | ||||
▲ Show 20 Lines • Show All 499 Lines • Show Last 20 Lines |