home *** CD-ROM | disk | FTP | other *** search
- /* -*-C-*-
- *
- * $Header: /ax/networking:include/net/route.h:networking 1.1 $
- * $Source: /ax/networking:include/net/route.h: $
- *
- * Copyright (c) 1988 Acorn Computers Ltd., Cambridge, England
- *
- * $Log: route.h,v $
- * Revision 1.1 95/01/11 10:14:50 kwelton
- * Initial revision
- *
- * Revision 1.3 88/06/17 20:25:28 beta
- * Acorn Unix initial beta version
- *
- */
- /* @(#)route.h 1.1 87/07/01 3.2/4.3NFSSRC */
- /*
- * Copyright (c) 1980, 1986 Regents of the University of California.
- * All rights reserved. The Berkeley software License Agreement
- * specifies the terms and conditions for redistribution.
- *
- * @(#)route.h 7.1 (Berkeley) 6/4/86
- */
-
- /*
- * Kernel resident routing tables.
- *
- * The routing tables are initialized when interface addresses
- * are set by making entries for all directly connected interfaces.
- */
-
- /*
- * A route consists of a destination address and a reference
- * to a routing entry. These are often held by protocols
- * in their control blocks, e.g. inpcb.
- */
- struct route {
- struct rtentry *ro_rt;
- struct sockaddr ro_dst;
- };
-
- /*
- * We distinguish between routes to hosts and routes to networks,
- * preferring the former if available. For each route we infer
- * the interface to use from the gateway address supplied when
- * the route was entered. Routes that forward packets through
- * gateways are marked so that the output routines know to address the
- * gateway rather than the ultimate destination.
- */
- struct rtentry {
- u_long rt_hash; /* to speed lookups */
- struct sockaddr rt_dst; /* key */
- struct sockaddr rt_gateway; /* value */
- short rt_flags; /* up/down?, host/net */
- short rt_refcnt; /* # held references */
- u_long rt_use; /* raw # packets forwarded */
- struct ifnet *rt_ifp; /* the answer: interface to use */
- };
-
- #define RTF_UP 0x1 /* route useable */
- #define RTF_GATEWAY 0x2 /* destination is a gateway */
- #define RTF_HOST 0x4 /* host entry (net otherwise) */
- #define RTF_DYNAMIC 0x10 /* created dynamically (by redirect) */
- #define RTF_MODIFIED 0x20 /* modified dynamically (by redirect) */
-
- /*
- * Routing statistics.
- */
- struct rtstat {
- short rts_badredirect; /* bogus redirect calls */
- short rts_dynamic; /* routes created by redirects */
- short rts_newgateway; /* routes modified by redirects */
- short rts_unreach; /* lookups which failed */
- short rts_wildcard; /* lookups satisfied by a wildcard */
- };
-
- #ifdef __riscos
- struct rttinfo {
- int r_rthashsize;
- char *r_rthost;
- char *r_rtnet;
- };
- #endif
-
- #ifdef KERNEL
- #define RTFREE(rt) \
- if ((rt)->rt_refcnt == 1) \
- rtfree(rt); \
- else \
- (rt)->rt_refcnt--;
-
- #ifdef GATEWAY
- #define RTHASHSIZ 64
- #else
- #define RTHASHSIZ 8
- #endif
- #if (RTHASHSIZ & (RTHASHSIZ - 1)) == 0
- #define RTHASHMOD(h) ((h) & (RTHASHSIZ - 1))
- #else
- #define RTHASHMOD(h) ((h) % RTHASHSIZ)
- #endif
- struct mbuf *rthost[RTHASHSIZ];
- struct mbuf *rtnet[RTHASHSIZ];
- struct rtstat rtstat;
- #endif
-
- /* EOF route.h */
-