Hi,
I would like to know if batman adv [2013.2.0] supports a way to send/receive message between server and client?
I have setup a mesh network which has 1 server and several clients. I want to broadcast a message to all the clients from the server. The message might contain one more many parameters that I want all clients will use these parameters for their configuration.
It would be very convenience if I could execute a script remotely on clients from the server via batman adv without knowing their IP address.
Thanks, Dat
Hi Dat,
Hi,
I would like to know if batman adv [2013.2.0] supports a way to send/receive message between server and client?
I have setup a mesh network which has 1 server and several clients. I want to broadcast a message to all the clients from the server. The message might contain one more many parameters that I want all clients will use these parameters for their configuration.
It would be very convenience if I could execute a script remotely on clients from the server via batman adv without knowing their IP address.
batman-adv does not allow that by itself, but you can find various ways to do that. For example, install an HTTP server and let the clients download scripts from the default router in your routing table which hopefully points to your server. Another alternative would be to use alfred[1], which is designed to distribute data through a mesh network and to be used by clients. You can use it to send any kind of data over your mesh network. I would not exactly send shellscripts over it (might be a security problem), but configuration parameters should work just fine.
Cheers, Simon
Hi Simon,
Thanks for your response. I've read about Alfred, tomorrow I will try installing Alfred.
I am browsing the source code of batman adv and if I am not wrong I can create and send a user-defined message. I think I can broadcast something like a "struct sk_buff *skb;" to all clients. However I don't think this one is a good way since it may impact to the current design of batman adv. How do you think?
One more question, why browsing source code, I can not find the definition of struct sk_buff; where could I find it?
P/S: I forgot to give the detail of my issue is that I do not know the IP addresses of all clients but I want to be able to send the configuration to them. Is it possible for Alfred to send those configuration without knowing cients' IP address by using mac-address only?
I haven't tried with IPv6 before. I have no IPv6 knowledge.
Thanks, Dat
On Thu, Feb 6, 2014 at 1:55 AM, Simon Wunderlich sw@simonwunderlich.de wrote:
Hi Dat,
Hi,
I would like to know if batman adv [2013.2.0] supports a way to send/receive message between server and client?
I have setup a mesh network which has 1 server and several clients. I want to broadcast a message to all the clients from the server. The message might contain one more many parameters that I want all clients will use these parameters for their configuration.
It would be very convenience if I could execute a script remotely on clients from the server via batman adv without knowing their IP address.
batman-adv does not allow that by itself, but you can find various ways to do that. For example, install an HTTP server and let the clients download scripts from the default router in your routing table which hopefully points to your server. Another alternative would be to use alfred[1], which is designed to distribute data through a mesh network and to be used by clients. You can use it to send any kind of data over your mesh network. I would not exactly send shellscripts over it (might be a security problem), but configuration parameters should work just fine.
Cheers, Simon
Hello Dat,
Hi Simon,
Thanks for your response. I've read about Alfred, tomorrow I will try installing Alfred.
I am browsing the source code of batman adv and if I am not wrong I can create and send a user-defined message. I think I can broadcast something like a "struct sk_buff *skb;" to all clients. However I don't think this one is a good way since it may impact to the current design of batman adv. How do you think?
well in theory you can do a lot of things, but in practice I'd really not recommend to send userspace-specific stuff through the kernel. I think it would be better to just a userspace tool (alfred, wget/httpd, netcat, your own tool) to transfer this kind of data.
One more question, why browsing source code, I can not find the definition of struct sk_buff; where could I find it?
This is part of the linux kernel headers, to be found in include/linux/skbuff.h. Again, you should really look into sending this kind of information via userspace, e.g. use an UDP-socket and send a broadcast message. In case you have never done something like that, have a look at that guide:
P/S: I forgot to give the detail of my issue is that I do not know the IP addresses of all clients but I want to be able to send the configuration to them. Is it possible for Alfred to send those configuration without knowing cients' IP address by using mac-address only?
Yes, that is possible.
I haven't tried with IPv6 before. I have no IPv6 knowledge.
That's not a problem, just turn on IPv6 in your system and the interface will get a link-local address assigned automatically.
Cheers, Simon
On 06/02/14 13:06, Le Tran Dat wrote:
Hi Simon,
Thanks for your response. I've read about Alfred, tomorrow I will try installing Alfred.
I am browsing the source code of batman adv and if I am not wrong I can create and send a user-defined message. I think I can broadcast something like a "struct sk_buff *skb;" to all clients. However I don't think this one is a good way since it may impact to the current design of batman adv. How do you think?
One more question, why browsing source code, I can not find the definition of struct sk_buff; where could I find it?
P/S: I forgot to give the detail of my issue is that I do not know the IP addresses of all clients but I want to be able to send the configuration to them. Is it possible for Alfred to send those configuration without knowing cients' IP address by using mac-address only?
Instead of touching the batman-adv code or using Alfred you could just open a socket on the bat0 interface and send raw Ethernet frames having the broadcast address as destination.
This is something you can do with any Ethernet compatible interface (so also with your normal eth0) and therefore also with batman-adv.
Regards,
Hi Antonio,
Could you explain more about opening a socket on the bat0 interface? Should I write a new user space deamon or write it inside batman adv?
Thanks Dat
On Thu, Feb 6, 2014 at 4:42 AM, Antonio Quartulli antonio@meshcoding.com wrote:
On 06/02/14 13:06, Le Tran Dat wrote:
Hi Simon,
Thanks for your response. I've read about Alfred, tomorrow I will try installing Alfred.
I am browsing the source code of batman adv and if I am not wrong I can create and send a user-defined message. I think I can broadcast something like a "struct sk_buff *skb;" to all clients. However I don't think this one is a good way since it may impact to the current design of batman adv. How do you think?
One more question, why browsing source code, I can not find the definition of struct sk_buff; where could I find it?
P/S: I forgot to give the detail of my issue is that I do not know the IP addresses of all clients but I want to be able to send the configuration to them. Is it possible for Alfred to send those configuration without knowing cients' IP address by using mac-address only?
Instead of touching the batman-adv code or using Alfred you could just open a socket on the bat0 interface and send raw Ethernet frames having the broadcast address as destination.
This is something you can do with any Ethernet compatible interface (so also with your normal eth0) and therefore also with batman-adv.
Regards,
-- Antonio Quartulli
On 06/02/14 13:54, Le Tran Dat wrote:
Hi Antonio,
Could you explain more about opening a socket on the bat0 interface? Should I write a new user space deamon or write it inside batman adv?
everything is userspace in this case. It's about writing a program in userspace that sends raw Ethernet frames. batman-adv in this case can be seen like an Ethernet switch, so you can treat you bat0 like it was a normal eth0 connected to this switch. No need to touch batman-adv at all.
Cheers,
Thanks all,
I used alfred to share configuration parameters to the whole network. Everything works fine.
Anyway, If I want to know any change of the current parameter then I need to periodically check for every 5 minutes. Is there any event triggered when a new value has just been set to alfred?
Thanks, Dat
On Thu, Feb 6, 2014 at 8:59 PM, Antonio Quartulli antonio@meshcoding.com wrote:
On 06/02/14 13:54, Le Tran Dat wrote:
Hi Antonio,
Could you explain more about opening a socket on the bat0 interface? Should I write a new user space deamon or write it inside batman adv?
everything is userspace in this case. It's about writing a program in userspace that sends raw Ethernet frames. batman-adv in this case can be seen like an Ethernet switch, so you can treat you bat0 like it was a normal eth0 connected to this switch. No need to touch batman-adv at all.
Cheers,
-- Antonio Quartulli
b.a.t.m.a.n@lists.open-mesh.org