]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Compilation fixes
authorMartin Molnar <molnar@sum.(none)>
Tue, 11 Mar 2008 16:47:06 +0000 (17:47 +0100)
committerMartin Molnar <molnar@sum.(none)>
Tue, 11 Mar 2008 16:47:06 +0000 (17:47 +0100)
15 files changed:
fwp/lib/fwp_contract.c
fwp/lib/fwp_contract.h
fwp/lib/fwp_msg.c
fwp/lib/fwp_msg.h
fwp/lib/fwp_msgb.h
fwp/lib/fwp_proto.c
fwp/lib/fwp_proto.h
fwp/lib/fwp_vres.h
fwp/mngt/Makefile.omk
fwp/mngt/fwp_agent.c
fwp/mngt/fwp_agent_table.c
fwp/mngt/fwp_agent_table.h
fwp/mngt/fwp_contract_table.c
fwp/mngt/fwp_contract_table.h
fwp/mngt/fwp_mngr.c

index 22b3f78dd06eeab082132ded669f326555446727..71669f21d42902e3d20f9d35af42f0f0d9783a39 100644 (file)
@@ -25,7 +25,7 @@ int fwp_contract_negotiate(struct fwp_contract *contract, int *vres_id)
        fwp_vres_params_t vparams;
        fwp_contract_status_t status;
        struct fwp_msgb *msgb;
-       unsigned int code, hid;
+       unsigned int code, hid, _appid;
        struct sockaddr_un from;
        socklen_t fromlen = sizeof(struct sockaddr_un);
        int rc;
@@ -37,7 +37,7 @@ int fwp_contract_negotiate(struct fwp_contract *contract, int *vres_id)
        if (!msgb) 
                return -ENOMEM;
        
-       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_REQ, 0);
+       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_REQ, getpid(), 0);
        fwp_msgb_put(msgb, sizeof(struct fwp_msg_header));
        
        fwp_msg_contract_deflate(msgb->tail, contract);
@@ -54,7 +54,7 @@ int fwp_contract_negotiate(struct fwp_contract *contract, int *vres_id)
                        &from, &fromlen); 
        FWP_DEBUG("Negotiation response received from agent\n");
        
-       fwp_msg_header_inflate(msgb->data, &code, &hid);
+       fwp_msg_header_inflate(msgb->data, &code, &_appid, &hid);
        fwp_msgb_pull(msgb, sizeof(struct fwp_msg_header));
 
        fwp_msg_vres_params_inflate(msgb->data, &status, &vparams);
index 719c463828cadcc55c3d969df7775397ae810d26..11d3a8bcc9050ceecd7084ab855cc0d58d7e5e88 100644 (file)
@@ -26,6 +26,7 @@ typedef enum {
  * programmer.
  * 
  */
+typedef 
 struct fwp_contract {
        int budget;             /**< bytes per period */
        int period_usec;        /**< all time units are in microseconds */
index 8a56bfada1288866673a272641caabb71784ccd0..6dcb06f933094d9c2cbc9e6d11bdf127f40bcfd8 100644 (file)
@@ -1,7 +1,7 @@
 #include "fwp_msg.h"
 
 void fwp_msg_header_deflate(unsigned char *data, unsigned int code, 
-                               unsigned int hid)
+                               unsigned int appid, unsigned int hid)
 {
        struct fwp_msg_header* header;
 
@@ -10,17 +10,19 @@ void fwp_msg_header_deflate(unsigned char *data, unsigned int code,
                 fwp_msgb_put(msgb, sizeof(struct fwp_msg_header));*/
 
        header->code = code;
+       header->appid = htonl(appid);
        header->hid = htons(hid);
 }
 
 void fwp_msg_header_inflate(unsigned char *data, unsigned int *code, 
-                               unsigned int *hid)
+                               unsigned int *appid, unsigned int *hid)
 {
        struct fwp_msg_header *header;
        
        header = (struct fwp_msg_header*) data;
        /*fwp_msgb_pull(msgb,sizeof(struct fwp_msg_header));*/
        *code = header->code;
+       *appid = ntohl(header->appid);
        *hid = ntohs(header->hid);
 }
 
index 34499884e65c4c554cdd1d9ee45d4229158ff0e7..283de72af0e12d63a95ecfd66c8b9e89807197a8 100644 (file)
@@ -9,9 +9,16 @@
 #define FWP_CONTNEGT_REQ  0x02  /* contract negotiation request */
 #define FWP_CONTNEGT_RES  0x03  /* contract negotiation response */
 
+#if 0
+struct fwp_handshake{  
+       unsigned int id;        /* hid */
+       unsigned int appid;     /* pid or port */
+} fwp_handshake_t; 
+#endif
+
 struct fwp_msg_header{
+       uint32_t appid;         /**< application id */
        uint16_t hid;           /**< handshake ID */
-       uint16_t appid;         /**< application id */
        uint8_t code;
 }__attribute__((packed));
 
@@ -30,9 +37,9 @@ struct fwp_msg_vres_params{
 
 
 void fwp_msg_header_deflate(unsigned char *data, unsigned int code, 
-                           unsigned int hid);
+                           unsigned int appid, unsigned int hid);
 void fwp_msg_header_inflate(unsigned char *data, unsigned int *code, 
-                           unsigned int *hid);
+                           unsigned int *appid, unsigned int *hid);
 
 void fwp_msg_contract_deflate(unsigned char *data, struct fwp_contract *cont);
 void fwp_msg_contract_inflate(unsigned char *data, struct fwp_contract *cont);
