{"action":"created","issue":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2563","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2563/labels{/name}","comments_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2563/comments","events_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2563/events","html_url":"https://github.com/RIOT-OS/RIOT/pull/2563","id":60345297,"number":2563,"title":"ng_pktbuf: change semantics for received packets","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},"labels":[{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/network","name":"network","color":"bfdadc"},{"url":"https://api.github.com/repos/RIOT-OS/RIOT/labels/NSTF","name":"NSTF","color":"d4c5f9"}],"state":"open","locked":false,"assignee":{"login":"haukepetersen","id":620834,"avatar_url":"https://avatars.githubusercontent.com/u/620834?v=3","gravatar_id":"","url":"https://api.github.com/users/haukepetersen","html_url":"https://github.com/haukepetersen","followers_url":"https://api.github.com/users/haukepetersen/followers","following_url":"https://api.github.com/users/haukepetersen/following{/other_user}","gists_url":"https://api.github.com/users/haukepetersen/gists{/gist_id}","starred_url":"https://api.github.com/users/haukepetersen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haukepetersen/subscriptions","organizations_url":"https://api.github.com/users/haukepetersen/orgs","repos_url":"https://api.github.com/users/haukepetersen/repos","events_url":"https://api.github.com/users/haukepetersen/events{/privacy}","received_events_url":"https://api.github.com/users/haukepetersen/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/11","html_url":"https://github.com/RIOT-OS/RIOT/milestones/Network%20Stack%20Task%20Force","labels_url":"https://api.github.com/repos/RIOT-OS/RIOT/milestones/11/labels","id":968921,"number":11,"title":"Network Stack Task Force","description":"The goal of this milestone is to implement the redesign of the network stack.\r\n\r\nTodo list at #2278.","creator":{"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},"open_issues":16,"closed_issues":37,"state":"open","created_at":"2015-02-06T16:04:53Z","updated_at":"2015-03-20T18:30:17Z","due_on":"2015-04-07T22:00:00Z","closed_at":null},"comments":8,"created_at":"2015-03-09T13:50:00Z","updated_at":"2015-03-23T13:50:58Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/pulls/2563","html_url":"https://github.com/RIOT-OS/RIOT/pull/2563","diff_url":"https://github.com/RIOT-OS/RIOT/pull/2563.diff","patch_url":"https://github.com/RIOT-OS/RIOT/pull/2563.patch"},"body":"Sending packets remain in the same order, receiving packets are reversed. This way we save memory on `ng_pktbuf_start_write()`, since only the parts of the packets of interest for later layers in the line are duplicated:\r\n\r\nSome extreme examples below (`next` pointer always points up). Normally, with sending this would only apply for `netif` headers in multicast and L3 in some corner cases. For receiving this can only happen if there are sniffers or dual stacks involved.\r\n\r\n```\r\nSending                          Receiving\r\n=======                          =========\r\n\r\n* Payload                        * netif header\r\n|\\                               |\\\r\n| * L4 header 1                  | * L2.5 header 1\r\n| * L3 header 1                  | * L3 header 1 \r\n| * netif header 1               | * L4 header 1\r\n*   L4 header 2                  | * Payload 1\r\n|\\                               *   L3 header 2\r\n| * Network header 2             |\\\r\n| * netif header 2               | * L4 header 2\r\n*   Network header 3             | * Payload 2\r\n|\\                               *   Payload 3\r\n| * netif header 3\r\n*   netif header 4\r\n```"},"comment":{"url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/comments/85004274","html_url":"https://github.com/RIOT-OS/RIOT/pull/2563#issuecomment-85004274","issue_url":"https://api.github.com/repos/RIOT-OS/RIOT/issues/2563","id":85004274,"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},"created_at":"2015-03-23T13:50:58Z","updated_at":"2015-03-23T13:50:58Z","body":"done"}}