components/shim/patches/03-netboot.patch
author jiri.kralovec@oracle.com <jiri.kralovec@oracle.com>
Fri, 07 Apr 2017 00:53:32 -0700
changeset 7846 eaed6d702f04
parent 7222 37e367b978c0
permissions -rw-r--r--
25556325 Firefox 45 sometimes generates core file on exit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7222
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     1
# Source: Internal
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     2
# Info: Written internally so this component can be built and run on Solaris.
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     3
# Status: This patch is offered at https://github.com/rhinstaller/shim/issues/54
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     4
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     5
--- ORIGINAL/netboot.h  2016-06-29 02:22:41.249041492 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     6
+++ shim-0.9/netboot.h  2016-06-29 02:22:48.250540430 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     7
@@ -3,7 +3,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     8
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     9
 extern BOOLEAN findNetboot(EFI_HANDLE image_handle);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    10
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    11
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    12
 extern EFI_STATUS parseNetbootinfo(EFI_HANDLE image_handle);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    13
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    14
+extern EFI_STATUS parseNetbootinfo(EFI_HANDLE image_handle, UINT8 boot_grub);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    15
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    16
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    17
 extern EFI_STATUS FetchNetbootimage(EFI_HANDLE image_handle, VOID **buffer, UINT64 *bufsiz);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    18
 #endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    19
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    20
--- ORIGINAL/netboot.c	2016-06-28 04:01:44.455712794 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    21
+++ shim-0.9/netboot.c	2016-06-29 02:17:31.667622371 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    22
@@ -42,6 +42,10 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    23
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    24
 #define ntohs(x) __builtin_bswap16(x)	/* supported both by GCC and clang */
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    25
 #define htons(x) ntohs(x)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    26
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    27
+# define GRUB_BOOT_FILE ".grub2netx64.uefi"
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    28
+# define MOK_BOOT_FILE ".MokManager.uefi"
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    29
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    30
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    31
 static EFI_PXE_BASE_CODE *pxe;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    32
 static EFI_IP_ADDRESS tftp_addr;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    33
@@ -273,14 +277,25 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    34
 	return EFI_SUCCESS;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    35
 }
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    36
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    37
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    38
 static EFI_STATUS parseDhcp4()
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    39
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    40
+static EFI_STATUS parseDhcp4(UINT8 boot_grub)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    41
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    42
 {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    43
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    44
 	CHAR8 *template = (CHAR8 *)translate_slashes(DEFAULT_LOADER_CHAR);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    45
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    46
+	CHAR8 *template = boot_grub ? (CHAR8 *)GRUB_BOOT_FILE:(CHAR8 *)MOK_BOOT_FILE;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    47
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    48
 	INTN template_len = strlen(template) + 1;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    49
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    50
 	INTN dir_len = strnlena(pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile, 127);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    51
 	INTN i;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    52
 	UINT8 *dir = pxe->Mode->DhcpAck.Dhcpv4.BootpBootFile;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    53
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    54
+	UINT8 BootpHwAddrLen = pxe->Mode->DhcpAck.Dhcpv4.BootpHwAddrLen;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    55
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    56
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    57
 	for (i = dir_len; i >= 0; i--) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    58
 		if (dir[i] == '/')
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    59
@@ -288,7 +303,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    60
 	}
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    61
 	dir_len = (i >= 0) ? i + 1 : 0;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    62
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    63
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    64
 	full_path = AllocateZeroPool(dir_len + template_len);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    65
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    66
+	full_path = AllocateZeroPool(dir_len + template_len + BootpHwAddrLen*2 + 2);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    67
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    68
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    69
 	if (!full_path)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    70
 		return EFI_OUT_OF_RESOURCES;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    71
@@ -298,6 +317,12 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    72
 		if (full_path[dir_len-1] == '/' && template[0] == '/')
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    73
 			full_path[dir_len-1] = '\0';
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    74
 	}
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    75
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    76
+	else {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    77
+		strncpya(full_path, dir, BootpHwAddrLen*2 + 2);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    78
+	}
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    79
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    80
+
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    81
 	if (dir_len == 0 && dir[0] != '/' && template[0] == '/')
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    82
 		template++;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    83
 	strcata(full_path, template);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    84
@@ -306,7 +331,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    85
 	return EFI_SUCCESS;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    86
 }
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    87
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    88
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    89
 EFI_STATUS parseNetbootinfo(EFI_HANDLE image_handle)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    90
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    91
+EFI_STATUS parseNetbootinfo(EFI_HANDLE image_handle, UINT8 boot_grub)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    92
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    93
 {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    94
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    95
 	EFI_STATUS rc;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    96
@@ -323,7 +352,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    97
 	if (pxe->Mode->UsingIpv6){
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    98
 		rc = parseDhcp6();
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    99
 	} else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   100
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   101
 		rc = parseDhcp4();
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   102
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   103
+		rc = parseDhcp4(boot_grub);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   104
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   105
 	return rc;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   106
 }
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
   107