)]}'
{
  "commit": "8450fa4a7b9a8236a43b74639fc80bada994ce07",
  "tree": "e432e583f9e87ec6f146ab7e7e789f04df7544f5",
  "parents": [
    "4e456d992889569e2dbb0426f2438797ab06ca1f"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Feb 03 19:36:57 2023 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Fri Feb 03 19:51:58 2023 +0000"
  },
  "message": "[dhcp] Ignore DHCPNAK unless originating from the selected DHCP server\n\nRFC 2131 leaves undefined the behaviour of the client in response to a\nDHCPNAK that comes from a server other than the selected DHCP server.\n\nA substantial amount of online documentation suggests using multiple\nindependent DHCP servers with non-overlapping ranges in the same\nsubnet in order to provide some minimal redundancy.  Experimentation\nshows that in this setup, at least ISC dhcpd will send a DHCPNAK in\nresponse to the client\u0027s DHCPREQUEST for an address that is not within\nthe range defined on that server.  (Since the requested address does\nlie within the subnet defined on that server, this will happen\nregardless of the \"authoritative\" parameter.)  The client will\ntherefore receive a DHCPACK from the selected DHCP server along with\none or more DHCPNAKs from each of the non-selected DHCP servers.\n\nFilter out responses from non-selected DHCP servers before checking\nfor a DHCPNAK, so that these arguably spurious DHCPNAKs will not cause\niPXE to return to the discovery state.\n\nContinue to check for DHCPNAK before filtering out responses for\nnon-selected lease addresses, since experimentation shows that the\nDHCPNAK will usually have an empty yiaddr field.\n\nReported-by: Anders Blomdell \u003canders.blomdell@control.lth.se\u003e\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "b7b84e7db16e5930b3263bef0b75e75db7095f95",
      "old_mode": 33188,
      "old_path": "src/net/udp/dhcp.c",
      "new_id": "a1a481e198e7897b53a3337d762ab6fbbc1cf869",
      "new_mode": 33188,
      "new_path": "src/net/udp/dhcp.c"
    }
  ]
}
