)]}'
{
  "commit": "77acf6b41f705384593a057c2bea057283bf429b",
  "tree": "1605971b7759d8f81964576dd92d0657efbd37a6",
  "parents": [
    "821bb326f87fbc000376fdc5371e9e53f666267a"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Jun 26 04:29:38 2024 -0700"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Jun 26 05:01:58 2024 -0700"
  },
  "message": "[ipv4] Support small subnets with no directed broadcast address\n\nIn a small subnet (with a /31 or /32 subnet mask), all addresses\nwithin the subnet are valid host addresses: there is no separate\nnetwork address or directed broadcast address.\n\nThe logic used in iPXE to determine whether or not to use a link-layer\nbroadcast address will currently fail in these subnets.  In a /31\nsubnet, the higher of the two host addresses (i.e. the address with\nall host bits set) will be treated as a broadcast address.  In a /32\nsubnet, the single valid host address will be treated as a broadcast\naddress.\n\nFix by adding the concept of a host mask, defined such that an address\nin the local subnet with all of the mask bits set to zero represents\nthe network address, and an address in the local subnet with all of\nthe mask bits set to one represents the directed broadcast address.\nFor most subnets, this is simply the inverse of the subnet mask.  For\nsmall subnets (/31 or /32) we can obtain the desired behaviour by\nsetting the host mask to all ones, so that only the local broadcast\naddress 255.255.255.255 will be treated as a broadcast address.\n\nOriginally-fixed-by: Lukas Stockner \u003clstockner@genesiscloud.com\u003e\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3044d6316ddb543463d57f50b2e694f0a3e8fe14",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/in.h",
      "new_id": "05a8122ef2127a6c0387377c6fb8afccda935390",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/in.h"
    },
    {
      "type": "modify",
      "old_id": "285be6dcd77203936dde9647598f95e4b09c638b",
      "old_mode": 33188,
      "old_path": "src/include/ipxe/ip.h",
      "new_id": "b1b5cb2e75f74c7da931b078aa9ca1398890dec1",
      "new_mode": 33188,
      "new_path": "src/include/ipxe/ip.h"
    },
    {
      "type": "modify",
      "old_id": "b91fa2ad04a2a703b4710e78a4b9f1576bd4356c",
      "old_mode": 33188,
      "old_path": "src/net/ipv4.c",
      "new_id": "5d0cb0f9a69af26e5afb29102a8b4c55a67bb5f3",
      "new_mode": 33188,
      "new_path": "src/net/ipv4.c"
    }
  ]
}
