root/usr/src/cmd/cmd-inet/usr.sbin/traceroute/traceroute.h
/*
 * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * Copyright (c) 1988, 1989, 1991, 1994, 1995, 1996, 1997
 *      The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that: (1) source code distributions
 * retain the above copyright notice and this paragraph in its entirety, (2)
 * distributions including binary code include the above copyright notice and
 * this paragraph in its entirety in the documentation or other materials
 * provided with the distribution, and (3) all advertising materials mentioning
 * features or use of this software display the following acknowledgement:
 * ``This product includes software developed by the University of California,
 * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
 * the University nor the names of its contributors may be used to endorse
 * or promote products derived from this software without specific prior
 * written permission.
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 *
 *
 * @(#)$Header: traceroute.c,v 1.49 97/06/13 02:30:23 leres Exp $ (LBL)
 */

#ifndef _TRACEROUTE_H
#define _TRACEROUTE_H

#ifdef __cplusplus
extern "C" {
#endif

#define MAX_PORT        65535           /* max port value for UDP */

#define REPLY_SHORT_PKT         0       /* check_reply() has a short packet */
#define REPLY_GOT_GATEWAY       1       /* ... rcvd a reply from an inter. gw */
#define REPLY_GOT_TARGET        2       /* ... rcvd the reply from the target */
#define REPLY_GOT_OTHER         3       /* ... received other */

/*
 * this is the max it can be, yet another factor is PMTU, which is ignored
 * here
 */
#define MAX_GWS6        127

/*
 * Maximum number of gateways (include room for one noop).
 * 'in_addr_t' is 32 bits, size of IPv4 address.
 * Note that the actual number of gateways that can be used for source
 * routing is one less than the value below. This is because the API requires
 * the last gateway to be the target address.
 */
#define MAX_GWS         9

/* maximum of max_gws */
#define MAXMAX_GWS      MAX(MAX_GWS, MAX_GWS6)

#define A_CNT(ARRAY)    (sizeof (ARRAY) / sizeof ((ARRAY)[0]))

#define Fprintf         (void)fprintf
#define Printf          (void)printf

struct icmptype_table {
        int type;               /* ICMP type */
        char *message;          /* corresponding string message */
};

/* Data section of the probe packet */
struct outdata {
        uchar_t seq;            /* sequence number of this packet */
        uchar_t ttl;            /* ttl packet left with */
        struct timeval tv;      /* time packet left */
};

extern boolean_t docksum;       /* do checksum (IPv4 only) */
extern int gw_count;            /* number of LSRR gateways */
extern char *hostname;
extern ushort_t ident;          /* identity of this traceroute run */
extern boolean_t nflag;         /* numeric flag */
extern ushort_t off;            /* set DF bit (IPv4 only) */
extern int packlen;             /* packet length */
extern ushort_t port;           /* seed of destination port */
extern char *prog;              /* program name */
extern boolean_t raw_req;       /* if sndsock for IPv4 must be raw */
extern boolean_t settos;        /* set type-of-service (IPv4 only) */
extern unsigned char tos;       /* value of tos to set */
extern boolean_t useicmp;       /* use ICMP or UDP */
extern boolean_t verbose;

#ifdef __cplusplus
}
#endif

#endif /* _TRACEROUTE_H */