Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jan 2004 13:10:30 +0200
From:      Danny Braniss <danny@cs.huji.ac.il>
To:        FreeBSD-gnats-submit@FreeBSD.org
Cc:        danny@cs.huji.ac.il
Subject:   i386/61239: bootp enhancement, places the dhcp tags into the
Message-ID:  <E1Afzxm-000CTl-00@pampa.cs.huji.ac.il>
Resent-Message-ID: <200401121120.i0CBKEAi089421@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         61239
>Category:       i386
>Synopsis:       bootp enhancement, places the dhcp tags into the
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-i386
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jan 12 03:20:13 PST 2004
>Closed-Date:
>Last-Modified:
>Originator:     Danny Braniss
>Release:        FreeBSD 4.9-STABLE i386
>Organization:
>Environment:
System: FreeBSD pampa 4.9-STABLE FreeBSD 4.9-STABLE #10: Sun Nov 16 14:13:37 IST 2003 danny@dev:/r+d/obj/r+d/4.9/src/sys/HUJI i386

	diskless boot via PXE
>Description:
	
This is still unfinished ...

The changes to lib/libstand/bootp.c were promped for the following reasons:

        o- need to configure many different disk/data-less clients.
        o- simplify management.
        o- allow some form of central control

Changes:

1: When the pxeboot card first send out a dhcp request, it adds a
   vendor specific id/class (PXEClient) so that the dhcp daemon
   can identify the request as comming from a pxe-aware program,
   eg: from dhcpd.conf

   class "pxeclients" {
         option PXE.mtftp-ip 0.0.0.0;
         match if substring (option vendor-class-identifier, 0, 9)
               = "PXEClient";
   }
   Note: the above 'tricks' the PXE-boot not to go and mess with
   the proxy-dhcpd/mftp.

   I modified lib/libstand/bootp.c to send "FreeBSD" instead
   of the default "PXEClient" and so:

   option FBSD.kernel code 1 = text;
   option FBSD.kernel_options code 3 = text;
   option FBSD.kernelname code 2 = text;
   option FBSD.usr-ip code 4 = ip-address;
   option FBSD.usr-path code 5 = text;

   class "freebsd" {
        # Production - uses fs-02
        option FBSD.kernel "kernel";
        match if substring (option vendor-class-identifier, 0, 8) =
                  "FreeBSD";
                option root-path "1.1.1.1:/roots/FreeBSD/i386-4.4";
                vendor-option-space FBSD;
   }

2: places all the tags received in the kernel environment eg:
   kenv |grep dhcp
   dhcp.dhcp-lease-time="0000012c"
   dhcp.dhcp-message-type="05"
   dhcp.dhcp-rebinding-time="00000106"
   dhcp.dhcp-renewal-time="00000096"
   dhcp.dhcp-server-identifier="132.65.16.17"
   dhcp.domain-name="cs.huji.ac.il"
   dhcp.domain-name-servers="132.65.16.10,132.65.16.8"
   dhcp.host-name="foo"
   dhcp.root-path="132.65.16.100:/c/2"
   dhcp.routers="132.65.16.1"
   dhcp.subnet-mask="255.255.0.0"
   dhcp.tags="053:054:051:001:003:006:012:017:058:059:015:043:"

>How-To-Repeat:
>Fix:
	ftp://ftp.cs.huji.ac.il/users/danny/freebsd/diskless-boot/bootp.c
>Release-Note:
>Audit-Trail:
>Unformatted:
                 kernel environment



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E1Afzxm-000CTl-00>