/*-*-linux-c-*-*/

/*
 *  gnewtellium - Newtella for Unix
 *  Copyright (C) 2001 Elias Athanasopoulos
 *
 *  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.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include <gtk/gtk.h>

#include "guid.h"
#include "gnutella.h"

#define ROUTE_CACHE_SIZE 100
#define ROUTE_MAX_PACKET 10000       /* it can be GNUTELLA_MAX_PACKET but it
					doesn't hurt and maybe valuable in the
					future */

/* route policy */
#define RP_ALL     0     /* route to everyone               */
#define RP_ONLY_TO 1     /* route only to con               */
#define RP_ALL_EXC 2     /* route to everyone except to con */

/* message to be routed */
struct message {
	struct  gnutella_header *head;
	
	guint32 length;
	/* this is not the msg guid, but
	   the one used in pushes, and 
	   maybe to other future packets.
	*/
	gchar   guid[16];    
	gchar   policy;
        struct  newtella_connection *con;

	guint32 time;
};

int route_msg_add(struct message *msg, gchar *dataload);
struct message *route_msg_find(gchar *mguid, gnutella_function f, gint len);
struct message *route_msg_rs_find(gchar *pguid);
