Bugs item #681864, was opened at 2003-02-06 11:17 Message generated for change (Comment added) made by nobody You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100259&aid=681864&group_id=259
Category: systemimager-client Group: None Status: Open Resolution: Wont Fix Priority: 5 Submitted By: Randall Splinter (rxspl1) Assigned to: Nobody/Anonymous (nobody) Summary: MS DHCP Server returns SI server IP as hex Initial Comment: At boot time the client requests an IP address from a MS Win2000 DHCP server. The DHCP server complies and sends an IP address. The DHCP server also sends the option-140 to pass the SI server IP address to the client. The SI server IP address passed to the client is sent as a hex not decimal. Is there any to make a more intelligent client that recognizes a hex IP address and converts it to decimal so that the install can proceed? The IP address of the SI server is 192.168.168.15 and the client receives the address c0:a8:a8:f from the DHCP server. Attached is a poor screen shot taken with a digital camera of what is happening. I can probably do better if it is needed to help debug the problem. ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-04-06 20:59 Message: Logged In: NO Ooops. I'm the guy who submitted the windows DHCP server config advice below: my address is: [EMAIL PROTECTED] Cheers ---------------------------------------------------------------------- Comment By: Nobody/Anonymous (nobody) Date: 2004-04-06 20:51 Message: Logged In: NO As this doesn't appear to be documented anywhere, this is how to get a windows DHCP server to "do the right thing" Basically what you are doing is adding another option type to the DHCP server, in the DHCP app, right click on your DHCP server and click "set predefined options" Click the "Add" button on the dialog that comes up, You'll see a dialog with the following fields - set the fields to these values: Name: SystemImager Server Data Type: Binary *** NOTE You must use "binary" not "IP address" or "string" - if you don't your server address will appear as hex Code: 140 Description: IP Address of your Systemimager Image Server Click "OK" and Click "OK" Now go to the entry for your client. Right click and select "Configure Options" (I'll assume that you have already set the parameters needed to get your client to boot) Scroll down in the dialog box and check "140 SystemImager Server" Now click on the ASCII column in the data entry box and enter the IP address of your image server. Click OK. ---------------------------------------------------------------------- Comment By: dann frazier (dannf) Date: 2004-01-07 22:49 Message: Logged In: YES user_id=146718 it seems that this isn't necessary - a windows server can be configured to do the right thing. Randy - can you elaborate on how to do this? i'll add it to the faq. ---------------------------------------------------------------------- Comment By: dann frazier (dannf) Date: 2003-02-12 00:59 Message: Logged In: YES user_id=146718 Randy: here's some other changes i made, fyi. i haven't actually added the code to do the conversions for specific IPs yet, but you would just need to do something like: IMAGESERVER=$(dehex_ip $IMAGESERVER) --- initrd_source/initrd.rul 9 Jan 2003 06:56:04 -0000 1.16.4.2 +++ initrd_source/initrd.rul 12 Feb 2003 08:47:36 -0000 @@ -65,7 +65,7 @@ $(INITRD_DIR)/build_dir-stamp: $(SKEL_FI $(DEVFSD_BINARY) $(DHCLIENT_BINARY) $(RSYNC_BINARY) $(UCLIBC_TARGET) $(INSMOD_BINARY) $(MODPROBE_BINARY) - $(E1000_BINARY) + $(E1000_BINARY) $(BC_BINARY) # Create directory structure. rm -fr $(INITRD_BUILD_DIR) mkdir $(INITRD_BUILD_DIR) @@ -80,6 +80,7 @@ $(INITRD_DIR)/build_dir-stamp: $(SKEL_FI # Copy over other binaries. cp -a $(RSYNC_BINARY) $(INITRD_BUILD_DIR)/bin + cp -a $(BC_BINARY) $(INITRD_BUILD_DIR)/bin cp -a $(DHCLIENT_BINARY) $(INITRD_BUILD_DIR)/sbin cp -a $(DEVFSD_BINARY) $(INITRD_BUILD_DIR)/sbin diff -u -p -u -r1.1 busybox.Config.h.noinsmod --- initrd_source/patches/busybox.Config.h.noinsmod 14 Oct 2002 15:26:55 -0000 1.1 +++ initrd_source/patches/busybox.Config.h.noinsmod 12 Feb 2003 08:47:36 -0000 @@ -120,7 +120,7 @@ //#define BB_TFTP //#define BB_TIME //#define BB_TOUCH -//#define BB_TR +#define BB_TR //#define BB_TRACEROUTE //#define BB_TRUE_FALSE //#define BB_TTY diff -u -p -u -r1.36.4.1 rcS --- initrd_source/skel/etc/init.d/rcS 21 Dec 2002 23:16:55 -0000 1.36.4.1+++ initrd_source/skel/etc/init.d/rcS 12 Feb 2003 08:47:37 -0000 @@ -56,6 +56,29 @@ adjust_arch() { fi } +################################################################################# +# dehex_ip +# +# takes an ip address, in either decimal or hexadecimal form (which MS DHCP +# servers provide), and returns the decimal form. +# +################################################################################ + +dehex_ip() { + local hex dec myip="" decimal="" + + if echo "$1" | grep -q ":"; then + for hex in $(echo $1 | sed 's/:/ /g' | tr [a-z] [A-Z]); do + dec=$(echo -e "obase=10\nibase=16\n${hex}" | bc) + myip="${myip}${decimal}${dec}" + decimal="." + done + else + myip=$1 + fi + echo "$myip" +} + write_variables() { # pass all variables set here on to the hostname.sh script rm -f /tmp/variables.txt -------- and my new initrd_source/make.d/bc.rul: BC_VERSION := 1.06 BC_DIR := bc-$(BC_VERSION) BC_TARBALL := bc-$(BC_VERSION).tar.gz BC_URL := http://download.systemimager.org/pub/bc/$(BC_TARBALL) BC_BINARY := $(INITRD_SRC_DIR)/$(BC_DIR)/bc/bc ALL_SOURCE += $(INITRD_SRC_DIR)/$(BC_TARBALL) PHONY += bc bc: $(BC_BINARY) $(BC_BINARY): $(INITRD_SRC_DIR)/$(BC_TARBALL) [ -d $(INITRD_SRC_DIR)/$(BC_DIR) ] || ( cd $(INITRD_SRC_DIR) && tar -xvzf $(BC_TARBALL) ) ( cd $(INITRD_SRC_DIR)/$(BC_DIR) && CFLAGS=-Os ./configure ) $(MAKE) -C $(INITRD_SRC_DIR)/$(BC_DIR) PATH=$(INITRD_BUILD_PATH) $(INITRD_SRC_DIR)/$(BC_TARBALL): [ -d $(INITRD_SRC_DIR) ] || mkdir -p $(INITRD_SRC_DIR) $(GETSOURCE) $(BC_URL) $(INITRD_SRC_DIR) PHONY += bc_clean bc_clean: rm -rf $(INITRD_SRC_DIR)/$(BC_DIR) ---------------------------------------------------------------------- Comment By: dann frazier (dannf) Date: 2003-02-12 00:49 Message: Logged In: YES user_id=146718 well, the big problems w/ my script are that we don't have tr, cut, or bc in the ramdisk. ok - i can live without cut, but dunno how to get along w/o bc or tr. adding full blown bc + tr affects the initrd.img size like so: base = 532349 base + busybox tr = 533255 base + busybox tr + bc = 562891 base + busybox tr + bc (built w/ -Os) = 560311 we're looking at an additional 27KB. here's an updated snippet, as a function (tested in busybox shell) dehex_ip() { local hex dec myip="" decimal="" if echo "$1" | grep -q ":"; then for hex in $(echo $1 | sed 's/:/ /g' | tr [a-z] [A-Z]); do dec=$(echo -e "obase=10\nibase=16\n${hex}" | bc) myip="${myip}${decimal}${dec}" decimal="." done else myip=$1 fi echo "$myip" } ---------------------------------------------------------------------- Comment By: dann frazier (dannf) Date: 2003-02-08 02:12 Message: Logged In: YES user_id=146718 here's some shell that'll do this: #!/bin/sh IP="c0:a8:a8:f" MYIP="" if echo "$IP" | grep -q ":"; then decimal="" for i in $(seq 1 4); do hex=$(echo $IP | cut -d ":" -f $i | tr [a-z] [A-Z]) dec=$(echo -e "obase=10\nibase=16\n${hex}" | bc) MYIP="${MYIP}${decimal}${dec}" decimal="." done else MYIP=$IP fi echo MYIP is $MYIP ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=100259&aid=681864&group_id=259 ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Sisuite-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/sisuite-devel