/**
+ * FIXME: Do we need a field prev_hop
* Routing table entry .
*/
struct RoutingTrail
*/
struct GNUNET_PeerIdentity *destination;
- /**
- * The peer this request was received from.
- */
- struct GNUNET_PeerIdentity *previous_hop;
-
/**
* The peer to which this request should be passed to.
*/
/**
* FIXME: Change the name of variable.
* Ensure that everywhere in this file you are using destination as the key.
+ * Do we need prev field in routing table?
* Add a new entry to our routing table.
* @param source peer
* @param destintation
- * @param prev_hop
* @param next_hop
*/
void
GDS_ROUTING_add (struct GNUNET_PeerIdentity *source,
struct GNUNET_PeerIdentity *dest,
- struct GNUNET_PeerIdentity *prev_hop,
struct GNUNET_PeerIdentity *next_hop)
{
- struct RoutingTrail *new_routing_entry;
-
- new_routing_entry = GNUNET_malloc (sizeof (struct RoutingTrail));
- new_routing_entry->source = source;
- new_routing_entry->previous_hop = prev_hop;
- new_routing_entry->next_hop = next_hop;
- new_routing_entry->destination = dest;
+ struct RoutingTrail *new_routing_entry;
- GNUNET_assert (GNUNET_OK ==
- GNUNET_CONTAINER_multipeermap_put (routing_table,
- dest, new_routing_entry,
- GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+ /* If dest is already present in the routing table, then exit.*/
+ if (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_contains (routing_table,
+ dest))
+ {
+ GNUNET_break (0);
+ return;
+ }
+
+ new_routing_entry = GNUNET_malloc (sizeof (struct RoutingTrail));
+ new_routing_entry->source = source;
+ new_routing_entry->next_hop = next_hop;
+ new_routing_entry->destination = dest;
+
+ GNUNET_assert (GNUNET_OK ==
+ GNUNET_CONTAINER_multipeermap_put (routing_table,
+ dest, new_routing_entry,
+ GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
}
* @return next hop peer id
*/
struct GNUNET_PeerIdentity *
-GDS_Routing_search(struct GNUNET_PeerIdentity *source_peer,
- struct GNUNET_PeerIdentity *destination_peer,
- struct GNUNET_PeerIdentity *prev_hop)
+GDS_ROUTING_search(struct GNUNET_PeerIdentity *source_peer,
+ struct GNUNET_PeerIdentity *destination_peer)
{
- struct RoutingTrail *trail;
- trail = (struct RoutingTrail *)(GNUNET_CONTAINER_multipeermap_get(routing_table,destination_peer));
+ struct RoutingTrail *trail;
+ trail = (struct RoutingTrail *)(GNUNET_CONTAINER_multipeermap_get(routing_table,destination_peer));
- if(trail == NULL)
- return NULL;
+ if(trail == NULL)
+ return NULL;
- return trail->next_hop;
+ return trail->next_hop;
}
const struct GNUNET_PeerIdentity *get_path,
const void *data, size_t data_size)
{
+
}
*/
void
GDS_ROUTING_init ()
-{
+{
routing_table = GNUNET_CONTAINER_multipeermap_create (DHT_MAX_RECENT * 4 / 3, GNUNET_NO);
}