- return (rtrequest(cmd, (struct rtentry *)data));
-}
-/*
- * This routine will go away soon.
- * Tries to guess which netmask is appropriate for a given net.
- */
-static struct sockaddr_in rtgmask = { 8, 0 };
-
-char *
-rtgetmask(sa, ifa)
-register struct sockaddr *sa;
-register struct ifaddr *ifa;
-{
- u_long i, net, mask, subnet;
-
- switch (sa->sa_family) {
-#ifdef INET
- register struct in_ifaddr *ia;
-
- case AF_INET:
-
- i = ntohl(((struct sockaddr_in *)sa)->sin_addr.s_addr);
- if (i == 0) {
- rtgmask.sin_addr.s_addr = 0;
- return ((char *)&rtgmask);
- } else if (IN_CLASSA(i)) {
- net = i & IN_CLASSA_NET;
- mask = IN_CLASSA_NET;
- } else if (IN_CLASSB(i)) {
- net = i & IN_CLASSB_NET;
- mask = IN_CLASSB_NET;
- } else if (IN_CLASSC(i)) {
- net = i & IN_CLASSC_NET;
- mask = IN_CLASSC_NET;
- } else {
- net = i;
- mask = 0xffffffff;
- }
-
- /*
- * Check whether network is a subnet;
- * if so, return subnet number.
- */
- for (ia = in_ifaddr; ia; ia = ia->ia_next)
- if (net == ia->ia_net) {
- ifa = &ia->ia_ifa;
- break;
- }
- if (ia == 0) {
- rtgmask.sin_addr.s_addr = ntohl(mask);
- return ((char *)&rtgmask);
- }
-#endif
- }
- return ((char *)ifa->ifa_netmask);
-}
-
-/*
- * Carry out a request to change the routing table. Called by
- * interfaces at boot time to make their ``local routes'' known,
- * for ioctl's, and as the result of routing redirects.
- */
-rtrequest(req, entry)
- int req;
- register struct rtentry *entry;
-{
- register struct rtentry *rt;
- int s, error = 0, found;
- u_char af;
- struct ifaddr *ifa;
- struct ifaddr *ifa_ifwithdstaddr();
- register struct nrtentry *nrt;
- register struct radix_node *rn;
- register struct radix_node_head *rnh;
- struct radix_node *head;
- char *netmask;
-
-#ifdef COMPAT_43