[klibc] [patch] ipconfig add dhcp file preseeding support

maximilian attems maks at sternwelten.at
Thu Jun 22 12:24:08 PDT 2006


From: Geert Stappers <stappers at debian.org>

To make klibc-ipconfig transmit the DHCP vendor class "d-i"
and get the DHCP preseeding filename in a text file, it needs the
attached patch.

belows patch allows ipconfig to be used in Debian installer once
the hostname is sent too, see
http://blog.andrew.net.au/2006/05/17#d-i_dhcp_hacking

Signed-off-by: maximilian attems <maks at sternwelten.at>

diff --git a/usr/kinit/ipconfig/bootp_proto.c b/usr/kinit/ipconfig/bootp_proto.c
index 137847c..59b03b4 100644
--- a/usr/kinit/ipconfig/bootp_proto.c
+++ b/usr/kinit/ipconfig/bootp_proto.c
@@ -74,6 +74,7 @@ int bootp_parse(struct netdev *dev, stru
 	dev->hostname[0]	= '\0';
 	dev->nisdomainname[0]	= '\0';
 	dev->bootpath[0]	= '\0';
+	memcpy(&dev->filename, &hdr->boot_file, FNLEN);
 
 	if (extlen >= 4 && exts[0] == 99 && exts[1] == 130 &&
 	    exts[2] == 83 && exts[3] == 99) {
diff --git a/usr/kinit/ipconfig/dhcp_proto.c b/usr/kinit/ipconfig/dhcp_proto.c
index 9a30660..e86bbb2 100644
--- a/usr/kinit/ipconfig/dhcp_proto.c
+++ b/usr/kinit/ipconfig/dhcp_proto.c
@@ -46,6 +46,7 @@ #define REQ_IP_OFF 15
 };
 
 static uint8_t dhcp_end[] = {
+	60, 3, 100, 45, 105, /* Vendor class "d-i" */
 	255,
 };
 
diff --git a/usr/kinit/ipconfig/main.c b/usr/kinit/ipconfig/main.c
index c9d3b0e..a54329f 100644
--- a/usr/kinit/ipconfig/main.c
+++ b/usr/kinit/ipconfig/main.c
@@ -71,6 +71,7 @@ static void print_device_config(struct n
 		printf(" nisdomain: %-64s\n", dev->nisdomainname);
 	printf(" rootserver: %s ", my_inet_ntoa(dev->ip_server));
 	printf("rootpath: %s\n", dev->bootpath);
+	printf(" filename  : %s\n", dev->filename);
 }
 
 static void configure_device(struct netdev *dev)
@@ -112,6 +113,7 @@ static void dump_device_config(struct ne
 		fprintf(f, "NISDOMAIN=%s\n", dev->nisdomainname);
 		fprintf(f, "ROOTSERVER=%s\n", my_inet_ntoa(dev->ip_server));
 		fprintf(f, "ROOTPATH=%s\n", dev->bootpath);
+		fprintf(f, "FILENAME=%s\n", dev->filename);
 		fclose(f);
 	}
 }
diff --git a/usr/kinit/ipconfig/netdev.h b/usr/kinit/ipconfig/netdev.h
index ac8c8be..5b16247 100644
--- a/usr/kinit/ipconfig/netdev.h
+++ b/usr/kinit/ipconfig/netdev.h
@@ -9,6 +9,7 @@ #include <sys/utsname.h>
 #include <net/if.h>
 
 #define BPLEN		40
+#define FNLEN		128	/* from RFC 2131, DHCP  */	
 
 struct netdev {
 	const char *name;	/* Device name          */
@@ -42,6 +43,7 @@ struct netdev {
 	char dnsdomainname[SYS_NMLN];	/* dns domain name      */
 	char nisdomainname[SYS_NMLN];	/* nis domain name      */
 	char bootpath[BPLEN];	/* boot path            */
+	char filename[FNLEN];	/* filename		*/
 	struct netdev *next;	/* next configured i/f  */
 };
 



More information about the klibc mailing list