Revision: 537
          http://vde.svn.sourceforge.net/vde/?rev=537&view=rev
Author:   danielel
Date:     2012-01-21 18:07:24 +0000 (Sat, 21 Jan 2012)
Log Message:
-----------
olsr: improved msg hello pingpong

Modified Paths:
--------------
    branches/vde-router/vde-2/src/vde_router/vder_olsr.c
    branches/vde-router/vde-2/src/vde_router/vder_olsr.h

Modified: branches/vde-router/vde-2/src/vde_router/vder_olsr.c
===================================================================
--- branches/vde-router/vde-2/src/vde_router/vder_olsr.c        2012-01-21 
15:46:56 UTC (rev 536)
+++ branches/vde-router/vde-2/src/vde_router/vder_olsr.c        2012-01-21 
18:07:24 UTC (rev 537)
@@ -203,7 +203,6 @@
 
        struct olsr_link *hlink;
        struct olsr_route_entry *entry;
-       uint32_t neighbors[256];
        int n_vec_size, i, mid_count = 0;
 
        static uint8_t hello_counter = 0, mid_counter = 0, tc_counter = 0;
@@ -237,25 +236,27 @@
        hello->htime = 0x05; /* Todo: find and define values */
        hello->willingness = 0x07;
 
-       n_vec_size = vder_arp_get_neighbors(vif, neighbors, 256);
+
+       entry = Routes[1];
+       n_vec_size = 0;
+       while(entry) {
+               struct olsr_neighbor *neigh;
+               hlink = (struct olsr_link *) (dgram + size);
+               size += (sizeof(struct olsr_link));
+               hlink->reserved = 0;
+               hlink->link_code = entry->link_type;
+               hlink->link_msg_size = htons(sizeof(struct olsr_link) + 
sizeof(struct olsr_neighbor));
+               neigh = (struct olsr_neighbor *) (dgram + size);
+               size += (sizeof(struct olsr_neighbor));
+               neigh->addr = entry->destination;
+               neigh->lq = 0xFF;
+               neigh->nlq = 0xFF;
+               n_vec_size++;
+               entry = entry->next;
+       }
        msg_hello->size = htons(sizeof(struct olsrmsg) +
                sizeof(struct olsr_hmsg_hello) +  n_vec_size * ((sizeof(struct 
olsr_link) + sizeof(struct olsr_neighbor))));
 
-       if (n_vec_size > 0) {
-               for (i = 0; i < n_vec_size; i ++) {
-                       struct olsr_neighbor *neigh;
-                       hlink = (struct olsr_link *) (dgram + size);
-                       size += (sizeof(struct olsr_link));
-                       hlink->reserved = 0;
-                       hlink->link_code = OLSRLINK_SYMMETRIC;
-                       hlink->link_msg_size = htons(sizeof(struct olsr_link) + 
sizeof(struct olsr_neighbor));
-                       neigh = (struct olsr_neighbor *) (dgram + size);
-                       size += (sizeof(struct olsr_neighbor));
-                       neigh->addr = neighbors[i];
-                       neigh->lq = 0xFF; /* Todo: Read quality from node */
-                       neigh->nlq = 0xFF;
-               }
-       }
 
 
        /* MID Message */
@@ -287,6 +288,7 @@
        }
 
        /* TODO: Add TC msg */
+       
 
 
        /* Finalize olsr packet */
@@ -356,6 +358,8 @@
                origin = get_route_by_address(msg->orig);
                if (!origin) {
                        arp_storm(msg->orig);
+               } else {
+                       origin->link_type = OLSRLINK_MPR;
                }
                switch(msg->type) {
                        case OLSRMSG_HELLO:
@@ -397,7 +401,7 @@
        refresh_routes();
 
        while(1) {
-               len = vder_udpsocket_recvfrom(udpsock, buffer, 
(OLSR_MSG_INTERVAL >> 1), &from_ip, &from_port, -1);
+               len = vder_udpsocket_recvfrom(udpsock, buffer, 100, &from_ip, 
&from_port, -1);
                if (len < 0) {
                        perror("udp recv");
                        return NULL;
@@ -405,14 +409,12 @@
                if ((len > 0) && (from_port == OLSR_PORT)) {
                        olsr_recv(buffer, len);
                }
-               sleep(1);
+               usleep(500000);
                gettimeofday(&now, NULL);
-               if ((now.tv_sec - last_out.tv_sec) >= (OLSR_MSG_INTERVAL / 
1000)) {
-                       refresh_routes();
-                       for (i = 0; i < settings->n_ifaces; i++)
-                               olsr_make_dgram(settings->ifaces[i]);
-                       last_out = now;
-               }
+               refresh_routes();
+               last_out = now;
+               for (i = 0; i < settings->n_ifaces; i++)
+                       olsr_make_dgram(settings->ifaces[i]);
        }
 }
 

Modified: branches/vde-router/vde-2/src/vde_router/vder_olsr.h
===================================================================
--- branches/vde-router/vde-2/src/vde_router/vder_olsr.h        2012-01-21 
15:46:56 UTC (rev 536)
+++ branches/vde-router/vde-2/src/vde_router/vder_olsr.h        2012-01-21 
18:07:24 UTC (rev 537)
@@ -11,7 +11,7 @@
 #define OLSRMSG_TC             0xca
 
 #define OLSRLINK_SYMMETRIC 0x06
-#define OLSRLINK_MPR   0x10
+#define OLSRLINK_MPR   0x0a
 
 struct __attribute__((packed)) olsr_link
 {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
vde-users mailing list
vde-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vde-users

Reply via email to