From 99c532018cf95dcd4d6319313b4718f7bb2c8297 Mon Sep 17 00:00:00 2001 From: Bart Polot Date: Tue, 14 May 2013 11:59:48 +0000 Subject: - Remove old tree lib --- src/mesh/mesh_path.h | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/mesh/mesh_path.h (limited to 'src/mesh/mesh_path.h') diff --git a/src/mesh/mesh_path.h b/src/mesh/mesh_path.h new file mode 100644 index 000000000..c3f3264b0 --- /dev/null +++ b/src/mesh/mesh_path.h @@ -0,0 +1,133 @@ +/* + This file is part of GNUnet. + (C) 2001 - 2013 Christian Grothoff (and other contributing authors) + + GNUnet is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, or (at your + option) any later version. + + GNUnet 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 GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +/** + * @file mesh/mesh_path.h + * @brief Path handling functions + * @author Bartlomiej Polot + */ + +#ifndef MESH_PATH_H +#define MESH_PATH_H + +#ifdef __cplusplus +extern "C" +{ + #if 0 /* keep Emacsens' auto-indent happy */ +} +#endif +#endif + +#include "mesh2.h" + +/******************************************************************************/ +/************************ DATA STRUCTURES ****************************/ +/******************************************************************************/ + +/** + * Information regarding a possible path to reach a single peer + */ +struct MeshPeerPath +{ + + /** + * Linked list + */ + struct MeshPeerPath *next; + struct MeshPeerPath *prev; + + /** + * List of all the peers that form the path from origin to target. + */ + GNUNET_PEER_Id *peers; + + /** + * Number of peers (hops) in the path + */ + unsigned int length; + +}; + +/******************************************************************************/ +/************************* FUNCTIONS *****************************/ +/******************************************************************************/ + +/** + * Create a new path. + * + * @param length How many hops will the path have. + * + * @return A newly allocated path with a peer array of the specified length. + */ +struct MeshPeerPath * +path_new (unsigned int length); + + +/** + * Invert the path. + * + * @param path The path to invert. + */ +void +path_invert (struct MeshPeerPath *path); + + +/** + * Duplicate a path, incrementing short peer's rc. + * + * @param path The path to duplicate. + */ +struct MeshPeerPath * +path_duplicate (struct MeshPeerPath *path); + + +/** + * Get the length of a path. + * + * @param path The path to measure, with the local peer at any point of it. + * + * @return Number of hops to reach destination. + * UINT_MAX in case the peer is not in the path. + */ +unsigned int +path_get_length (struct MeshPeerPath *path); + + +/** + * Destroy the path and free any allocated resources linked to it + * + * @param p the path to destroy + * + * @return GNUNET_OK on success + */ +int +path_destroy (struct MeshPeerPath *p); + + +#if 0 /* keep Emacsens' auto-indent happy */ +{ + #endif + #ifdef __cplusplus +} +#endif + + +/* ifndef MESH_PATH_H */ +#endif \ No newline at end of file -- cgit v1.2.3