====== Changelog ====== ===== next ==== * allow ipv4 verbatim * reduce parsing load for respondd ===== v0.3.149 ===== [_] mmfd / libbabelhelper: rework logic for reconnecting to babeld hopefully fixing message storms [X] gluon-ddhcpd: use /32 netmask [X] ddhcpd: fix dhcp option 28 (subnet mask) [_] ipv4: allow reaching the local_node ipv4 address ===== v0.3.147 - 2018-06-24 ===== [X] ddhcpd: fix memory issue, fix calling hooks [X] create gluon-ddhcpd init script, adjust serveR_interface settings [X] add firewall rule for ddhcp to allow communication on mmfd device [X] gluon-l3roamd: minor quoting bugfix for integration hook fo ddhcpd ===== v0.3.142 ===== [X] l3roamd: (cosmetic) FIX: double-claiming client if client has no ip addresses after first claim. [X] l3roamd: stop sending NS locally with force=1 when there is a reply to this address [X] ddhcpd: bump version to allow hooks and tell l3roamd about ipv4 addresses & clients ===== v0.3.138 ===== [X] l3roamd: extend the client structure to save whether the client has been claimed already to avoid claiming it twice in case it was detected without active ip address [X] gluon-mesh-babel: configure ddhcpd with babel specific features move broadcast settings from gluon-ddhcpd to gluon-mesh-babel package [X] l3roamd: listen on ipv6 ndp checks for duplicate addresses detection, when that occurs, start NDP locally for those addresses for 5 seconds to avoid network-wide seek ===== v0.3.136 ===== [X] l3roamd: build infrastructure to schedule function with retry, migrate schedule_info_retry, schedule_claim_retry [X] l3roamd: test & fix INFO retry & ACK cycle [X] l3roamd: abort with core dump when detecting memory corruption [X] l3roamd: fix vector implementation, adjust output, remove client when disconnecting from bridge ===== v0.3.130 ===== [X] l3roamd: make claiming more efficient if the host is new to the network [X] l3roamd: discard claims from own node-ip [X] l3roamd: adjust output stream for some intercom messages so they show up in the correct order [X] gluon-ddhcpd: save network range settings in upgrade scripts ===== v0.3.129 ===== [X] l3roamd: further claiming bugfixes [X] gluon-ddhcpd: set correct server_interface ===== v0.3.128 ===== [X] l3roamd: claiming: find_repeatable adjustments, correct claiming interval ===== v0.3.127 ===== [X] l3roamd: bugfix task scheduling with sub-second precision [X] l3roamd: use ddhcp hook to tell l3roamd about new client-ipv4 addresses [X] gluon-mesh-babel: report RX/TX stats for br-client instead of lo [X] ddhcp-configuration: generate gluon package to set the configuration. How much of that is community-specific? ===== v0.3.122 ===== [X] remove dnsmasq hack [X] implement DHCP using ddhcp [X] l3roamd: send ACK as unicast ===== v0.3.121 ===== [X] l3roamd: consume the data on unreachfd to avoid memory buildup [X] l3roamd: do not subscribe to neighbour netlink packets when no client interface is given [X] l3roamd: do not initialize sending neighbour solicitiations when no client interface is given [X] l3roamd: do not initialize receiving neighbour advertisements when no client interface is given [X] l3roamd: ipmgr: build inbound handler for ipv4 packets [X] l3roamd: vector: implement VECTOR_LSEARCH makro [X] l3roamd: build kernel route parser for ipv4 [X] Retry für INFO einbauen, so lange bis ACK kommt [X] l3roamd: ipmgr: build outbound handler for ipv4 packets [X] l3roamd: ipv4: add routes to prefixes to main routing table [X] ACK einbauen als Antwort auf INFO. Nach ACK, kann retry-cycle von INFO-Versand abgebrochen werden [X] Retry für Claim häufiger (500ms) und öfter: 10x ===== v0.3.111 ===== [X] l3roamd: resolve memory issue when purging old packets [X] l3roamd: avoid seek-loops [X] l3roamd: do not add transformed ipv6 address when ipv4-client is detected, add ipv4 address to neighbour [X] l3roamd: initial ipv4 support [X] include broken targets in build for tl-wr841-v13 [X] l3roamd: resolve memory issue: when not reading from raw queue ===== v0.3 ===== * This is identical with v0.2.106 ===== v0.2.106 ===== [X] rebase on latest master (new location for respondd module, new statuspage integration) [X] re-structure site.conf, include drivers for futro [X] libbabelhelper: use select, allow readbabeldata => allow to gather neighbour data for respondd and status-page, show mesh connections on the map [X] overwrite alle autoupdater settings and branches, set autoupdater-branch to test ===== v0.2.98 ===== [X] libbabelhelper: fix illegal write on read-error ===== v0.2.96 ===== [X] jenkins: adjust build job to generate the correct manifest files [X] l3roamd: populate the plat segment in the info packet and parse value [X] l3roamd: allow to send icmp destination unreachable even if there is no client interface - avoid "sendto: socket operation on non-socket" [X] l3roamd: add error checking for every malloc and calloc [X] libbabelhelper: remove select [X] mmfd: print neighbours every 15 seconds in verbose mode [X] respondd: add debug output for: fix Wed Apr 4 08:18:51 2018 daemon.err respondd[1610]: ioctl(SIOCGIFHWADDR) : No such device [X] respondd: adjust to babelhelper without select [X] neighbours-babel.c migrate to new libbabelhelper ===== v0.2.92 ===== [X] l3roamd: increase efficiency of intercom network: do not forward seek if it is for a local client [X] l3roamd: increase efficiency of intercom network: do not forward claim if it is for a local client [X] l3roamd: fix memleaks that occur when roaming in clientmgr and intercom [X] l3roamd: use new packet format for SEEK [X] l3roamd: use new packet format for CLAIM [X] l3roamd: adjust packet format: add version field in packet, include plat segment in info packet, re-sort fields in header and INFO ===== v0.2.91 ===== [X] libbabelhelper: introduce babel lexer, hopefully make parsing more stable. [X] mmfd increase parsing efficiency [X] mmfd - prevent neighbours being detected twice neighbours: - fe80::ca5:c1ff:fea2:8441 on mesh0 (11), reach 64493, cost 352 - fe80::ca5:c1ff:fea2:8441 on mesh0 (11), reach 0, cost 0 - fe80::209e:46ff:fe5f:c440 on mesh-vpn (15), reach 65535, cost 96 - fe80::ca5:c1ff:fea2:8441 on mesh0 (11), reach 0, cost 0 - fe80::ccbe:37ff:fe7d:3801 on mesh0 (11), reach 65535, cost 341 - fe80::209e:46ff:fe5f:c440 on mesh-vpn (15), reach 0, cost 0 - fe80::2c5d:eff:feca:46fa on mesh-vpn (15), reach 65535, cost 96 [X] gluon-mesh-babel: log to stderr/logread instead of /tmp/log/babeld.log to avoid filling the RAM [X] l3roamd: use network byte order on network for nonce [X] l3roamd: increase efficiency of netlink handling - get rid of memcpy, parse directly from buffer [X] autoupdater branches einrichten [X] l3roamd: increase network efficiency when claiming - add packet to recently seen list when using multicast [X] l3roamd: use IP_FREEBIND to bind to node-client ip [X] respondd: copy max IFNAMSIZ Bytes when assembling ifreq to obtain MAC ===== v0.0.1.68 ===== [X] l3roamd: only put active IP addresses in info packet [X] l3roamd: improve roaming for cable clients - use NEWLINK messages originating from fdb to learn new clients. [X] l3roamd: allow change of client interface, do not always exit on epoll error, re-initialize arp, icmp6 routemgr [X] l3roamd info of inactive clients now leads to enrichment of addresses [X] l3roamd: fix info message parsing [X] l3roamd: use /48 clat range in -4 init parameter using a /96 length [X] l3roamd: intercom: fill sender-field in all outgoing packets [X] l3roamd: add debug output for intercom packet handling [X] l3roamd: remove endless loop when flushing packets [X] gluon-mesh-babel: Fix respondd crash when parsing json-response from l3roamd [X] introduce xlat464-clat, remove of jool [X] babeld upgrade to master to get event-triggered route-updates working [X] gluon-mesh-babel: ix crash of upgrade-script ./300-gluon-mesh-babel-mkconfig:12: attempt to call global 'client_prefix6' (a nil value) ===== v0.0.1.65 ===== [X] l3roamd: send claim if the client was known in the past but is inactive now (it might have roamed away and back again). [X] l3roamd: rework socket structure to allow multiple instances of l3roamd on one host while allowing to communicate via multicast and unicast on all relevant addresses: [X] bind m sockets (one for each mesh interface) to mcast address to receive multicast packets [X] bind 1 socket to node-IP for sending claims and receiving info in response [X] bind n sockets fec0-socket /close when claiming / removing client => add to client structure [X] l3roamd: intercom - bind to node-ip [X] l3roamd: roaming - keep old clients for 5 minutes after dropping them in an "old" queue. [X] babeld: adjust confit to include redistribution of CLATs and PLATs [X] gluon-mesh-babel: plat-prefix in site.conf konfigurieren [X] gluon-mesh-babel: clat-prefix in site.conf konfigurieren [X] gluon-l3roamd: set -n parameter to make l3roamd know about the clat-interface [X] gluon-l3roamd: set cli-options for clat (clat_prefix, clat-interface) in initscript [X] l3roamd: fix nl80211 client discovery [X] l3roamd: introduce switches to disable discovery via ndp/fdb/nl80211 [X] respondd: catch errors in corner cases for retrieving mac addresses [X] l3roamd: roaming: if the client is not available any more, forget ipv4 address along with ipv6 [X] l3roamd: Allow setting the ula-node-client-prefix [X] l3roamd: purge packets from own task scheduled when packet is received instead from NS-task [X] l3roamd: ipmgr: when dropping old packets, send icmp destination unreachable [X] l3roamd: FIX purge packets when debug is disabled [X] l3roamd: update usage() include all socket functions in help text [X] make autoupdater work on snapshot and next branches [X] l3roamd: do not crash when purging old packets ===== Snapshot 63 ===== [X] l3roamd: rework seek logic triggers [x] l3roamd: when sending NS, use clients ll-address as destination if it is known already - RFC2461 [X] l3roamd: fix output when sending NS [X] l3roamd: beim entfernen von ip adressen eines clients, eine prüfugn der anderen ip adressen anstoßen => mit echo requests damit der kernel das gleich alles mitkriegt. [X] l3roamd: help with roaming - do not remove the client unless it's last IP-Address was deactivated >5 Minutes ago when bridge/nl80211 report the client as gone. [X] l3roamd: allow to add / remove addresses for clients using the socket. [X] respondd: implement json parsing for unlimited size of return value of l3roamd (10 lines) [X] l3roamd: always use multicast claims instead of unicast. [X] l3roamd: NS/NA-Zyklus bei NUD:FAILED und NEWNEIGH entfernen - bei Empfang von NA wird clientmgr_add_address aufgerufen - set NUD_REACHABLE inside clientmgr_add_Address() [X] l3roamd: use nl-messages with state NUD_NOARP to deactivate client IP. [X] gluon-mesh-respondd: fix page fault [X] l3roamd: allow re-detection of client's IP addresses [X] l3roamd: fix segfault on clientmgr_is_known_address() ===== Snapshot 62 ===== [x] l3roamd: when deleting clients, remove all their addresses by iterating backwards in the address-vector [X] mmfd: allow to run multiple instances in parallel [X] l3roamd: allow to run multiple instances in parallel [X] l3roamd: introduce get_prefixes-command on socket [X] adjust upgrade-scripts to domain config [X] l3roamd: do not remove client too early see log ===== Snapshot 60 ===== [X] l3roamd: avoid double-free of client->addresses on client removal [X] l3roamd: "IPV4"-Zusatzroute für nat64 für jeden client hinzufügen [X] l3roamd: IP & Client-löschen ermöglichen [X] l3roamd: IPv4-Adresserkennung ermöglichen [X] l3roamd: bei DELNEIGH wird nicht die ll-adresse des clients gelösct, weil diese nciht im client-Adress-Array ist. => mit dem client auch essen ll-adresse mitführen. [X] prefixd: auf socket von l3roamd schreiben und damit roaming in zusätzlichen prefixes ermöglichen [X] libbabelhelper: remove condition with endless "Could not read data from buffer. This should not happen." ===== Snapshot 58 ===== [X] respondd: BUGFIX: some neighbour interfaces are not shown. [X] respondd: statt mac-Adressen ll-Adressen einbauen [X] l3roamd: FIX: page fault ===== Snapshot 54 ===== [x] gluon-web-network Paket ist an Bord, Mesh on LAN ist konfigurierbar [x] l3roamd Absturz behoben [x] jool ist an bord für nicht-tiny target zum direkten ausleiten [X] l3roamd: die special IP darf erst nach allen claim retries gesetzt werden damit claim/info und damit roaming geht. [x] gc_thresh1 = 2 setzen und gc_thresh=3 [X] l3roamd: Entfernen von neighbours per netlink realieseren [X] l3roamd: client entfernen, wenn dessen letzte IP entfernt wird. [X] Fix debug output: seeking on intercom for client 2a06:8187:fbab:2::1sent intercom packet to a00:1593:0:0:ff02:: on iface lo rc: -1 [X] l3roamd: do not re-add clients when they are already active [X] x86-glibc buildjob: artifect nur für lede-x86-64-combined-squashfs.img speichern, auf make oldcnofig umsteigen für den zweiten defconfig [X] use-site-conf autoupdater branch patchen [x] firewall: allow dhcp on local_node interface [X] l3roamd: beim entfernen eines clients (roaming, drop, exit), die special-IPs vom client-Interface entfernen [X] l3roamd: neighbour entfernen bei client disconnect ===== Snapshot 52 ===== [X] l3roamd: Umgang mit Speicher bereinigen [X] l3roamd: get_clients should also display all clients, their macs and ip addresses [X] wann gehen wir in den tentative-STatus => REview durchführen (wenn wir per info-message neue IPs erhalten und wenn wir einen mac-change haben und inaktive-Adressen für den client [X] modules mit hochladen bei snapshots [X] dnsmasq konfigurieren, IPv4 für Clients [X] l3roamd: review clientmgr [X] server umstellen für firmwareuploads https://wiki.ffm.freifunk.net/infrastruktur:servers:download [X] l3roamd: add version-switch [X] statuspage batman: ?PROTO? (undefined) [X] respondd-Strukturen: Link-Quality und eingestellter Durchsatz aufnehmen. siehe iwinfo mesh0 assoclist ===== Snapshot 41 ===== [X] FIX: [ 257.537508] neighbours-babe[2318]: segfault at 0 ip 0000000000401302 sp 00007ffe76b852d0 error 6 in neighbours-babel[400000+2000] [X] babel-neighbour-struktur anpassen an Batman-Format: [X] statuspage rebase auf master, bauen [X] buildjob für christf_next branch machen und diese firmware auf ffm-server hochladen [X] DNS mit next-node feature reparieren [X] push christf_respondd-time & raise PR [X] statuspage heilen: wieder batadv-stream fehler (hoffentlich mit Thomas gemeinsam) [X] update-interval für mesh-vpn verbindung in den Minutenbereich erhöhen. [X] prefixd: roaming in zusätzlichen prefixes erlauben durch Bekanntgabe des zusätzlichen prefix an den l3roamd [X] gluon-mesh-babel script anpassen: loopback.ip6addr muss gesetzt werden [X] cnames in name überführen, delete_all weg nehmen, einzeln löschen (section namen hochzählen und dann explizit die gluon-dingens löschen. [X] NS: NONCE einbauen nach https://tools.ietf.org/html/rfc3971 [X] mmfd: neues debian-package bauen und hochladen [X] automatisch mmfd0 interface hoch bringen, analog zu l3roamd ===== Snapshot 32 ===== [X] gw02 aufbauen [X] l3roamd: beobachten, wie clients inaktiv werden [X] l3roamd arbeitet nicht richtig, wenn ein -4 IP-MAP-Netz nicht angegeben ist. Wird der speicherbereich initialisiert, gehts. -4 wird also angegeben. => fixen [X] l3roamd: wen multicast claims und unicast claims geshickt werden: ip adresse mit im log ausgeben für den der claim gilt [X] ipmgr - Sicherstellen, dass die queue von alten Paketen bereinigt wird. FIX memleak [X] rebase n_babel-work [X] package/gluon-core/luasrc/lib/gluon/upgrade/140-firewall-rules reject_input_on_wan nachrüsten aus https://github.com/freifunk-ffm/gluon/blame/d9f6c0aa6bb662dd59850676e49190a4 [X] Firewallregeln auf Duplikate prüfen [X] Kontrolle der Commits durchführen - einzeln durchgehen. [X] gedroppte Clients erst nach 10 minuten löschen oder wenn ein claim kommt. [X] interface-IDs in routemgr nutzen [X] aliase für kurze DNS für nextnode nn.ffffm.net nn [X] Retry für Claims bauen [X] claim-Datenstruktur bauen: send-counter, claim selbst [X] Anpassung an send_claim: Eintrag nach dem claim in die claim-retry-liste legen. [X] Anpassung handle_info: prüfen ob im claim-retry-vector ein eintrag für den client ist, wenn ja, entfernen. [X] claim-retry-task bauen, die so lange retries sekündlich schickt und den retry-counter inkrementiert, wie a) ein Eintrag in der claim-retry-liste ist und b) der counter nicht 3 überschritten hat. Wenn er 3 überschreitet, Eintrag aus der retry-liste löschen.