]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Manager fixes
authorMartin Molnar <molnam1@fel.cvut.cz>
Thu, 24 Jan 2008 02:13:47 +0000 (03:13 +0100)
committerMartin Molnar <molnam1@fel.cvut.cz>
Thu, 24 Jan 2008 02:13:47 +0000 (03:13 +0100)
fwp/fwp_manager/fwpmgr.c
fwp/libfwp/include/fwp_ctable.h
fwp/libfwp/include/fwp_proto.h
fwp/libfwp/src/fwp_ctable.c

index 16863074fc6075aab87c5f0117422e47c6c18dcc..5d3c0fc932018928e66a785a245f3a01bd9336f2 100644 (file)
@@ -124,7 +124,7 @@ int fwp_agent_negotiate_response(unsigned int hid, struct fwp_msgb *msgb)
        struct fwp_contract cnt_res;
        struct fwp_ctable_entry *cnt_req;
        struct fwp_msgb *msgb_res;
-
+       
        fwp_msg_contract_pull(msgb, &cnt_res);
        cnt_req = fwp_ctable_get(&ctable_negotiate, hid);
 
@@ -144,26 +144,24 @@ int fwp_agent_negotiate_response(unsigned int hid, struct fwp_msgb *msgb)
        msgb_res->start = msgb_res->data = msgb_res->start + msgb_res->addrlen;
        msgb_res->tail = msgb_res->start + msgb_res->len;
        
-       memcpy(msgb_res->addr, &cnt_req->saddr, sizeof(msgb_res->addrlen));
        memcpy(msgb_res->data, msgb->start, sizeof(msgb_res->len));
+       memcpy((void*)msgb_res->addr, (void*)msgb->addr, 
+                       sizeof(msgb->addrlen-1));
 
-       FWP_DEBUG("cnt_req->addrlen = %d\n", cnt_req->addrlen);
-       FWP_DEBUG("cnt_req->addr = %s\n", (char*)&cnt_req->saddr);
-       FWP_DEBUG("msgb->addr = %s\n", msgb->addr);
-       fwp_ctable_remove(&ctable_negotiate, hid);
+       //fwp_ctable_remove(&ctable_negotiate, hid);
        
        /*send response through unix socket */
-       if (sendto(fwp_lsockfd, msgb_res->start, msgb_res->len, 0,
-                     (struct sockaddr*)msgb_res->addr,
-                     msgb_res->addrlen) == -1){
+       if (sendto(fwp_lsockfd, msgb_res->start, msgb_res->len, 0, 
+                               (struct sockaddr *)msgb_res->addr, 
+                               msgb_res->addrlen) == -1) {
                
-       //      if (errno == EINTR) 
-       //              continue;
-               perror("fwp_agent_negotiate_response:Error while sending msg.\n");
-       }
+       /*      if (errno == EINTR) 
+                       continue;*/
+        perror("fwp_agent_negotiate_response:Error while sending msg.\n");
        
-       /*fwp_vres_send(service_vres_id, msgb_res);*/
+       }       
        
+       /*fwp_vres_send(service_vres_id, msgb_res);*/
        return 0;
 }
 
@@ -175,18 +173,19 @@ void fwp_agent_negotiate_request(unsigned int hid, struct fwp_msgb *msgb)
        fwp_msg_contract_pull(msgb, &cnt); 
 
        memcpy(&ctentry.contract, &cnt, sizeof(cnt));
-       memcpy(&ctentry.saddr, msgb->addr, sizeof(msgb->addrlen));
+       memcpy((void*)&ctentry.saddr, (void*)msgb->addr, 
+                       sizeof(msgb->addrlen));
        ctentry.addrlen = msgb->addrlen;
        ctentry.hid = hid;
        hid = fwp_ctable_put(&ctable_negotiate, &ctentry);
 
        fwp_agent_negotiate_response(hid, msgb);
-       /*msgb->data =  msgb->start;
+       msgb->data =  msgb->start;
        fwp_msg_header_put(msgb, FWP_NEGT_REQ, hid); 
        msgb->addrlen = sizeof(fwp_mngr_addr);
        msgb->addr = (unsigned char*)&fwp_mngr_addr;
 
-       fwp_vres_send(service_vres_id, msgb);*/
+       fwp_vres_send(service_vres_id, msgb);
 }
 
 void fwp_agent_msg_handler(struct fwp_msgb *msgb)
@@ -225,6 +224,7 @@ int fwp_mngt_init(enum fwp_opmode_t opmode, char *fwp_mngr_addr_s)
                                return (fwp_lsockfd);
                }
                        
+               FWP_DEBUG("AP address = %s\n", fwp_mngr_addr_s);
                fwp_mngr_addr.sin_family = AF_INET;
                fwp_mngr_addr.sin_addr.s_addr = inet_addr(fwp_mngr_addr_s);
                fwp_mngr_addr.sin_port = htons(FWP_MNGR_UDP_PORT);
index 4db70d7733f3b8790bdc5791b4b37433b3d43b54..7f2704f2d33f08f4429a60c3c054d84c488ca7f7 100644 (file)
@@ -5,6 +5,7 @@
 #include "fwp_contract.h"
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <sys/un.h>
 
 enum ctable_entry_status_t {
        FWP_CTENTRY_EMPTY = 0,
@@ -14,7 +15,7 @@ enum ctable_entry_status_t {
 struct fwp_ctable_entry {
        unsigned int hid;
        struct fwp_contract contract;
-       struct sockaddr saddr;
+       struct sockaddr_un saddr;
        socklen_t addrlen;
        int status;
 };
index 69f1491a462d74f77144200a2d6d6b38e8eda720..019d0c16ae9e0a4046cf1a8e5c0601950841813b 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _FWP_PROTO_H
 #define _FWP_PROTO_H
 
-#define FWP_AGENT_UNIXPATH  "fwpag"
-#define FWP_CLIENT_UNIXPATH "fwpcl" /*temporarily*/
+#define FWP_AGENT_UNIXPATH  "fag"
+#define FWP_CLIENT_UNIXPATH "fcl" /*temporarily*/
 
 
 int fwp_init();
index 79316d256763c3bd1535c3781c508e869cbc49bd..f76c2d0c68526d6f20afc21a92eb09388c05c521 100644 (file)
@@ -31,7 +31,8 @@ int fwp_ctable_put(struct fwp_ctable* ctable, struct fwp_ctable_entry* entry)
        return id;
 }
 
-struct fwp_ctable_entry* fwp_ctable_get(struct fwp_ctable* ctable, unsigned int id)
+struct fwp_ctable_entry* fwp_ctable_get(struct fwp_ctable* ctable, 
+                                       unsigned int id)
 {
        return (&ctable->entry[id]);
 }