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