[syslinux] pxelinux problem (plus a fix proposal)

Jaroslaw.Polok at cern.ch Jaroslaw.Polok at cern.ch
Fri Jun 7 02:00:31 PDT 2002


Hello

I'm using the ISC-dhcp 3.0pl1 + pxe patch
(from http://savannah.gnu.org/download/pxe-toolkit/)
and pxelinux as the loader program.

It turns out that in my configuration pxelinux specific
DHCP options are sent out by the server encapsulated 
within vendor extension option (option 43, RFC 1533).

Currently pxelinux cannot parse this correctly
(the full option 43 with it's contents is treated
as unknown and skipped).

Please find enclosed patch proposal and dump of dhcp
packet sent out from the server. 

Best Regards

Jaroslaw

PS: I know that my assembly knowledge is .. er ..
    basic, so I'm sure you can fix it in a better way ..
    And feel free to contact me if you need/want more 
    information.

-- 
-------------------------------------------------------
_ Jaroslaw_Polok ___________________ CERN - IT/ADC/LE _
_ http://home.cern.ch/~jpolok ___ tel_+41_22_767_1834 _
______________________________________+41_78_7920795___
 


-------------- next part --------------
Frame 37 (381 on wire, 381 captured)
    Arrival Time: Jun  7, 2002 10:53:33.8691
    Time delta from previous packet: 0.002881 seconds
    Time relative to first packet: 0.169983 seconds
    Frame Number: 37
    Packet Length: 381 bytes
    Capture Length: 381 bytes
Ethernet II
    Destination: 0a:00:30:89:b5:c1 (0a:00:30:89:b5:c1)
    Source: 00:a0:cc:73:39:49 (Lite-On_73:39:49)
    Type: IP (0x0800)
Internet Protocol
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 367
    Identification: 0x0000
    Flags: 0x04
        .1.. = Don't fragment: Set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 64
    Protocol: UDP (0x11)
    Header checksum: 0x4f7c (correct)
    Source: lxnfs2.cern.ch (137.138.181.199)
    Destination: asis-w5.cern.ch (137.138.33.38)
User Datagram Protocol
    Source port: pxe (4011)
    Destination port: pxe (4011)
    Length: 347
    Checksum: 0xbca4 (correct)
Data (339 bytes)


   0  0201 0600 5a34 cf34 0005 0000 898a 2126   ....Z4.4......!&
  10  0000 0000 898a b5c7 0000 0000 00d0 5934   ..............Y4
  20  cf34 0000 0000 0000 0000 0000 0000 0000   .4..............
  30  0000 0000 0000 0000 0000 0000 0000 0000   ................
  40  0000 0000 0000 0000 0000 0000 0000 0000   ................
  50  0000 0000 0000 0000 0000 0000 0000 0000   ................
  60  0000 0000 0000 0000 0000 0000 7078 656c   ............pxel
  70  696e 7578 2e30 0000 0000 0000 0000 0000   inux.0..........
  80  0000 0000 0000 0000 0000 0000 0000 0000   ................
  90  0000 0000 0000 0000 0000 0000 0000 0000   ................
  a0  0000 0000 0000 0000 0000 0000 0000 0000   ................
  b0  0000 0000 0000 0000 0000 0000 0000 0000   ................
  c0  0000 0000 0000 0000 0000 0000 0000 0000   ................
  d0  0000 0000 0000 0000 0000 0000 0000 0000   ................
  e0  0000 0000 0000 0000 0000 0000 6382 5363   ............c.Sc
  f0  3501 0536 0489 8ab5 c701 04ff ff00 0003   5..6............
 100  0489 8a01 0106 0889 8a10 0589 8a11 050f   ................
 110  0763 6572 6e2e 6368 2b2d d004 f100 747e   .cern.ch+-....t~
                          ^^^^
 120  d112 313a 303a 6430 3a35 393a 3334 3a63   ..1:0:d0:59:34:c
 130  663a 3334 d205 6169 6d73 2fd3 0400 0000   f:34..aims/.....
 140  0547 0400 0300 003c 0950 5845 436c 6965   .G.....<.PXEClie
 150  6e74 ff                                   nt.
-------------- next part --------------
*** pxelinux.asm.org	Wed Jun  5 11:33:29 2002
--- pxelinux.asm	Wed Jun  5 11:37:05 2002
***************
*** 2081,2090 ****
--- 2081,2103 ----
  		cmp al, 0	; PAD option
  		je .loop
  		cmp al,255	; END option
  		je .done
  
+ ;
+ ; ISC-dhcp v 3.X + PXE patch encapsulates pxelinux options into 
+ ; vendor-extension (rfc 1533, option 43) Jaroslaw.Polok at cern.ch
+ ; for now just skip option byte and length byte
+ 
+ 		cmp al, 43       ; VENDOR EXTENSION option
+ 		jne .not_vendor_exts
+ 		lodsb
+ 		dec cx
+ 		jmp short .loop
+ 
+ .not_vendor_exts:
+ 
  		; Anything else will have a length field
  		mov dl,al	; DL <- option number
  		xor ax,ax
  		lodsb		; AX <- option length
  		dec cx


More information about the Syslinux mailing list