]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - wme_test/wserver.c
Merge branch 'master' of rtime.felk.cvut.cz:frescor/fwp
[frescor/fwp.git] / wme_test / wserver.c
index 37101aa217b0bba4c2e4341981c1f9d7a76a5ee1..1b716d2583c97f6075503cd3d216b28eea7b3afd 100644 (file)
@@ -19,7 +19,7 @@
 
 bool opt_same_interface = false;
 
-int ac_sockfd[AC_NUM];
+static int ac_sockfd[AC_NUM];
 
 struct receiver {
        unsigned received, last_received;
@@ -30,8 +30,8 @@ void stopper()
 {
        int i;
 
-       for (i = 0 ; i < AC_NUM; i++) 
-               close(ac_sockfd[AC_NUM]);
+       for (i = 0; i < AC_NUM; i++) 
+               close(ac_sockfd[i]);
 
        exit(0);
 }
@@ -91,13 +91,15 @@ void* qhandler(void* queue)
        union msg_buff buff;
        struct  sockaddr_in rem_addr;
        int     mlen;
-       unsigned int ac, rem_addr_length; 
+       unsigned int rem_addr_length;
+       intptr_t ac;
        char cbufrec[512], cbufsend[512];
        struct iovec  iov;
        struct msghdr msg;
        struct in_pktinfo *ipi = NULL;
+       struct timespec ts;
        
-       ac = (int) queue;
+       ac = (intptr_t) queue;
         rem_addr_length=sizeof(rem_addr);
 
        block_signals();
@@ -121,7 +123,8 @@ void* qhandler(void* queue)
                        perror("recvmsg");
                        return NULL;
                }
-               clock_gettime(CLOCK_REALTIME, &buff.msg.sendback_timestamp);
+               clock_gettime(CLOCK_REALTIME, &ts);
+               buff.msg.sendback_timestamp = ts.tv_sec*1000000000 + ts.tv_nsec;
 
 
                if (opt_same_interface) {
@@ -165,6 +168,10 @@ void* qhandler(void* queue)
 #endif
                receivers[ac].received++;
                msg.msg_iov->iov_len = mlen;
+#ifdef WITH_FWP
+               /* resp_port is already stored in network order */
+               rem_addr.sin_port = buff.msg.resp_port;
+#endif
                while (sendmsg(ac_sockfd[ac], &msg, 0) < 0) {
                            if (errno == EINTR) continue;
                            perror("sendmsg");
@@ -176,7 +183,8 @@ void* qhandler(void* queue)
 
 int main(int argc, char *argv[])
 {
-       int ac,rc;
+       int rc;
+       intptr_t ac;
        pthread_attr_t attr;
        pthread_t thread;