#include "fwp_agent_table.h"
-
#include <stdlib.h>
+typedef
+struct {
+ unsigned int nr_agents;
+ /*pthread_mutex_t lock; */
+ /*gavl_cust_root_field_t root;*/
+ gavl_node_t *agent_tree;
+} fwp_agent_table_t;
+
GAVL_CUST_NODE_INT_DEC(_fwp_agent_table, fwp_agent_table_t, fwp_agent_data_t,
unsigned int, agent_tree, tree_node, _addr,
gavl_cmp_int);
unsigned int, agent_tree, tree_node, _addr,
gavl_cmp_int);
-void fwp_agent_table_init(struct fwp_agent_table *tbl)
+fwp_agent_table_t fwp_agent_table = {
+ .nr_agents = 0,
+ .agent_tree = NULL,
+};
+
+/*void fwp_agent_table_init()
{
- _fwp_agent_table_init_root_field(tbl);
- tbl->nr_agents = 0;
-}
+ _fwp_agent_table_init_root_field(&fwp_agent_table);
+ fwp_agent_table.nr_agents = 0;
+}*/
-void fwp_agent_table_insert(fwp_agent_table_t *tbl,
- fwp_sockaddr_t *agent_sockaddr)
+void fwp_agent_table_insert(fwp_sockaddr_t *agent_sockaddr)
{
struct sockaddr_in *addr_in;
fwp_agent_data_t *agdata;
- agdata = fwp_agent_table_find(tbl, agent_sockaddr);
+ agdata = fwp_agent_table_find(agent_sockaddr);
if (!agdata) {
/* Alloc new agent data */
agdata = (fwp_agent_data_t*)malloc(sizeof(fwp_agent_data_t));
agdata->_addr = addr_in->sin_addr.s_addr;
memcpy(&agdata->addr, agent_sockaddr, sizeof(fwp_sockaddr_t));
fwp_contract_table_init(&agdata->contract_table);
- _fwp_agent_table_insert(tbl, agdata);
+ //_fwp_agent_table_insert(tbl, agdata);
}
/* obtain fwp ctable mutex */
- _fwp_agent_table_insert(tbl, agdata);
- tbl->nr_agents++;
+ _fwp_agent_table_insert(&fwp_agent_table, agdata);
+ fwp_agent_table.nr_agents++;
/* release fwp_contract_table mutex */
}
-fwp_agent_data_t* fwp_agent_table_find(fwp_agent_table_t *tbl,
- fwp_sockaddr_t *agent_sockaddr)
+fwp_agent_data_t* fwp_agent_table_find(fwp_sockaddr_t *agent_sockaddr)
{
unsigned int addr;
struct sockaddr_in *addr_in;
addr_in = (struct sockaddr_in*) agent_sockaddr->addr;
addr = addr_in->sin_addr.s_addr;
- return _fwp_agent_table_find(tbl, &addr);
+ return _fwp_agent_table_find(&fwp_agent_table, &addr);
}
-int fwp_agent_table_delete(fwp_agent_table_t *tbl,
- fwp_agent_data_t *agdata)
+int fwp_agent_table_delete(fwp_agent_data_t *agdata)
{
int rv;
- rv = _fwp_agent_table_delete(tbl, agdata);
- tbl->nr_agents--;
+ rv = _fwp_agent_table_delete(&fwp_agent_table, agdata);
+ fwp_agent_table.nr_agents--;
return rv;
}
gavl_node_t tree_node;
} fwp_agent_data_t;
-typedef
-struct fwp_agent_table {
- unsigned int nr_agents;
- /*pthread_mutex_t lock; */
- /*gavl_cust_root_field_t root;*/
- gavl_node_t *agent_tree;
-} fwp_agent_table_t;
-
-void fwp_agent_table_init(fwp_agent_table_t *tbl);
-void fwp_agent_table_insert(fwp_agent_table_t *tbl,
- fwp_sockaddr_t *agent_sockaddr);
-fwp_agent_data_t* fwp_agent_table_find(fwp_agent_table_t *tbl,
- fwp_sockaddr_t *agent_sockaddr);
-int fwp_agent_table_delete(fwp_agent_table_t *tbl,
- fwp_agent_data_t *contdata);
+void fwp_agent_table_insert(fwp_sockaddr_t *agent_sockaddr);
+fwp_agent_data_t* fwp_agent_table_find(fwp_sockaddr_t *agent_sockaddr);
+int fwp_agent_table_delete(fwp_agent_data_t *contdata);
#endif /*_FWP_AGENT_TABLE_H */
struct fwp_vres_params service_vparams;
fwp_vres_d_t service_vresd; /**< service vres decriptor */
-/* Agent table */
-fwp_agent_table_t agent_table; /**< agent table*/
-
/* List of requested contracts */
/*fwp_contractlist_t contractlist_req;*/
/* for simplicity only one contract is to be negotiated now*/
/* copy contract to contract_data */
memcpy(&contdata->contract, &contract, sizeof(contdata->contract));
/* set pointer to agent data */
- contdata->agent = fwp_agent_table_find(&agent_table, msgb->peer);
+ contdata->agent = fwp_agent_table_find(msgb->peer);
/* set appid and hid */
contdata->contract_call_id = *appcall_id;
contdata->status = FWP_CONT_REQUESTED;
FWP_DEBUG("code = %d , appid = %d callid = %d\n", code,
appcall_id.appid, appcall_id.callid);
- fwp_agent_table_insert(&agent_table, msgb->peer);
+ fwp_agent_table_insert(msgb->peer);
switch (code) {
case FWP_CONTNEGT_REQ: