-static int
-inet_aifaddr(struct socket * so, char * name, const struct in_addr * addr,
- const struct in_addr * mask,
- const struct in_addr * broadcast)
-{
- struct sockaddr blank_sin;
- struct ifaliasreq ifra;
-
- bzero(&blank_sin, sizeof(blank_sin));
- blank_sin.sa_len = sizeof(blank_sin);
- blank_sin.sa_family = AF_INET;
-
- bzero(&ifra, sizeof(ifra));
- strncpy(ifra.ifra_name, name, sizeof(ifra.ifra_name));
- if (addr) {
- ifra.ifra_addr = blank_sin;
- ((struct sockaddr_in *)&ifra.ifra_addr)->sin_addr = *addr;
- }
- if (mask) {
- ifra.ifra_mask = blank_sin;
- ((struct sockaddr_in *)&ifra.ifra_mask)->sin_addr = *mask;
- }
- if (broadcast) {
- ifra.ifra_broadaddr = blank_sin;
- ((struct sockaddr_in *)&ifra.ifra_broadaddr)->sin_addr = *broadcast;
- }
- return (ifioctl(so, SIOCAIFADDR, (caddr_t)&ifra, current_proc()));
-}
-