From f9514dbcea2d42f11a443c080f047da643e31043 Mon Sep 17 00:00:00 2001 From: Tuka Martin Date: Sun, 26 Feb 2012 17:11:59 +0100 Subject: [PATCH] frm_fwp: Global variable correction Linked list contained data about network from all stations is now called locally in all functions --- src/fwp/fwp/mngr/fwp_admctrl.h | 2 -- src/fwp/fwp/mngr/fwp_mngr.c | 17 ++++++++--------- src/fwp/fwp/mngr/wifi_agent.c | 28 +++++++++++----------------- 3 files changed, 19 insertions(+), 28 deletions(-) diff --git a/src/fwp/fwp/mngr/fwp_admctrl.h b/src/fwp/fwp/mngr/fwp_admctrl.h index 8f947e06..6f80c661 100644 --- a/src/fwp/fwp/mngr/fwp_admctrl.h +++ b/src/fwp/fwp/mngr/fwp_admctrl.h @@ -72,8 +72,6 @@ struct frm_fwp_priv { fwp_sta_list_t sta_list; }; -extern struct frm_fwp_priv priv; - UL_LIST_CUST_DEC(sta_list, /* cust_prefix */ fwp_sta_list_t, /* cust_head_t */ fwp_sta_t, /* cust_item_t */ diff --git a/src/fwp/fwp/mngr/fwp_mngr.c b/src/fwp/fwp/mngr/fwp_mngr.c index 886c71c5..857d8d2d 100644 --- a/src/fwp/fwp/mngr/fwp_mngr.c +++ b/src/fwp/fwp/mngr/fwp_mngr.c @@ -87,7 +87,7 @@ int dummy_admission_test(struct fres_sa_scenario *scenario, void *priv, #endif -struct frm_fwp_priv priv = { +static struct frm_fwp_priv frm_fwp_state = { .rate_mbps = 1, .erp_ofdm = false, .short_preamble = false, @@ -100,7 +100,7 @@ static const struct fres_res_manager frm = { //.admission_test = dummy_admission_test, .name = "WLAN", .admission_test = fwp_admctrl_utilization, - .priv = &priv, + .priv = &frm_fwp_state, }; static struct option long_opts[] = { @@ -149,10 +149,9 @@ int main(int argc, char *argv[]) struct frm_data frm_data; wifi_agent_idl wai; //wifi agent interface - struct fwp_sta intern_data; if (getenv("FWP_BYPASS")) - priv.bypass = true; + frm_fwp_state.bypass = true; while ((opt = getopt_long(argc, argv, "b:d:hl:os", &long_opts[0], NULL)) != EOF) { @@ -165,13 +164,13 @@ int main(int argc, char *argv[]) ul_log_domain_arg2levels(optarg); break; case 'b': - priv.rate_mbps = atol(optarg); + frm_fwp_state.rate_mbps = atol(optarg); break; case 's': - priv.short_preamble = true; + frm_fwp_state.short_preamble = true; break; case 'o': - priv.erp_ofdm = true; + frm_fwp_state.erp_ofdm = true; break; case 'h': /*default:*/ @@ -196,13 +195,13 @@ int main(int argc, char *argv[]) if (!worb) error(1, errno, "forb_init"); // Cration of an object implementing myinterface - wai = forb_wifi_agent_idl_new(orb, &wifi_agent_impl, &intern_data); + wai = forb_wifi_agent_idl_new(orb, &wifi_agent_impl, &frm_fwp_state); // We can register our object under a name, so that other processes can use it. forb_register_reference(wai, "net.sourceforge.frsh-forb.wai"); // Initialize head of linked list - sta_list_init_head(&priv.sta_list); + sta_list_init_head(&frm_fwp_state.sta_list); //create executors and register 2 interfaces ret = forb_executor_init(&executor_wai); diff --git a/src/fwp/fwp/mngr/wifi_agent.c b/src/fwp/fwp/mngr/wifi_agent.c index 9168830a..ce1f4d98 100644 --- a/src/fwp/fwp/mngr/wifi_agent.c +++ b/src/fwp/fwp/mngr/wifi_agent.c @@ -35,9 +35,10 @@ struct forb_wifi_agent_idl_impl wifi_agent_impl = { void wifi_agent_idl_print_state(wifi_agent_idl _obj, CORBA_Environment *ev) { fwp_sta_t *sta2; + struct frm_fwp_priv *frm_fwp_state = forb_instance_data(_obj); ul_logmsg("Actual_list_of_stations\n"); - ul_list_for_each(sta_list, &priv.sta_list, sta2){ + ul_list_for_each(sta_list, &frm_fwp_state->sta_list, sta2){ ul_logmsg("%llu_-_%d\n", sta2->client_mac_addr, sta2->rate); } ul_logmsg("------------\n\n"); @@ -49,32 +50,25 @@ void wifi_agent_idl_print_state(wifi_agent_idl _obj, CORBA_Environment *ev) */ CORBA_long wifi_agent_idl_add(wifi_agent_idl _obj, const CORBA_long rate, const CORBA_long_long client_mac_addr, CORBA_Environment *ev) { - struct fwp_sta *ed = forb_instance_data(_obj); + + struct frm_fwp_priv *frm_fwp_state = forb_instance_data(_obj); fwp_sta_t *sta; fwp_sta_t *new_to_add; - new_to_add = (fwp_sta_t*)malloc(sizeof(fwp_sta_t)); - - /*client transmission bitrate (wifi_agent -> fwp_manager)*/ - ed->rate = rate; - ed->client_mac_addr = client_mac_addr; - /*fill the linked list here*/ - ul_list_for_each(sta_list, &priv.sta_list, sta){ - + ul_list_for_each(sta_list, &frm_fwp_state->sta_list, sta){ /*client was sending info before*/ - if(sta->client_mac_addr == ed->client_mac_addr) { + if(sta->client_mac_addr == client_mac_addr) { /*mac address is the same change only rate*/ - sta->rate = ed->rate; - + sta->rate = rate; return 0; } } + new_to_add = (fwp_sta_t*)malloc(sizeof(fwp_sta_t)); /*client was not sending info yet*/ - new_to_add->rate = ed->rate; - new_to_add->client_mac_addr = ed->client_mac_addr; - - sta_list_ins_tail(&priv.sta_list, new_to_add); + new_to_add->rate = rate; + new_to_add->client_mac_addr = client_mac_addr; + sta_list_ins_tail(&frm_fwp_state->sta_list, new_to_add); return 0; } -- 2.39.2