ng_rpl: port to the new network stack#3050
Conversation
I advice to use |
|
(for the router behavior of NDP you need #3049 of course) |
sys/include/net/ng_nettype.h
Outdated
There was a problem hiding this comment.
I think I would prefer something like NG_NETTYPE_ICMP_RPL.
There was a problem hiding this comment.
It shouldn't need a NG_NETTYPE at all oO let me review ths
There was a problem hiding this comment.
Demux is done in https://github.com/RIOT-OS/RIOT/pull/3050/files#diff-a263cf517da28750259527ba0aab62dfR122 so everything is as it should be :-)
There was a problem hiding this comment.
Right, seems like a left-over from my previous attempt.. will address all your comments soon
There was a problem hiding this comment.
again wrong prefix incrementor?
|
I think we're finally ready to go: ACK and go as soon as Travis is green. |
|
travis is not happy, because I modified |
|
I don't like merging this without any Travis-enabled build with |
|
@gebart good catch. I will add |
|
ACK, let's wait for Travis |
|
Spark-Core needs black-listing. |
|
cppcheck complains: |
|
Needs a rebase, too. |
|
rebased and eliminated cppcheck warnings |
|
travis approves |
|
Let me run one final test. |
|
Test runs fine, ACK holds - wanna hit the button yourself? |
|
I am sitting in the bus right now. Merge at will. Otherwise I merge when I
|
ng_rpl: port to the new network stack
|
Congrats @cgundogan ! |
|
Eureka!
|
|
✨ \o/ ✨ |
|
nice! |
|
bäääm, you did it sir 🎆 |
Depends on: #2783 and #2818This PR introduces RPL for the new network stack. I used the old RPL implementation as a blueprint and copied code blocks, which could be reused.
For a better internal dodag management I made use of
utlist.h(linked list).Thus, it was quite easy to adopt the code to support multiple dodags and/or instances.
Furthermore, I changed the parsing of control packets. The old implementation did use a mediary data structure to parse all the information and then assign them to the internal dodag structure. I completely removed this mediary step and operate directly on the internal data structures.
While adopting the code, I found small discrepancies betwen the implementation and the RFC. I tried to correct them to the best of my knowledge.
This port is far from being complete, as I only included the
Storingmode of operationMissing things:
I did all my testing with the
ng_nativenetimplementation by rebasing this to the branch of @kaspar030 #2776 and then use the test application in./tests/driver_netdev_eth/.There I modifid the
Makefileto includeng_ipv6_defaultandng_rpl.When starting two to four nodes (tap0..tap3), I first have to add an IPv6 address to the nodes and can then initialize RPL on the given interface.
Please make sure, that you use the same prefix part for all nodes.
On one node I create a DODAG by issuing:
rpl root 1 2001:db8::x, where1is the instance id by choice and2001:db8::xthe dodag id. Note that you should not use the prefix notation (*/xx) like I did forifconfighere.rplshows some basic information about the dodags andrpl helpwill display some more commands, like deleting/adding dodags, starting/stoping trickle timers, sending DIS etc.I would like to test this on some iotlab m3s, but I don't know how. Could somebody point me to a test/example application, which I can use as a baseline?
@OlegHahm @BytesGalore @authmillenon @gebart @Lotterleben @haukepetersen @emmanuelsearch and basically everyone else: please help me by reviewing this code of a Kraken...
@authmillenon you should especially look into the communication with the network layer part, because I do not know if I implemented it the right way - it works though.