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 */
/******************************************************************************/