provide correct exit values
[unix-history] / usr / src / sbin / routed / table.h
CommitLineData
5ff67f98
DF
1/*
2 * Copyright (c) 1983 Regents of the University of California.
0eb85d71 3 * All rights reserved.
5ff67f98 4 *
0eb85d71 5 * Redistribution and use in source and binary forms are permitted
b8c620d6
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
0eb85d71 16 *
b8c620d6 17 * @(#)table.h 5.6 (Berkeley) %G%
5ff67f98 18 */
d03054c7
SL
19
20/*
21 * Routing table management daemon.
22 */
23
24/*
25 * Routing table structure; differs a bit from kernel tables.
26 *
27 * Note: the union below must agree in the first 4 members
28 * so the ioctl's will work.
29 */
30struct rthash {
31 struct rt_entry *rt_forw;
32 struct rt_entry *rt_back;
33};
34
35struct rt_entry {
36 struct rt_entry *rt_forw;
37 struct rt_entry *rt_back;
38 union {
39 struct rtentry rtu_rt;
40 struct {
41 u_long rtu_hash;
42 struct sockaddr rtu_dst;
43 struct sockaddr rtu_router;
44 short rtu_flags;
45 short rtu_state;
46 int rtu_timer;
47 int rtu_metric;
88709531 48 int rtu_ifmetric;
d03054c7
SL
49 struct interface *rtu_ifp;
50 } rtu_entry;
51 } rt_rtu;
52};
53
54#define rt_rt rt_rtu.rtu_rt /* pass to ioctl */
55#define rt_hash rt_rtu.rtu_entry.rtu_hash /* for net or host */
56#define rt_dst rt_rtu.rtu_entry.rtu_dst /* match value */
57#define rt_router rt_rtu.rtu_entry.rtu_router /* who to forward to */
58#define rt_flags rt_rtu.rtu_entry.rtu_flags /* kernel flags */
59#define rt_timer rt_rtu.rtu_entry.rtu_timer /* for invalidation */
60#define rt_state rt_rtu.rtu_entry.rtu_state /* see below */
61#define rt_metric rt_rtu.rtu_entry.rtu_metric /* cost of route */
88709531 62#define rt_ifmetric rt_rtu.rtu_entry.rtu_ifmetric /* cost of route if */
d03054c7
SL
63#define rt_ifp rt_rtu.rtu_entry.rtu_ifp /* interface to take */
64
49139b80
MK
65#define ROUTEHASHSIZ 32 /* must be a power of 2 */
66#define ROUTEHASHMASK (ROUTEHASHSIZ - 1)
d03054c7
SL
67
68/*
69 * "State" of routing table entry.
70 */
71#define RTS_CHANGED 0x1 /* route has been altered recently */
4fad5a6e
MK
72#define RTS_EXTERNAL 0x2 /* extern info, not installed or sent */
73#define RTS_INTERNAL 0x4 /* internal route, not installed */
b7e4f8be
MK
74#define RTS_PASSIVE IFF_PASSIVE /* don't time out route */
75#define RTS_INTERFACE IFF_INTERFACE /* route is for network interface */
76#define RTS_REMOTE IFF_REMOTE /* route is for ``remote'' entity */
4fad5a6e
MK
77#define RTS_SUBNET IFF_SUBNET /* route is for network subnet */
78
79/*
80 * Flags are same as kernel, with this addition for af_rtflags:
81 */
82#define RTF_SUBNET 0x8000 /* pseudo: route to subnet */
d03054c7
SL
83
84struct rthash nethash[ROUTEHASHSIZ];
85struct rthash hosthash[ROUTEHASHSIZ];
86struct rt_entry *rtlookup();
87struct rt_entry *rtfind();