)]}'
{
  "commit": "0c03150e7ea8f7fcd03cfef29385e0010b22ee92",
  "tree": "60dae3c582863b79df992a605c18a0029469b67b",
  "parents": [
    "781223a15c510b4cb11328603bfc41ec8352f015"
  ],
  "author": {
    "name": "stephen hemminger",
    "email": "shemminger@vyatta.com",
    "time": "Fri Jul 22 07:47:06 2011 +0000"
  },
  "committer": {
    "name": "David S. Miller",
    "email": "davem@davemloft.net",
    "time": "Fri Jul 22 17:01:12 2011 -0700"
  },
  "message": "bridge: send proper message_age in config BPDU\n\nA bridge topology with three systems:\n\n      +------+  +------+\n      | A(2) |--| B(1) |\n      +------+  +------+\n           \\    /\n          +------+\n          | C(3) |\n          +------+\n\nWhat is supposed to happen:\n * bridge with the lowest ID is elected root (for example: B)\n * C detects that A-\u003eC is higher cost path and puts in blocking state\n\nWhat happens. Bridge with lowest id (B) is elected correctly as\nroot and things start out fine initially. But then config BPDU\ndoesn\u0027t get transmitted from A -\u003e C. Because of that\nthe link from A-C is transistioned to the forwarding state.\n\nThe root cause of this is that the configuration messages\nis generated with bogus message age, and dropped before\nsending.\n\nIn the standardmessage_age is supposed to be:\n  the time since the generation of the Configuration BPDU by\n  the Root that instigated the generation of this Configuration BPDU.\n\nReimplement this by recording the timestamp (age + jiffies) when\nrecording config information. The old code incorrectly used the time\nelapsed on the ageing timer which was incorrect.\n\nSee also:\n  https://bugzilla.vyatta.com/show_bug.cgi?id\u003d7164\n\nSigned-off-by: Stephen Hemminger \u003cshemminger@vyatta.com\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "54578f274d85ddcaa9b65f6b4d7aa2c582d39dde",
      "old_mode": 33188,
      "old_path": "net/bridge/br_private.h",
      "new_id": "78cc364997d9888bc4a1e9869c7c64edb6378ee9",
      "new_mode": 33188,
      "new_path": "net/bridge/br_private.h"
    },
    {
      "type": "modify",
      "old_id": "bb4383e84de91ed78e98f1a777410011a7772003",
      "old_mode": 33188,
      "old_path": "net/bridge/br_stp.c",
      "new_id": "fcff62251547c476659399999d584b4bb31cf380",
      "new_mode": 33188,
      "new_path": "net/bridge/br_stp.c"
    }
  ]
}
