)]}'
{
  "commit": "bd89efc532fe41f867f848144cc8b42054ddf6f9",
  "tree": "fcf90049cb5a15bf6689cdbc6038c3fe22079009",
  "parents": [
    "ef34814426862c41c061520d4ac833be5914b5ba"
  ],
  "author": {
    "name": "Simon Kelley",
    "email": "simon@thekelleys.org.uk",
    "time": "Fri May 12 14:56:08 2006 -0700"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri May 12 14:56:08 2006 -0700"
  },
  "message": "[NEIGH]: Fix IP-over-ATM and ARP interaction.\n\nThe classical IP over ATM code maintains its own IPv4 \u003c-\u003e \u003cATM stuff\u003e\nARP table, using the standard neighbour-table code. The\nneigh_table_init function adds this neighbour table to a linked list\nof all neighbor tables which is used by the functions neigh_delete()\nneigh_add() and neightbl_set(), all called by the netlink code.\n\nOnce the ATM neighbour table is added to the list, there are two\ntables with family \u003d\u003d AF_INET there, and ARP entries sent via netlink\ngo into the first table with matching family. This is indeterminate\nand often wrong.\n\nTo see the bug, on a kernel with CLIP enabled, create a standard IPv4\nARP entry by pinging an unused address on a local subnet. Then attempt\nto complete that entry by doing\n\nip neigh replace \u003cip address\u003e lladdr \u003csome mac address\u003e nud reachable\n\nLooking at the ARP tables by using \n\nip neigh show\n\nwill reveal two ARP entries for the same address. One of these can be\nfound in /proc/net/arp, and the other in /proc/net/atm/arp.\n\nThis patch adds a new function, neigh_table_init_no_netlink() which\ndoes everything the neigh_table_init() does, except add the table to\nthe netlink all-arp-tables chain. In addition neigh_table_init() has a\ncheck that all tables on the chain have a distinct address family.\nThe init call in clip.c is changed to call\nneigh_table_init_no_netlink().\n\nSince ATM ARP tables are rather more complicated than can currently be\nhandled by the available rtattrs in the netlink protocol, no\nfunctionality is lost by this patch, and non-ATM ARP manipulation via\nnetlink is rescued. A more complete solution would involve a rtattr\nfor ATM ARP entries and some way for the netlink code to give\nneigh_add and friends more information than just address family with\nwhich to find the correct ARP table.\n\n[ I\u0027ve changed the assertion checking in neigh_table_init() to not\n  use BUG_ON() while holding neigh_tbl_lock.  Instead we remember that\n  we found an existing tbl with the same family, and after dropping\n  the lock we\u0027ll give a diagnostic kernel log message and a stack dump.\n  -DaveM ]\n\nSigned-off-by: Simon Kelley \u003csimon@thekelleys.org.uk\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b0666d66293fd545f63163bc54350c0ca6ac1204",
      "old_mode": 33188,
      "old_path": "include/net/neighbour.h",
      "new_id": "4901ee446879e59795f0df8d57a1c18ce9c7ce92",
      "new_mode": 33188,
      "new_path": "include/net/neighbour.h"
    },
    {
      "type": "modify",
      "old_id": "1a786bfaa416c8d6972ef974dd31577caf14cc9e",
      "old_mode": 33188,
      "old_path": "net/atm/clip.c",
      "new_id": "72d8529826646e35018514046c3afac4197885a8",
      "new_mode": 33188,
      "new_path": "net/atm/clip.c"
    },
    {
      "type": "modify",
      "old_id": "4cf878efdb49eb9fc7d02b7b41f83601ab29d079",
      "old_mode": 33188,
      "old_path": "net/core/neighbour.c",
      "new_id": "50a8c73caf972ae64b963a02322f801669d77eaf",
      "new_mode": 33188,
      "new_path": "net/core/neighbour.c"
    }
  ]
}
