int
socket_rdomain(int domain, int type, int protocol, int rdomain)
{
-#ifdef USE_ROUTINGDOMAIN
int sock, ipproto = IPPROTO_IP;
if ((sock = socket(domain, type, protocol)) == -1)
if (rdomain == -1)
return (sock);
-
+
switch (domain) {
+#ifdef IPPROTO_IPV6
case AF_INET6:
ipproto = IPPROTO_IPV6;
/* FALLTHROUGH */
+#endif
case AF_INET:
+#ifdef USE_ROUTINGDOMAIN
debug2("socket %d af %d setting rdomain %d",
sock, domain, rdomain);
if (setsockopt(sock, ipproto, SO_RDOMAIN, &rdomain,
close(sock);
return (-1);
}
+#endif
break;
default:
debug("socket %d af %d does not support rdomain %d",
}
return (sock);
-#endif
}
/* Characters considered whitespace in strsep calls. */