)]}'
{
  "commit": "5f37d86f837e666f7915ee6dc971e44e495d41f3",
  "tree": "a31e657803f2600dd1c0aac533e2087de8055df2",
  "parents": [
    "c2191eaee5686cdcb54c5f26afffa4a029c691de"
  ],
  "author": {
    "name": "paul",
    "email": "paul",
    "time": "Sat Apr 19 00:11:28 2003 +0000"
  },
  "committer": {
    "name": "paul",
    "email": "paul",
    "time": "Sat Apr 19 00:11:28 2003 +0000"
  },
  "message": "From: Israel Keys \u003cikeys@agile.tv\u003e\nSubject: [zebra 18677] zebra initialisation bug and patch\n\nHi All,\n\nI have found a bug in zebra that prevents its routing table and\ninterface database from being initialised properly. The problem occurs\nwhen a request is made via the netlink socket but the kernel produces a\nEWOULDBLOCK/EAGAIN when the result is trying to be retrieved via a\nrecvmsg(). Zebra does not do anything about this and continues to\nfunction  (with an empty routing table and interface list) as if nothing\nhas happened. With no such information the routing protocol dosn\u0027t work!\n\nTwo functions are called during the initialisation of Zebra:\ninterface_lookup_netlink() and netlink_route_read() - obtaining the\ninterfaces and routing table from the kernel respectively. These are the\nonly time these functions are called.\n\nThese functions, interface_lookup_netlink() and netlink_route_read(),\nuse netlink_parse_info() to recieve the data from the netlink socket.\nThe problem is, netlink_parse_info() returns (without error) when its\ncall to recvmsg() results in an errno EWOULDBLOCK/EAGAIN. This behaviour\nis expected by other funtions calling netlink_parse_info() -\nnetlink_parse_info is simply recalled at a later stage. However, on\ninitialisation it is never recalled.\n\nSince zebra is expected to nothing else during initialisation it was\neasiest to temporarily change the netlink socket to BLOCK and wait\nindefinently until the kernel responds with the required information.\n\nAttached is a patch with these changes.\n\nComments and questions are welcome.\nPlease inform me if this patch is added to the Zebra source.\n\n--israel\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a2b678eefde11add455afd72fdb2c4e58a7a609f",
      "old_mode": 33188,
      "old_path": "zebra/rt_netlink.c",
      "new_id": "b84cdbac364eafc235472b65e70636e3b6576958",
      "new_mode": 33188,
      "new_path": "zebra/rt_netlink.c"
    }
  ]
}
