www.pudn.com > hipl.1.0.1.rar > gui_interface.c


/* 
    HIP Agent 
 
    License: GNU/GPL 
    Authors: Antti Partanen  
*/ 
 
/******************************************************************************/ 
/* INCLUDES */ 
#include "gui_interface.h" 
 
 
/******************************************************************************/ 
/* FUNCTIONS */ 
 
/******************************************************************************/ 
/** 
	Ask GUI, if new hit should be accepted and added. 
 
	@param hit Pointer to hit that should be accepted. 
	@return 0 if accept, -1 on other cases. 
*/ 
int check_hit(HIT_Remote *hit, int inout) 
{ 
	/* Variables. */ 
	HIT_Remote *fhit; 
	int err = 0; 
 
	fhit = hit_db_find(NULL, &hit->hit); 
 
	if (fhit) 
	{ 
		HIP_DEBUG("Found HIT from database.\n"); 
 
		if (fhit->g->type == HIT_DB_TYPE_ACCEPT) err = 0; 
		else err = -1; 
		memcpy(hit, fhit, sizeof(HIT_Remote)); 
 
		goto out_err; 
	} 
	else 
	{ 
		HIP_DEBUG("Did not find HIT from database.\n"); 
	} 
 
	HIP_DEBUG("Calling GUI for accepting new HIT.\n"); 
	err = gui_ask_new_hit(hit, inout); 
 
	/* Add hit info to database, if answer was yes. */ 
	if (err == 0) 
	{ 
		HIP_DEBUG("Adding new remote HIT to database with type %s.\n", 
		          hit->g->type == HIT_DB_TYPE_ACCEPT ? "accept" : "deny"); 
		hit_db_add(hit->name, &hit->hit, hit->url, hit->port, hit->g, 0); 
		if (hit->g->type == HIT_DB_TYPE_ACCEPT) err = 0; 
		else err = -1; 
	} 
	else 
	{ 
		HIP_DEBUG("User dropped new HIT, not adding to database, denie the packet.\n"); 
		err = -1; 
	} 
 
out_err: 
	/* Return. */ 
	return (err); 
} 
/* END OF FUNCTION */ 
 
 
/* END OF SOURCE FILE */ 
/******************************************************************************/