summaryrefslogtreecommitdiff
path: root/pxelinux.asm
diff options
context:
space:
mode:
Diffstat (limited to 'pxelinux.asm')
-rw-r--r--pxelinux.asm22
1 files changed, 17 insertions, 5 deletions
diff --git a/pxelinux.asm b/pxelinux.asm
index 3becef28..47feae25 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -210,7 +210,7 @@ IPOption resb 80 ; ip= option buffer
MACLen resb 1 ; MAC address len
MACType resb 1 ; MAC address type
MAC resb 16 ; Actual MAC address
-MACStr resb 51 ; MAC address as a string
+MACStr resb 3*17 ; MAC address as a string
alignb 32
KernelName resb FILENAME_MAX ; Mangled name for kernel
KernelCName resb FILENAME_MAX ; Unmangled kernel name
@@ -894,14 +894,23 @@ config_scan:
%define HAVE_SPECIAL_APPEND
%macro SPECIAL_APPEND 0
mov al,[IPAppend] ; ip=
- and al,al
- jz .noipappend
+ test al,01h ; IP append
+ jz .noipappend1
mov si,IPOption
mov cx,[IPOptionLen]
rep movsb
mov al,' '
stosb
-.noipappend:
+.noipappend1:
+ test al,02h
+ jz .noipappend2
+ mov si,bootif_str
+ mov cx,bootif_str_len
+ rep movsb
+ mov si,MACStr
+ call strcpy
+ mov byte [di-1],' ' ; Replace null with space
+.noipappend2:
%endmacro
; Unload PXE stack
@@ -2337,8 +2346,11 @@ cfgprefix_len equ ($-cfgprefix)
;
; mem= and vga= are handled as normal 32-bit integer values
initrd_cmd db 'initrd='
-initrd_cmd_len equ 7
+initrd_cmd_len equ $-initrd_cmd
+; This one we make ourselves
+bootif_str db 'BOOTIF='
+bootif_str_len equ $-bootif_str
;
; Config file keyword table
;