changes to allow subnets to remain local, propogate net route
[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 *
4fad5a6e 6 * @(#)table.h 5.2 (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;
37 struct interface *rtu_ifp;
38 } rtu_entry;
39 } rt_rtu;
40};
41
42#define rt_rt rt_rtu.rtu_rt /* pass to ioctl */
43#define rt_hash rt_rtu.rtu_entry.rtu_hash /* for net or host */
44#define rt_dst rt_rtu.rtu_entry.rtu_dst /* match value */
45#define rt_router rt_rtu.rtu_entry.rtu_router /* who to forward to */
46#define rt_flags rt_rtu.rtu_entry.rtu_flags /* kernel flags */
47#define rt_timer rt_rtu.rtu_entry.rtu_timer /* for invalidation */
48#define rt_state rt_rtu.rtu_entry.rtu_state /* see below */
49#define rt_metric rt_rtu.rtu_entry.rtu_metric /* cost of route */
50#define rt_ifp rt_rtu.rtu_entry.rtu_ifp /* interface to take */
51
49139b80
MK
52#define ROUTEHASHSIZ 32 /* must be a power of 2 */
53#define ROUTEHASHMASK (ROUTEHASHSIZ - 1)
d03054c7
SL
54
55/*
56 * "State" of routing table entry.
57 */
58#define RTS_CHANGED 0x1 /* route has been altered recently */
4fad5a6e
MK
59#define RTS_EXTERNAL 0x2 /* extern info, not installed or sent */
60#define RTS_INTERNAL 0x4 /* internal route, not installed */
b7e4f8be
MK
61#define RTS_PASSIVE IFF_PASSIVE /* don't time out route */
62#define RTS_INTERFACE IFF_INTERFACE /* route is for network interface */
63#define RTS_REMOTE IFF_REMOTE /* route is for ``remote'' entity */
4fad5a6e
MK
64#define RTS_SUBNET IFF_SUBNET /* route is for network subnet */
65
66/*
67 * Flags are same as kernel, with this addition for af_rtflags:
68 */
69#define RTF_SUBNET 0x8000 /* pseudo: route to subnet */
d03054c7
SL
70
71struct rthash nethash[ROUTEHASHSIZ];
72struct rthash hosthash[ROUTEHASHSIZ];
73struct rt_entry *rtlookup();
74struct rt_entry *rtfind();