]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/frsh_fwp/fwp_fra.c
Catch missing contract parameters in allocator
[frescor/fwp.git] / fwp / lib / frsh_fwp / fwp_fra.c
index 451df78e8fa7d75e46a13e80c6ed59dc9747d84b..31559cc12ca8187b9e6243ed0e5b5a96500b260a 100644 (file)
@@ -71,11 +71,13 @@ static int create_vres(fres_vres_t *vres, void *priv)
        /* 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;
 
        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;       
+       vparams.ac_id = fwp_sched->ac_id;
        /* Create vres */
        if ((rv = fwp_vres_create(&vparams, &fwp_vresd))) {
                return  rv;
@@ -136,6 +138,8 @@ int change_vres(fres_vres_t *vres, void *priv)
        printf("Changing FWP VRes (id=%s, period=%ld ms, budget=%ld bytes AC=%d)\n",
                id, fosa_rel_time_to_msec(basic->period), 
                vparams.budget, vparams.ac_id);
+
+       vres->perceived = vres->new;
        
        return 0;
 }