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

Reply via email to