-/*
- * This file is free software: you may copy, redistribute and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation, either version 2 of the License, or (at your
- * option) any later version.
- *
- * This file is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- *
+/*
Copyright (c) 2007, 2008 by Juliusz Chroboczek
Permission is hereby granted, free of charge, to any person obtaining a copy
THE SOFTWARE.
*/
+#ifndef BABEL_NEIGHBOUR_H
+#define BABEL_NEIGHBOUR_H
+
struct neighbour {
struct neighbour *next;
/* This is -1 when unknown, so don't make it unsigned */
struct timeval ihu_time;
unsigned short hello_interval; /* in centiseconds */
unsigned short ihu_interval; /* in centiseconds */
+ /* Used for RTT estimation. */
+ /* Absolute time (modulo 2^32) at which the Hello was sent,
+ according to remote clock. */
+ unsigned int hello_send_us;
+ struct timeval hello_rtt_receive_time;
+ unsigned int rtt;
+ struct timeval rtt_time;
struct interface *ifp;
};
unsigned check_neighbours(void);
unsigned neighbour_txcost(struct neighbour *neigh);
unsigned neighbour_rxcost(struct neighbour *neigh);
+unsigned neighbour_rttcost(struct neighbour *neigh);
unsigned neighbour_cost(struct neighbour *neigh);
+int valid_rtt(struct neighbour *neigh);
+
+#endif /* BABEL_NEIGHBOUR_H */