#include #include #include #include #ifdef LINUX #include #include #include #include #include #include #include #include #include #endif /* LINUX */ #ifdef RAWSOCKET #include #include #include #include #include #include #include #include #include #include #include #endif /* RAWSOCKET */ #define DEFAULT_MTU 1500 struct probehdr { struct timeval tv; char pad[DEFAULT_MTU]; }; struct mtureply { int mtu; char addr[INET6_ADDRSTRLEN]; u_int8_t ee_type; u_int8_t ee_code; }; struct icmpv6responsefilter { struct in6_addr src, dst; unsigned short srcport, dstport; }; int match_icmpv6_response(struct ip6_hdr *, struct icmpv6responsefilter *); struct icmpv6responsefilter *getfilter(int); struct mtureply recvmtu(int); int recv_init(int); int wait_for_reply(int, struct icmpv6responsefilter *);