X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=apps%2Fsilcd%2Froute.c;fp=apps%2Fsilcd%2Froute.c;h=0000000000000000000000000000000000000000;hb=72c2de619079457f7a68100eb13385275a424a23;hp=f32417c7f5657a7ba2ced36ac5504a684ee6ca7a;hpb=e7b6c157b80152bf9fb9266e6bdd93f9fb0db776;p=runtime.git diff --git a/apps/silcd/route.c b/apps/silcd/route.c deleted file mode 100644 index f32417c7..00000000 --- a/apps/silcd/route.c +++ /dev/null @@ -1,107 +0,0 @@ -/* - - route.c - - Author: Pekka Riikonen - - Copyright (C) 2000 - 2002 Pekka Riikonen - - This program 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 2 of the License, or - (at your option) any later version. - - This program 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. - -*/ -/* - * Route cache routines. Server uses these to route packets to specific - * routes. If route entry doesn't exist for a specific destination, server - * uses primary route (default route). - */ -/* XXX Adding two ID's with same IP number replaces the old entry thus - gives wrong route. Thus, now disabled until figured out a better way - to do this or when removed the whole thing. This could be removed - because entry->router->connection gives always the most optimal route - for the ID anyway (unless new routes (faster perhaps) are established - after receiving this ID, this we don't know however). */ -/* $Id$ */ - -#include "serverincludes.h" -#include "server_internal.h" -#include "route.h" - -/* Route cache hash table */ -SilcServerRouteTable silc_route_cache[SILC_SERVER_ROUTE_SIZE]; - -/* Adds new route to the route cache. The argument `index' is the - index value generated by silc_server_route_hash. */ - -void silc_server_route_add(SilcUInt32 index, unsigned int dest, - SilcServerEntry router) -{ - silc_route_cache[index].dest = dest; - silc_route_cache[index].router = router; -} - -/* Checksk whether destination has a specific router. Returns the - router data if found, NULL otherwise. */ - -SilcServerEntry silc_server_route_check(SilcUInt32 dest, - SilcUInt16 port) -{ - SilcUInt32 index; - - index = silc_server_route_hash(dest, port); - - if (silc_route_cache[index].router != NULL && - silc_route_cache[index].dest == dest) - return silc_route_cache[index].router; - - return NULL; -} - -/* Returns the connection object for the fastest route for the given ID. - If we are normal server then this just returns our primary route. If - we are router we will do route lookup. */ - -SilcPacketStream silc_server_route_get(SilcServer server, void *id, - SilcIdType id_type) -{ - if (server->server_type == SILC_ROUTER) { - SilcUInt32 dest = 0; - SilcUInt16 port = 0; - SilcServerEntry router = NULL; -#if 0 - - switch(id_type) { - case SILC_ID_CLIENT: - dest = ((SilcClientID *)id)->ip.s_addr; - port = server->id->port; - break; - case SILC_ID_SERVER: - dest = ((SilcServerID *)id)->ip.s_addr; - port = ((SilcServerID *)id)->port; - break; - case SILC_ID_CHANNEL: - dest = ((SilcChannelID *)id)->ip.s_addr; - port = ((SilcChannelID *)id)->port; - break; - default: - return NULL; - } - -#endif - - router = silc_server_route_check(dest, port); - if (router) - return router->connection; - } - - return (server->id_entry->router) - ? server->id_entry->router->connection - : NULL; -}