source: bootcd/isolinux/syslinux-6.03/com32/lib/sys/gpxe.c @ 26ffad7

Last change on this file since 26ffad7 was e16e8f2, checked in by Edwin Eefting <edwin@datux.nl>, 3 years ago

bootstuff

  • Property mode set to 100644
File size: 1.0 KB
Line 
1#include <string.h>
2
3#include <sys/gpxe.h>
4#include <syslinux/config.h>
5#include <syslinux/pxe_api.h>
6
7bool is_gpxe(void)
8{
9    const struct syslinux_version *sv;
10    struct s_PXENV_FILE_CHECK_API *fca;
11    bool gpxe;
12    int err;
13
14    sv = syslinux_version();
15    if (sv->filesystem != SYSLINUX_FS_PXELINUX)
16        return false;           /* Not PXELINUX */
17
18    fca = lzalloc(sizeof *fca);
19    if (!fca)
20        return false;
21
22    fca->Size = sizeof *fca;
23    fca->Magic = 0x91d447b2;
24
25    err = pxe_call(PXENV_FILE_API_CHECK, fca);
26
27    gpxe = true;
28
29    if (err)
30        gpxe = false;           /* Cannot invoke PXE stack */
31
32    if (fca->Status)
33        gpxe = false;           /* PXE failure */
34
35    if (fca->Magic != 0xe9c17b20)
36        gpxe = false;           /* Incorrect magic */
37
38    if (fca->Size < sizeof *fca)
39        gpxe = false;           /* Short return */
40
41    /* XXX: The APIs to test for should be a passed-in option */
42    if (!(fca->APIMask & (1 << 5)))
43        gpxe = false;           /* No FILE EXEC */
44
45    lfree(fca);
46    return gpxe;
47}
Note: See TracBrowser for help on using the repository browser.