#include "fwp_res.h"
#include "fwp_idl.h"
#include <stdio.h>
+#include <arpa/inet.h>
UL_LOG_CUST(ulogd_fra_fwp);
char id[40];
fres_block_basic *basic;
fres_block_fwp_sched *fwp_sched;
- fwp_vres_params_t vparams;
- fwp_vres_d_t fwp_vresd;
+ fres_block_fwp *fwp;
+ fwp_vres_params_t vparams = {0};
+ struct fwp_vres *fwp_vres = NULL;
int rv;
size_t bytes;
+ char src[21] = "N/A";
/* Prepare vres parameters */
basic = fres_contract_get_basic(vres->new);
fwp_sched = fres_contract_get_block(vres->new, FRES_BLOCK_FWP_SCHED);
+ if (!fwp_sched)
+ return FRES_ERR_NEEDS_MORE_DATA_IN_CONTRACT;
+
+ fwp = fres_contract_get_block(vres->new, FRES_BLOCK_FWP);
frsh_network_budget_to_bytes(FRSH_NETPF_FWP, &basic->budget, &bytes);
vparams.budget = bytes;
vparams.period = basic->period;
vparams.ac_id = fwp_sched->ac_id;
- /* Create vres */
- if ((rv = fwp_vres_create(&vparams, &fwp_vresd))) {
- return rv;
+ if (fwp) {
+ vparams.src.s_addr = fwp->src;
+ snprintf(src, sizeof(src), "%s", inet_ntoa(vparams.src));
}
- vres->priv = fwp_vresd;
+ /* Create vres */
+ if ((rv = fwp_vres_create(&vparams, &fwp_vres)))
+ return (rv == -1) ? errno : rv;
+
+ vres->priv = fwp_vres;
fres_contract_id_to_string(id, &vres->id, sizeof(id));
- ul_logmsg("Creating FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d)\n",
+ ul_logmsg("Creating FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d src=%s)\n",
id, fosa_rel_time_to_msec(basic->period),
- vparams.budget, vparams.ac_id);
+ vparams.budget, vparams.ac_id, src);
return 0;
}
static int cancel_vres(fres_vres_t *vres, void *priv)
{
- fwp_vres_d_t fwp_vresd;
+ struct fwp_vres * fwp_vres;
fres_block_basic *basic;
char id[40];
- fwp_vresd = (fwp_vres_d_t) vres->priv;
- fwp_vres_destroy(fwp_vresd);
+ fwp_vres = (struct fwp_vres *) vres->priv;
+ fwp_vres_destroy(fwp_vres);
basic = fres_contract_get_basic(vres->allocated);
fres_contract_id_to_string(id, &vres->id, sizeof(id));
fres_block_basic *basic;
fres_block_fwp_sched *fwp_sched;
fwp_vres_params_t vparams;
- fwp_vres_d_t fwp_vresd;
+ struct fwp_vres *fwp_vres;
int rv;
size_t bytes;
vparams.budget = bytes;
vparams.period = basic->period;
vparams.ac_id = fwp_sched->ac_id;
- fwp_vresd = vres->priv;
+ fwp_vres = vres->priv;
/* Changing vres */
- if ((rv = fwp_vres_set_params(fwp_vresd, &vparams))) {
+ if ((rv = fwp_vres_set_params(fwp_vres, &vparams))) {
return rv;
}