BSD 4_3_Reno release
[unix-history] / usr / src / sbin / routed / defs.h
index a4915a4..1145801 100644 (file)
@@ -1,4 +1,23 @@
-/*     defs.h  4.3     82/05/26        */
+/*
+ * Copyright (c) 1983, 1988 Regents of the University of California.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted
+ * provided that: (1) source distributions retain this entire copyright
+ * notice and comment, and (2) distributions including binaries display
+ * the following acknowledgement:  ``This product includes software
+ * developed by the University of California, Berkeley and its contributors''
+ * in the documentation or other materials provided with the distribution
+ * and in all advertising materials mentioning features or use of this
+ * software. Neither the name of the University nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ *     @(#)defs.h      5.9 (Berkeley) 6/1/90
+ */
 
 /*
  * Internal data structure definitions for
 
 /*
  * Internal data structure definitions for
  * protocol specs with mods relevant to more
  * general addressing scheme.
  */
  * protocol specs with mods relevant to more
  * general addressing scheme.
  */
+#include <sys/param.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+
 #include <net/route.h>
 #include <net/route.h>
+#include <netinet/in.h>
+#include <protocols/routed.h>
+
+#include <stdio.h>
+#include <netdb.h>
+
+#include "trace.h"
+#include "interface.h"
+#include "table.h"
+#include "af.h"
 
 /*
 
 /*
- * Routing table structure; differs a bit from kernel tables.
- *
- * Note: the union below must agree in the first 4 members
- * so the ioctl's will work.
+ * When we find any interfaces marked down we rescan the
+ * kernel every CHECK_INTERVAL seconds to see if they've
+ * come up.
  */
  */
-struct rthash {
-       struct  rt_entry *rt_forw;
-       struct  rt_entry *rt_back;
-};
+#define        CHECK_INTERVAL  (1*60)
 
 
-struct rt_entry {
-       struct  rt_entry *rt_forw;
-       struct  rt_entry *rt_back;
-       union {
-               struct  rtentry rtu_rt;
-               struct {
-                       u_long  rtu_hash;
-                       struct  sockaddr rtu_dst;
-                       struct  sockaddr rtu_gateway;
-                       short   rtu_flags;
-                       short   rtu_retry;
-                       short   rtu_timer;
-                       short   rtu_state;
-                       int     rtu_metric;
-                       struct  ifnet *rtu_ifp;
-               } rtu_entry;
-       } rt_rtu;
-};
+#define equal(a1, a2) \
+       (bcmp((caddr_t)(a1), (caddr_t)(a2), sizeof (struct sockaddr)) == 0)
 
 
-#define        rt_rt           rt_rtu.rtu_rt                   /* pass to ioctl */
-#define        rt_hash         rt_rtu.rtu_entry.rtu_hash       /* for net or host */
-#define        rt_dst          rt_rtu.rtu_entry.rtu_dst        /* match value */
-#define        rt_gateway      rt_rtu.rtu_entry.rtu_gateway    /* who to forward to */
-#define        rt_flags        rt_rtu.rtu_entry.rtu_flags      /* kernel flags */
-#define        rt_retry        rt_rtu.rtu_entry.rtu_retry      /* retries of ioctl */
-#define        rt_timer        rt_rtu.rtu_entry.rtu_timer      /* for invalidation */
-#define        rt_state        rt_rtu.rtu_entry.rtu_state      /* see below */
-#define        rt_metric       rt_rtu.rtu_entry.rtu_metric     /* cost of route */
-#define        rt_ifp          rt_rtu.rtu_entry.rtu_ifp        /* interface to take */
+struct sockaddr_in addr;       /* address of daemon's socket */
 
 
-#define        ROUTEHASHSIZ    19
+int    s;                      /* source and sink of all data */
+int    kmem;
+int    supplier;               /* process should supply updates */
+int    install;                /* if 1 call kernel */
+int    lookforinterfaces;      /* if 1 probe kernel for new up interfaces */
+int    performnlist;           /* if 1 check if /vmunix has changed */
+int    externalinterfaces;     /* # of remote and local interfaces */
+struct timeval now;            /* current idea of time */
+struct timeval lastbcast;      /* last time all/changes broadcast */
+struct timeval lastfullupdate; /* last time full table broadcast */
+struct timeval nextbcast;      /* time to wait before changes broadcast */
+int    needupdate;             /* true if we need update at nextbcast */
 
 
-/*
- * "State" of routing table entry.
- */
-#define        RTS_DELRT       0x1             /* delete pending */
-#define        RTS_CHGRT       0x2             /* change command pending */
-#define        RTS_ADDRT       0x4             /* add command pending */
-#define        RTS_SILENT      0x8             /* don't send to router */
+char   packet[MAXPACKETSIZE+1];
+struct rip *msg;
 
 
-struct rthash nethash[ROUTEHASHSIZ], hosthash[ROUTEHASHSIZ];
-struct rt_entry *rtlookup();
+char   **argv0;
+struct servent *sp;
 
 
-/*
- * Per address family routines.
- */
-struct afswitch {
-       int     (*af_hash)();           /* returns keys based on address */
-       int     (*af_netmatch)();       /* verifies net # matching */
-       int     (*af_output)();         /* interprets address for sending */
-       int     (*af_portmatch)();      /* interprets address on receipt */
-       int     (*af_checkhost)();      /* tells if address for host or net */
-       int     (*af_canon)();          /* purges extraneous part of address */
-};
-
-/*
- * Structure returned by af_hash routines.
- */
-struct afhash {
-       u_int   afh_hosthash;           /* host based hash */
-       u_int   afh_nethash;            /* network based hash */
-};
+extern int errno;
 
 
-struct afswitch afswitch[AF_MAX];      /* table proper */
+struct in_addr inet_makeaddr();
+int    inet_addr();
+char   *malloc();
+char   *ctime();
+int    exit();
+int    sendmsg();
+int    supply();
+int    timer();
+int    cleanup();