Annotation of embedaddon/pimd/trace.h, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (c) 1998-2001
3: * University of Southern California/Information Sciences Institute.
4: * All rights reserved.
5: *
6: * Redistribution and use in source and binary forms, with or without
7: * modification, are permitted provided that the following conditions
8: * are met:
9: * 1. Redistributions of source code must retain the above copyright
10: * notice, this list of conditions and the following disclaimer.
11: * 2. Redistributions in binary form must reproduce the above copyright
12: * notice, this list of conditions and the following disclaimer in the
13: * documentation and/or other materials provided with the distribution.
14: * 3. Neither the name of the project nor the names of its contributors
15: * may be used to endorse or promote products derived from this software
16: * without specific prior written permission.
17: *
18: * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
19: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21: * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
22: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28: * SUCH DAMAGE.
29: */
30: /*
31: * $Id: trace.h,v 1.7 2001/09/10 20:31:37 pavlin Exp $
32: */
33: /*
34: * Part of this program has been derived from mrouted.
35: * The mrouted program is covered by the license in the accompanying file
36: * named "LICENSE.mrouted".
37: *
38: * The mrouted program is COPYRIGHT 1989 by The Board of Trustees of
39: * Leland Stanford Junior University.
40: *
41: */
42:
43:
44: /*
45: * The packet format for a traceroute request.
46: */
47: struct tr_query {
48: uint32_t tr_src; /* traceroute source */
49: uint32_t tr_dst; /* traceroute destination */
50: uint32_t tr_raddr; /* traceroute response address */
51: #if defined(BYTE_ORDER) && (BYTE_ORDER == LITTLE_ENDIAN)
52: struct {
53: u_int qid : 24; /* traceroute query id */
54: u_int ttl : 8; /* traceroute response ttl */
55: } q;
56: #else
57: struct {
58: u_int ttl : 8; /* traceroute response ttl */
59: u_int qid : 24; /* traceroute query id */
60: } q;
61: #endif /* BYTE_ORDER */
62: };
63:
64: #define tr_rttl q.ttl
65: #define tr_qid q.qid
66:
67: /*
68: * Traceroute response format. A traceroute response has a tr_query at the
69: * beginning, followed by one tr_resp for each hop taken.
70: */
71: struct tr_resp {
72: uint32_t tr_qarr; /* query arrival time */
73: uint32_t tr_inaddr; /* incoming interface address */
74: uint32_t tr_outaddr; /* outgoing interface address */
75: uint32_t tr_rmtaddr; /* parent address in source tree */
76: uint32_t tr_vifin; /* input packet count on interface */
77: uint32_t tr_vifout; /* output packet count on interface */
78: uint32_t tr_pktcnt; /* total incoming packets for src-grp */
79: uint8_t tr_rproto; /* routing protocol deployed on router */
80: uint8_t tr_fttl; /* ttl required to forward on outvif */
81: uint8_t tr_smask; /* subnet mask for src addr */
82: uint8_t tr_rflags; /* forwarding error codes */
83: };
84:
85: /* defs within mtrace */
86: #define QUERY 1
87: #define RESP 2
88: #define QLEN sizeof(struct tr_query)
89: #define RLEN sizeof(struct tr_resp)
90:
91: /* fields for tr_rflags (forwarding error codes) */
92: #define TR_NO_ERR 0 /* No error */
93: #define TR_WRONG_IF 1 /* traceroute arrived on non-oif */
94: #define TR_PRUNED 2 /* router has sent a prune upstream */
95: #define TR_OPRUNED 3 /* stop forw. after request from next hop rtr*/
96: #define TR_SCOPED 4 /* group adm. scoped at this hop */
97: #define TR_NO_RTE 5 /* no route for the source */
98: #define TR_NO_LHR 6 /* not the last-hop router */
99: #define TR_NO_FWD 7 /* not forwarding for this (S,G). Reason = ? */
100: #define TR_RP 8 /* I am the RP/Core */
101: #define TR_IIF 9 /* request arrived on the iif */
102: #define TR_NO_MULTI 0x0a /* multicast disabled on that interface */
103: #define TR_NO_SPACE 0x81 /* no space to insert responce data block */
104: #define TR_OLD_ROUTER 0x82 /* previous hop does not support traceroute */
105: #define TR_ADMIN_PROHIB 0x83 /* traceroute adm. prohibited */
106:
107: /* fields for tr_smask */
108: #define TR_GROUP_ONLY 0x2f /* forwarding solely on group state */
109: #define TR_SUBNET_COUNT 0x40 /* pkt count for (S,G) is for source network */
110:
111: /* fields for packets count */
112: #define TR_CANT_COUNT 0xffffffff /* no count can be reported */
113:
114: /* fields for tr_rproto (routing protocol) */
115: #define PROTO_DVMRP 1
116: #define PROTO_MOSPF 2
117: #define PROTO_PIM 3
118: #define PROTO_CBT 4
119: #define PROTO_PIM_SPECIAL 5
120: #define PROTO_PIM_STATIC 6
121: #define PROTO_DVMRP_STATIC 7
122:
123: #define NBR_VERS(n) (((n)->al_pv << 8) + (n)->al_mv)
124:
125: /**
126: * Local Variables:
127: * version-control: t
128: * indent-tabs-mode: t
129: * c-file-style: "ellemtel"
130: * c-basic-offset: 4
131: * End:
132: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>