#fwpagent_SOURCES+= fwp_agent.c
#fwpmngr_SOURCES+= fwp_participant.c fwp_mngr.c fwp_contract_table.c\
fwp_agent_table.c fwp_admctrl.c
-fwpmngr_SOURCES+= fwp_mngr.c fwp_participant_table.c
+fwpmngr_SOURCES+= fwp_mngr.c
fwpmngr_SOURCES+= fwp_admctrl.c
fwpmngr_SOURCES+= admtest_utilization.c
-fwpmngr_SOURCES+= gui.c
+#fwpmngr_SOURCES+= gui.c
-lib_LOADLIBES+= fwp ulut pthread rt ncurses
+lib_LOADLIBES+= fwp ulut pthread rt
+#lib_LOADLIBES+= fwp ulut pthread rt ncurses
-#SUBDIRS=tests
--- /dev/null
+#include <frm_generic.h>
+#include <forb.h>
+#include <error.h>
+#include <errno.h>
+#include <fres_sa_scenario.h>
+#include <stdbool.h>
+#include <ul_log.h>
+#include "res_dummy.h"
+#include <stdio.h>
+
+struct dummy_data {
+ int some_data;
+};
+
+
+bool admission_test(struct fres_sa_scenario *scenario, void *priv)
+{
+ bool schedulable;
+ struct dummy_data *data = priv;
+ struct fres_sa_contract *c;
+
+ printf("Admission test:\n");
+ data->some_data++;
+
+ fres_sa_scenario_for_each_contract(scenario, c) {
+ fres_block_basic *basic;
+ char id[40];
+ fres_contract_id_to_string(id, &c->contract->id, sizeof(id));
+ basic = fres_contract_get_basic(c->contract);
+
+ printf(" processing: id=%s, period=%ld ms, budget=%ld ms\n",
+ id,
+ fosa_rel_time_to_msec(basic->period),
+ fosa_rel_time_to_msec(basic->budget));
+
+ }
+ schedulable = scenario->num_contracts <= 3;
+ printf("=> %s\n", schedulable?"schedulable":"not schedulable");
+
+ return schedulable;
+}
+
+struct dummy_data dummy_data;
+
+static const struct fres_res_manager frm = {
+ .res_type = FRSH_RT_NETWORK,
+ .res_id = FRSH_NETPF_FWP,
+ .admission_test = admission_test,
+ .priv = &dummy_data
+};
+
+int main(int argc, char *argv[])
+{
+ forb_orb orb;
+ int ret;
+
+ orb = forb_init(&argc, &argv, "frm_fwp");
+ if (!orb) error(1, errno, "forb_init");
+
+ ret = frm_register_and_run(orb, &frm);
+
+ if (ret != 0) {
+ error(1, errno, "frm_generic_run");
+ }
+
+ return 0;
+}
--- /dev/null
+#include <ul_log.h>
+#include <frs_generic.h>
+#include "res_dummy.h"
+#include <stdio.h>
+
+
+UL_LOG_CUST(ulogd_frs_dummy);
+ul_log_domain_t ulogd_frs_dummy = {UL_LOGL_MSG, "frs_dummy"};
+
+int create_vres(fres_vres_t *vres, void *priv)
+{
+ int *my_data = priv;
+ fres_block_basic *basic;
+ char id[40];
+
+ (*my_data)++;
+
+ fres_contract_id_to_string(id, &vres->contract->id, sizeof(id));
+ basic = fres_contract_get_basic(vres->contract);
+ printf("Creating VRes #%d (id=%s, period=%ld ms, budget=%ld ms)\n",
+ *my_data, id,
+ fosa_rel_time_to_msec(basic->period),
+ fosa_rel_time_to_msec(basic->budget));
+ return 0;
+}
+int cancel_vres(fres_vres_t *vres, void *priv)
+{
+ int *my_data = priv;
+ fres_block_basic *basic;
+ char id[40];
+
+ fres_contract_id_to_string(id, &vres->contract->id, sizeof(id));
+ basic = fres_contract_get_basic(vres->contract);
+ printf("Creating VRes #%d (id=%s, period=%ld ms, budget=%ld ms)\n",
+ *my_data, id,
+ fosa_rel_time_to_msec(basic->period),
+ fosa_rel_time_to_msec(basic->budget));
+
+ (*my_data)--;
+ return 0;
+}
+
+int change_vres(fres_vres_t *vres, void *priv)
+{
+ return 0;
+}
+
+
+
+static int my_data;
+
+static struct fres_scheduler dummy_scheduler = {
+ .res_type = DUMMY_RESOURCE_TYPE,
+ .res_id = DUMMY_RESOURCE_ID,
+ .create_vres = create_vres,
+ .cancel_vres = cancel_vres,
+ .change_vres = change_vres,
+ .priv = &my_data
+};
+
+int frs_dummy_init(forb_orb orb, fres_contract_broker fcb, forb_executor_t *executor)
+{
+ return frs_register(orb, fcb, executor, &dummy_scheduler);
+}