]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/frsh_fwp/fwp_fra.c
Introduce src parameter in FWP contracts
[frescor/fwp.git] / fwp / lib / frsh_fwp / fwp_fra.c
index 31559cc12ca8187b9e6243ed0e5b5a96500b260a..85038db65b4576d4500b08ac3dc79c700156a778 100644 (file)
@@ -52,6 +52,7 @@
 #include "fwp_res.h"
 #include "fwp_idl.h"
 #include <stdio.h>
+#include <arpa/inet.h>
 
 
 UL_LOG_CUST(ulogd_fra_fwp);
@@ -63,10 +64,12 @@ static int create_vres(fres_vres_t *vres, void *priv)
        char id[40];
        fres_block_basic *basic;
        fres_block_fwp_sched *fwp_sched;
+       fres_block_fwp *fwp;
        fwp_vres_params_t vparams;
-       fwp_vres_d_t      fwp_vresd;
+       fwp_vres_d_t      fwp_vresd = {0};
        int rv;
        size_t bytes;
+       char src[21] = "";
        
        /* Prepare vres parameters */
        basic = fres_contract_get_basic(vres->new);
@@ -74,10 +77,16 @@ static int create_vres(fres_vres_t *vres, void *priv)
        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;
+       if (fwp) {
+               vparams.src.s_addr = fwp->src;
+               snprintf(src, sizeof(src), " src=%s", inet_ntoa(vparams.src));
+       }
        /* Create vres */
        if ((rv = fwp_vres_create(&vparams, &fwp_vresd))) {
                return  rv;
@@ -85,9 +94,9 @@ static int create_vres(fres_vres_t *vres, void *priv)
        vres->priv = fwp_vresd;
 
        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%s)\n",
                id, fosa_rel_time_to_msec(basic->period), 
-               vparams.budget, vparams.ac_id);
+                 vparams.budget, vparams.ac_id, src);
        
        return 0;
 }