index 0666958fdc2ffbc7378ae9ba1da84c405c2182d3..4bc19c68ee238c0d4d83b522aded2a776bdd2ae2 100644 (file)
@@ -17,6 +17,7 @@ struct fwp_sockaddr{
        socklen_t       addrlen;
 } fwp_sockaddr_t;
 
+typedef
 struct fwp_msgb {
        size_t                  buf_size;
        size_t                  len;            /**< msg data length*/
index a21569fa608612d9f1fd90212186f12a782e8701..dfd4df3b347c05cb67bdc24a54d1b817a6cc90a8 100644 (file)
@@ -1,8 +1,9 @@
 #include "fwp_proto.h"
 
-struct sockaddr_un fwp_agent_addr;
-struct sockaddr_un fwp_client_addr;
-int    fwp_client_sockfd;
+struct         sockaddr_un fwp_agent_addr;
+struct         sockaddr_un fwp_client_addr;
+int            fwp_client_sockfd;
+unsigned int   appid;  
 
 /*
  *TODO: return values other than -1
@@ -27,7 +28,8 @@ int fwp_init()
        bzero(&fwp_agent_addr, sizeof(fwp_agent_addr));
        fwp_agent_addr.sun_family = AF_UNIX;
        strcpy(fwp_agent_addr.sun_path, FWP_AGENT_UNIXPATH);
-       
+
+       appid = getpid();       
        return 0;
 }
 
index 9b887d258b8a2935ded13f227d42bb41f0894675..ed2809a2c4ff1d4776b64abd0bca993f9a951923 100644 (file)
@@ -11,6 +11,8 @@
 #define FWP_AGENT_UNIXPATH  "/tmp/fwpagent"
 #define FWP_CLIENT_UNIXPATH "/tmp/fwpclient" /*temporarily*/
 
+extern unsigned int appid;
+
 int fwp_init();
 
 #endif
index 3e6135d3c110eae9895d4581964dfa16c900f5d1..09deac6b1d870825d93f760c3ad9bab2ab7f7ff3 100644 (file)
@@ -28,7 +28,7 @@ struct fwp_vres_params {
        /**< all time units are in microseconds */      
        int             period_usec; 
        /**< STA-unique identifier of vres params assigned by manager*/ 
-       unsigned int    vres_id; 
+       unsigned int    id; 
        fwp_ac_t        ac_id;          /**< AC id ~ priority of vres */
 } fwp_vres_params_t;
 
index 7ad123c1b0ef566db2abf3017c1df192d730be75..9a37f55cd298aa22cd971bcc08f6d581aff1f489 100644 (file)
@@ -2,7 +2,7 @@ bin_PROGRAMS = fwpagent fwpmngr
 
 CFLAGS = -Wall -D_REENTRANT -g
 fwpagent_SOURCES+= fwp_agent.c fwp_forwardtbl.c
-fwpmngr_SOURCES+= fwp_mngr.c fwp_forwardtbl.c fwp_contract_table.c fwp_admctrl.c
+fwpmngr_SOURCES+= fwp_mngr.c fwp_contract_table.c fwp_agent_table.c fwp_admctrl.c
 #fwpmngr_SOURCES+= admtest_stupid.c
 #fwpmngr_SOURCES+= admtest_utilization.c
 
index 51b1fd4dba022326bce7773345d94024a30bc866..50639e8a3100c45a707b4117e1d067d458640582 100644 (file)
@@ -143,7 +143,7 @@ int fwp_agent_input(struct fwp_msgb **pmsgb)
 /**
  * Handler for contract negotiation request 
  */
-void fwp_agent_contnegt_request(struct fwp_msgb *msgb)
+void fwp_agent_contract_negt_request(struct fwp_msgb *msgb)
 {
        fwp_handshake_t handshake;      
        
@@ -154,7 +154,7 @@ void fwp_agent_contnegt_request(struct fwp_msgb *msgb)
 
        /* Add hanshake id to header */
        fwp_msgb_push(msgb, sizeof(struct fwp_msg_header));
-       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_REQ, handshake.id); 
+       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_REQ, 0, handshake.id); 
        
        /* forward request to manager*/
        FWP_DEBUG("Request forwarded to vres\n");
