resync with kernel, add metric and IFF_LOOPBACK
[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 *
6 * @(#)table.h 5.1 (Berkeley) %G%
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 */
b7e4f8be
MK
59#define RTS_PASSIVE IFF_PASSIVE /* don't time out route */
60#define RTS_INTERFACE IFF_INTERFACE /* route is for network interface */
61#define RTS_REMOTE IFF_REMOTE /* route is for ``remote'' entity */
d03054c7
SL
62
63struct rthash nethash[ROUTEHASHSIZ];
64struct rthash hosthash[ROUTEHASHSIZ];
65struct rt_entry *rtlookup();
66struct rt_entry *rtfind();