#include "unp.h"## 1 ##src/traceroute/trace.h## #include ## 2 ##src/traceroute/trace.h## #include ## 3 ##src/traceroute/trace.h## #include ## 4 ##src/traceroute/trace.h## #include ## 5 ##src/traceroute/trace.h## #define BUFSIZE 1500## 6 ##src/traceroute/trace.h## struct rec { /* of outgoing UDP data */## 7 ##src/traceroute/trace.h## u_short rec_seq; /* sequence number */## 8 ##src/traceroute/trace.h## u_short rec_ttl; /* TTL packet left with */## 9 ##src/traceroute/trace.h## struct timeval rec_tv; /* time packet left */## 10 ##src/traceroute/trace.h## };## 11 ##src/traceroute/trace.h## /* globals */## 12 ##src/traceroute/trace.h## char recvbuf[BUFSIZE];## 13 ##src/traceroute/trace.h## char sendbuf[BUFSIZE];## 14 ##src/traceroute/trace.h## int datalen; /* #bytes of data, following ICMP header */## 15 ##src/traceroute/trace.h## char *host;## 16 ##src/traceroute/trace.h## u_short sport, dport;## 17 ##src/traceroute/trace.h## int nsent; /* add 1 for each sendto() */## 18 ##src/traceroute/trace.h## pid_t pid; /* our PID */## 19 ##src/traceroute/trace.h## int probe, nprobes;## 20 ##src/traceroute/trace.h## int sendfd, recvfd; /* send on UDP sock, read on raw ICMP sock */## 21 ##src/traceroute/trace.h## int ttl, max_ttl;## 22 ##src/traceroute/trace.h## int verbose;## 23 ##src/traceroute/trace.h## /* function prototypes */## 24 ##src/traceroute/trace.h## const char *icmpcode_v4(int);## 25 ##src/traceroute/trace.h## const char *icmpcode_v6(int);## 26 ##src/traceroute/trace.h## int recv_v4(int, struct timeval *);## 27 ##src/traceroute/trace.h## int recv_v6(int, struct timeval *);## 28 ##src/traceroute/trace.h## void sig_alrm(int);## 29 ##src/traceroute/trace.h## void traceloop(void);## 30 ##src/traceroute/trace.h## void tv_sub(struct timeval *, struct timeval *);## 31 ##src/traceroute/trace.h## struct proto {## 32 ##src/traceroute/trace.h## const char *(*icmpcode) (int);## 33 ##src/traceroute/trace.h## int (*recv) (int, struct timeval *);## 34 ##src/traceroute/trace.h## struct sockaddr *sasend; /* sockaddr{} for send, from getaddrinfo */## 35 ##src/traceroute/trace.h## struct sockaddr *sarecv; /* sockaddr{} for receiving */## 36 ##src/traceroute/trace.h## struct sockaddr *salast; /* last sockaddr{} for receiving */## 37 ##src/traceroute/trace.h## struct sockaddr *sabind; /* sockaddr{} for binding source port */## 38 ##src/traceroute/trace.h## socklen_t salen; /* length of sockaddr{}s */## 39 ##src/traceroute/trace.h## int icmpproto; /* IPPROTO_xxx value for ICMP */## 40 ##src/traceroute/trace.h## int ttllevel; /* setsockopt() level to set TTL */## 41 ##src/traceroute/trace.h## int ttloptname; /* setsockopt() name to set TTL */## 42 ##src/traceroute/trace.h## } *pr;## 43 ##src/traceroute/trace.h## #ifdef IPV6## 44 ##src/traceroute/trace.h## #include ## 45 ##src/traceroute/trace.h## #include ## 46 ##src/traceroute/trace.h## #endif## 47 ##src/traceroute/trace.h##