minor fixes
[unix-history] / usr / src / sbin / routed / table.h
CommitLineData
5ff67f98
DF
1/*
2 * Copyright (c) 1983 Regents of the University of California.
3 * All rights reserved. The Berkeley software License Agreement
4 * specifies the terms and conditions for redistribution.
5 *
88709531 6 * @(#)table.h 5.3 (Berkeley) %G%
5ff67f98 7 */
d03054c7
SL
8
9/*
10 * Routing table management daemon.
11 */
12
13/*
14 * Routing table structure; differs a bit from kernel tables.
15 *
16 * Note: the union below must agree in the first 4 members
17 * so the ioctl's will work.
18 */
19struct rthash {
20 struct rt_entry *rt_forw;
21 struct rt_entry *rt_back;
22};
23
24struct rt_entry {
25 struct rt_entry *rt_forw;
26 struct rt_entry *rt_back;
27 union {
28 struct rtentry rtu_rt;
29 struct {
30 u_long rtu_hash;
31 struct sockaddr rtu_dst;
32 struct sockaddr rtu_router;
33 short rtu_flags;
34 short rtu_state;
35 int rtu_timer;
36 int rtu_metric;
88709531 37 int rtu_ifmetric;
d03054c7
SL
38 struct interface *rtu_ifp;
39 } rtu_entry;
40 } rt_rtu;
41};
42
43#define rt_rt rt_rtu.rtu_rt /* pass to ioctl */
44#define rt_hash rt_rtu.rtu_entry.rtu_hash /* for net or host */
45#define rt_dst rt_rtu.rtu_entry.rtu_dst /* match value */
46#define rt_router rt_rtu.rtu_entry.rtu_router /* who to forward to */
47#define rt_flags rt_rtu.rtu_entry.rtu_flags /* kernel flags */
48#define rt_timer rt_rtu.rtu_entry.rtu_timer /* for invalidation */
49#define rt_state rt_rtu.rtu_entry.rtu_state /* see below */
50#define rt_metric rt_rtu.rtu_entry.rtu_metric /* cost of route */
88709531 51#define rt_ifmetric rt_rtu.rtu_entry.rtu_ifmetric /* cost of route if */
d03054c7
SL
52#define rt_ifp rt_rtu.rtu_entry.rtu_ifp /* interface to take */
53
49139b80
MK
54#define ROUTEHASHSIZ 32 /* must be a power of 2 */
55#define ROUTEHASHMASK (ROUTEHASHSIZ - 1)
d03054c7
SL
56
57/*
58 * "State" of routing table entry.
59 */
60#define RTS_CHANGED 0x1 /* route has been altered recently */
4fad5a6e
MK
61#define RTS_EXTERNAL 0x2 /* extern info, not installed or sent */
62#define RTS_INTERNAL 0x4 /* internal route, not installed */
b7e4f8be
MK
63#define RTS_PASSIVE IFF_PASSIVE /* don't time out route */
64#define RTS_INTERFACE IFF_INTERFACE /* route is for network interface */
65#define RTS_REMOTE IFF_REMOTE /* route is for ``remote'' entity */
4fad5a6e
MK
66#define RTS_SUBNET IFF_SUBNET /* route is for network subnet */
67
68/*
69 * Flags are same as kernel, with this addition for af_rtflags:
70 */
71#define RTF_SUBNET 0x8000 /* pseudo: route to subnet */
d03054c7
SL
72
73struct rthash nethash[ROUTEHASHSIZ];
74struct rthash hosthash[ROUTEHASHSIZ];
75struct rt_entry *rtlookup();
76struct rt_entry *rtfind();