changes to allow subnets to remain local, propogate net route
[unix-history] / usr / src / sbin / routed / af.c
index f04e8e5..67d273e 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 #ifndef lint
  */
 
 #ifndef lint
-static char sccsid[] = "@(#)af.c       5.1 (Berkeley) %G%";
+static char sccsid[] = "@(#)af.c       5.4 (Berkeley) %G%";
 #endif not lint
 
 #include "defs.h"
 #endif not lint
 
 #include "defs.h"
@@ -13,23 +13,26 @@ static char sccsid[] = "@(#)af.c    5.1 (Berkeley) %G%";
 /*
  * Address family support routines
  */
 /*
  * Address family support routines
  */
-int    null_hash(), null_netmatch(), null_output(),
-       null_portmatch(), null_portcheck(),
-       null_checkhost(), null_ishost(), null_canon();
 int    inet_hash(), inet_netmatch(), inet_output(),
        inet_portmatch(), inet_portcheck(),
 int    inet_hash(), inet_netmatch(), inet_output(),
        inet_portmatch(), inet_portcheck(),
-       inet_checkhost(), inet_ishost(), inet_canon();
-#define NIL \
-       { null_hash,            null_netmatch,          null_output, \
-         null_portmatch,       null_portcheck,         null_checkhost, \
-         null_ishost,          null_canon }
+       inet_checkhost(), inet_rtflags(), inet_sendsubnet(), inet_canon();
+char   *inet_format();
+
+#define NIL    { 0 }
 #define        INET \
        { inet_hash,            inet_netmatch,          inet_output, \
          inet_portmatch,       inet_portcheck,         inet_checkhost, \
 #define        INET \
        { inet_hash,            inet_netmatch,          inet_output, \
          inet_portmatch,       inet_portcheck,         inet_checkhost, \
-         inet_ishost,          inet_canon }
+         inet_rtflags,         inet_sendsubnet,        inet_canon, \
+         inet_format \
+       }
+
+struct afswitch afswitch[AF_MAX] = {
+       NIL,            /* 0- unused */
+       NIL,            /* 1- Unix domain, unused */
+       INET,           /* Internet */
+};
 
 
-struct afswitch afswitch[AF_MAX] =
-       { NIL, NIL, INET, INET, NIL, NIL, NIL, NIL, NIL, NIL, NIL };
+int af_max = sizeof(afswitch) / sizeof(afswitch[0]);
 
 struct sockaddr_in inet_default = { AF_INET, INADDR_ANY };
 
 
 struct sockaddr_in inet_default = { AF_INET, INADDR_ANY };
 
@@ -108,20 +111,12 @@ inet_checkhost(sin)
                return (0);
        if (i != 0 && (i & 0xff000000) == 0)
                return (0);
                return (0);
        if (i != 0 && (i & 0xff000000) == 0)
                return (0);
+       for (i = 0; i < sizeof(sin->sin_zero)/sizeof(sin->sin_zero[0]); i++)
+               if (sin->sin_zero[i])
+                       return (0);
        return (1);
 }
 
        return (1);
 }
 
-/*
- * Return 1 if the address is
- * for an Internet host, 0 for a network.
- */
-inet_ishost(sin)
-       struct sockaddr_in *sin;
-{
-
-       return (inet_lnaof(sin->sin_addr) != 0);
-}
-
 inet_canon(sin)
        struct sockaddr_in *sin;
 {
 inet_canon(sin)
        struct sockaddr_in *sin;
 {
@@ -129,69 +124,11 @@ inet_canon(sin)
        sin->sin_port = 0;
 }
 
        sin->sin_port = 0;
 }
 
-/*ARGSUSED*/
-null_hash(addr, hp)
-       struct sockaddr *addr;
-       struct afhash *hp;
-{
-
-       hp->afh_nethash = hp->afh_hosthash = 0;
-}
-
-/*ARGSUSED*/
-null_netmatch(a1, a2)
-       struct sockaddr *a1, *a2;
-{
-
-       return (0);
-}
-
-/*ARGSUSED*/
-null_output(s, f, a1, n)
-       int s, f;
-       struct sockaddr *a1;
-       int n;
-{
-
-       ;
-}
-
-/*ARGSUSED*/
-null_portmatch(a1)
-       struct sockaddr *a1;
-{
-
-       return (0);
-}
-
-/*ARGSUSED*/
-null_portcheck(a1)
-       struct sockaddr *a1;
-{
-
-       return (0);
-}
-
-/*ARGSUSED*/
-null_ishost(a1)
-       struct sockaddr *a1;
-{
-
-       return (0);
-}
-
-/*ARGSUSED*/
-null_checkhost(a1)
-       struct sockaddr *a1;
-{
-
-       return (0);
-}
-
-/*ARGSUSED*/
-null_canon(a1)
-       struct sockaddr *a1;
+char *
+inet_format(sin)
+       struct sockaddr_in *sin;
 {
 {
+       char *inet_ntoa();
 
 
-       ;
+       return (inet_ntoa(sin->sin_addr));
 }
 }