I'm currently banging my head against the wall getting OLSRd on Ubuntu to register itself via nameservice (including service advertisements). Once that's hammered out, connecting anything to the mesh is basically: 1) Associate to BroadbandHamnet-v1 on channel 1, Ad-hoc mode. 2) Assign a static IP in the 10.x.x.x space. If you want, use the last 3 bytes of your NIC's ethernet address to do this like mesh nodes do, otherwise, any arbitrarily picked IP address will probably be fine in all but the largest of meshes.
3) Get OLSRd up and running. Completely unconfigured, olsrd -i <interface> will work and get your routing tables synchronized, and will allow you to extend the mesh with whatever hardware you're using. Once OLSRd is properly configured, your machine name will show up on the mesh (versus just an IP address), as well as any services you wish advertised (e.g. a file share or something for others to use). Note: this is where I've run into problems, and would appreciate help.
4) Get your own DNS synchronized with OLSR. This should be pretty straight-forward, especially on Ubuntu or Debian where NetworkManager runs a local dnsmasq instance similar to how the BBHN firmware does it.
5) Make certain that your callsign is periodically beaconed. You can do a broadcast ping that includes the hex representation of your machine's name. You could put this in cron to run every 5 or 10 minutes: ping -c 1 -p `echo $HOSTNAME | xxd -p` 255.255.255.255
It looks like this when it runs. KD0NRC-Laptop is 0x4b44304e52432d4c6170746f70 in hex.
PATTERN: 0x4b44304e52432d4c6170746f70
PING 255.255.255.255 (255.255.255.255): 56 data bytes
--- output truncated. multiple machines return ping ---
You can clearly see my callsign in the traffic. This is similar to how the mesh nodes do it, but a little different method. Sniffed with tcpdump, the traffic looks like this: $ sudo tcpdump -nvXs 1514 -i en0 "icmp"
tcpdump: listening on en0, link-type EN10MB (Ethernet), capture size 1514 bytes
15:45:29.222720 IP (tos 0x0, ttl 64, id 49845, offset 0, flags [none], proto ICMP (1), length 84)
192.168.42.102 > 255.255.255.255: ICMP echo request, id 61984, seq 0, length 64
0x0000: 4500 0054 c2b5 0000 4001 cce5 c0a8 2a66 E..T....@.....*f
0x0010: ffff ffff 0800 b9d2 f220 0000 5204 0369 ............R..i
0x0020: 0003 65a1 4b44 304e 5243 2d4c 6170 746f ..e.KD0NRC-Lapto
0x0030: 700a 4b44 304e 5243 2d4c 6170 746f 700a p.KD0NRC-Laptop.
0x0040: 4b44 304e 5243 2d4c 6170 746f 700a 4b44 KD0NRC-Laptop.KD
0x0050: 304e 5243 0NRC
Once you have all that figured out, actually browsing and utilizing the mesh becomes the only problem. If configured properly, olsrd_Nameservices will create files (on the mesh nodes, you can look at them: /var/run/services_olsr and /var/run/hosts_olsr), so you could either manually look at the files, or create a web script similar to the cgi-bin scripts on the mesh nodes to render them into something useful. |