====== RZ Raven USB Stick als RPL Border Router mit SNMPv3 Support und RPL MIB ======
===== Vorbereitungen =====
Um Contiki SNMP sowie den RPL Border Router auf den RZ Raven USB Stick zu bekommen sind einige Vorbereitungen nötig.
- **Contiki SNMP mit RFC Konformitätsanpassungen des USM sowie der RPL MIB downloaden**
* entweder Checkout von [[https://github.com/szehl/snmp-rpl-mib/tree/usmchanges]] (enthält USM Anpassungen sowie Punkt 2)
* oder Checkout der original Contiki SNMP mit RPL MIB Version der Jacobs Universität [[https://github.com/szehl/snmp-rpl-mib/tree/master/]], es müssen jedoch dann die Änderungen von [[contiki:snmp_usm|Nötige Änderungen innerhalb des User Based Security Models]] durchgeführt werden.
- **RPL Border Router Code für den RZ Raven kompatibel machen**
* entfällt wenn bei Punkt 1 die Version vom tree usmchanges heruntergeladen wurde
* wurde die original Version vom master tree heruntergeladen, müssen die Änderungen beschrieben in [[contiki:raven_usb_rpl_border_router|Der Jackdaw Raven USB Stick als RPL Border Router]] durchgeführt werden.
- **SRAM des RZ Raven USB Sticks mit externen SRAM erweitern**
* hierzu müssen die Anweisungen aus [[contiki:rz_raven_usb_at90usb1287_xram_with_xmem|RZ_Raven_USB Stick (AT90USB1287) External RAM Erweiterung (XRAM) über die XMEM Schnittstelle]] durchgeführt werden.
- **Contiki SNMP und den RPL Border Router Quellcode gleichzeitig in Contiki ausführen**
Diese Anleitung enthält nur die Beschreibung für den letzen Punkt.
===== Contiki Autostart Processes aktivieren =====
Standardmäßig ist innerhalb des Ravenusbstick Quellcodes das Autostart Process Makro deaktiviert. Zur Aktivierung ist folgendes Vorgehen notwendig:
* Innerhalb der Datei ''examples/ravenusbstick/ravenusbstick.c'' das Makro ''#if 0'' und das dazugehörige ''#endif'' auskommentieren.
* Innerhalb des Makefiles ''examples/ravenusbstick/Makefile.ravenusbstick'' die Zeile ''+CFLAGS += -DAUTOSTART_ENABLE'' hinzufügen.
* Innerhalb der Datei ''platform/avr-ravenusb/contiki-raven-main.c'' den Aufruf ''autostart_start(autostart_processes);'' verfügbar machen indem die Makros ''#if 0'' und das dazugehörige ''#endif'' entfernt bzw. auskommentiert werden.
===== Contiki SNMP Daemon in die Autostart Process Liste eintragen =====
Damit der Prozess des Contiki SNMP später von Contiki automatisch gestartet wird, muss dieser in die Autostart Prozess Liste eingetragen werden. Die kann innerhalb der Datei ''examples/ravenusbstick/ravenusbstick.c'' über den Funktionsaufruf ''AUTOSTART_PROCESSES'' geschehen. Dort steht als Beispiel schon der AUfruf eines Hello World Prozesses drin. Dieser kann entweder gelöscht oder behalten werden. Damit Contiki SNMP nun nach dem Bootvorgang ebenfalls gestartet wird, reicht die Eintragung ''AUTOSTART_PROCESSES(&hello_process, &snmpd_process);''. Sowie die Verknüpfung zur Headerdatei zu Dateibeginn mit ''#include "snmpd.h"''.
===== Hinzufügen des Contiki SNMP Quellcode zur Kompilierung =====
Damit der SNMP Quellcode aus dem Contiki apps Ordner in die Kompilierung eingebunden wird, genügt der Aufruf im Makefile ''examples/ravenusbstick/Makefile.ravenusbstick'' mit der zusätzlichen Zeile ''APPS=snmpd''
===== Festlegung der gewünschten MIB =====
Die Auswahl der gewünschten MIB erfolgt im Makefile mit dem Befehl ''MIB_INIT= gewünschtes MIB File''.
Also im Fall des Raven USB Sticks in der Datei ''examples/ravenusbstick/Makefile'', der MIB Aufruf kann dann einfach nach dem ''Target'' Aufruf eingefügt werden.
Also z.B. aus der Zeile
${MAKE} TARGET=avr-ravenusb NOAVRSIZE=1 -f Makefile.ravenusbstick ravenusbstick.elf
wird dann
${MAKE} TARGET=avr-ravenusb MIB_INIT=mib-init-ravenusb.c NOAVRSIZE=1 -f Makefile.ravenusbstick ravenusbstick.elf
===== Checkout mit allen Änderungen =====
Das Repository unter [[https://github.com/szehl/snmp-rpl-mib/tree/ravenusb-rpl-border-router-with-snmpv3-rpl-mib]] enthält alle zuvor besprochenen Änderungen.