@@ -165,7 +165,7 @@ void fwp_agent_contnegt_request(struct fwp_msgb *msgb)
 /**
  * Handler for contract negotiation response 
  */
-int fwp_agent_contnegt_response(struct fwp_msgb *msgb, unsigned int hid)
+int fwp_agent_contract_negt_response(struct fwp_msgb *msgb, unsigned int hid)
 {
        fwp_handshake_t *handshake;     
        struct sockaddr_un *unsock;
@@ -226,21 +226,21 @@ int fwp_agent_contnegt_response(struct fwp_msgb *msgb, unsigned int hid)
  */
 void fwp_agent_msg_handler(struct fwp_msgb *msgb)
 {
-       unsigned int code, hid;
+       unsigned int code, hid, appid;
 
-       fwp_msg_header_inflate(msgb->data, &code, &hid);
+       fwp_msg_header_inflate(msgb->data, &code, &appid, &hid);
        fwp_msgb_pull(msgb, sizeof(struct fwp_msg_header));
        FWP_DEBUG("code = %d , hid = %d\n", code, hid);
                        
        switch (code) {
                case  FWP_CONTNEGT_REQ: 
                        FWP_DEBUG("Negotiation Request received\n");    
-                       fwp_agent_contnegt_request(msgb);       
+                       fwp_agent_contract_negt_request(msgb);  
                        break;
 
                case FWP_CONTNEGT_RES: 
                        FWP_DEBUG("Negotiation Response received\n");   
-                       fwp_agent_contnegt_response(msgb, hid);
+                       fwp_agent_contract_negt_response(msgb, hid);
                        break;
                
                default:
index f655b42da943c68fe54f9c1815e601f1da01bcc7..12aac47533500b70da239e373fe267543884d571 100644 (file)
@@ -1,11 +1,13 @@
 #include "fwp_agent_table.h"
 
+#include <stdlib.h>
+
 GAVL_CUST_NODE_INT_DEC(_fwp_agent_table, fwp_agent_table_t, fwp_agent_data_t,
-                       unsigned int, agent_tree, tree_node, addr, 
+                       unsigned int, agent_tree, tree_node, _addr, 
                        gavl_cmp_int);
 
 GAVL_CUST_NODE_INT_IMP(_fwp_agent_table, fwp_agent_table_t, fwp_agent_data_t, 
-                       unsigned int, agent_tree, tree_node, label
+                       unsigned int, agent_tree, tree_node, _addr
                        gavl_cmp_int);
 
 void fwp_agent_table_init(struct fwp_agent_table *tbl)
@@ -14,24 +16,21 @@ void fwp_agent_table_init(struct fwp_agent_table *tbl)
        tbl->nr_agents = 0;
 }
 
-int fwp_agent_table_insert(fwp_agent_table_t *tbl, 
+void fwp_agent_table_insert(fwp_agent_table_t *tbl, 
                                fwp_sockaddr_t *agent_sockaddr)
 {
-{
-       unsigned int addr;
        struct sockaddr_in *addr_in;
+       fwp_agent_data_t *agdata;
 
-       addr_in = (struct sockaddr_in*) agent_sockaddr->addr;
-       addr = addr_in->sin_addr; 
-
-       fwp_agent_table_find(tbl, agent_sockaddr);
+       agdata = fwp_agent_table_find(tbl, agent_sockaddr);
        if (!agdata) {
                /* Alloc new agent data */
                agdata = (fwp_agent_data_t*)malloc(sizeof(fwp_agent_data_t));
-               agdata->addr = addr;
-               memcpy(agdata->peer, agent_addr, sizeof(fwp_sockaddr));
-               fwp_contract_table_init(agdata->contract_tree);
-               fwp_agent_table_insert(agent_table, &agdata);
+               addr_in = (struct sockaddr_in*) agent_sockaddr->addr;
+               agdata->_addr = addr_in->sin_addr.s_addr; 
+               memcpy(&agdata->addr, agent_sockaddr, sizeof(fwp_sockaddr_t));
+               fwp_contract_table_init(&agdata->contract_table);
+               _fwp_agent_table_insert(tbl, agdata);
        }
        /* obtain fwp ctable mutex */
        _fwp_agent_table_insert(tbl, agdata);
@@ -46,7 +45,7 @@ fwp_agent_data_t* fwp_agent_table_find(fwp_agent_table_t *tbl,
        struct sockaddr_in *addr_in;
 
        addr_in = (struct sockaddr_in*) agent_sockaddr->addr;
-       addr = addr_in->sin_addr; 
+       addr = addr_in->sin_addr.s_addr
        
        return _fwp_agent_table_find(tbl, &addr);
 }
index b8042f55005beb47166c50f77f30b329a8cb078b..e008723fa42ca0ed6f519639ada7443af9e733fc 100644 (file)
@@ -1,29 +1,34 @@
 #ifndef _FWP_AGENT_TABLE_H
 #define _FWP_AGENT_TABLE_H
 
-typedef
+#include "fwp_msgb.h"
+#include "fwp_contract_table.h"
+
+#include "ul_list.h"
+#include "ul_gavlcust.h"
+
+typedef 
 struct fwp_agent_data {
-       int                     addr;
-       fwp_sockaddr            peer;
-       gavl_node_t             *contract_tree;
+       unsigned int            _addr;
+       fwp_sockaddr_t          addr;
+       fwp_contract_table_t    contract_table;
        gavl_node_t             tree_node;
 } fwp_agent_data_t;
 
 typedef
 struct fwp_agent_table {
-       unsigned int                    nr_agent;
+       unsigned int                    nr_agents;
        /*pthread_mutex_t               lock; */
        /*gavl_cust_root_field_t        root;*/
        gavl_node_t                     *agent_tree;
 } fwp_agent_table_t;
 
 void fwp_agent_table_init(fwp_agent_table_t *tbl);
-int fwp_agent_table_insert(fwp_agent_table_t *tbl, 
-                               fwp_agent_data_t *contdata);
-fwp_agent_data_t* 
-fwp_agent_table_find(fwp_agent_table_t *tbl, unsigned int id);
-
+void fwp_agent_table_insert(fwp_agent_table_t *tbl, 
+                               fwp_sockaddr_t *agent_sockaddr);
+fwp_agent_data_t* fwp_agent_table_find(fwp_agent_table_t *tbl, 
+                                       fwp_sockaddr_t *agent_sockaddr);
 int fwp_agent_table_delete(fwp_agent_table_t *tbl,
                                fwp_agent_data_t *contdata);
 
-#endif /*_FWP_AGENT_TABLE_H*/
+#endif /*_FWP_AGENT_TABLE_H */
index a88776ed363a8302ff1bf8d393b555d722b2a850..d4cf1ef36cf666a99d2a9a6ddf812f04d251026e 100644 (file)
@@ -22,7 +22,7 @@ int fwp_contract_table_insert(fwp_contract_table_t *tbl,
         
        /* obtain fwp ctable mutex */
        /* find free contract */
-       contdata->label = id;
+       contdata->vres_params.id = id;
        _fwp_contract_table_insert(tbl, contdata);
        tbl->nr_contracts++;
        /* release fwp_contract_table mutex */  
index 0c5e98ab9c03ca60ddff7b075f4ffc157a5a227b..3325d1fb5d8fb780c22a611074b11541f5010dc5 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <string.h>
 
+struct fwp_agent_data;
 /**
  * FWP vres parameters 
  * It is internal representation of the contract used inside 
@@ -23,7 +24,7 @@ struct fwp_contract_data {
        /* parameters from contract negotiated for vres */
        fwp_vres_params_t               vres_params;
        /**< the address of agent from that the contract comes */
-       fwp_agent_data_t                *agent; 
+       struct fwp_agent_data           *agent; 
        /**< application identifier */
        unsigned int                    appid;
        /**< handshake ID, used in request-respone message exchange to 
@@ -59,7 +60,7 @@ struct fwp_contract_table {
        /*gavl_cust_root_field_t        root;*/
        unsigned int                    id_counter;
        /*ul_list_head_t                cont_list;*/
-       gavl_node_t                     *cont_tree;
+       gavl_node_t                     *contract_tree;
 } fwp_contract_table_t;
 
 void fwp_contract_table_init(fwp_contract_table_t *tbl);
index 010a88ca334ce3376caf37085dafcf6334a01cb0..ae965416196a305e9bc398b2be81758fe452d20e 100644 (file)
@@ -1,6 +1,7 @@
 //#include "admtest.h"
 #include "fwp_mngt.h"
 #include "fwp_contract_table.h"
+#include "fwp_agent_table.h"
 #include "fwp_admctrl.h"
 
 //static struct sockaddr_un fwp_laddr;         /**< FWP local address */
@@ -20,13 +21,10 @@ unsigned int                service_vres_id;        /**< id of service vres */
 /* Agent table */
 fwp_agent_table_t      agent_table;            /**< agent table*/
 
-/* Contract table */
-fwp_contract_table_t   contractbl;             /**< contract table*/
-
 /* List of requested contracts */
 /*fwp_contractlist_t   contractlist_req;*/
 /* for simplicity only one contract is to be negotiated now*/
-fwp_contract_data_t    *cont_req;
+fwp_contract_data_t    *contract_req;
 
 /* Admission control test */
 fwp_admctrl_test_t fwp_admctrl_test = &fwp_admctrl_stupid;
@@ -138,7 +136,7 @@ int fwp_mngr_input(struct fwp_msgb **pmsgb)
 }
 
 int 
-fwp_mngr_contract_negt_response(unsigned int hid, fwp_contract_data_t *contdata)
+fwp_mngr_contract_negt_response(fwp_contract_data_t *contdata)
 {
        struct fwp_msgb         *msgb;
 
@@ -149,21 +147,22 @@ fwp_mngr_contract_negt_response(unsigned int hid, fwp_contract_data_t *contdata)
                return -ENOMEM;
        }
  
-       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_RES, hid);
+       fwp_msg_header_deflate(msgb->tail, FWP_CONTNEGT_RES, contdata->appid, 
+                               contdata->hid);
        fwp_msgb_put(msgb, sizeof(struct fwp_msg_header));
        fwp_msg_vres_params_deflate(msgb->tail, contdata->status, 
                                    &contdata->vres_params);
        fwp_msgb_put(msgb, sizeof(struct fwp_msg_vres_params));
        
-       msgb->peer = &contdata->source;
-       /* add sending to local app through unix socket */
+       msgb->peer = &contdata->agent->addr;
+       /* TODO: add sending to local app through unix socket */
        fwp_vres_send(service_vres_id, msgb);
        return 0;
 }
 
-static void fwp_mngr_contract_accept(fwp_contract_data_t *contdata)
+static int fwp_mngr_contract_accept(fwp_contract_data_t *contdata)
 {
-       fwp_agent_data  agdata;
+       fwp_agent_data_t *agdata;
 
        if (contdata->status != FWP_CONT_NEGOTIATED) {
                return -1;
@@ -171,17 +170,17 @@ static void fwp_mngr_contract_accept(fwp_contract_data_t *contdata)
        
        agdata = contdata->agent;
        if (agdata) {
-               fwp_contract_table_insert(agdata->contract_tree, contdata);
+               fwp_contract_table_insert(&agdata->contract_table, contdata);
        }
        return 0;
 }
 
-int fwp_mngr_contract_negt_request(fwp_fwp_msgb_t *msgb,
+int fwp_mngr_contract_negt_request(fwp_msgb_t *msgb, 
+                                       unsigned int appid, unsigned int hid, 
                                        fwp_contract_data_t **contract_data)
 {
        fwp_contract_t          contract;
        fwp_contract_data_t     *contdata;
-       fwp_agent_data_t        agdata;
        
        /* deserialize contract from message */ 
        fwp_msg_contract_inflate(msgb->data, &contract); 
@@ -189,16 +188,15 @@ int fwp_mngr_contract_negt_request(fwp_fwp_msgb_t *msgb,
 
        /* prepare contract data structure */           
        contdata = (fwp_contract_data_t*) malloc(sizeof(fwp_contract_data_t));
-       /* copy contract */
+       /* copy contract to contract_data */
        memcpy(&contdata->contract, &contract, sizeof(contdata->contract));
        /* set pointer to agent data */
-       agdata = fwp_mngr_agent_data_get(msgb->peer);
-       if (!agdata) {
-               return -1;
-       }
-       contdata->agent = agdata;
-
+       contdata->agent = fwp_agent_table_find(&agent_table, msgb->peer);
+       /* set appid and hid */
+       contdata->appid = appid;
+       contdata->hid = hid;
        contdata->status = FWP_CONT_REQUESTED;
+
        fwp_msgb_free(msgb);
        
        /* put contract data into contract requested list */
@@ -210,28 +208,29 @@ int fwp_mngr_contract_negt_request(fwp_fwp_msgb_t *msgb,
 
 static void fwp_mngr_msg_handler(struct fwp_msgb *msgb)
 {
-       unsigned int code, hid;
-       fwp_sockaddr_t  sockaddr;
+       unsigned int code, hid, appid;
 
-       fwp_msg_header_inflate(msgb->data, &code, &hid);
+       fwp_msg_header_inflate(msgb->data, &code, &appid, &hid);
        fwp_msgb_pull(msgb, sizeof(struct fwp_msg_header));
-       FWP_DEBUG("code = %d , hid = %d\n", code, hid);
+       FWP_DEBUG("code = %d , appid = %d hid = %d\n", code, appid, hid);
        
-       agdata = fwp_mngr_agent_data_get(msgb->peer);
+       fwp_agent_table_insert(&agent_table, msgb->peer);
 
        switch (code) {
                case  FWP_CONTNEGT_REQ: 
-                       FWP_DEBUG("Negotiation Request received\n");    
-                       fwp_mngr_contract_negt_request(msgb, &contract_req);    
+                       FWP_DEBUG("Negotiation Request received\n");
+                       fwp_mngr_contract_negt_request(msgb, 
+                                                       appid, hid, 
+                                                       &contract_req);
                        
                        FWP_DEBUG("Executing admission control test\n");
                        fwp_admctrl_test(contract_req);
                        
                        /* right now simply add to contract table if negotiated */
-                       fwp_mngr_contract_accept(&msgb->peer, contract_req);
+                       //fwp_mngr_contract_accept(&msgb->peer, contract_req);
 
                        FWP_DEBUG("Preparing NEGT_RES msg\n");
-                       fwp_mngr_contract_negt_response(hid, contract_req)
+                       fwp_mngr_contract_negt_response(contract_req);
                        break;
                default:
                        printf("Invalid message\n.");