1 #ifndef _FWP_CONTRACT_H
2 #define _FWP_CONTRACT_H
6 #include "ul_gavlcust.h"
10 *typedef struct mfrsh_contract_ops{
11 * fwp_contract_d_t (*create)(fwp_contract_t *contract);
12 * int (*reserve)(fwp_contract_d_t contractd);
13 * int (*commit)(fwp_contract_d_t contractd);
14 *} mfrsh_contract_ops_t;
16 * typedef struct mfrsh_contract_d {
17 * mfrsh_resource_id_t resource_id;
18 * mfrsh_contract_id_t contract_id;
22 /**< Contract Status */
25 FWP_CONT_REQUESTED = 1,
26 FWP_CONT_REJECTED = 2,
27 FWP_CONT_NEGOTIATED = 3,
29 } fwp_contract_status_t;*/
32 FWP_CONT_NOTNEGOTIATED = 0,
33 FWP_CONT_RESERVED = 1,
34 FWP_CONT_NEGOTIATED = 2
35 } fwp_contract_status_t;
39 * It is an external representation of contract intented for application
45 int budget; /**< bytes per period */
46 int period_usec; /**< all time units are in microseconds */
49 struct fwp_contract_data;
50 typedef struct fwp_contract_data* fwp_contract_d_t;
52 #ifdef _FWP_INTERNALS_
53 typedef fwp_vres_id_t fwp_contract_id_t;
57 * It is an internal representation of contract.
61 struct fwp_contract_data {
63 /**< contract specified by user */
64 fwp_contract_t contract;
65 /**< parameters from contract negotiated for vres */
66 fwp_vres_params_t vres_params;
67 /**< the address of agent from that the contract comes */
68 /*fwp_transaction_id_t trans_id;*/
69 /* pointer to fwp_vres or fwp_participant */
72 fwp_contract_status_t status;
74 ul_list_node_t list_node;
75 gavl_node_t tree_node;
76 } fwp_contract_data_t;
79 static inline fwp_contract_data_t* fwp_contract_data_new()
81 return memset(malloc(sizeof (fwp_contract_data_t)),'\0',
82 sizeof(fwp_contract_data_t));
85 int fwp_contract_reserve(fwp_contract_d_t contractd);
86 int fwp_contract_commit(fwp_contract_d_t contractd, fwp_vres_d_t *vresdp);
90 fwp_contract_d_t fwp_contract_create(fwp_contract_t *contract);
91 int fwp_contract_negotiate(fwp_contract_d_t contract, fwp_vres_d_t *vresdp);
94 #endif /*_FWP_CONTRACT_H */