diff --git a/Freifunk_Dresden.mw b/Freifunk_Dresden.mw
index 6b6d2798..53bf9c40 100644
--- a/Freifunk_Dresden.mw
+++ b/Freifunk_Dresden.mw
@@ -129,285 +129,6 @@ Es existiert eine Inter-Community-API analog zur SpaceAPI. Beispiel: [http://cho
Jeder Knoten bietet ein JSON-Dokument unter http://10.200.../sysinfo-json.cgi an. Es enthält Versionsstände, Geokoordinaten, Kontaktinfo, Auslastung und alle Routen.
-== Veraltete Technische Informationen ==
-
-Bitte konsultiert zuerst das [http://wiki.freifunk-dresden.de/ Wiki Freifunk Dresden] und
-[http://wiki.freifunk-dresden.de/index.php/Knoten_Spezifikation Knoten Spezifikationen] für aktuelle Informationen,
-da diese immer aktueller sind.
-Derzeit enthält es noch keine techischen Informationen (ist aber in Arbeit).
- Die Informationen hier in diesem Wiki sind derzeit veraltet und sind nicht mehr kompatibel mit dem Freifunk Dresden Netz. Sie sollten daher
- nicht mehr verwendet werden, da es damit zu IP Konflikten kommt.
-
-=== WLAN-Einstellungen ===
-
-In Syntax der /etc/config/wireless
unter OpenWRT:
-
-config wifi-device 'radio0' - option type 'mac80211' - option hwmode '11ng' - option macaddr 'a0:f3:c1:84:a3:e2' - # Je Nach Verbindungsqualität auch HT40- - option htmode 'HT20' - list ht_capab 'LDPC' - list ht_capab 'SHORT-GI-20' - list ht_capab 'SHORT-GI-40' - list ht_capab 'TX-STBC' - list ht_capab 'RX-STBC1' - list ht_capab 'DSSS_CCK-40' - option channel '13' - option country 'DE' - -config wifi-iface - option device 'radio0' - option encryption 'none' - option network 'mesh' - # WLAN-Modus: - option mode 'adhoc' - # Zellen-Id, muss gleich sein: - option bssid '64:64:6d:65:73:68' - # Name zum Wiedererkennen: - option ssid 'Freifunk Dresden [adhoc]' -- -Oder manuell, bis zum nächsten Reboot: -
-iw phy phy0 interface add adhoc0 type ibss -iw dev adhoc0 ibss join "Freifunk Dresden [adhoc]" HT20 fixed-freq 64:64:6d:65:73:68 -- -Viele WLAN-Treiber unter Linux lassen mehrere Interfaces pro Adapter zu. Du kannst Adhoc also auch mit AccessPoints konfigurieren. Allerdings sollte der Channel übereinstimmen. - - -=== Adressvergabe === -Die Berechnung erfolgt über ein Script ''ddmesh-ipcalc.sh''. Die Berechnung hier in diesem Wiki ist veraltet. - -=== Knotennummer reservieren === - -''registerkey'' ist ein eindeutiger Registrierungskey, mit dem der Knoten im Freifunk Netz registriert wird. Dieser wird derzeit -aus den MAC Adressen der Netzwerkkarten im Router und dem ssh-fingerprint generiert. Die Keylänge ist dabei zu erfüllen. -
-curl http://register.ddmesh.de/bot.php\?registerkey\=d4:1d:8c:d9:8f:00:b2:04:e9:80:09:98:ec:f8:42:7e:d4:1d:8c:d9:8f:00:b2:04:e9:80:09:98:ec:f8:42:7e - -OK:141- -'''TODO:''' Aktuell einen Monat lang gültig, wie wird die Erreichbarkeit gecheckt? - -=== Adressen berechnen === - -Auf der Original-Firmware gibts ein Skript für die Knotennummer. Bis jemand die Berechnung formalisiert, müssen wir darauf zurückgreifen: -
-
- TP-LINK TL-WR841N/ND v8 @ r150:~# ddmesh-ipcalc.sh -n 141 -export _ddmesh_dhcplimit=62 -export _ddmesh_netmask=255.0.0.0 -export _ddmesh_ip=10.200.35.65 -export _ddmesh_dhcpoffset=1 -export _ddmesh_mesh6net=fd11:11ae:7466:: -export _ddmesh_hostname=r141 -export _ddmesh_node=141 -export _ddmesh_dhcpstart=10.200.35.66 -export _ddmesh_dhcpnetwork=10.200.35.64 -export _ddmesh_broadcast=10.255.255.255 -export _ddmesh_network=10.200.0.0 -export _ddmesh_mesh6nodenet=fd11:11ae:7466:8d:: -export _ddmesh_max=2048 -export _ddmesh_mesh6nodepre=64 -export _ddmesh_domain=freifunk-dresden.de -export _ddmesh_mesh6pre=48 -export _ddmesh_mesh6ip=fd11:11ae:7466:8d::1 -export _ddmesh_clienthna=10.200.35.64/26 -export _ddmesh_netpre=15 -export _ddmesh_dhcpnetmask=255.255.255.255 -export _ddmesh_dhcpbroadcast=10.255.255.255 -export _ddmesh_dhcprangemask=255.255.255.192 -export _ddmesh_dhcprangepre=26 -export _ddmesh_dhcpend=10.200.35.127 -- -Für die Knotennummer 141 generiert es ein Netzzuweisung von '''10.200.35.64/26'''. Die erste nutzbare Adresse wird als '''10.200.35.65/8''' auf das Adhoc-Interface konfiguriert. Dann sollte auch die Broadcast-Adresse '''10.255.255.255''' stimmen. - -==== IP-Adressberechnungs mit Shell- und Lua Script ==== - -Die Scripte deren Algorithmus formalisiert werden soll: - -'''usr/bin/ddmesh-ipcalc.sh''' -
-#!/bin/sh - -if [ "$1" = "" ] -then - echo "" - echo "ddmesh-ipcalc.sh (lua) Stephan Enderlein (c) 2013 V1.7" - echo "" - echo "Calculates all the addresses for the ddmesh freifunk node" - echo "usage: ddmesh-ipcalc.sh [-n node] | [ip]" - echo "" - exit 1 -fi - -if [ "$1" = "-n" ]; then - node=`echo "$2" | sed 's/[\$\`\(\)]/0/g'` - lua -lddmesh -e "ipcalc.print($node)" -else - ip=`echo "$1" | sed 's/[\$\`\(\)]/0/g'` - lua -lddmesh -e "print(iplookup(\"$ip\"))" -fi - -- -'''usr/lib/lua/ddmesh.lua''' -
---[[---------------------------------------------------------------------------------------- -ddmesh.lua -library for different freifunk functions -version: 6 --------------------------------------------------------------------------------------------]] - ------------------ ipcalc --------------- -ipcalc={} -ipcalc.data={} -ipcalc.data.max=2048 - -function split(str, delim, maxNb) - -- Eliminate bad cases... - if string.find(str, delim) == nil then - return { str } - end - if maxNb == nil or maxNb < 1 then - maxNb = 0 -- No limit - end - local result = {} - local pat = "(.-)" .. delim .. "()" - local nb = 0 - local lastPos - for part, pos in string.gfind(str, pat) do - nb = nb + 1 - result[nb] = part - lastPos = pos - if nb == maxNb then break end - end - -- Handle the last field - if nb ~= maxNb then - result[nb + 1] = string.sub(str, lastPos) - end - return result -end - -function ipcalc.rCalcIp(ip) - if ip==nil or ip=="" then return -1 end - a = split(ip, "[.]") - if #a ~= 4 then return -1 end - if a[1]==nil or a[1]=="" or tonumber(a[1]) ~= 10 then return -1 end - if a[2]==nil or a[2]=="" or tonumber(a[2]) ~= 200 and tonumber(a[2]) ~= 201 then return -1 end - if a[3]==nil or a[3]=="" or tonumber(a[3]) < 0 or tonumber(a[3]) > 255 then return -1 end - if a[4]==nil or a[4]=="" or tonumber(a[4]) < 0 or tonumber(a[4]) > 255 then return -1 end - - middle = a[3] - if a[2]=="201" then middle = middle + 256 end - minor = math.floor(a[4]/64) --x>>6 - node = middle*4+minor --x<<2 - if node < 0 or node > ipcalc.data.max then return -1 end - return node -end - -function ipcalc.calc(node) - if node==nil or node=="" then return -1 end - node=tonumber(node) - if node==nil or node=="" then return -1 end - if node < 0 or node > ipcalc.data.max then return -1 end - - local domain = "freifunk-dresden.de" - - local major = node >= 1024 and 201 or 200 --a[2] - local middle = node >= 1024 and math.floor((node-1024) / 4) or math.floor(node / 4) --a[3] - local minor = (node % 4) * 64 - - local meshnet = "10" - local nodeip = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 1 - local meshnetmask = "255.0.0.0" - local meshpre = 15 - local meshbroadcast = "10.255.255.255" - local meshnetwork = "10.200.0.0" - - local dhcpstart = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 2 - local dhcpend = meshnet .. "." .. major .. "." .. middle .. "." .. minor + 63 - local dhcpoffset = 1 --used by config/dhcp - local dhcplimit = 62 --used by config/dhcp - local dhcprangepre = 26 - local dhcprangemask = "255.255.255.192" - local dhcpnetmask = "255.255.255.255" - local dhcpbroadcast = "10.255.255.255" -- needed, else dnsmasq will not start - local dhcpnetwork = meshnet .. "." .. major .. "." .. middle .. "." .. minor - - local hna = meshnet .. "." .. major .. "." .. middle .. "." .. minor .. "/" .. dhcprangepre - local mesh6pre = "48" - local mesh6net = "fd11:11ae:7466::" - -- client range - local mesh6nodenet= "fd11:11ae:7466:" .. string.format("%x", node) .. "::" - local mesh6ip = mesh6nodenet .. "1" - local mesh6nodepre= "64" - - ipcalc.data.node = node - ipcalc.data.domain = domain - ipcalc.data.hostname = "r" .. node - ipcalc.data.ip = nodeip - ipcalc.data.network = meshnetwork - ipcalc.data.netpre = meshpre - ipcalc.data.netmask = meshnetmask - ipcalc.data.broadcast = meshbroadcast - ipcalc.data.dhcpstart = dhcpstart - ipcalc.data.dhcpend = dhcpend - ipcalc.data.dhcpoffset = dhcpoffset - ipcalc.data.dhcplimit = dhcplimit - ipcalc.data.dhcprangepre = dhcprangepre - ipcalc.data.dhcprangemask = dhcprangemask - ipcalc.data.dhcpnetwork = dhcpnetwork - ipcalc.data.dhcpbroadcast = dhcpbroadcast - ipcalc.data.dhcpnetmask = dhcpnetmask - ipcalc.data.clienthna = hna - ipcalc.data.mesh6ip = mesh6ip - ipcalc.data.mesh6net = mesh6net - ipcalc.data.mesh6pre = mesh6pre - ipcalc.data.mesh6nodenet = mesh6nodenet - ipcalc.data.mesh6nodepre = mesh6nodepre -end - -function ipcalc.print(node) - - if node==nil or node=="" then print("ERROR"); return -1 end - node=tonumber(node) - if node==nil then print("ERROR"); return -1 end - if node < 0 or node > ipcalc.data.max then return -1 end - ipcalc.calc(node) - - for k,v in pairs(ipcalc.data) - do - print("export _ddmesh_"..k.."="..v) - end -end - -function iplookup(ip) - if ip==nil then return -1 end - n=ipcalc.rCalcIp(ip) - if n == -1 then return -1 end - ipcalc.calc(n) - return ipcalc.data.hostname -end - -function lookup(node) - if node==nil then return -1 end - if string.sub(node,1,1) == "r" then - n=tonumber(string.sub(node,2)) - else - n=tonumber(node) - end - if n==nil then return -1 end - if n < 0 or n > ipcalc.data.max then return -1 end - ipcalc.calc(n) - return ipcalc.data.ip -end -- == IPv4-Meshing mit bmxd == === Bauen ===