Changeset View
Changeset View
Standalone View
Standalone View
head/usr.sbin/rtsold/if.c
Show First 20 Lines • Show All 241 Lines • ▼ Show 20 Lines | #define NEXT_SA(ap) (ap) = (struct sockaddr *) \ | ||||
sizeof(u_long)) : sizeof(u_long))) | sizeof(u_long)) : sizeof(u_long))) | ||||
#define ROUNDUP8(a) (1 + (((a) - 1) | 7)) | #define ROUNDUP8(a) (1 + (((a) - 1) | 7)) | ||||
int | int | ||||
lladdropt_length(struct sockaddr_dl *sdl) | lladdropt_length(struct sockaddr_dl *sdl) | ||||
{ | { | ||||
switch (sdl->sdl_type) { | switch (sdl->sdl_type) { | ||||
case IFT_ETHER: | case IFT_ETHER: | ||||
case IFT_IEEE80211: | |||||
return (ROUNDUP8(ETHER_ADDR_LEN + 2)); | return (ROUNDUP8(ETHER_ADDR_LEN + 2)); | ||||
default: | default: | ||||
return (0); | return (0); | ||||
} | } | ||||
} | } | ||||
void | void | ||||
lladdropt_fill(struct sockaddr_dl *sdl, struct nd_opt_hdr *ndopt) | lladdropt_fill(struct sockaddr_dl *sdl, struct nd_opt_hdr *ndopt) | ||||
{ | { | ||||
char *addr; | char *addr; | ||||
ndopt->nd_opt_type = ND_OPT_SOURCE_LINKADDR; /* fixed */ | ndopt->nd_opt_type = ND_OPT_SOURCE_LINKADDR; /* fixed */ | ||||
switch (sdl->sdl_type) { | switch (sdl->sdl_type) { | ||||
case IFT_ETHER: | case IFT_ETHER: | ||||
case IFT_IEEE80211: | |||||
ndopt->nd_opt_len = (ROUNDUP8(ETHER_ADDR_LEN + 2)) >> 3; | ndopt->nd_opt_len = (ROUNDUP8(ETHER_ADDR_LEN + 2)) >> 3; | ||||
addr = (char *)(ndopt + 1); | addr = (char *)(ndopt + 1); | ||||
memcpy(addr, LLADDR(sdl), ETHER_ADDR_LEN); | memcpy(addr, LLADDR(sdl), ETHER_ADDR_LEN); | ||||
break; | break; | ||||
default: | default: | ||||
warnmsg(LOG_ERR, __func__, | warnmsg(LOG_ERR, __func__, | ||||
"unsupported link type(%d)", sdl->sdl_type); | "unsupported link type(%d)", sdl->sdl_type); | ||||
exit(1); | exit(1); | ||||
▲ Show 20 Lines • Show All 156 Lines • Show Last 20 Lines |