{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":1532184,"defaultBranch":"master","name":"ipxe","ownerLogin":"ipxe","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2011-03-27T09:39:26.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/692252?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713274557.0","currentOid":""},"activityList":{"items":[{"before":"dc118c53696af6a0b1a8ee78fc9a4d28a217fb21","after":"e965f179e1654103eca33feed7a9cc4c51d91be6","ref":"refs/heads/coverity_scan","pushedAt":"2024-06-01T00:21:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[libc] Add stpcpy()\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[libc] Add stpcpy()"}},{"before":"dc118c53696af6a0b1a8ee78fc9a4d28a217fb21","after":"e965f179e1654103eca33feed7a9cc4c51d91be6","ref":"refs/heads/master","pushedAt":"2024-05-31T09:31:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[libc] Add stpcpy()\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[libc] Add stpcpy()"}},{"before":"d7e58c5a812988c341ec4ad19f79faf067388d58","after":"dc118c53696af6a0b1a8ee78fc9a4d28a217fb21","ref":"refs/heads/coverity_scan","pushedAt":"2024-05-16T00:21:03.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[hci] Provide a general concept of a text widget set\n\nCreate a generic abstraction of a text widget, refactor the existing\neditable text box widget to use this abstraction, add an\nimplementation of a non-editable text label widget, and generalise the\nlogin user interface to use this generic widget abstraction.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[hci] Provide a general concept of a text widget set"}},{"before":"d7e58c5a812988c341ec4ad19f79faf067388d58","after":"dc118c53696af6a0b1a8ee78fc9a4d28a217fb21","ref":"refs/heads/master","pushedAt":"2024-05-15T13:38:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[hci] Provide a general concept of a text widget set\n\nCreate a generic abstraction of a text widget, refactor the existing\neditable text box widget to use this abstraction, add an\nimplementation of a non-editable text label widget, and generalise the\nlogin user interface to use this generic widget abstraction.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[hci] Provide a general concept of a text widget set"}},{"before":"5215be29014efba9342cd96daf3fd2d74a963871","after":"d7e58c5a812988c341ec4ad19f79faf067388d58","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-18T14:09:23.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[test] Add test cases for editable strings\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[test] Add test cases for editable strings"}},{"before":"d7e58c5a812988c341ec4ad19f79faf067388d58","after":"5215be29014efba9342cd96daf3fd2d74a963871","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-18T10:30:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[readline] Silence spurious null pointer dereference Coverity warning\n\nCoverity reported a potential null pointer dereference in readline.c,\nwhich was fixed in commit b01781a (\"[hci] Fix semantics of\nreplace_string() to match code comments\"). With the fix in place,\nCoverity still reports a potential null pointer dereference, even\nthough this cannot now happen.\n\nAdd an assertion to inform Coverity that the allocated string cannot\nbe NULL after a successful call to replace_string().\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[readline] Silence spurious null pointer dereference Coverity warning"}},{"before":"cb95b5b378b1a61d10770965d82dba535b6be242","after":"d7e58c5a812988c341ec4ad19f79faf067388d58","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-17T15:20:35.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[test] Add test cases for editable strings\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[test] Add test cases for editable strings"}},{"before":"b01781a2b8fb29669d9a610bfb323fb8a6960612","after":"d7e58c5a812988c341ec4ad19f79faf067388d58","ref":"refs/heads/master","pushedAt":"2024-04-17T15:09:42.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[test] Add test cases for editable strings\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[test] Add test cases for editable strings"}},{"before":"cb95b5b378b1a61d10770965d82dba535b6be242","after":"b01781a2b8fb29669d9a610bfb323fb8a6960612","ref":"refs/heads/master","pushedAt":"2024-04-17T15:01:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[hci] Fix semantics of replace_string() to match code comments\n\nThe comments for replace_string() state that a successful return\nstatus guarantees that the dynamically allocated string pointer is no\nlonger NULL (even if it was initially NULL and the replacement string\nis NULL or empty). This is relied upon by readline() to guarantee\nthat it will always return a non-NULL string if successful.\n\nThe code behaviour does not currently match this comment: an empty\nreplacement string may result in a successful return status even if\nthe (single-byte) allocation fails.\n\nFix up the code behaviour to match the comments, and to additionally\nensure that the edit history is filled in even in the event of an\nallocation failure.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[hci] Fix semantics of replace_string() to match code comments"}},{"before":"40b51124400df9cb0c57512ff93ac21827d5bac0","after":"cb95b5b378b1a61d10770965d82dba535b6be242","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-17T00:21:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[efi] Veto the Dhcp6Dxe driver on all platforms\n\nThe reference implementation of Dhcp6Dxe in EDK2 has a fatal flaw: the\ncode in EfiDhcp6Stop() will poll the network in a tight loop until\neither a response is received or a timer tick (at TPL_CALLBACK)\noccurs. When EfiDhcp6Stop() is called at TPL_CALLBACK or higher, this\nwill result in an endless loop and an apparently frozen system.\n\nSince this is the reference implementation of Dhcp6Dxe, it is likely\nthat almost all platforms have the same problem.\n\nFix by vetoing the broken driver. If the upstream driver is ever\nfixed and a new version number issued, then we could plausibly test\nagainst the version number exposed via the driver binding protocol.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Veto the Dhcp6Dxe driver on all platforms"}},{"before":"cb95b5b378b1a61d10770965d82dba535b6be242","after":null,"ref":"refs/heads/vetodhcp6","pushedAt":"2024-04-16T13:35:57.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"}},{"before":"40b51124400df9cb0c57512ff93ac21827d5bac0","after":"cb95b5b378b1a61d10770965d82dba535b6be242","ref":"refs/heads/master","pushedAt":"2024-04-16T13:35:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Veto the Dhcp6Dxe driver on all platforms\n\nThe reference implementation of Dhcp6Dxe in EDK2 has a fatal flaw: the\ncode in EfiDhcp6Stop() will poll the network in a tight loop until\neither a response is received or a timer tick (at TPL_CALLBACK)\noccurs. When EfiDhcp6Stop() is called at TPL_CALLBACK or higher, this\nwill result in an endless loop and an apparently frozen system.\n\nSince this is the reference implementation of Dhcp6Dxe, it is likely\nthat almost all platforms have the same problem.\n\nFix by vetoing the broken driver. If the upstream driver is ever\nfixed and a new version number issued, then we could plausibly test\nagainst the version number exposed via the driver binding protocol.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Veto the Dhcp6Dxe driver on all platforms"}},{"before":null,"after":"cb95b5b378b1a61d10770965d82dba535b6be242","ref":"refs/heads/vetodhcp6","pushedAt":"2024-04-16T13:22:30.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Veto the Dhcp6Dxe driver on all platforms\n\nThe reference implementation of Dhcp6Dxe in EDK2 has a fatal flaw: the\ncode in EfiDhcp6Stop() will poll the network in a tight loop until\neither a response is received or a timer tick (at TPL_CALLBACK)\noccurs. When EfiDhcp6Stop() is called at TPL_CALLBACK or higher, this\nwill result in an endless loop and an apparently frozen system.\n\nSince this is the reference implementation of Dhcp6Dxe, it is likely\nthat almost all platforms have the same problem.\n\nFix by vetoing the broken driver. If the upstream driver is ever\nfixed and a new version number issued, then we could plausibly test\nagainst the version number exposed via the driver binding protocol.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Veto the Dhcp6Dxe driver on all platforms"}},{"before":"59f27d69358efc919b50760f3d6dac0b637b5488","after":"40b51124400df9cb0c57512ff93ac21827d5bac0","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-16T00:21:03.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[hci] Use dynamically allocated buffers for editable strings\n\nEditable strings currently require a fixed-size buffer, which is\ninelegant and limits the potential for creating interactive forms with\na variable number of edit box widgets.\n\nRemove this limitation by switching to using a dynamically allocated\nbuffer for editable strings and edit box widgets.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[hci] Use dynamically allocated buffers for editable strings"}},{"before":"27ecc36c0bef804d12dbf8c29684c8e8159c8e47","after":"40b51124400df9cb0c57512ff93ac21827d5bac0","ref":"refs/heads/master","pushedAt":"2024-04-15T15:12:51.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[hci] Use dynamically allocated buffers for editable strings\n\nEditable strings currently require a fixed-size buffer, which is\ninelegant and limits the potential for creating interactive forms with\na variable number of edit box widgets.\n\nRemove this limitation by switching to using a dynamically allocated\nbuffer for editable strings and edit box widgets.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[hci] Use dynamically allocated buffers for editable strings"}},{"before":"59f27d69358efc919b50760f3d6dac0b637b5488","after":"27ecc36c0bef804d12dbf8c29684c8e8159c8e47","ref":"refs/heads/master","pushedAt":"2024-04-15T13:44:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Do not attempt to download autoexec.ipxe without a valid base URI\n\nIf we do not have a current working URI (after applying the EFI device\npath settings and any cached DHCP settings), then an attempt to\ndownload autoexec.ipxe will fail since there is no base URI from which\nto resolve the full autoexec.ipxe URI.\n\nAvoid this potentially confusing error message by attempting the\ndownload only if we have successfully obtained a current working URI.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Do not attempt to download autoexec.ipxe without a valid base URI"}},{"before":"165995b7e917a94533799fe43d14f5e3b1fef285","after":"59f27d69358efc919b50760f3d6dac0b637b5488","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-04T00:21:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[netdevice] Add \"linktype\" setting\n\nAdd a new setting to provide access to the link layer protocol type\nfrom scripts. This can be useful in order to skip configuring\ninterfaces based on their link layer protocol or, conversely,\nconfigure only selected interface types (Ethernet, IPoIB, etc.)\n\nExample script:\n\n set idx:int32 0\n :loop\n isset ${net${idx}/mac} || exit 0\n iseq ${net${idx}/linktype} IPoIB && goto try_next ||\n autoboot net${idx} ||\n :try_next\n inc idx && goto loop\n\nSigned-off-by: Pavel Krotkiy \nModified-by: Michael Brown \nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[netdevice] Add \"linktype\" setting"}},{"before":"165995b7e917a94533799fe43d14f5e3b1fef285","after":"59f27d69358efc919b50760f3d6dac0b637b5488","ref":"refs/heads/master","pushedAt":"2024-04-03T12:20:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[netdevice] Add \"linktype\" setting\n\nAdd a new setting to provide access to the link layer protocol type\nfrom scripts. This can be useful in order to skip configuring\ninterfaces based on their link layer protocol or, conversely,\nconfigure only selected interface types (Ethernet, IPoIB, etc.)\n\nExample script:\n\n set idx:int32 0\n :loop\n isset ${net${idx}/mac} || exit 0\n iseq ${net${idx}/linktype} IPoIB && goto try_next ||\n autoboot net${idx} ||\n :try_next\n inc idx && goto loop\n\nSigned-off-by: Pavel Krotkiy \nModified-by: Michael Brown \nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[netdevice] Add \"linktype\" setting"}},{"before":"764e34f15af89cc7c5e46694ac15c5266f13b3d3","after":"165995b7e917a94533799fe43d14f5e3b1fef285","ref":"refs/heads/coverity_scan","pushedAt":"2024-04-03T00:21:03.000Z","pushType":"push","commitsCount":4,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[efi] Restructure handling of autoexec.ipxe script\n\nWe currently attempt to obtain the autoexec.ipxe script via early use\nof the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL or EFI_PXE_BASE_CODE_PROTOCOL\ninterfaces to obtain an opaque block of memory, which is then\nregistered as an image at an appropriate point during our startup\nsequence. The early use of these existent interfaces allows us to\nobtain the script even if our subsequent actions (e.g. disconnecting\ndrivers in order to connect up our own) may cause the script to become\ninaccessible.\n\nThis mirrors the approach used under BIOS, where the autoexec.ipxe\nscript is provided by the prefix (e.g. as an initrd image when using\nthe .lkrn build of iPXE) and so must be copied into a normally\nallocated image from wherever it happens to previously exist in\nmemory.\n\nWe do not currently have support for downloading an autoexec.ipxe\nscript if we were ourselves downloaded via UEFI HTTP boot.\n\nThere is an EFI_HTTP_PROTOCOL defined within the UEFI specification,\nbut it is so poorly designed as to be unusable for the simple purpose\nof downloading an additional file from the same directory. It\nprovides almost nothing more than a very slim wrapper around\nEFI_TCP4_PROTOCOL (or EFI_TCP6_PROTOCOL). It will not handle\nredirection, content encoding, retries, or even fundamentals such as\nthe Content-Length header, leaving all of this up to the caller.\n\nThe UEFI HTTP Boot driver will install an EFI_LOAD_FILE_PROTOCOL\ninstance on the loaded image's device handle. This looks promising at\nfirst since it provides the LoadFile() API call which is specified to\naccept an arbitrary filename parameter. However, experimentation (and\ninspection of the code in EDK2) reveals a multitude of problems that\nprevent this from being usable. Calling LoadFile() will idiotically\nrestart the entire DHCP process (and potentially pop up a UI requiring\ninput from the user for e.g. a wireless network password). The\nfilename provided to LoadFile() will be ignored. Any downloaded file\nwill be rejected unless it happens to match one of the limited set of\ntypes expected by the UEFI HTTP Boot driver. The list of design\nfailures and conceptual mismatches is fairly impressive.\n\nChoose to bypass every possible aspect of UEFI HTTP support, and\ninstead use our own HTTP client and network stack to download the\nautoexec.ipxe script over a temporary MNP network device. Since this\napproach works for TFTP as well as HTTP, drop the direct use of\nEFI_PXE_BASE_CODE_PROTOCOL. For consistency and simplicity, also drop\nthe direct use of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL and rely upon our\nexisting support to access local files via \"file:\" URIs.\n\nThis approach results in console output during the \"iPXE initialising\ndevices...ok\" message that appears while startup is in progress.\nRemove the trailing \"ok\" so that this intermediate output appears at a\nsensible location on the screen. The welcome banner that will be\nprinted immediately afterwards provides an indication that startup has\ncompleted successfully even absent the explicit \"ok\".\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Restructure handling of autoexec.ipxe script"}},{"before":"b940d54235579f2534c12494322876fff555cf36","after":"165995b7e917a94533799fe43d14f5e3b1fef285","ref":"refs/heads/master","pushedAt":"2024-04-02T23:24:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Restructure handling of autoexec.ipxe script\n\nWe currently attempt to obtain the autoexec.ipxe script via early use\nof the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL or EFI_PXE_BASE_CODE_PROTOCOL\ninterfaces to obtain an opaque block of memory, which is then\nregistered as an image at an appropriate point during our startup\nsequence. The early use of these existent interfaces allows us to\nobtain the script even if our subsequent actions (e.g. disconnecting\ndrivers in order to connect up our own) may cause the script to become\ninaccessible.\n\nThis mirrors the approach used under BIOS, where the autoexec.ipxe\nscript is provided by the prefix (e.g. as an initrd image when using\nthe .lkrn build of iPXE) and so must be copied into a normally\nallocated image from wherever it happens to previously exist in\nmemory.\n\nWe do not currently have support for downloading an autoexec.ipxe\nscript if we were ourselves downloaded via UEFI HTTP boot.\n\nThere is an EFI_HTTP_PROTOCOL defined within the UEFI specification,\nbut it is so poorly designed as to be unusable for the simple purpose\nof downloading an additional file from the same directory. It\nprovides almost nothing more than a very slim wrapper around\nEFI_TCP4_PROTOCOL (or EFI_TCP6_PROTOCOL). It will not handle\nredirection, content encoding, retries, or even fundamentals such as\nthe Content-Length header, leaving all of this up to the caller.\n\nThe UEFI HTTP Boot driver will install an EFI_LOAD_FILE_PROTOCOL\ninstance on the loaded image's device handle. This looks promising at\nfirst since it provides the LoadFile() API call which is specified to\naccept an arbitrary filename parameter. However, experimentation (and\ninspection of the code in EDK2) reveals a multitude of problems that\nprevent this from being usable. Calling LoadFile() will idiotically\nrestart the entire DHCP process (and potentially pop up a UI requiring\ninput from the user for e.g. a wireless network password). The\nfilename provided to LoadFile() will be ignored. Any downloaded file\nwill be rejected unless it happens to match one of the limited set of\ntypes expected by the UEFI HTTP Boot driver. The list of design\nfailures and conceptual mismatches is fairly impressive.\n\nChoose to bypass every possible aspect of UEFI HTTP support, and\ninstead use our own HTTP client and network stack to download the\nautoexec.ipxe script over a temporary MNP network device. Since this\napproach works for TFTP as well as HTTP, drop the direct use of\nEFI_PXE_BASE_CODE_PROTOCOL. For consistency and simplicity, also drop\nthe direct use of EFI_SIMPLE_FILE_SYSTEM_PROTOCOL and rely upon our\nexisting support to access local files via \"file:\" URIs.\n\nThis approach results in console output during the \"iPXE initialising\ndevices...ok\" message that appears while startup is in progress.\nRemove the trailing \"ok\" so that this intermediate output appears at a\nsensible location on the screen. The welcome banner that will be\nprinted immediately afterwards provides an indication that startup has\ncompleted successfully even absent the explicit \"ok\".\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Restructure handling of autoexec.ipxe script"}},{"before":"b66f6025fa50f929c8e6448c383ffec273d41e6c","after":"b940d54235579f2534c12494322876fff555cf36","ref":"refs/heads/master","pushedAt":"2024-04-02T22:09:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[cachedhcp] Allow cached DHCPACK to apply to temporary network devices\n\nRetain a reference to the cached DHCPACK until the late startup phase,\nand allow it to be recycled for reuse. This allows the cached DHCPACK\nto be used for a temporary MNP network device and then subsequently\nreused for the corresponding real network device.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[cachedhcp] Allow cached DHCPACK to apply to temporary network devices"}},{"before":"b52b4a46d9ee854130db7a8927f33391fc6ba1fe","after":"b66f6025fa50f929c8e6448c383ffec273d41e6c","ref":"refs/heads/master","pushedAt":"2024-04-02T14:29:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Add the ability to create a temporary MNP network device\n\nAn MNP network device may be temporarily and non-destructively\ninstalled on top of an existing UEFI network stack without having to\ndisconnect existing drivers.\n\nAdd the ability to create such a temporary network device.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Add the ability to create a temporary MNP network device"}},{"before":"764e34f15af89cc7c5e46694ac15c5266f13b3d3","after":"b52b4a46d9ee854130db7a8927f33391fc6ba1fe","ref":"refs/heads/master","pushedAt":"2024-04-02T14:16:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Allow for allocating EFI devices from arbitrary handles\n\nSplit out the code that allocates our internal struct efi_device\nrepresentations, to allow for the creation of temporary MNP devices in\norder to download the autoexec.ipxe script.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Allow for allocating EFI devices from arbitrary handles"}},{"before":"9bbe77669c6e2b71826449d854f5aa0e2cee7767","after":"764e34f15af89cc7c5e46694ac15c5266f13b3d3","ref":"refs/heads/coverity_scan","pushedAt":"2024-03-30T00:21:03.000Z","pushType":"push","commitsCount":6,"pusher":{"login":"ipxebot","name":null,"path":"/ipxebot","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/694247?s=80&v=4"},"commit":{"message":"[http] Add error table entry for HTTP 404 Not Found error\n\nAdd an abbreviated \"Not found\" error message for an HTTP 404 status\ncode, so that any automatic attempt to download a non-existent\nautoexec.ipxe script produces only a minimal error message.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[http] Add error table entry for HTTP 404 Not Found error"}},{"before":"afae8817826ef8356b89a5e131ff42750ab267d4","after":"764e34f15af89cc7c5e46694ac15c5266f13b3d3","ref":"refs/heads/master","pushedAt":"2024-03-29T15:18:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[http] Add error table entry for HTTP 404 Not Found error\n\nAdd an abbreviated \"Not found\" error message for an HTTP 404 status\ncode, so that any automatic attempt to download a non-existent\nautoexec.ipxe script produces only a minimal error message.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[http] Add error table entry for HTTP 404 Not Found error"}},{"before":"43deab89c329984366d519ae612b67ee0d5998b6","after":"afae8817826ef8356b89a5e131ff42750ab267d4","ref":"refs/heads/master","pushedAt":"2024-03-29T15:08:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[tftp] Add error table entry for TFTP \"file not found\" error code\n\nAdd an abbreviated \"Not found\" error message for a TFTP \"file not\nfound\" error code, so that any automatic attempt to download a\nnon-existent autoexec.ipxe script produces only a minimal error\nmessage.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[tftp] Add error table entry for TFTP \"file not found\" error code"}},{"before":"19f39bc07a82ac589cd2fa360b6f32c15d0eb0a8","after":"43deab89c329984366d519ae612b67ee0d5998b6","ref":"refs/heads/master","pushedAt":"2024-03-29T14:53:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Add error table entry for local filesystem EFI_NOT_FOUND error\n\nAdd an abbreviated \"Not found\" error message for an EFI_NOT_FOUND\nerror encountered when attempting to open a file on a local\nfilesystem, so that any automatic attempt to download a non-existent\nautoexec.ipxe script produces only a minimal error message.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Add error table entry for local filesystem EFI_NOT_FOUND error"}},{"before":"f39b48d5f82793c75700b0787b36f65d33079f3b","after":"19f39bc07a82ac589cd2fa360b6f32c15d0eb0a8","ref":"refs/heads/master","pushedAt":"2024-03-29T14:46:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[efi] Report local file errors during download, rather than on opening\n\niPXE is designed around fully asynchronous I/O, including asynchronous\nconnection opening. Almost all errors are therefore necessarily\nreported as occurring during an in-progress download, rather than\noccurring at the time that the URI is opened.\n\nLocal file access is currently an exception to this: errors such as\nnonexistent files will be encountered while opening the URI. This\nresults in mildly unexpected error messages of the form \"Could not\nstart download\", rather than the usual pattern of showing the URI, the\ninitial progress dots, and then the error message.\n\nFix this inconsistency by deferring the local filesystem access until\nthe local file download process is running.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[efi] Report local file errors during download, rather than on opening"}},{"before":"37850e0e854292d074c2d35d18d7bb78d8e6ff85","after":"f39b48d5f82793c75700b0787b36f65d33079f3b","ref":"refs/heads/master","pushedAt":"2024-03-29T14:33:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"},"commit":{"message":"[image] Allow opaque URI component to provide image name\n\nSome URI schemes allow for a path name to be specified via the opaque\ncomponent of the URI (e.g. \"file:/script.ipxe\" to specify a path on\nthe filesystem from which iPXE itself was loaded). Files loaded from\nsuch paths will currently fail to be assigned an appropriate name,\nsince only the path component of the URI will be used to construct a\ndefault image name.\n\nFix by falling back to attempt deriving an image name from the opaque\ncomponent of a URI, if no path component is specified.\n\nSigned-off-by: Michael Brown ","shortMessageHtmlLink":"[image] Allow opaque URI component to provide image name"}},{"before":"37850e0e854292d074c2d35d18d7bb78d8e6ff85","after":null,"ref":"refs/heads/gcmassert","pushedAt":"2024-03-29T10:50:41.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"mcb30","name":"Michael Brown","path":"/mcb30","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/692245?s=80&v=4"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEWXswDQA","startCursor":null,"endCursor":null}},"title":"Activity ยท ipxe/ipxe"}