text: #include <sys/types.h>
  #include <sys/socket.h>
  #include <sys/time.h>
  #include <time.h>
  #include <netinet/in.h>
  #include <netinet/in_systm.h>
  #include <netinet/ip.h>
  #include <netinet/ip_icmp.h>
  #include <netinet/udp.h>
  #include <arpa/inet.h>
  #include <netdb.h>
  #include <errno.h>
  #include <fcntl.h>
  #include <signal.h>
  #include <stdio.h>
  #include <stdlib.h>
  #include <getopt.h>
  #include <sys/un.h>
  #include <stdarg.h>
  #include <syslog.h>
  //added header files
  #include <unistd.h>
  
  
  
  #define MAXLINE 4096
  #define BUFSIZE 1500
  
  typedef struct rec {                /* outgoing UDP data */
    u_short seq;          /* sequence number */
  } Rec;
  
  typedef struct timeval Timeval;
  typedef struct sockaddr Sockaddr;
  
  /* variables */
  
  /* variables we might want to configure */
  extern int max_ttl;
  extern int nprobes;
  
  /* other global variables */
  
  extern int seq;
  
  extern Sockaddr *sasend;    /* socket addresses for various purposes */
  extern Sockaddr *sarecv;
  extern Sockaddr *salast;
  extern Sockaddr *sabind;
  extern socklen_t salen;
  
  extern int datalen;         /* length of the data in a datagram */
  
  /* the following are a few definitions from Stevens' unp.h */
  
  typedef	void Sigfunc(int);        /* for signal handlers */
  
  #define max(a,b) ((a) > (b) ? (a) : (b))
  
  /* the following are prototypes for the Stevens utilities in util.c */
  
  char *Sock_ntop_host(const struct sockaddr *sa, socklen_t salen);
  void sock_set_port(struct sockaddr *sa, socklen_t salen, int port);
  int sock_cmp_addr(const struct sockaddr *sa1,
  		  const struct sockaddr *sa2, socklen_t salen);
  void tv_sub (struct timeval *out, struct timeval *in);
  char *icmpcode_v4(int code);
  Sigfunc *Signal(int signo, Sigfunc *func);
  void *Calloc(size_t n, size_t size);
  void Gettimeofday(struct timeval *tv, void *foo);
  void Pipe(int *fds);
  void Bind(int fd, const struct sockaddr *sa, socklen_t salen);
  void Setsockopt(int fd, int level, int optname, const void *optval,
  		socklen_t optlen);
  void Sendto(int fd, const void *ptr, size_t nbytes, int flags,
  	    const struct sockaddr *sa, socklen_t salen);
  struct addrinfo *Host_serv(const char *host, const char *serv,
  			   int family, int socktype);
  ssize_t Read(int fd, void *ptr, size_t nbytes);
  void Write(int fd, void *ptr, size_t nbytes);
  ssize_t Recvfrom(int fd, void *ptr, size_t nbytes, int flags,
  		 struct sockaddr *sa, socklen_t *salenptr);
  void err_sys (char *fmt, ...);
  void err_quit (char *fmt, ...);
  void loop_ttl ();
  