{"action":"created","comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/31067594","id":31067594,"diff_hunk":"@@ -58,6 +58,9 @@ typedef enum {\n #ifdef MODULE_NG_ICMPV6\n     NG_NETTYPE_ICMPV6,          /**< Protocol is ICMPv6 */\n #endif\n+#ifdef MODULE_NG_RPL\n+    NG_NETTYPE_RPL_CTRL,        /**< Protocol is ICMPv6, RPL sub-type */","path":"sys/include/net/ng_nettype.h","position":5,"original_position":5,"commit_id":"fb27562bf7d57d11b1ca7921c4b07b568344afd3","original_commit_id":"fb27562bf7d57d11b1ca7921c4b07b568344afd3","user":{"login":"authmillenon","id":675644,"avatar_url":"https://avatars.githubusercontent.com/u/675644?v=3","gravatar_id":"","url":"https://api.github.com/users/authmillenon","html_url":"https://github.com/authmillenon","followers_url":"https://api.github.com/users/authmillenon/followers","following_url":"https://api.github.com/users/authmillenon/following{/other_user}","gists_url":"https://api.github.com/users/authmillenon/gists{/gist_id}","starred_url":"https://api.github.com/users/authmillenon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/authmillenon/subscriptions","organizations_url":"https://api.github.com/users/authmillenon/orgs","repos_url":"https://api.github.com/users/authmillenon/repos","events_url":"https://api.github.com/users/authmillenon/events{/privacy}","received_events_url":"https://api.github.com/users/authmillenon/received_events","type":"User","site_admin":false},"body":"It's not even used ;-)","created_at":"2015-05-26T19:00:34Z","updated_at":"2015-05-26T19:00:34Z","html_url":"https://github.com/RIOT-OS/RIOT/pull/3050#discussion_r31067594","pull_request_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050","_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments/31067594"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/3050#discussion_r31067594"},"pull_request":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050"}}},"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050","id":36066891,"html_url":"https://github.com/RIOT-OS/RIOT/pull/3050","diff_url":"https://github.com/RIOT-OS/RIOT/pull/3050.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/3050.patch","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050","number":3050,"state":"open","locked":false,"title":"ng_rpl: port to the new network stack","user":{"login":"cgundogan","id":739129,"avatar_url":"https://avatars.githubusercontent.com/u/739129?v=3","gravatar_id":"","url":"https://api.github.com/users/cgundogan","html_url":"https://github.com/cgundogan","followers_url":"https://api.github.com/users/cgundogan/followers","following_url":"https://api.github.com/users/cgundogan/following{/other_user}","gists_url":"https://api.github.com/users/cgundogan/gists{/gist_id}","starred_url":"https://api.github.com/users/cgundogan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgundogan/subscriptions","organizations_url":"https://api.github.com/users/cgundogan/orgs","repos_url":"https://api.github.com/users/cgundogan/repos","events_url":"https://api.github.com/users/cgundogan/events{/privacy}","received_events_url":"https://api.github.com/users/cgundogan/received_events","type":"User","site_admin":false},"body":"Depends on: #2783 and #2818 \r\n\r\nThis 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.\r\n\r\nFor a better internal dodag management I made use of `utlist.h` (linked list).\r\nThus, it was quite easy to adopt the code to support multiple dodags and/or instances.\r\n\r\nFurthermore, 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.\r\n\r\nWhile adopting the code, I found small discrepancies betwen the implementation and the RFC. I tried to correct them to the best of my knowledge.\r\n\r\nThis port is far from being complete, as I only included the `Storing` mode of operation\r\nMissing things:\r\n\r\n- [ ] Non-Storing Mode of Operation\r\n    - [ ] Source Routing Header missing [RFC6554](https://tools.ietf.org/html/rfc6554) (see also #2898)\r\n- [ ] ETX/MrHof is not included, because ETX needs to be ported to the new network stack separately\r\n- [ ] some message options are missing, like the Prefix Information Object (in DIOs)\r\n- [ ] RPL Information Option missing [RFC6553](https://tools.ietf.org/html/rfc6553)\r\n\r\nI did all my testing with the `ng_nativenet` implementation by rebasing this to the branch of @kaspar030 #2776 and then use the test application in `./tests/driver_netdev_eth/`.\r\nThere I modifid the `Makefile` to include `ng_ipv6_default` and `ng_rpl`.\r\n\r\nWhen 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.\r\n```\r\nifconfig 5 add 2001:db8::x/64\r\nrpl init 5\r\n```\r\nPlease make sure, that you use the same prefix part for all nodes.\r\n\r\nOn one node I create a DODAG by issuing: `rpl root 1 2001:db8::x`, where `1` is the instance id by choice and `2001:db8::x` the dodag id. Note that you should not use the prefix notation (`*/xx`) like I did for `ifconfig` here.\r\n\r\n`rpl` shows some basic information about the dodags and `rpl help` will display some more commands, like deleting/adding dodags, starting/stoping trickle timers, sending DIS etc.\r\n\r\nI 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?\r\n\r\n@OlegHahm @BytesGalore @authmillenon @gebart @Lotterleben @haukepetersen @emmanuelsearch and basically everyone else: please help me by reviewing this code of a Kraken...\r\n\r\n@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.","created_at":"2015-05-22T20:38:29Z","updated_at":"2015-05-26T19:00:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a8f2d9af6a8747d044d35ce701b80cc255697ed9","assignee":{"login":"OlegHahm","id":1590423,"avatar_url":"https://avatars.githubusercontent.com/u/1590423?v=3","gravatar_id":"","url":"https://api.github.com/users/OlegHahm","html_url":"https://github.com/OlegHahm","followers_url":"https://api.github.com/users/OlegHahm/followers","following_url":"https://api.github.com/users/OlegHahm/following{/other_user}","gists_url":"https://api.github.com/users/OlegHahm/gists{/gist_id}","starred_url":"https://api.github.com/users/OlegHahm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/OlegHahm/subscriptions","organizations_url":"https://api.github.com/users/OlegHahm/orgs","repos_url":"https://api.github.com/users/OlegHahm/repos","events_url":"https://api.github.com/users/OlegHahm/events{/privacy}","received_events_url":"https://api.github.com/users/OlegHahm/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050/commits","review_comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050/comments","review_comment_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments{/number}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050/comments","statuses_url":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/fb27562bf7d57d11b1ca7921c4b07b568344afd3","head":{"label":"cgundogan:ng_rpl_fib","ref":"ng_rpl_fib","sha":"fb27562bf7d57d11b1ca7921c4b07b568344afd3","user":{"login":"cgundogan","id":739129,"avatar_url":"https://avatars.githubusercontent.com/u/739129?v=3","gravatar_id":"","url":"https://api.github.com/users/cgundogan","html_url":"https://github.com/cgundogan","followers_url":"https://api.github.com/users/cgundogan/followers","following_url":"https://api.github.com/users/cgundogan/following{/other_user}","gists_url":"https://api.github.com/users/cgundogan/gists{/gist_id}","starred_url":"https://api.github.com/users/cgundogan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgundogan/subscriptions","organizations_url":"https://api.github.com/users/cgundogan/orgs","repos_url":"https://api.github.com/users/cgundogan/repos","events_url":"https://api.github.com/users/cgundogan/events{/privacy}","received_events_url":"https://api.github.com/users/cgundogan/received_events","type":"User","site_admin":false},"repo":{"id":19483231,"name":"RIOT","full_name":"cgundogan/RIOT","owner":{"login":"cgundogan","id":739129,"avatar_url":"https://avatars.githubusercontent.com/u/739129?v=3","gravatar_id":"","url":"https://api.github.com/users/cgundogan","html_url":"https://github.com/cgundogan","followers_url":"https://api.github.com/users/cgundogan/followers","following_url":"https://api.github.com/users/cgundogan/following{/other_user}","gists_url":"https://api.github.com/users/cgundogan/gists{/gist_id}","starred_url":"https://api.github.com/users/cgundogan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cgundogan/subscriptions","organizations_url":"https://api.github.com/users/cgundogan/orgs","repos_url":"https://api.github.com/users/cgundogan/repos","events_url":"https://api.github.com/users/cgundogan/events{/privacy}","received_events_url":"https://api.github.com/users/cgundogan/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cgundogan/RIOT","description":"RIOT -  The friendly OS for IoT","fork":true,"url":"https://api.github.com/repos/cgundogan/RIOT","forks_url":"https://api.github.com/repos/cgundogan/RIOT/forks","keys_url":"https://api.github.com/repos/cgundogan/RIOT/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cgundogan/RIOT/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cgundogan/RIOT/teams","hooks_url":"https://api.github.com/repos/cgundogan/RIOT/hooks","issue_events_url":"https://api.github.com/repos/cgundogan/RIOT/issues/events{/number}","events_url":"https://api.github.com/repos/cgundogan/RIOT/events","assignees_url":"https://api.github.com/repos/cgundogan/RIOT/assignees{/user}","branches_url":"https://api.github.com/repos/cgundogan/RIOT/branches{/branch}","tags_url":"https://api.github.com/repos/cgundogan/RIOT/tags","blobs_url":"https://api.github.com/repos/cgundogan/RIOT/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cgundogan/RIOT/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cgundogan/RIOT/git/refs{/sha}","trees_url":"https://api.github.com/repos/cgundogan/RIOT/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cgundogan/RIOT/statuses/{sha}","languages_url":"https://api.github.com/repos/cgundogan/RIOT/languages","stargazers_url":"https://api.github.com/repos/cgundogan/RIOT/stargazers","contributors_url":"https://api.github.com/repos/cgundogan/RIOT/contributors","subscribers_url":"https://api.github.com/repos/cgundogan/RIOT/subscribers","subscription_url":"https://api.github.com/repos/cgundogan/RIOT/subscription","commits_url":"https://api.github.com/repos/cgundogan/RIOT/commits{/sha}","git_commits_url":"https://api.github.com/repos/cgundogan/RIOT/git/commits{/sha}","comments_url":"https://api.github.com/repos/cgundogan/RIOT/comments{/number}","issue_comment_url":"https://api.github.com/repos/cgundogan/RIOT/issues/comments{/number}","contents_url":"https://api.github.com/repos/cgundogan/RIOT/contents/{+path}","compare_url":"https://api.github.com/repos/cgundogan/RIOT/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cgundogan/RIOT/merges","archive_url":"https://api.github.com/repos/cgundogan/RIOT/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cgundogan/RIOT/downloads","issues_url":"https://api.github.com/repos/cgundogan/RIOT/issues{/number}","pulls_url":"https://api.github.com/repos/cgundogan/RIOT/pulls{/number}","milestones_url":"https://api.github.com/repos/cgundogan/RIOT/milestones{/number}","notifications_url":"https://api.github.com/repos/cgundogan/RIOT/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cgundogan/RIOT/labels{/name}","releases_url":"https://api.github.com/repos/cgundogan/RIOT/releases{/id}","created_at":"2014-05-06T06:16:02Z","updated_at":"2015-05-08T17:29:07Z","pushed_at":"2015-05-26T08:28:06Z","git_url":"git://github.com/cgundogan/RIOT.git","ssh_url":"git@github.com:cgundogan/RIOT.git","clone_url":"https://github.com/cgundogan/RIOT.git","svn_url":"https://github.com/cgundogan/RIOT","homepage":"https://github.com/RIOT-OS/RIOT/wiki","size":18556,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"RIOT-OS:master","ref":"master","sha":"7be7e00ab9aa9197f1c7fef576a03d81913e9477","user":{"login":"RIOT-OS","id":3079480,"avatar_url":"https://avatars.githubusercontent.com/u/3079480?v=3","gravatar_id":"","url":"https://api.github.com/users/RIOT-OS","html_url":"https://github.com/RIOT-OS","followers_url":"https://api.github.com/users/RIOT-OS/followers","following_url":"https://api.github.com/users/RIOT-OS/following{/other_user}","gists_url":"https://api.github.com/users/RIOT-OS/gists{/gist_id}","starred_url":"https://api.github.com/users/RIOT-OS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RIOT-OS/subscriptions","organizations_url":"https://api.github.com/users/RIOT-OS/orgs","repos_url":"https://api.github.com/users/RIOT-OS/repos","events_url":"https://api.github.com/users/RIOT-OS/events{/privacy}","received_events_url":"https://api.github.com/users/RIOT-OS/received_events","type":"Organization","site_admin":false},"repo":{"id":7370241,"name":"RIOT","full_name":"RIOT-OS/RIOT","owner":{"login":"RIOT-OS","id":3079480,"avatar_url":"https://avatars.githubusercontent.com/u/3079480?v=3","gravatar_id":"","url":"https://api.github.com/users/RIOT-OS","html_url":"https://github.com/RIOT-OS","followers_url":"https://api.github.com/users/RIOT-OS/followers","following_url":"https://api.github.com/users/RIOT-OS/following{/other_user}","gists_url":"https://api.github.com/users/RIOT-OS/gists{/gist_id}","starred_url":"https://api.github.com/users/RIOT-OS/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RIOT-OS/subscriptions","organizations_url":"https://api.github.com/users/RIOT-OS/orgs","repos_url":"https://api.github.com/users/RIOT-OS/repos","events_url":"https://api.github.com/users/RIOT-OS/events{/privacy}","received_events_url":"https://api.github.com/users/RIOT-OS/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/RIOT-OS/RIOT","description":"RIOT -  The friendly OS for IoT","fork":false,"url":"https://api.github.com/repos/RIOT-OS/RIOT","forks_url":"https://api.github.com/repos/RIOT-OS/RIOT/forks","keys_url":"https://api.github.com/repos/RIOT-OS/RIOT/keys{/key_id}","collaborators_url":"https://api.github.com/repos/RIOT-OS/RIOT/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/RIOT-OS/RIOT/teams","hooks_url":"https://api.github.com/repos/RIOT-OS/RIOT/hooks","issue_events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/events{/number}","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/events","assignees_url":"https://api.github.com/repos/RIOT-OS/RIOT/assignees{/user}","branches_url":"https://api.github.com/repos/RIOT-OS/RIOT/branches{/branch}","tags_url":"https://api.github.com/repos/RIOT-OS/RIOT/tags","blobs_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/refs{/sha}","trees_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/trees{/sha}","statuses_url":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/{sha}","languages_url":"https://api.github.com/repos/RIOT-OS/RIOT/languages","stargazers_url":"https://api.github.com/repos/RIOT-OS/RIOT/stargazers","contributors_url":"https://api.github.com/repos/RIOT-OS/RIOT/contributors","subscribers_url":"https://api.github.com/repos/RIOT-OS/RIOT/subscribers","subscription_url":"https://api.github.com/repos/RIOT-OS/RIOT/subscription","commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/commits{/sha}","git_commits_url":"https://api.github.com/repos/RIOT-OS/RIOT/git/commits{/sha}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/comments{/number}","issue_comment_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments{/number}","contents_url":"https://api.github.com/repos/RIOT-OS/RIOT/contents/{+path}","compare_url":"https://api.github.com/repos/RIOT-OS/RIOT/compare/{base}...{head}","merges_url":"https://api.github.com/repos/RIOT-OS/RIOT/merges","archive_url":"https://api.github.com/repos/RIOT-OS/RIOT/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/RIOT-OS/RIOT/downloads","issues_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues{/number}","pulls_url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls{/number}","milestones_url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones{/number}","notifications_url":"https://api.github.com/repos/RIOT-OS/RIOT/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/labels{/name}","releases_url":"https://api.github.com/repos/RIOT-OS/RIOT/releases{/id}","created_at":"2012-12-29T20:38:40Z","updated_at":"2015-05-26T11:09:18Z","pushed_at":"2015-05-26T18:59:46Z","git_url":"git://github.com/RIOT-OS/RIOT.git","ssh_url":"git@github.com:RIOT-OS/RIOT.git","clone_url":"https://github.com/RIOT-OS/RIOT.git","svn_url":"https://github.com/RIOT-OS/RIOT","homepage":"https://github.com/RIOT-OS/RIOT/wiki","size":123925,"stargazers_count":395,"watchers_count":395,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":299,"mirror_url":null,"open_issues_count":319,"forks":299,"open_issues":319,"watchers":395,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050"},"html":{"href":"https://github.com/RIOT-OS/RIOT/pull/3050"},"issue":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050"},"comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/issues/3050/comments"},"review_comments":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050/comments"},"review_comment":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/3050/commits"},"statuses":{"href":"https://api.github.com/repos/RIOT-OS/RIOT/statuses/fb27562bf7d57d11b1ca7921c4b07b568344afd3"}}}}