Il package network
Nel package ntk.network ci sono (nel modulo interfaces) le classi base BaseNIC e BaseRoute, che sono usate come classi base per le classi NIC e Route specifiche della piattaforma usata. Al momento è supportata la piattaforma linux.
Quando si accede al package ntk.network, automaticamente (nel modulo init.py):
- viene riconosciuta la piattaforma,
viene importato in ntk.network.backend il modulo ntk/network/<nome_piattaforma>/adapt.py,
viene fatto un alias ntk.network.NIC e ntk.network.Route verso le relative classi (altrimenti ntk.network.backend.Route...)
viene definita la classe NICManager.
Nelle classi BaseNIC e BaseRoute sono previsti una serie di metodi e attributi standard, che se non vengono implementati nelle classi NIC e Route specifiche della piattaforma dinamicamente caricate, lanciano l'eccezione NotImplementedError.
Nelle implementazioni linux, queste classi usano il comando ip (con le opzioni link, route, ...) e alcuni files di sistema come /proc/sys/net/ipv4/ip_forward, /proc/sys/net/ipv4/conf/eth0/rp_filter, ...
In conclusione, basta lo statement from ntk.network import NICManager, Route per avere accesso a:
una istanza della classe NIC per ogni scheda di rete da gestire con Netsukuku;
una istanza della classe Route.
Queste classi forniscono metodi per la gestione della routing table vera e propria del kernel e di altri aspetti di rete legati al kernel.
Nel package ntk.network, inoltre, è presente il modulo inet.