I don't know if my problem has relationship with last Johhanes's path:

whith this configuration

mesh1 ----- meshGate ---- eth router adsl----- internet
I sniffed with kismet and meshGate is transmiting root and RANN signals, 
but mesh1 in a path dump only shows a mac to meshgate as other normal mesh 
nodes: 
¿normal? it could be good to have a default path but I'm not sure about this 
point. 

Another point is that I have to add a line like this in any mesh node to work:
"route add default mesh_interface", it works but I think is not correct because 
you use level 3 (is there another way to do it?),  I get ping from node 1 to 
eth port of the router (good) but if I try to ping from node 1 to internet 
(8.8.8.8) I get no answer, and wireshark shows in eth port of router that node1 
is arp-broadcast asking who has 8.8.8.8., ther router don't send the packets to 
internet. Is all right or mesh gate had to resend the packet to router as DA 
right.

If instead of "add route default mesh_interface", I use "route add default gw 
10.0.0.1(router adress)" all works perfect but in full level 3.. shit.

thanks for yours advise
(Compat wireless 3.5   July + RT73)








________________________________
 De: Thomas Pedersen <[email protected]>
Para: [email protected] 
CC: [email protected]; [email protected]; 
[email protected] 
Enviado: Lunes 20 de agosto de 2012 20:28
Asunto: [PATCH] mac80211: fix DS to MBSS address translation
 
The destination address of unicast frames forwarded through a mesh gate
was being replaced with the broadcast address. Instead leave the
original destination address as the mesh DA. If the nexthop address is
not in the mpath table it will be resolved. If that fails, the frame
will be forwarded to known mesh gates.

Reported-by: Cedric Voncken <[email protected]>
Signed-off-by: Thomas Pedersen <[email protected]>
---
net/mac80211/tx.c |   38 ++++++++++++++++----------------------
1 files changed, 16 insertions(+), 22 deletions(-)

diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index acf712f..c5e8c9c 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -1811,37 +1811,31 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff 
*skb,
            meshhdrlen = ieee80211_new_mesh_header(&mesh_hdr,
                    sdata, NULL, NULL);
        } else {
-            int is_mesh_mcast = 1;
-            const u8 *mesh_da;
+            /* DS -> MBSS (802.11-2012 13.11.3.3).
+             * For unicast with unknown forwarding information,
+             * destination might be in the MBSS or if that fails
+             * forwarded to another mesh gate. In either case
+             * resolution will be handled in ieee80211_xmit(), so
+             * leave the original DA. This also works for mcast */
+            const u8 *mesh_da = skb->data;
+
+            if (mppath)
+                mesh_da = mppath->mpp;
+            else if (mpath)
+                mesh_da = mpath->dst;
+            rcu_read_unlock();

-            if (is_multicast_ether_addr(skb->data))
-                /* DA TA mSA AE:SA */
-                mesh_da = skb->data;
-            else {
-                static const u8 bcast[ETH_ALEN] =
-                    { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
-                if (mppath) {
-                    /* RA TA mDA mSA AE:DA SA */
-                    mesh_da = mppath->mpp;
-                    is_mesh_mcast = 0;
-                } else if (mpath) {
-                    mesh_da = mpath->dst;
-                    is_mesh_mcast = 0;
-                } else {
-                    /* DA TA mSA AE:SA */
-                    mesh_da = bcast;
-                }
-            }
            hdrlen = ieee80211_fill_mesh_addresses(&hdr, &fc,
                    mesh_da, sdata->vif.addr);
-            rcu_read_unlock();
-            if (is_mesh_mcast)
+            if (is_multicast_ether_addr(mesh_da))
+                /* DA TA mSA AE:SA */
                meshhdrlen =
                    ieee80211_new_mesh_header(&mesh_hdr,
                            sdata,
                            skb->data + ETH_ALEN,
                            NULL);
            else
+                /* RA TA mDA mSA AE:DA SA */
                meshhdrlen =
                    ieee80211_new_mesh_header(&mesh_hdr,
                            sdata,
-- 
1.7.5.4

_______________________________________________
Devel mailing list
[email protected]
http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel
_______________________________________________
Devel mailing list
[email protected]
http://lists.open80211s.org/cgi-bin/mailman/listinfo/devel

Reply via email to