ccc10658cc
ftp://ftp.parc.xerox.com/pub/net-research/ipmulti/mtrace-5.2.tar.gz
90 lines
2.6 KiB
C
90 lines
2.6 KiB
C
/*
|
|
* Multicast traceroute related definitions
|
|
*
|
|
* mtrace.h,v 5.2 1998/12/04 04:48:21 fenner Exp
|
|
*/
|
|
|
|
/*
|
|
* NetBSD renamed the mtrace packet types.
|
|
*/
|
|
#if !defined(IGMP_MTRACE_RESP) && defined(IGMP_MTRACE_REPLY)
|
|
#define IGMP_MTRACE_RESP IGMP_MTRACE_REPLY
|
|
#define IGMP_MTRACE IGMP_MTRACE_QUERY
|
|
#endif
|
|
|
|
/*
|
|
* The packet format for a traceroute request.
|
|
*/
|
|
struct tr_query {
|
|
u_int32 tr_src; /* traceroute source */
|
|
u_int32 tr_dst; /* traceroute destination */
|
|
u_int32 tr_raddr; /* traceroute response address */
|
|
u_int32 tr_rttlqid; /* response ttl and qid */
|
|
};
|
|
|
|
#define TR_SETTTL(x, ttl) (x = (x & 0x00ffffff) | ((ttl) << 24))
|
|
#define TR_GETTTL(x) (((x) >> 24) & 0xff)
|
|
#define TR_SETQID(x, qid) (x = (x & 0xff000000) | ((qid) & 0x00ffffff))
|
|
#define TR_GETQID(x) ((x) & 0x00ffffff)
|
|
|
|
/*
|
|
* Traceroute response format. A traceroute response has a tr_query at the
|
|
* beginning, followed by one tr_resp for each hop taken.
|
|
*/
|
|
struct tr_resp {
|
|
u_int32 tr_qarr; /* query arrival time */
|
|
u_int32 tr_inaddr; /* incoming interface address */
|
|
u_int32 tr_outaddr; /* outgoing interface address */
|
|
u_int32 tr_rmtaddr; /* parent address in source tree */
|
|
u_int32 tr_vifin; /* input packet count on interface */
|
|
u_int32 tr_vifout; /* output packet count on interface */
|
|
u_int32 tr_pktcnt; /* total incoming packets for src-grp */
|
|
u_char tr_rproto; /* routing protocol deployed on router */
|
|
u_char tr_fttl; /* ttl required to forward on outvif */
|
|
u_char tr_smask; /* subnet mask for src addr */
|
|
u_char tr_rflags; /* forwarding error codes */
|
|
};
|
|
|
|
/* defs within mtrace */
|
|
#define QLEN sizeof(struct tr_query)
|
|
#define RLEN sizeof(struct tr_resp)
|
|
|
|
/* fields for tr_rflags (forwarding error codes) */
|
|
#define TR_NO_ERR 0
|
|
#define TR_WRONG_IF 1
|
|
#define TR_PRUNED 2
|
|
#define TR_OPRUNED 3
|
|
#define TR_SCOPED 4
|
|
#define TR_NO_RTE 5
|
|
#define TR_NO_FWD 7
|
|
#define TR_HIT_RP 8
|
|
#define TR_RPF_IF 9
|
|
#define TR_NO_MULTI 10
|
|
#define TR_NO_SPACE 0x81
|
|
#define TR_OLD_ROUTER 0x82
|
|
#define TR_ADMIN_PROHIB 0x83
|
|
|
|
/* fields for tr_rproto (routing protocol) */
|
|
#define PROTO_DVMRP 1
|
|
#define PROTO_MOSPF 2
|
|
#define PROTO_PIM 3
|
|
#define PROTO_CBT 4
|
|
#define PROTO_PIM_SPECIAL 5
|
|
#define PROTO_PIM_STATIC 6
|
|
#define PROTO_DVMRP_STATIC 7
|
|
#define PROTO_PIM_BGP4PLUS 8
|
|
#define PROTO_CBT_SPECIAL 9
|
|
#define PROTO_CBT_STATIC 10
|
|
#define PROTO_PIM_ASSERT 11
|
|
|
|
#define VAL_TO_MASK(x, i) { \
|
|
x = htonl(~((1 << (32 - (i))) - 1)); \
|
|
};
|
|
|
|
#if defined(__STDC__) || defined(__GNUC__)
|
|
#define JAN_1970 2208988800UL /* 1970 - 1900 in seconds */
|
|
#else
|
|
#define JAN_1970 2208988800L /* 1970 - 1900 in seconds */
|
|
#define const /**/
|
|
#endif
|