You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(14) |
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(10) |
Feb
(42) |
Mar
(22) |
Apr
(25) |
May
(7) |
Jun
(95) |
Jul
(32) |
Aug
(6) |
Sep
(49) |
Oct
(41) |
Nov
(32) |
Dec
(19) |
| 2003 |
Jan
(10) |
Feb
(7) |
Mar
(15) |
Apr
(12) |
May
(24) |
Jun
(15) |
Jul
(2) |
Aug
(8) |
Sep
(3) |
Oct
(5) |
Nov
(6) |
Dec
(5) |
| 2004 |
Jan
(5) |
Feb
(5) |
Mar
(18) |
Apr
|
May
(1) |
Jun
(1) |
Jul
(4) |
Aug
(10) |
Sep
(8) |
Oct
(12) |
Nov
(11) |
Dec
(5) |
| 2005 |
Jan
(1) |
Feb
(7) |
Mar
(12) |
Apr
(6) |
May
(19) |
Jun
(11) |
Jul
(12) |
Aug
(2) |
Sep
(2) |
Oct
(12) |
Nov
|
Dec
(1) |
| 2006 |
Jan
(11) |
Feb
(12) |
Mar
(16) |
Apr
(11) |
May
(15) |
Jun
(4) |
Jul
|
Aug
(2) |
Sep
(5) |
Oct
(11) |
Nov
|
Dec
(4) |
| 2007 |
Jan
(2) |
Feb
(1) |
Mar
(2) |
Apr
(4) |
May
(15) |
Jun
(3) |
Jul
(2) |
Aug
(3) |
Sep
(1) |
Oct
(2) |
Nov
(3) |
Dec
|
| 2008 |
Jan
(7) |
Feb
(8) |
Mar
|
Apr
(3) |
May
(2) |
Jun
(1) |
Jul
(3) |
Aug
(4) |
Sep
|
Oct
(1) |
Nov
|
Dec
(2) |
| 2009 |
Jan
|
Feb
(1) |
Mar
(3) |
Apr
|
May
|
Jun
(3) |
Jul
(9) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
| 2013 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2014 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
|
From: mahesh k. <ksa...@gm...> - 2014-09-18 05:23:51
|
Hi Everyone , I want to know how to calculate packet dropped and forwarded by its neighbor in tap procedure for AODV protocol -- Regards, Kshirsagar Mahesh |
|
From: Nguyen P. H. An <an....@gm...> - 2014-01-13 02:47:09
|
Hi all, I am working on AODV-UU and meet a problem with the gateway. I set up my topology like this: Router (10.0.0.1) --- eth0 (10.0.0.16) | GW | wlan0 (192.168.30.2) -- wlan0 (192.168.30.1) | MANET With AODV, I am able to ping from the MANET to the GW successfully. And in the GW, I can ping back to the MANET, and the internet (8.8.8.8). However, when I ping 10.0.0.16 from MANET, it can only send 1 package of ICMP, and the stuck right there. On the aodv terminal windows, it says that the route to 10.0.0.16 is down and then delete the route. The same problem occurs when I try to ping to 8.8.8.8 from my MANET (192.168.30.1) On the GW, I did /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE and on the MANET, i did route add default dev wlan0 Is there any one met the same problem with me? Do you have any suggestions to solve this problem? Thank you. I am looking forward to your help. -- Regards, Nguyen Pham Hong An (Mr.) Skype: an.nguyenphamhong Email: an....@gm... Phone number: 0937 736 718 |
|
From: Ons B. <ons...@gm...> - 2013-10-24 09:24:45
|
Hello, I am testing AODV-UU implemnetation using 3 nodes A <--> B <--> C A is out of the range of C After running ./aodvd -l -r 3, ping from A to C is not working. please help me to solve this. Thanks in advance --O. BOUACHIR |
|
From: teklay g. <tek...@ya...> - 2013-02-25 09:16:04
|
Hello every one, I am currently working on a simulation study of "Prevention of Flooding Attack in AODV routing protocol". I want just one of the nodes to be malicious and send fake RREQ to the network but i am new to the AODV code and don't know the things to be added or modified in the existing code of AODV and reflect this in the TCL code of the simulation. Can any one suggest me on how to proceed to model the flooding attack? Thanks in advance! Teklay |
|
From: Gagan T. <gag...@gm...> - 2012-11-17 14:34:11
|
I am a student and working on AODV to write thesis .I want the information from the Implementer's that is it possible for the destination side(immediate downstream node to the broken link ) to initiate a route change request towards the source node when the route failure is detected by the downstream node of the broken link (i.e when it doesn't receive control packets from the immediate upstream) ? |
|
From: umair a. <mee...@ya...> - 2011-08-28 07:58:53
|
Sir ,I wanna try different modifications of aodv in ns2 those proposed in papers like bandwidth optimized aodv or controlled flooding aodv (AODVCF) ,are there sample codes available? |
|
From: ANIKET D. <dan...@gm...> - 2011-04-09 04:39:23
|
Hi, We are implementing aodv-uu using 3 laptops and one of them is a gateway.we tried following all the instructions for setting up a gateway in the README file but we are still unable to ping www.google.com or any other outside host from the laptops. we are using aodv uu v0.9. What could be the possible problems? I would be glad if any body can help us out Thanks -- Aniket dandekar |
|
From: Reema M. - M. <ree...@ya...> - 2009-07-30 09:20:38
|
Hi, I am testing AODV-UU implemnetation three node setup before and aftre applying the IP rules @ Node 1:192.168.12.1 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.2 192.168.12.2 1 INV 2 4342 wlan0 192.168.12.3 192.168.12.3 1 INV 2 1243 wlan0 @ Node 2:192.168.12.2 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.3 192.168.12.3 1 INV 2 321 wlan0 192.168.12.1 192.168.12.1 1 INV 2 245 wlan0 @ Node 3:192.168.12.3 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.1 192.168.12.1 1 INV 2 2133 wlan0 192.168.12.2 192.168.12.2 1 INV 2 321 wlan0 ------------------------------------- Applied IP rules at Node 1 iptables -I INPUT -m --mac-source MAC_ID_NODE_3 -j DROP & Node 3 iptables -I INPUT -m --mac-source MAC_ID_NODE_1 -j DROP cat /proc/sys/net/ipv4/ip_forward is 1 in all nodes ------------------------------------- after that the rtlog is as below: @ Node 1 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.2 192.168.12.2 1 INV 2 1341 wlan0 @ Node 2 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.3 192.168.12.3 1 INV 2 2134 wlan0 192.168.12.1 192.168.12.1 1 INV 2 244 wlan0 @ Node 3 Destination Next hop HC St. Seqno Expire Flags Iface Precursors 192.168.12.2 192.168.12.2 1 INV 2 423 wlan0 Any hint Pls help Regards, Reema --- On Wed, 8/7/09, Reema Mathew - Michael <ree...@ya...> wrote: From: Reema Mathew - Michael <ree...@ya...> Subject: [Aodvimpl] AODV Testing in close proximity To: aod...@li... Date: Wednesday, 8 July, 2009, 3:34 PM Hi all, I have a 3 node setup to test AODV The AODV implementation i use is AODV-UU-0.9.5 implementation i have sucessfully installed AODV The linux kernel version i use is 2.6.27(Fedora Core 10) I want to test multihop routing in close proximity Can anyone tell me where can i find mackill-0.2 or similar tool which will allow me do conduct the test with a room. Pls help Thanks in advance Reema Mathew -----Inline Attachment Follows----- ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge -----Inline Attachment Follows----- _______________________________________________ Aodvimpl-public mailing list Aod...@li... https://lists.sourceforge.net/lists/listinfo/aodvimpl-public |
|
From: Reema M. - M. <ree...@ya...> - 2009-07-30 09:12:37
|
Hi,
When i execute aodvd -l -r 3 -i wlan0,i am getting the followig kernel failure
my kernel version is:2.6.27.5-117.fc10
Kernel failure message 1:
BUG: unable to handle kernel paging request at 00002404
IP: [<f8cd6a65>] :ndiswrapper:wrap_urb_complete_worker+0x5c/0x173
*pde = 4f0b9067
Oops: 0000 [#1] SMP
Modules linked in: ndiswrapper fuse i915 drm ipt_MASQUERADE iptable_nat nf_nat bridge stp bnep sco l2cap bluetooth sunrpc ip6t_REJECT nf_conntrack_ipv6 ip6table_filter ip6_tables ipv6 dm_multipath uinput snd_hda_intel snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device snd_pcm_oss snd_mixer_oss snd_pcm snd_timer snd_page_alloc iTCO_wdt iTCO_vendor_support snd_hwdep r8169 mii snd soundcore ppdev i2c_i801 i2c_core parport_pc pcspkr floppy parport ata_generic pata_acpi [last unloaded: microcode]
Pid: 2923, comm: ntos_wq Tainted: P (2.6.27.5-117.fc10.i686 #1)
EIP: 0060:[<f8cd6a65>] EFLAGS: 00010286 CPU: 1
EIP is at wrap_urb_complete_worker+0x5c/0x173 [ndiswrapper]
EAX: 00002400 EBX: f8ceae88 ECX: f5bbef00 EDX: f497a8a0
ESI: f497a8ac EDI: f8ceae84 EBP: f3d05f8c ESP: f3d05f78
DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
Process ntos_wq (pid: 2923, ti=f3d05000 task=f4ad99a0 task.ti=f3d05000)
Stack: f3d09c00 f5bbef00 f8ceae88 f4a34800 f8ceae84 f3d05fa8 c0439ea5 f4a34804
f8cd6a09 f4a34800 f4a34804 f4a3480c f3d05fd0 c0439ffb 00000000 f4ad99a0
c043cd56 f3d05fbc f3d05fbc f4a34800 c0439f2f 00000000 f3d05fe0 c043cab3
Call Trace:
[<c0439ea5>] ? run_workqueue+0x89/0x113
[<f8cd6a09>] ? wrap_urb_complete_worker+0x0/0x173 [ndiswrapper]
[<c0439ffb>] ? worker_thread+0xcc/0xd8
[<c043cd56>] ? autoremove_wake_function+0x0/0x33
[<c0439f2f>] ? worker_thread+0x0/0xd8
[<c043cab3>] ? kthread+0x3b/0x61
[<c043ca78>] ? kthread+0x0/0x61
[<c04048f7>] ? kernel_thread_helper+0x7/0x10
=======================
Code: 42 04 89 ca b8 80 ae ce f8 e8 49 0c 9d c7 85 f6 0f 84 25 01 00 00 8d 56 f4 8b 42 18 89 45 f0 8b 4a 1c 89 4d ec 8b 41 60 8b 4d f0 <8b> 58 04 8b 41 34 83 f8 fe 74 74 85 c0 74 0b 83 f8 98 0f 85 81
EIP: [<f8cd6a65>] wrap_urb_complete_worker+0x5c/0x173 [ndiswrapper] SS:ESP 0068:f3d05f78
---[ end trace efaa9051beea0a9f ]---
Pls help
|
|
From: Reema M. - M. <ree...@ya...> - 2009-07-10 10:27:44
|
Hi,
I have a 3 node setup to test AODV
A <---> B <---> C
192.168.12.1 <---> 192.168.12.2 <---> 192.168.12.3
using iptables mac filtering A is not able to reach C
The AODV implementation i use is AODV-UU-0.9.5 implementation
The linux kernel version i use is 2.6.27(Fedora Core 10)
After running aodvd -l -r 30 -i wlan0
ping C from A is not happening
the /sbin/route -n output at each node is as follows
Node A
Destn gateway
GenMask Flags Metric use IFace
192.168.12.2 0.0.0.0 255.255.255.255 UH 1 0 wlan0
192.168.12.0 0.0.0.0 255.255.255.0 U 0
0 wlan0
Node B
192.168.12.1 0.0.0.0 255.255.255.255 UH 1 0 wlan0
192.168.12.3 0.0.0.0 255.255.255.255 UH 1 0 wlan0
192.168.12.0 0.0.0.0 255.255.255.0 U 0 0 wlan0
Node C
192.168.12.2 0.0.0.0 255.255.255.255 UH
1 0 wlan0
192.168.12.0 0.0.0.0 255.255.255.0 U 0 0 wlan0
Any help is appreciated
Thanks in Advance
Regards,
Reema
|
|
From: Deepak G. <Dee...@Ln...> - 2009-07-08 10:33:35
|
can someone explain the section 6.2.2 in RFC3561. it talks about the intermediate node sending RREP if it has the route to destination. i am not able to follow what are the steps to be followed for implementing this. Can someone break it it up a little bit...? Regards, Deepak Gopalakrishnan |
|
From: Reema M. - M. <ree...@ya...> - 2009-07-08 10:04:58
|
Hi all,
I have a 3 node setup to test AODV
The AODV implementation i use is AODV-UU-0.9.5 implementation
i have sucessfully installed AODV
The linux kernel version i use is 2.6.27(Fedora Core 10)
I want to test multihop routing in close proximity
Can anyone tell me where can i find mackill-0.2 or similar tool which will allow me do conduct the test with a room.
Pls help
Thanks in advance
Reema Mathew
|
|
From: Wang R. <wan...@ue...> - 2009-07-08 06:19:53
|
HI, The answer is in RFC3561. According to "6.1. Maintaining Sequence Numbers", When the destination increments its sequence number, it MUST do so by treating the sequence number value as if it were an UNSIGNED NUMBER. To accomplish SEQUENCE NUMBER ROLLOVER, if the sequence number has already been assigned to be the largest possible number representable as a 32-bit unsigned integer (i.e., 4294967295), then when it is incremented it will then have a value of zero (0). On the other hand, if the sequence number currently has the value 2147483647, which is the largest possible positive integer if 2's complement arithmetic is in use with 32-bit integers, the next value will be 2147483648, which is the most negative possible integer in the same numbering system. The representation of negative numbers is not relevant to the increment of AODV sequence numbers. This is in contrast to the manner in which the result of comparing two AODV sequence numbers is to be treated (see below). In order to ascertain that information about a destination is not stale, the node compares its current numerical value for the sequence number with that obtained from the incoming AODV message. This comparison MUST be done using signed 32-bit arithmetic, this is necessary to accomplish sequence number rollover. If the result of subtracting the currently stored sequence number from the value of the incoming sequence number is less than zero, then the information related to that destination in the AODV message MUST be discarded, since that information is stale compared to the node's currently stored information. When a node's seq number rolls over to 0, its previous seq numbers are negative, when we get a positive number when we subtract a negative number from 0 which do not satisfy "If the result of subtracting the currently stored sequence number from the value of the incoming sequence number is less than zero, then the information related to that destination in the AODV message MUST be discarded.". No extra operations are required. Regards, Wang Rui From: Deepak Gopalakrishnan [mailto:Dee...@Ln...] Sent: 2009-7-7 15:14 To: aod...@li... Subject: [Aodvimpl] Sequence number doubt Hi Im trying to implement AODV algorithm and i have this doubt about sequence number. What happens when there is a roll over in the sequence number? I am not getting a clear idea of how to implement a algorithm according to what is given in the aodv RFC3561. For example, i have allocated a 8bit value for sequence number.. suppose in a intermediate node the sequence number is 254.....but at the destination, the sequence has incremented twice due to some reason....then the present sequence wud be 1... now if we compare the sequence numbers....the fresh packet will be discarded by the intermediate node.... also..if the intermediate node has updated the sequence number to 2(the case after a roll over has occured)...but receives a packet which was created before the roll over...then the node wud accept that node thinking that it has a "fresher" packet.... im totally confused.... Can anyone help me with the algorithm to tackle this roll over problem..... thanks in advance Regards, Deepak Gopalakrishnan |
|
From: Wang R. <wan...@ue...> - 2009-07-07 09:56:23
|
Hi
Unlike source routing protocols, hop-by-hop routing protocols such
as aodv don’t need to modify data packets, they just send the packet as it
is to the next hop according to the routing table.
Regards.
Wang Rui
From: Deepak Gopalakrishnan [mailto:Dee...@Ln...]
Sent: 2009年7月7日 15:16
To: aod...@li...
Subject: [Aodvimpl] Data packet in AODV algorithm
Hi
Nowhere in the algorithm do they talk about how to send the data packet...or
what the data packet structure would be.
Can anyone shed some light on this topic..?
Regards,
Deepak Gopalakrishnan
|
|
From: Deepak G. <Dee...@Ln...> - 2009-07-07 08:54:45
|
Hi Nowhere in the algorithm do they talk about how to send the data packet...or what the data packet structure would be. Can anyone shed some light on this topic..? Regards, Deepak Gopalakrishnan |
|
From: Deepak G. <Dee...@Ln...> - 2009-07-07 08:53:19
|
Hi Im trying to implement AODV algorithm and i have this doubt about sequence number. What happens when there is a roll over in the sequence number? I am not getting a clear idea of how to implement a algorithm according to what is given in the aodv RFC3561. For example, i have allocated a 8bit value for sequence number.. suppose in a intermediate node the sequence number is 254.....but at the destination, the sequence has incremented twice due to some reason....then the present sequence wud be 1... now if we compare the sequence numbers....the fresh packet will be discarded by the intermediate node.... also..if the intermediate node has updated the sequence number to 2(the case after a roll over has occured)...but receives a packet which was created before the roll over...then the node wud accept that node thinking that it has a "fresher" packet.... im totally confused.... Can anyone help me with the algorithm to tackle this roll over problem..... thanks in advance Regards, Deepak Gopalakrishnan |
|
From: Wang R. <wan...@gm...> - 2009-06-27 16:14:49
|
Hi all,
As I have said in my last mail (How to modify kaodv-ipenc.c to port
aodv-uu 0.9.5 to Linux kernel 2.6.26?), I tried to port aodv-uu-0.9.5 to
newer linux kernels, and I've done it. Using the patch I give below may make
aodv-uu-0.9.5 work on Linux Kernel >= 2.6.24 (I have tested it on 2.6.26 ~
2.6.28, but it should work on 2.6.24 kernel), and according to my test the
patch functions properly.
I have made the following modifications:
1. since one of nf_hook's parameter struct sk_buff **skb has changed
to struct sk_buff *skb, the corresponding code should be changed. These code
including struct sk_buff *ip_pkt_encapsulate(struct sk_buff *skb, __u32
dest) in lnx/kaodv-ipenc.c and kaodv_hook function in lnx/kaodv-mod.c. I've
virtually rewritten ip_pkt_encapsulate function, the result turn out to be
good except that if a packet's size is larger the MTU, the node won't
forward it.
2. changed netfilter hook names from NF_IP_XXX to NF_INET_XXX (e.g.
NF_IP_PRE_ROUTING => NF_INET_PRE_ROUTING)
3. the impl of proc fs have been rewritten since proc_net_create has
been deleted.
4. added net namespace support
5. added NF_INET_FORWARD hook. This hook will be activated when the
node is a gateway and the incoming packet is from the outer networks. By
doing this enables the gateway to search for a route requested by nodes
outside the ad hoc network to nodes which are not in the gateway's routing
table.
6. disabled hook NF_INET_POST_ROUTING. According to my experiments,
I found that if we update the timer of the route to dst node at
NF_INET_POST_ROUTING, the route won't invalidate when the route was
broken(intermediate nodes are down, or the dst node was down), if the source
node keeps sending packets to the dst node(e.g ping the dst node). As a
result, timer of a route is updated if and only if the node received a
packets from the dst nodes. It makes sense for the most of the times since
if a node received a packet from another node can indicate that the route
between these two nodes are OK.
I hope my work may help.
Wang Rui
Jun 28,2009
PS. My patch would work on kernels <2.6.24. I didn't do any work to enable
backward compatible.
diff -ur aodv-uu-0.9.5.orig/defs.h aodv-uu-0.9.5/defs.h
--- aodv-uu-0.9.5.orig/defs.h 2005-03-18 05:38:00.000000000 +0800
+++ aodv-uu-0.9.5/defs.h 2008-12-09 18:45:20.000000000 +0800
@@ -220,7 +220,7 @@
u_int8_t type;
u_int8_t length;
/* Type specific data follows here */
-} AODV_ext;
+}__attribute__((packed)) AODV_ext;
/* MACROS to access AODV extensions... */
#define AODV_EXT_HDR_SIZE sizeof(AODV_ext)
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-expl.c aodv-uu-0.9.5/lnx/kaodv-expl.c
--- aodv-uu-0.9.5.orig/lnx/kaodv-expl.c 2007-07-23 22:05:46.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-expl.c 2009-03-03 14:38:10.000000000 +0800
@@ -267,15 +267,18 @@
return status;
}
-static int kaodv_expl_print(char *buf)
+/*
+ * proc filesystem def
+ */
+static int kaodv_expl_print(struct seq_file* m)
{
struct list_head *pos;
int len = 0;
read_lock_bh(&expl_lock);
- len += sprintf(buf, "# Total entries: %u\n", expl_len);
- len += sprintf(buf + len, "# %-15s %-15s %-5s %-5s Expires\n",
+ len += seq_printf(m, "# Total entries: %u\n", expl_len);
+ len += seq_printf(m, "# %-15s %-15s %-5s %-5s Expires\n",
"Addr", "Nhop", "Flags", "Iface");
list_for_each(pos, &expl_head) {
@@ -284,7 +287,7 @@
int num_flags = 0;
struct expl_entry *e = (struct expl_entry *)pos;
- dev = dev_get_by_index(e->ifindex);
+ dev = dev_get_by_index(&init_net,e->ifindex);
if (!dev)
continue;
@@ -307,7 +310,7 @@
flags[num_flags] = '\0';
- len += sprintf(buf + len, " %-15s %-15s %-5s %-5s %lu\n",
+ len += seq_printf(m, " %-15s %-15s %-5s %-5s %lu\n",
addr, nhop, flags, dev->name,
(e->expires - jiffies) * 1000 / HZ);
@@ -318,21 +321,28 @@
return len;
}
static int
-kaodv_expl_proc_info(char *buffer, char **start, off_t offset, int length)
+kaodv_expl_proc_info(struct seq_file* m,void* v)
+//char *buffer, char **start, off_t offset, int length)
{
- int len;
-
- len = kaodv_expl_print(buffer);
+ kaodv_expl_print(m);
+
+ return 0;
+}
- *start = buffer + offset;
- len -= offset;
- if (len > length)
- len = length;
- else if (len < 0)
- len = 0;
- return len;
+static int kaodv_expl_proc_open(struct inode* inode, struct file* file)
+{
+ return single_open(file,kaodv_expl_proc_info,NULL);
}
+static const struct file_operations kaodv_expl_proc_fops = {
+ .open = kaodv_expl_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ .owner = THIS_MODULE,
+};
+/* end proc def*/
+
int kaodv_expl_update(__u32 daddr, __u32 nhop, unsigned long time,
unsigned short flags, int ifindex)
{
@@ -384,7 +394,9 @@
void kaodv_expl_init(void)
{
- proc_net_create("kaodv_expl", 0, kaodv_expl_proc_info);
+// proc_net_create("kaodv_expl", 0, kaodv_expl_proc_info);
+ proc_create("kaodv_expl",0,init_net.proc_net,
+ &kaodv_expl_proc_fops);
expl_len = 0;
#ifdef EXPL_TIMER
@@ -395,5 +407,5 @@
void kaodv_expl_fini(void)
{
kaodv_expl_flush();
- proc_net_remove("kaodv_expl");
+ proc_net_remove(&init_net,"kaodv_expl");
}
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-ipenc.c
aodv-uu-0.9.5/lnx/kaodv-ipenc.c
--- aodv-uu-0.9.5.orig/lnx/kaodv-ipenc.c 2008-12-12
16:16:57.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-ipenc.c 2009-03-03 14:38:10.000000000 +0800
@@ -20,6 +20,7 @@
*
****************************************************************************
*/
#include <net/ip.h>
+#include <linux/netfilter.h>
#include <linux/skbuff.h>
#include <linux/version.h>
@@ -43,43 +44,41 @@
struct sk_buff *ip_pkt_encapsulate(struct sk_buff *skb, __u32 dest)
{
-
-
struct min_ipenc_hdr *ipe;
- struct sk_buff *nskb;
struct iphdr *iph;
- /* Allocate new data space at head */
- nskb = skb_copy_expand(skb, skb_headroom(skb),
- skb_tailroom(skb) +
- sizeof(struct min_ipenc_hdr),
- GFP_ATOMIC);
-
- if (nskb == NULL) {
- printk("Could not allocate new skb\n");
- kfree_skb(skb);
- return NULL;
- }
-
- /* Set old owner */
- if (skb->sk != NULL)
- skb_set_owner_w(nskb, skb->sk);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
iph = skb->nh.iph;
#else
iph = (struct iphdr *)skb->network_header;
#endif
- skb_put(nskb, sizeof(struct min_ipenc_hdr));
+ if(!skb_make_writable(skb, (iph->ihl << 2))) {
+ printk("Could not make skb writable\n");
+ return NULL;
+ }
+
+ /* Allocate new data space at head */
+ if(skb_cow(skb,sizeof(struct min_ipenc_hdr)))
+ {
+ printk("Could not make enough head room\n");
+ return NULL;
+ }
+/*
+ if(skb_headroom(skb) < sizeof(struct min_ipenc_hdr)) {
+ if( pskb_expand_head(skb, sizeof(struct min_ipenc_hdr),
+ 0,GFP_ATOMIC) < 0) {
+ printk("Could not expand skb header\n");
+ kfree_skb(skb);
+ return NULL;
+ }
+ }
+*/
+ skb_push(skb, sizeof(struct min_ipenc_hdr));
/* Move the IP header */
- memcpy(nskb->data, skb->data, (iph->ihl << 2));
- /* Move the data */
- memcpy(nskb->data + (iph->ihl << 2) + sizeof(struct min_ipenc_hdr),
- skb->data + (iph->ihl << 2), skb->len - (iph->ihl << 2));
-
- kfree_skb(skb);
- skb = nskb;
+ memmove(skb->data, skb->data + sizeof(struct min_ipenc_hdr),
+ (iph->ihl << 2));
/* Update pointers */
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
@@ -124,18 +123,30 @@
struct iphdr *iph = (struct iphdr *)skb->network_header;
#endif
+ if(!skb_make_writable(skb,(iph->ihl << 2))) {
+ printk("Could not make skb writable\n");
+ return NULL;
+ }
+
ipe = (struct min_ipenc_hdr *)((char *)iph + (iph->ihl << 2));
iph->protocol = ipe->protocol;
iph->daddr = ipe->daddr;
+ /*Shift the ip header to the right, overwriting the encap header*/
+ memmove(skb->data + sizeof(struct min_ipenc_hdr),skb->data,
+ (iph->ihl << 2));
+ skb_pull(skb,sizeof(struct min_ipenc_hdr));
+
/* Shift the data to the left, overwriting the encap header */
- memmove(skb->data + (iph->ihl << 2),
+ /*
+ memmove(skb->data + (iph->ihl << 2),
skb->data + (iph->ihl << 2) + sizeof(struct min_ipenc_hdr),
skb->len - (iph->ihl << 2) - sizeof(struct min_ipenc_hdr));
skb_trim(skb, skb->len - sizeof(struct min_ipenc_hdr));
-
+ */
+
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
skb->nh.iph = iph = (struct iphdr *)skb->data;
#else
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-mod.c aodv-uu-0.9.5/lnx/kaodv-mod.c
--- aodv-uu-0.9.5.orig/lnx/kaodv-mod.c 2007-07-23 22:05:46.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-mod.c 2009-03-17 21:02:33.000000000 +0800
@@ -41,6 +41,7 @@
#include <linux/tcp.h>
#include <net/tcp.h>
#include <net/route.h>
+#include <net/net_namespace.h>
#include "kaodv-mod.h"
#include "kaodv-expl.h"
@@ -86,7 +87,7 @@
if (res < 0)
return;
- if (hooknum == NF_IP_PRE_ROUTING)
+ if (hooknum == NF_INET_PRE_ROUTING)
kaodv_netlink_send_rt_update_msg(PKT_INBOUND, iph->saddr,
iph->daddr, dev->ifindex);
else if (iph->daddr != INADDR_BROADCAST && iph->daddr !=
bcaddr.s_addr)
@@ -116,7 +117,7 @@
}
static unsigned int kaodv_hook(unsigned int hooknum,
- struct sk_buff **skb,
+ struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn) (struct sk_buff *))
@@ -124,7 +125,7 @@
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
struct iphdr *iph = (*skb)->nh.iph;
#else
- struct iphdr *iph = (struct iphdr *)((*skb)->network_header);
+ struct iphdr *iph = (struct iphdr *)((skb)->network_header);
#endif
struct expl_entry e;
struct in_addr ifaddr, bcaddr;
@@ -137,6 +138,19 @@
if (iph == NULL)
return NF_ACCEPT;
+ /* Hook FORWARD only takecare of gateway packets */
+ if(hooknum == NF_INET_FORWARD)
+ {
+ //we are only handle forwarded packets in gateway mode
+ if(!is_gateway)
+ return NF_ACCEPT;
+ //we don't process packets from binded interface
+ if(!in || if_info_from_ifindex(NULL, NULL, in->ifindex) ==
0)
+ return NF_ACCEPT;
+ //we are only interested in packets heading to our ad-hoc
networks
+ if(!if_info_is_dst_local(iph))
+ return NF_ACCEPT;
+ }
/* We want AODV control messages to go through directly to the
* AODV socket.... */
if (iph && iph->protocol == IPPROTO_UDP) {
@@ -149,11 +163,11 @@
#ifdef CONFIG_QUAL_THRESHOLD
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0))
- qual = (int)(*skb)->__unused;
+ qual = (int)(skb)->__unused;
#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
- qual = (*skb)->iwq.qual;
+ qual = (skb)->iwq.qual;
#endif
- if (qual_th && hooknum == NF_IP_PRE_ROUTING) {
+ if (qual_th && hooknum == NF_INET_PRE_ROUTING) {
if (qual && qual < qual_th) {
pkts_dropped++;
@@ -161,14 +175,14 @@
}
}
#endif /* CONFIG_QUAL_THRESHOLD */
- if (hooknum == NF_IP_PRE_ROUTING && in)
+ if (hooknum == NF_INET_PRE_ROUTING && in)
kaodv_update_route_timeouts(hooknum, in,
iph);
return NF_ACCEPT;
}
}
- if (hooknum == NF_IP_PRE_ROUTING)
+ if (hooknum == NF_INET_PRE_ROUTING)
res = if_info_from_ifindex(&ifaddr, &bcaddr, in->ifindex);
else
res = if_info_from_ifindex(&ifaddr, &bcaddr, out->ifindex);
@@ -186,17 +200,17 @@
/* Check which hook the packet is on... */
switch (hooknum) {
- case NF_IP_PRE_ROUTING:
+ case NF_INET_PRE_ROUTING:
kaodv_update_route_timeouts(hooknum, in, iph);
/* If we are a gateway maybe we need to decapsulate? */
if (is_gateway && iph->protocol == IPPROTO_MIPE &&
iph->daddr == ifaddr.s_addr) {
- ip_pkt_decapsulate(*skb);
+ ip_pkt_decapsulate(skb);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
- iph = (*skb)->nh.iph;
+ iph = (skb)->nh.iph;
#else
- iph = (struct iphdr *)((*skb)->network_header);
+ iph = (struct iphdr *)((skb)->network_header);
#endif
return NF_ACCEPT;
}
@@ -219,12 +233,13 @@
kaodv_netlink_send_rt_msg(KAODVM_REPAIR, iph->saddr,
iph->daddr);
- kaodv_queue_enqueue_packet(*skb, okfn);
+ kaodv_queue_enqueue_packet(skb, okfn);
return NF_STOLEN;
}
break;
- case NF_IP_LOCAL_OUT:
+ case NF_INET_FORWARD:
+ case NF_INET_LOCAL_OUT:
if (!kaodv_expl_get(iph->daddr, &e) ||
(e.flags & KAODV_RT_REPAIR)) {
@@ -234,7 +249,7 @@
0,
iph->daddr);
- kaodv_queue_enqueue_packet(*skb, okfn);
+ kaodv_queue_enqueue_packet(skb, okfn);
return NF_STOLEN;
@@ -248,12 +263,12 @@
that needs to be fix... */
if (iph->protocol == IPPROTO_TCP) {
- if ((*skb)->sk) {
+ if ((skb)->sk) {
struct tcp_sock *tp =
tcp_sk((*skb)->sk);
if (tp->mss_cache > 1452) {
tp->rx_opt.user_mss = 1452;
tp->rx_opt.mss_clamp = 1452;
- tcp_sync_mss((*skb)->sk,
1452);
+ tcp_sync_mss((skb)->sk,
1452);
}
}
}
@@ -262,9 +277,9 @@
* dest entry is refreshed */
kaodv_update_route_timeouts(hooknum, out, iph);
- *skb = ip_pkt_encapsulate(*skb, e.nhop);
+ ip_pkt_encapsulate(skb, e.nhop);
- if (!(*skb))
+ if (!(skb))
return NF_STOLEN;
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
@@ -274,30 +289,39 @@
#endif
}
break;
- case NF_IP_POST_ROUTING:
- kaodv_update_route_timeouts(hooknum, out, iph);
+ case NF_INET_POST_ROUTING:
+ // kaodv_update_route_timeouts(hooknum, out, iph);
+ break;
}
return NF_ACCEPT;
}
-int kaodv_proc_info(char *buffer, char **start, off_t offset, int length)
+/*
+ * proc filesystem
+ */
+//int kaodv_proc_info(char *buffer, char **start, off_t offset, int length)
+static int kaodv_proc_show(struct seq_file* m, void* v)
{
- int len;
+ seq_printf(m,//buffer,
+ "qual threshold=%d\npkts dropped=%lu\nlast
qual=%d\ngateway_mode=%d\n",
+ qual_th, pkts_dropped, qual, is_gateway);
+
+ return 0;
+}
- len =
- sprintf(buffer,
- "qual threshold=%d\npkts dropped=%lu\nlast
qual=%d\ngateway_mode=%d\n",
- qual_th, pkts_dropped, qual, is_gateway);
-
- *start = buffer + offset;
- len -= offset;
- if (len > length)
- len = length;
- else if (len < 0)
- len = 0;
- return len;
+static int kaodv_proc_open(struct inode* inode, struct file* file)
+{
+ return single_open(file,kaodv_proc_show,NULL);
}
+static const struct file_operations kaodv_proc_fops = {
+ .open = kaodv_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ .owner = THIS_MODULE,
+};
+/* end proc def*/
/*
* Called when the module is inserted in the kernel.
*/
@@ -323,7 +347,7 @@
.owner = THIS_MODULE,
#endif
.pf = PF_INET,
- .hooknum = NF_IP_PRE_ROUTING,
+ .hooknum = NF_INET_PRE_ROUTING,
.priority = NF_IP_PRI_FIRST,
},
{
@@ -332,7 +356,7 @@
.owner = THIS_MODULE,
#endif
.pf = PF_INET,
- .hooknum = NF_IP_LOCAL_OUT,
+ .hooknum = NF_INET_FORWARD,
.priority = NF_IP_PRI_FILTER,
},
{
@@ -341,7 +365,16 @@
.owner = THIS_MODULE,
#endif
.pf = PF_INET,
- .hooknum = NF_IP_POST_ROUTING,
+ .hooknum = NF_INET_LOCAL_OUT,
+ .priority = NF_IP_PRI_FILTER,
+ },
+ {
+ .hook = kaodv_hook,
+#ifdef KERNEL26
+ .owner = THIS_MODULE,
+#endif
+ .pf = PF_INET,
+ .hooknum = NF_INET_POST_ROUTING,
.priority = NF_IP_PRI_FILTER,
},
};
@@ -382,13 +415,18 @@
if (ret < 0)
goto cleanup_hook1;
+ ret = nf_register_hook(&kaodv_ops[3]);
+
+ if (ret < 0)
+ goto cleanup_hook2;
+
/* Prefetch network device info (ip, broadcast address, ifindex). */
for (i = 0; i < MAX_INTERFACES; i++) {
if (!ifname[i])
break;
- dev = dev_get_by_name(ifname[i]);
+ dev = dev_get_by_name(&init_net,ifname[i]);
if (!dev) {
printk("No device %s available, ignoring!\n",
ifname[i]);
@@ -399,12 +437,15 @@
dev_put(dev);
}
- proc_net_create("kaodv", 0, kaodv_proc_info);
+ //proc_net_create("kaodv", 0, kaodv_proc_info);
+ proc_create("kaodv", 0, init_net.proc_net,&kaodv_proc_fops);
KAODV_DEBUG("Module init OK");
return ret;
+cleanup_hook2:
+ nf_unregister_hook(&kaodv_ops[2]);
cleanup_hook1:
nf_unregister_hook(&kaodv_ops[1]);
cleanup_hook0:
@@ -429,7 +470,7 @@
for (i = 0; i < sizeof(kaodv_ops) / sizeof(struct nf_hook_ops); i++)
nf_unregister_hook(&kaodv_ops[i]);
- proc_net_remove("kaodv");
+ proc_net_remove(&init_net,"kaodv");
kaodv_queue_fini();
kaodv_expl_fini();
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-mod.h aodv-uu-0.9.5/lnx/kaodv-mod.h
--- aodv-uu-0.9.5.orig/lnx/kaodv-mod.h 2006-09-21 01:58:38.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-mod.h 2009-03-03 15:10:39.000000000 +0800
@@ -11,6 +11,7 @@
struct list_head l;
struct in_addr if_addr;
struct in_addr bc_addr;
+ struct in_addr mask_addr;
struct net_device *dev;
};
@@ -47,6 +48,7 @@
if (ifa) {
ifi->if_addr.s_addr = ifa->ifa_address;
ifi->bc_addr.s_addr = ifa->ifa_broadcast;
+ ifi->mask_addr.s_addr = ifa->ifa_mask;
}
in_dev_put(indev);
}
@@ -72,6 +74,27 @@
write_unlock(&ifilock);
}
+static inline int if_info_is_dst_local(const struct iphdr *iph)
+{
+ struct list_head *pos;
+ int res = 0;
+
+ if(!iph)
+ return res;
+
+ read_lock(&ifilock);
+ list_for_each(pos, &ifihead) {
+ struct if_info *ifi = (struct if_info *)pos;
+ if((iph->daddr & ifi->mask_addr.s_addr) ==
+ (ifi->if_addr.s_addr &
ifi->mask_addr.s_addr))
+ res = 1;
+ break;
+ }
+ read_unlock(&ifilock);
+
+ return res;
+}
+
static inline int if_info_from_ifindex(struct in_addr *ifa, struct in_addr
*bc,
int ifindex)
{
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-netlink.c
aodv-uu-0.9.5/lnx/kaodv-netlink.c
--- aodv-uu-0.9.5.orig/lnx/kaodv-netlink.c 2007-07-23
22:05:46.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-netlink.c 2009-03-03 14:38:10.000000000 +0800
@@ -248,7 +248,7 @@
#define RCV_SKB_FAIL(err) do { netlink_ack(skb, nlh, (err)); return; }
while (0)
-static inline void kaodv_netlink_rcv_skb(struct sk_buff *skb)
+static inline void __kaodv_netlink_rcv_skb(struct sk_buff *skb)
{
int status, type, pid, flags, nlmsglen, skblen;
struct nlmsghdr *nlh;
@@ -313,22 +313,24 @@
return;
}
-static void kaodv_netlink_rcv_sk(struct sock *sk, int len)
+static void kaodv_netlink_rcv_sk(struct sk_buff *skb)
{
- do {
- struct sk_buff *skb;
+// do {
+// struct sk_buff *skb;
- if (down_trylock(&kaodvnl_sem))
- return;
+ if (down_trylock(&kaodvnl_sem))
+ return;
- while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) {
- kaodv_netlink_rcv_skb(skb);
- kfree_skb(skb);
- }
+// while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) {
+
+ __kaodv_netlink_rcv_skb(skb);
- up(&kaodvnl_sem);
+// kfree_skb(skb);
+// }
+
+ up(&kaodvnl_sem);
- } while (kaodvnl && kaodvnl->sk_receive_queue.qlen);
+// } while (kaodvnl && kaodvnl->sk_receive_queue.qlen);
return;
}
@@ -341,7 +343,7 @@
#elif (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
kaodvnl = netlink_kernel_create(NETLINK_AODV, AODVGRP_MAX,
kaodv_netlink_rcv_sk, THIS_MODULE);
#else
- kaodvnl = netlink_kernel_create(NETLINK_AODV, AODVGRP_MAX,
kaodv_netlink_rcv_sk, NULL, THIS_MODULE);
+ kaodvnl = netlink_kernel_create(&init_net,NETLINK_AODV, AODVGRP_MAX,
kaodv_netlink_rcv_sk, NULL, THIS_MODULE);
#endif
if (kaodvnl == NULL) {
printk(KERN_ERR "kaodv_netlink: failed to create netlink
socket\n");
diff -ur aodv-uu-0.9.5.orig/lnx/kaodv-queue.c
aodv-uu-0.9.5/lnx/kaodv-queue.c
--- aodv-uu-0.9.5.orig/lnx/kaodv-queue.c 2007-07-23
22:05:46.000000000 +0800
+++ aodv-uu-0.9.5/lnx/kaodv-queue.c 2009-03-03 14:38:10.000000000 +0800
@@ -33,7 +33,7 @@
#include <net/sock.h>
#include <net/route.h>
#include <net/icmp.h>
-
+#include <net/net_namespace.h>
#include "kaodv-queue.h"
#include "kaodv-expl.h"
#include "kaodv-netlink.h"
@@ -253,7 +253,7 @@
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18))
ip_route_me_harder(&entry->skb);
#else
- ip_route_me_harder(&entry->skb, RTN_LOCAL);
+ ip_route_me_harder(entry->skb, RTN_LOCAL);
#endif
pkts++;
@@ -265,28 +265,38 @@
}
return 0;
}
-
-static int kaodv_queue_get_info(char *buffer, char **start, off_t offset,
int length)
+/*
+ * proc filesystem
+ */
+static int kaodv_queue_proc_show(struct seq_file* m,void* v)
+//char *buffer, char **start, off_t offset, int length)
{
- int len;
-
read_lock_bh(&queue_lock);
-
- len = sprintf(buffer,
- "Queue length : %u\n"
- "Queue max. length : %u\n", queue_total,
queue_maxlen);
+
+ seq_printf( m,
+ "Queue length : %u\n"
+ "Queue max. length : %u\n",
+ queue_total, queue_maxlen);
read_unlock_bh(&queue_lock);
- *start = buffer + offset;
- len -= offset;
- if (len > length)
- len = length;
- else if (len < 0)
- len = 0;
- return len;
+ return 0;
+}
+
+static int kaodv_queue_proc_open(struct inode* inode, struct file* file)
+{
+ return single_open(file,kaodv_queue_proc_show,NULL);
}
+static const struct file_operations kaodv_queue_proc_fops = {
+ .open = kaodv_queue_proc_open,
+ .read = seq_read,
+ .llseek = seq_lseek,
+ .release = single_release,
+ .owner = THIS_MODULE,
+};
+/* end proc def*/
+
static int init_or_cleanup(int init)
{
int status = -ENOMEM;
@@ -297,7 +307,9 @@
queue_total = 0;
proc =
- proc_net_create(KAODV_QUEUE_PROC_FS_NAME, 0,
kaodv_queue_get_info);
+ //proc_net_create(KAODV_QUEUE_PROC_FS_NAME, 0,
kaodv_queue_get_info);
+ proc_create(KAODV_QUEUE_PROC_FS_NAME,0,init_net.proc_net,
+ &kaodv_queue_proc_fops);
if (proc)
proc->owner = THIS_MODULE;
else {
@@ -312,7 +324,7 @@
#endif
kaodv_queue_flush();
- proc_net_remove(KAODV_QUEUE_PROC_FS_NAME);
+ proc_net_remove(&init_net,KAODV_QUEUE_PROC_FS_NAME);
return status;
}
diff -ur aodv-uu-0.9.5.orig/main.c aodv-uu-0.9.5/main.c
--- aodv-uu-0.9.5.orig/main.c 2007-04-06 16:37:04.000000000 +0800
+++ aodv-uu-0.9.5/main.c 2008-12-03 10:39:52.000000000 +0800
@@ -136,22 +136,24 @@
char command[64];
if ((fd = open("/proc/sys/net/ipv4/ip_forward", O_WRONLY)) < 0)
- return -1;
+ return -1;
if (write(fd, &on, sizeof(char)) < 0)
- return -1;
- close(fd);
-
- if ((fd = open("/proc/sys/net/ipv4/route/max_delay", O_WRONLY)) < 0)
- return -1;
- if (write(fd, &off, sizeof(char)) < 0)
- return -1;
+ return -1;
close(fd);
+ if ((fd = open("/proc/sys/net/ipv4/route/max_delay", O_WRONLY)) > 0)
+ {
+ if (write(fd, &off, sizeof(char)) < 0)
+ return -1;
+ close(fd);
+ }
- if ((fd = open("/proc/sys/net/ipv4/route/min_delay", O_WRONLY)) < 0)
- return -1;
- if (write(fd, &off, sizeof(char)) < 0)
- return -1;
- close(fd);
+ if ((fd = open("/proc/sys/net/ipv4/route/min_delay", O_WRONLY)) > 0)
+ {
+ if (write(fd, &off, sizeof(char)) < 0)
+ return -1;
+
+ close(fd);
+ }
/* Disable ICMP redirects on all interfaces: */
@@ -178,7 +180,7 @@
}
memset(command, '\0', 64);
sprintf(command, "/proc/sys/net/ipv4/conf/all/send_redirects");
- if ((fd = open(command, O_WRONLY)) < 0)
+ if ((fd = open(command, O_WRONLY)) < 0)
return -1;
if (write(fd, &off, sizeof(char)) < 0)
return -1;
@@ -187,7 +189,7 @@
memset(command, '\0', 64);
sprintf(command, "/proc/sys/net/ipv4/conf/all/accept_redirects");
- if ((fd = open(command, O_WRONLY)) < 0)
+ if ((fd = open(command, O_WRONLY)) < 0)
return -1;
if (write(fd, &off, sizeof(char)) < 0)
return -1;
__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4193 (20090626) __________
The message was checked by ESET NOD32 Antivirus.
http://www.eset.com
|
|
From: Wolf-Bastian P. <Poe...@ib...> - 2009-06-27 01:03:35
|
Hi! Deepak Gopalakrishnan schrieb: > > my doubt is will the intermediate node modify this packet or not. Yes, the intermediate nodes do modify the Route Request. They increment the hop count value. > if no, then how the intermediate nodes will maintain the reverse path to > the source during the route discovery. Nodes receiving a RREQ create or update a route to the sender of this particular IP packet. Although this sender may not be the originator, the IP address is still known from the IP packets header. Unfortunately, the sequence number of the sender of the IP packet is not known. Afterwards the node creates or updates a route to the originator of the route request. This time, the sequence number is known from the RREQ message. > if yes, wat is the modification it does other than increasing the hop > count.. No other modification is made. Does that help you? Regards, Bastian |
|
From: Deepak G. <Dee...@Ln...> - 2009-06-26 07:12:49
|
Hi i am new to this aodv algorithm and was going throught the documentions available over net. I have come across this doubt and im not able to find an answer. I doubt is something like this....If we see the message format for RREQ in rfc3561 we find that there are fields for originator addr and destination addr. my doubt is will the intermediate node modify this packet or not. if no, then how the intermediate nodes will maintain the reverse path to the source during the route discovery. if yes, wat is the modification it does other than increasing the hop count.. Regards, Deepak Gopalakrishnan EmSyS Larsen & Toubro Ltd KIADB industrial Area Hebbal Hootagalli Mysore India- 570018 This mail is classified as : ( ) L&T EmSyS Proprietary ( ) L&T EmSyS Confidential ( ) L&T EmSyS Internal Use ( ) L&T EmSyS General Business |
|
From: Suresh B. <ssb...@ya...> - 2009-03-15 11:13:43
|
Hi,
I am suresh pursuing my III/IV btech and doing research on AODV routing protocol in Wireless mesh networks..
I studied AODV routing protocol and found a drawback.
- when a link between source and destination is broken then the intermediate node before which the link was broken will send a RERR message to the source.
- Now source will have to send RREQ message to find a new path to destination. This is a time consuming process.
Why cant we modify the routing table of node so that it contain more than one routes (i.e. next hops) ?
This will defnitely decrese the time.
Now I want to simulate my idea using NS 2.33.
How can i do this?Can u help me in doing this?
thanx
with regards,suresh
Add more friends to your messenger and enjoy! Go to http://messenger.yahoo.com/invite/ |
|
From: Nenad <nen...@fe...> - 2009-03-09 09:22:50
|
|
From: sharda p. <sha...@ya...> - 2009-03-07 16:21:44
|
Hello sir
i want the password and help for "simulation of aodv protocol on ns-2" step by step procedure
|
|
From: John H. <JH...@we...> - 2009-02-18 11:10:07
|
Hello, I'm new here in the mailinglist. I will try to run AODV on 3 Linksys Router to make some measurements. Hast anybody experience about to run AODV-UU on some devices like Linksys ? Can anybody say me, where I can get the command options for "AODV-UU"? greetings, John ____________________________________________________________________ Psssst! Schon vom neuen WEB.DE MultiMessenger gehört? Der kann`s mit allen: http://www.produkte.web.de/messenger/?did=3123 |
|
From: Wang R. <wan...@gm...> - 2008-12-11 13:50:46
|
(I recieved a fail to deliver message from my university's mail
server, so I try to post it again using gmail. If my last post
delivered successfully, just ignore it. sorry for the inconvenience)
Hi,
I am trying to port aodv-uu 0.9.5 to Linux kernel 2.6.26. The
netfilter implementation has changed since 2.6.24 :
[NETFILTER]: Replace sk_buff ** with sk_buff *
With all the users of the double pointers removed, this patch mops up by
finally replacing all occurances of sk_buff ** in the netfilter API by
sk_buff *.
So the original 0.9.5 implementation of struct sk_buff
*ip_pkt_encapsulate(struct sk_buff *skb, __u32 dest) no longer works.
I tried to modify ip_pkt_encapsulate by using pskb_expand_head instead
of skb_copy_expand:
struct sk_buff *ip_pkt_encapsulate(struct sk_buff *skb, __u32 dest)
{
int oldlen;
struct min_ipenc_hdr *ipe;
struct iphdr *iph;
/* Allocate new data space at head */
if( pskb_expand_head(skb,0,
sizeof(struct min_ipenc_hdr),GFP_ATOMIC) < 0) {
printk("Could not expand skb header\n");
kfree_skb(skb);
return NULL;
}
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
iph = skb->nh.iph;
#else
iph = (struct iphdr *)skb->network_header;
#endif
oldlen = skb->len;
skb_put(skb, sizeof(struct min_ipenc_hdr));
/* Move the data */
memmove(skb->data + (iph->ihl << 2) + sizeof(struct min_ipenc_hdr),
skb->data + (iph->ihl << 2), oldlen - (iph->ihl << 2));
/* Update pointers */
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
iph = skb->nh.iph = (struct iphdr *)skb->data;
#else
iph = (struct iphdr *)skb->data;
skb->network_header = skb->data;
#endif
ipe = (struct min_ipenc_hdr *)(skb->data + (iph->ihl << 2));
…
}
But the kaodv module crashes when sending paged packages, saying that
the skb is not linear, so I added:
If(!skb_make_writable(skb,skb->len)) {
printk("Could not make skb writable\n");
return NULL;
}
just before calling pskb_expand_head. The module stops crashing this
time, but the package still cannot deliver correctly.
Can anybody tell me how to modify ip_pkt_encapsulate to correctly add
the additional header to the paged skb?
Wang Rui
wan...@ue..., wan...@gm...
|
|
From: Wang R. <wan...@ue...> - 2008-12-11 13:33:22
|
Hi,
I am trying to port aodv-uu 0.9.5 to Linux kernel 2.6.26. The
netfilter implementation has changed since 2.6.24 :
[NETFILTER]: Replace sk_buff ** with sk_buff *
With all the users of the double pointers removed, this patch mops up by
finally replacing all occurances of sk_buff ** in the netfilter API by
sk_buff *.
So the original 0.9.5 implementation of struct sk_buff
*ip_pkt_encapsulate(struct sk_buff *skb, __u32 dest) no longer works. I
tried to modify ip_pkt_encapsulate by using pskb_expand_head instead of
skb_copy_expand:
struct sk_buff *ip_pkt_encapsulate(struct sk_buff *skb, __u32 dest)
{
int oldlen;
struct min_ipenc_hdr *ipe;
struct iphdr *iph;
/* Allocate new data space at head */
if( pskb_expand_head(skb,0,
sizeof(struct min_ipenc_hdr),GFP_ATOMIC) < 0) {
printk("Could not expand skb header\n");
kfree_skb(skb);
return NULL;
}
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
iph = skb->nh.iph;
#else
iph = (struct iphdr *)skb->network_header;
#endif
oldlen = skb->len;
skb_put(skb, sizeof(struct min_ipenc_hdr));
/* Move the data */
memmove(skb->data + (iph->ihl << 2) + sizeof(struct min_ipenc_hdr),
skb->data + (iph->ihl << 2), oldlen - (iph->ihl << 2));
/* Update pointers */
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22))
iph = skb->nh.iph = (struct iphdr *)skb->data;
#else
iph = (struct iphdr *)skb->data;
skb->network_header = skb->data;
#endif
ipe = (struct min_ipenc_hdr *)(skb->data + (iph->ihl << 2));
.
}
But the kaodv module crashes when sending paged packages, saying that the
skb is not linear, so I added:
If(!skb_make_writable(skb,skb->len)) {
printk("Could not make skb writable\n");
return NULL;
}
just before calling pskb_expand_head. The module stops crashing this time,
but the package still cannot deliver correctly.
Can anybody tell me how to modify ip_pkt_encapsulate to correctly add the
additional header to the paged skb?
Wang Rui
wan...@ue..., wan...@gm...
|