)]}'
{
  "commit": "c8bf462bc567c3dcb083ff95cc13060dd06f138c",
  "tree": "c612129b23db7bb8613fff4c6e2d51301bc77f65",
  "parents": [
    "5a577b488f687f339dea62e7bb4f4c5793ad523f"
  ],
  "author": {
    "name": "Gerrit Renker",
    "email": "gerrit@erg.abdn.ac.uk",
    "time": "Thu Sep 04 07:30:19 2008 +0200"
  },
  "committer": {
    "name": "Gerrit Renker",
    "email": "gerrit@erg.abdn.ac.uk",
    "time": "Thu Sep 04 07:45:37 2008 +0200"
  },
  "message": "dccp ccid-2: Separate option parsing from CCID processing\n\nThis patch replaces an almost identical replication of code: large parts\nof dccp_parse_options() re-appeared as ccid2_ackvector() in ccid2.c.\n\nApart from the duplication, this caused two more problems:\n 1. CCIDs should not need to be concerned with parsing header options;\n 2. one can not assume that Ack Vectors appear as a contiguous area within an\n    skb, it is legal to insert other options and/or padding in between. The\n    current code would throw an error and stop reading in such a case.\n\nThe patch provides a new data structure and associated list housekeeping.\n\nOnly small changes were necessary to integrate with CCID-2: data structure\ninitialisation, adapt list traversal routine, and add call to the provided\ncleanup routine.\n\nThe latter also lead to fixing the following BUG: CCID-2 so far ignored\nAck Vectors on all packets other than Ack/DataAck, which is incorrect,\nsince Ack Vectors can be present on any packet that has an Ack field.\n\nDetails:\n--------\n * received Ack Vectors are parsed by dccp_parse_options() alone, which passes\n   the result on to the CCID-specific routine ccid_hc_tx_parse_options();\n * CCIDs interested in using/decoding Ack Vector information will add code\n   to fetch parsed Ack Vectors via this interface;\n * a data structure, `struct dccp_ackvec_parsed\u0027 is provided as interface;\n * this structure arranges Ack Vectors of the same skb into a FIFO order;\n * a doubly-linked list is used to keep the required FIFO code small.\n\nSigned-off-by: Gerrit Renker \u003cgerrit@erg.abdn.ac.uk\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "66b8a51300c0cd3c18be3b340a38abfacfd71b0b",
      "old_mode": 33188,
      "old_path": "net/dccp/ackvec.c",
      "new_id": "41819848bddaafd6412ad28a3cc7a53ecb7616f2",
      "new_mode": 33188,
      "new_path": "net/dccp/ackvec.c"
    },
    {
      "type": "modify",
      "old_id": "db447503b6364a8c6aa0282e444592789dd6bc9a",
      "old_mode": 33188,
      "old_path": "net/dccp/ackvec.h",
      "new_id": "6cdca79a99f7b6f773adde60794fabd625044bf2",
      "new_mode": 33188,
      "new_path": "net/dccp/ackvec.h"
    },
    {
      "type": "modify",
      "old_id": "813d5cd40e8b43a0fb88eda98fb8c1db097435b1",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/ccid2.c",
      "new_id": "bbf16b35734d24df040b8beb1c2e43141ad58a43",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/ccid2.c"
    },
    {
      "type": "modify",
      "old_id": "d7815804bcebb565a6d0574940837a02e36b6053",
      "old_mode": 33188,
      "old_path": "net/dccp/ccids/ccid2.h",
      "new_id": "907deed255b4869b048a27ad144e11b69fffc19f",
      "new_mode": 33188,
      "new_path": "net/dccp/ccids/ccid2.h"
    },
    {
      "type": "modify",
      "old_id": "791e07853a7951d8775cab6045c2485dfea609c6",
      "old_mode": 33188,
      "old_path": "net/dccp/options.c",
      "new_id": "e5a32979d7d70a2efab56e83406df876c3df4fb9",
      "new_mode": 33188,
      "new_path": "net/dccp/options.c"
    }
  ]
}
