Olsr e l’mdns plugin al Gsoc 2012

Dopo la felicità e l’eccitazione per l’accettazione al Google Summer of Code mi sono rimboccato le maniche e ho incominciato a prepararmi sul lavoro da fare.

Dietro consigli di Saverio ho studiato diversi documenti e libri sulla struttura di socket e la gestione della rete in ambiente unix, all’inizio tutti quei socket(), connect() e send() mi hanno lasciato spiazzato, ma con calma è pazienza ho assimilato i concetti di base.

Dovendo lavorare su un progetto in complesso e continuo mutamento come olsr si è presentata la necessità di utilizzare uno strumento per la gestione del codice scritto e organizzazione delle modifiche. L’utilizzo di git era quindi d’obbligo, ed essendo uno strumento potente anche qui bisognava cercarne di capire il funzionamento basilare prima di poterlo usare.

Dopo qualche ultima breve guida sull’utilizzo di vim e cscope ho potuto dare ufficialmente il via alle danze, ho fatto un fork della branch stable di olsr e da li si è potuto incominciare a lavorare direttamente sul plugin di mdns. Il problema attuale del plugin è che non distingueva se un pacchetto mdns presente nella rete locale era stato ricevuto dalla rete olsr oppure era stato generato localmente, per ovviare al problema ho dovuto modificare il Time to Live (o Hop Limit per l’ipv6) dei pacchetti mdns provenienti dalla rete olsr impostandolo ad 1, poi ho anche fatto in modo che il plugin scartasse i pacchetti mdns presenti nella rete locale con time to live uguale a 1. In questo modo i pacchetti generati da dispositivi presenti nella rete interna sarebbero tranquillamente passati nella rete olsr mentre quelli provenienti dalla rete olsr sarebbero stati comunque fruibili ai device sulla rete interna.

Dopo qualche piccolo problema per la gestione delle struct dei pacchetti ipv6 una prima versione del codice è ora pronta per il testing, utilizzando netkit ora mi aspettano le prove e se necessario il relativo debug.

Tags: , , ,

Leave a Reply