X-MimeOLE: Produced By Microsoft Exchange V6.5
Received: by onstor-exch02.onstor.net 
	id <01C889E6.30134586@onstor-exch02.onstor.net>; Wed, 19 Mar 2008 10:25:12 -0700
MIME-Version: 1.0
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_001_01C889E6.30134586"
Content-class: urn:content-classes:message
Subject: RE: FTI code + Migration script review
Date: Wed, 19 Mar 2008 10:25:12 -0700
Message-ID: <BB375AF679D4A34E9CA8DFA650E2B04E02025663@onstor-exch02.onstor.net>
In-Reply-To: <20080318192504.3540ade5@ripper.onstor.net>
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
Thread-Topic: FTI code + Migration script review
Thread-Index: AciJaHFmY7gioGTXRF2Y9lMMhX9/qwAdskog
References: <BB375AF679D4A34E9CA8DFA650E2B04E02025662@onstor-exch02.onstor.net> <20080318192504.3540ade5@ripper.onstor.net>
From: "Sripal Surendiran (HCL)" <sripal.surendiran@onstor.com>
To: "Andy Sharp" <andy.sharp@onstor.com>
Cc: "Sudharsan Srinivasan" <sudharsan@onstor.com>,
	"Tim Gardner" <tim.gardner@onstor.com>,
	"Paul Hammer" <paul.hammer@onstor.com>,
	"Narain Ramadass" <narain.ramadass@onstor.com>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C889E6.30134586
Content-Type: text/plain;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

Andy,

See my inline comments below

Thanks,
Sripal.

-----Original Message-----
From: Andy Sharp=20
Sent: Wednesday, March 19, 2008 7:55 AM
To: Sripal Surendiran (HCL)
Cc: Sudharsan Srinivasan; Tim Gardner; Paul Hammer; Narain Ramadass
Subject: Re: FTI code + Migration script review

linux/rootfs/Makefile


     See Larry Scheer's review of this file.

Sripal> I could not trace the Larry comment for linux/rootfs/Makefile.
Where it is?

linux/rootfs/etc/init.d/onstor


     please preserve the code from initial-config that performed the
     auto-upgrade function, and keep that functionality here.

     line 40, the grep regex is fuzzy.  it doesn't skip over comment
     lines and i don't know why the 'inet' part is in there.

         grep -v '^#' /etc/network/interfaces |
             egrep "iface eth[01][ ]+.*dhcp"
Sripal>"[ ]*iface" would take care of comments. Anyway I switched to
your logic. But changed grep -v '^#' to grep -v '^[ ]*#', since comments
need not be at the first column.

     while you're here, please get rid of line 12 "... emrs crap ..."

Sripal> This is not part of my change.=20
        I have removed the comment.

     line 45, this comment seems to contradict what's happening in
     the code, or what should be happening?  if INITIALCONFIG=3Dno,
     shouldn't pmtabfile be the standard one?
Sripal>You interpret yes to initial config to be done. I interpret yes
as initial config already done (~ complement). Some misunderstanding. I
switched to your words and added comment.
     line 68-69 this should be sda and sdb, not hda and hdc.
Sripal> This is not part of my change.
	  Anyway modified as you said
     line 92,112 again, this logic seems backwards, should be if
     INTIALCONFIG=3Dno.  not to mention trailing whitespace on both
     these lines.
Sripal> Explanation for line 45 comment hold good for this
     why all the gratuitous whitespace changes starting from line 141
     to the end of the file?
Sripal> Reason being I have executed :retab from vim to remove all tabs
and convert it to spaces. Probably my vimdiff ignored *iwhite*. Now
reverted back to old style.

linux/rootfs/etc/init.d/onstor-config


     looks ok


linux/rootfs/etc/onstor/initial-config


     excellent


linux/rootfs/sbin/dhclient-script

     i need to know some design factors here.  what's this file supposed
     to be doing?  how is it different from the standard one?
Sripal>
a. This script is called by dhclient binary.=20
b. This script tries to contact DHCP server and get the configuration
details.
c. If the script could not contact DHCP server, it fall backs the
interface ip to default address
d. If script could contact DHCP server, sets the interface to values
obtained from the DHCP server
e. The configuration information obtained is stored in
/onstor/conf/nasgwayinit.conf file.
f. This file is used by initial configuration UI to show the default
values.

     it would seem to need a lot of comments.
Sripal>Added
     whitespace on 309, 312-314
Sripal> Done

nfx-tree/Makefile

     possibly ok

nfx-tree/code/sm-sct/taskmgr.c

     looks good

nfx-tree/code/ssc-initial-config/Makefile


     line 24,39 trailing whitespace

Sripal>Done

nfx-tree/code/ssc-initial-config/initial-config-linux.c



     >>add nfx-tree/code/ssc-initial-config/initial-config-linux.c

     line 309 function initconf_updateInterfaceConf()
     	Instead of writing shell scripts on the fly like
     	this, create a library of commonly used shell
     	functions for yourself that do these common tasks,
     	and then just invoke from your C code like so:
     	do_system(". /onstor/lib/system-config-lib.sh;
     	function_name %s %s", argument, argument);

     	Many of these functions can be culled from the current
     	initial-config script, and other places.  See my comments
     	for onstor-config.
     Sripal> Deferred for now.
     OK.  Sigh.

     line 385, this is a bogus route command.  you can let the route
     program figure out the netmask, or specify it correctly, but
     0.0.0.0 is never right, obviously.  to let route figure it out,
     which is probably best, use this:

     fprintf(fp, "route add default gw %s", gateway);

     obviously that also implies that you change the variable name to
     gateway, which is what it really is.

     Sripal>Deferred. This is how initial-config script works.
     Nack.   What is INITCONF_ROUTE_FILE?
Sripal> Changing the format would affect route add nfxsh command. They
add each route in the following format=20
"route add -net <ip> netmask <gway> gw <gwip>"
to /etc/network/if-up.d/addroutes irrespective of whether the route is
default or net. ipmd parses this file and ignore the route, if the user
tries to add duplicate entry.

I also got mail from Tim to preserve this format, when I started the
initial configuration.=20

Changed INITCONF_ROUTE_FILE to INITCONF_GATEWAY_FILE


nfx-tree/code/ssc-initial-config/initial-config-openbsd.c



     >>add nfx-tree/code/ssc-initial-config/initial-config-openbsd.c

     looks ok

nfx-tree/code/ssc-initial-config/initial-config.c


     overall very large improvement to the code in this file.

     line 265 ifdef OpenBSD normally not allowed, but i might be
     prepared to accept this one.  there are exceptions to the rule.
     perhaps put a comment above it saying what this chunk of BSD-only
     code is for.
Sripal> Probably I missed yesterday. I moved to $(OS).h

     line 355 is there really a macro with the name
     INITCONF_INIT_CONF_FILE?  seriously.
Sripal> Renamed the MACRO

     line 435,436, space afer '-'.  no, i'm not checking the logic of
     all those strcmp's and strcpy's ~:^)
Sripal>done

     line 514,549 this logic is broken in several ways.  you can fix
     these like you fixed the other one.  i realize it wasn't part of
     this change, but hey.
Sripal>done

     line 891, what does this comment mean?  what's a zombie in this
     context?
Sripal> The status shown by /onstor/conf/nasgwayinit.status file is no
longer valid. The process that performed the initial configuration has
already died.

     lines 885, 909/10, 916 fix spacing
Sripal>done



nfx-tree/code/ssc-initial-config/initial-config.h

     looks good

nfx-tree/code/ssc-initial-config/migrate.sh



     >>add nfx-tree/code/ssc-initial-config/migrate.sh

     line 274 and friends, we don't need no parens
	cat <<END >$LINUX_INT_CONF
	foo
	END
Sripal>done

     line 388,413, please include the official list(s) of config
     files, in /onstor/lib.  see flash_install.sh or initial-config
     for examples.
     Sripal> Certain config files are irrelevant to migration.
     Nack.
     Use the lists.  They are there to support accurate maintenance of
     the code -- a developer has to be able to count on changing the
     list(s) and having that work for everything. If there is a file you
     can't tolerate copying, deal with that in tar arguments/options or
     use sed to remove it or something.
Sripal>done

     updateCrontab() - cannot emrscron be used for this?  in conjunction
     with the modify-cron command, of course.  that way, you don't have
     to "upgrade" the crontab file.  on boot up, root crontab file is
     wiped and rebuilt every time, so this should be necessary at all.
     Sripal>I am importing only audit export details. Currently we do
     not have audit export details in cluster DB and these entry will
     not be added if we wipe crontab. Probably bug in "audit export"
     Andy> Of all the stupid....storing configuration information
     in crontab.  Jeez.  Someday this will be fixed....

     line 396, move most of this code into the reInstallCorruptFile
     function so that input md5sum does not have to be calculated twice.
     in other words, have the function do the check, issue the message
     and attempt the reinstall.
Sripal>Instead passed input md5sum as argument to function

     line 456, no "" needed
Sripal>done

     line 486, the device file might not exist for a couple of reasons,
     one of which is they forgot to insert the CF card.  perhaps you
     can output a message to that effect and ask the user to make sure
     the card is inserted, and then continue on.  also offer the option
     to exit.
Sripal>done

     line 514 The root password
Sripal>done

     line 516 s/get the factory default password/reset the root
     password./
Sripal>done
     line 517 replace with "Please store the root password in a safe,
     secure place."
Sripal>done

nfx-tree/code/ssc-initial-config/minlabel.c



     >>add nfx-tree/code/ssc-initial-config/minlabel.c

     looks ok



nfx-tree/code/ssc-initial-config/minlabel.h



     >>add nfx-tree/code/ssc-initial-config/minlabel.h

     looks ok


nfx-tree/code/ssc-nfxsh/Makefile



     looks good



nfx-tree/code/ssc-nfxsh/cmd_flash.c



     looks good



nfx-tree/code/ssc-nfxsh/vtysh-linux.c


     >>delete nfx-tree/code/ssc-nfxsh/vtysh-linux.c

     ok

nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c



     >>delete nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c

     ok

nfx-tree/code/ssc-nfxsh/vtysh_initial.c



     >>add nfx-tree/code/ssc-nfxsh/vtysh_initial.c

     this should have been done as an integrate of vtysh-openbsd.c,
     not a delete/add.  makes it much harder to review this way.
Sripal>I have integrated dev branch vtysh-openbsd.c as cg_fti
vtysh_initial.c. But still I could not see the difference with p4 diff.
Instead of showing "add", it now changed to "branch". Is this OK?=20
If NO, any pointers on how to do?

     please fix trailing whitespace
Sripal>done

     line 137, why was this section of the code changed from a pipe
     to a temporary file?  there is nothing wrong with the pipe as
     far as i can see.
Sripal>Linux seems to have huge number of time zone list. Pipe gives me
error in console.



nfx-tree/code/ssc-pm/rc.onstor



     looks good



openbsd/src/etc/Makefile

     looks ok

openbsd/src/etc/rc


     line 224, whitespace
Sripal>done

     line 233 i thought we weren't going to do this anymore?  pmtab and
     pmtab.init were staying put, no more copying.

openbsd/src/etc/rc.initial
Sripal>done

     super excellent.  thank you.







On Tue, 18 Mar 2008 09:33:02 -0700 "Sripal Surendiran (HCL)"
<sripal.surendiran@onstor.com> wrote:

> Thanks Andy,
>=20
> I have incorporated your review comments. Request you to re-review.
>=20
> Please see my inline comments.
>=20
> Thanks again,
> Sripal.
>=20
> -----Original Message-----
> From: Andy Sharp=20
> Sent: Saturday, March 15, 2008 7:06 AM
> To: Sudharsan Srinivasan
> Cc: Tim Gardner; Paul Hammer; Sripal Surendiran (HCL); Narain Ramadass
> Subject: Re: FTI code + Migration script review
>=20
> On Thu, 13 Mar 2008 08:18:48 -0700 "Sudharsan Srinivasan"
> <sudharsan@onstor.com> wrote:
>=20
> > Hi Andy,
> > While you continue your review of FTI, please pass on any review
> > comments that you have so far. Sripal can take care of these
> > comments. Also, I guess Larry has reviewed the makefiles. Kindly
> > pass on any review comments that Larry might have.=20
> > Regards
> > Sudharsan
>=20
> Here you go.  There is some work to do.  ifdef {OpenBSD,Linux} has to
> be removed, plus some other stuff.  I think there are one or two files
> that appear to have been a name change and not much more, but they are
> showing up as adds from perforce.  Did they start as integrates or
> were they just done as adds?
>=20
>=20
>=20
> linux/rootfs/Makefile
>=20
>=20
>      See Larry Scheer's review of this file.
>=20
> Sripal> No comments found
>=20
>=20
> linux/rootfs/etc/init.d/onstor
>=20
>=20
>      not happy with removal of initial-config script, but am happy
>      with emrscron related changes.
>=20
>      please preserve the code from initial-config that performed the
>      auto-upgrade function, and keep that functionality here.
> Sripal>Done. Performed similar movement in BSD also.
> Affected files:
> //depot/cg_fti/openbsd/src/etc/rc
> //depot/cg_fti/openbsd/src/etc/rc.initial
> //depot/cg_fti/openbsd/src/etc/Makefile
>=20
>      line 40, the grep regex is hair-raising.  please make it sane
>      and as simple as possible.  something like
>=20
>      grep -v '^#' /etc/network/interfaces | egrep "iface
> eth[01][[space]]\+ dhcp"
> Sripal>Done
>=20
>=20
>=20
> linux/rootfs/etc/init.d/onstor-config
>=20
>=20
>      I think someone else said this already, but I'll repeat it: fix
>      the name and/or the logic surrounding the variable INITIALCONFIG.
>      It is not intuitive or self-documenting as is.  For example,
> change the name to NOT_INITIALCONFIG or change the logic, or even
> better, change the possible values to yes/no, and have
> INITIALCONFIG=3Dyes when the filer is in an initial config state.
> Sripal>Done
>=20
>      line 38, seriously dense sed script.  for maintainability,
>      please turn it into 3 separate scripts, or better yet,
>      three separate shell functions like "interfaces_reset_type",
>      "interfaces_reset_address", "interfaces_reset_netmask" and
>      call them from this function, for greater code reuseability.
> Sripal>Done
>=20
>      line 76, you can remove the call to newaliases, it is a no-op
> Sripal>Done
>=20
>      line 86, add back auto-upgrade logic from
>      /etc/onstor/initial-config here.
> Sripal>Done
>=20
>=20
> linux/rootfs/etc/onstor/initial-config
>=20
>=20
>      >>delete linux/rootfs/etc/onstor/initial-config
>=20
>      don't delete it, just remove it from makefile for now
> Sripal>File is preserved. Removed stuff other than auto upgrade=20
>=20
>=20
> nfx-tree/code/sm-sct/taskmgr.c
>=20
>=20
>      line 93-94; 112-113 indentation style does not match surrounding
>      code.
>=20
> Sripal> Nothing part of my change
>=20
>      line 2333-2336, what does this do?
>=20
> Sripal> added comment in code
>=20
> nfx-tree/code/ssc-initial-config/Makefile
>=20
>=20
>      line 23 make this based on the value of $(OS) rather than
> $(PROD).
> Sripal>Done
>=20
>=20
> nfx-tree/code/ssc-initial-config/initial-config-linux.c
>=20
>=20
>      >>add nfx-tree/code/ssc-initial-config/initial-config-linux.c
>=20
>      this should be an integrate of initial-config-linux.c
> Sripal> This is new file added in this branch
>=20
>      please pare down that massive list of includes to only those that
>      are actually needed.
> Sripal>Done
>=20
>      line 85, many whitespace violations, including trailing
> whitespace
> Sripal>Done
>=20
>      line 93, return the errno, not -1.  adjust callers accordingly.
> Sripal>Changed return value to NFX_ERR and NFX_OK.
>=20
>      line 99,151 not needed, fgets does this
> Sripal>Done
>=20
>      line 136,233,244 trailing whitespace
> Sripal>Done
>=20
>      line 142,156,164,173,177,188,196,203,207 return some kind of
>      errno value, like ENOTFOUND.  ok, i just made that up, but you
>      know what i mean. EINVAL, ENOENT, something like that.
> Sripal>Changed return value to NFX_ERR and NFX_OK
>=20
>      line 244, spacing?  operators should be surrounded with a space,
>      like =3D=3D, ?, : and so on.  and of course fix the trailing =
space.
> Sripal>Done
>=20
>      line 250 why not return the actual errno? same for all the
> returns in this function.
> Sripal>Changed return value to NFX_ERR and NFX_OK
>=20
>      line function initconf_updateInterfaceConf()
>      Instead of writing shell scripts on the fly like
>      this, create a library of commonly used shell
>      functions for yourself that do these common tasks,
>      and then just invoke from your C code like so:
>      do_system(". /onstor/lib/system-config-lib.sh;
>      function_name %s %s", argument, argument);
>=20
>      Many of these functions can be culled from the current
>      initial-config script, and other places.  See my comments
>      for onstor-config.
>=20
> Sripal> Deferred for now. This has to been put to my todo list. Will
> take up later.
>=20
>      line 361 the description text and the argument variable name
>      could use some clarifying.  This method updates the default
>      gateway address in the configuration file.  gateway - ip address
>      of the gateway.  you get the idea.
> Sripal>Done
>      line 374, trailing whitespace
> Sripal>Done
>      line 385, this is a bogus route command.  you can let the route
>      program figure out the netmask, or specify it correctly, but
>      0.0.0.0 is never right, obviously.  to let route figure it out,
>      which is probably best, use this:
>=20
>      fprintf(fp, "route add default gw %s", gateway);
>=20
>      obviously that also implies that you change the variable name to
>      gateway, which is what it really is.
> Sripal>Deferred. This is how initial-config script works. This format
> is also used by ipmd libraries. Not sure of side effects.
>=20
> nfx-tree/code/ssc-initial-config/initial-config-openbsd.c
>=20
>=20
>      >>add nfx-tree/code/ssc-initial-config/initial-config-openbsd.c
>=20
>      I seriously doubt you need all these include files.  Please pare
>      these down to the absolute minimum.  Same goes for the Linux
>      version of this file.
>=20
>      same comments as for the Linux version.
> Sripal>Done
>=20
>      much trailing whitespace as well.
> Sripal>Done
>=20
>=20
> nfx-tree/code/ssc-initial-config/initial-config.c
>=20
>=20
>      Please do not use if[n]def OpenBSD or Linux, or variants thereof.
>      Read the porting guide wiki page under the Cougar project if you
>      need pointers on how to do that.
> Sripal>Done
>=20
>      please clean up trailing whitespace.
> Sripal>Done
>=20
>      Error return paths: in initial-config-$(OS) I said return errno
>      value instead of -1.  Well, you can do that, or you can return
>      some NFX_error_value that is appropriate.  Your choice.
> Sripal>used NFX_ERR and NFX_OK as return value
>=20
>      line 10 spelling
> Sripal>Done
>=20
>=20
>      line 381 do not use parens in return statements.  return is not
>      a function call.
> Sripal>Done
>=20
>=20
>      line 385, this logic is broken in several ways.  just because a
>      string in the file is longer than INITCONF_MAX_STR_SIZE, whatever
>      the heck that is, doesn't mean an automatic error.  errors should
>      only come from the parsing part of the code. not to mention that
> if (buf[0] !=3D '\0' && buf[strlen(buf) - 1] =3D=3D '\n') might fail =
but the
>      string be complete.  and the assignement on line 386 is
> redundant.
> Sripal>Done
>=20
>      line 458, is there some reason the last argument in this function
>      call is on another line?
> Sripal>Done
>=20
>      line 519 there is a standard scanf way to specify a variable
>      field width.  please use that.  barring that, at least add a
>      comment about what this code is doing.
> Sripal>That requires you hardcode the field width in format specifier.
>        I used my MACRO for specifying the field width.
>=20
>      these (void) casts are not needed.
> Sripal>Done
>=20
>      line 529,564, why did these lines change?
> Sripal>Could not understand the comment
>=20
>      line 646, all operators should be surrounded by space, like '|'
> Sripal>Done
>=20
>=20
>      After these issues have been addressed I'll re-review.
>=20
> nfx-tree/code/ssc-initial-config/initial-config.h
>=20
>=20
>      line 22 no ifdef OpenBSD/Linux, please.  portable files should
>      remain that way, not to mention that we don't build on the target
>      system, so these macros shouldn't be counted on.  put OS specific
>      defines in $(OS).h.
> Sripal>Done
>=20
>      line 95 ditto
> Sripal>Done
>=20
>=20
>=20
> nfx-tree/code/ssc-initial-config/migrate.sh
>=20
>=20
>      >>add nfx-tree/code/ssc-initial-config/migrate.sh
>=20
>      please clean up trailing whitespace.
> Sripal>Done
>=20
>      line 117,147 do something like this instead: /bin/mount -o
>      ro,ufstype=3D44bsd "$SEC_DEV_FILE"4 $MOUNT_PT > /dev/null 2>&1
> Sripal>Done
>=20
>      line 119,149 please use proper spacing -- operators like ']' and
>      ';' should have space around them.
> Sripal>Done
>=20
>      line 229,242 use spaces or tabs to indent, not both.  tabs are
>      always preferred, of course.
> Sripal>Changed to spaces.
>=20
>      line 388, please include the official list(s) of config files, in
>      /onstor/lib.  see flash_install.sh or initial-config for
> examples.
> Sripal> Certain config files are irrelevant to migration. Hence having
> my
> 	  own list.
>=20
>      updateCrontab() - cannot emrscron be used for this?  in
> conjunction with the modify-cron command, of course.  that way, you
> don't have to "upgrade" the crontab file.  on boot up, root crontab
> file is wiped and rebuilt every time, so this should be necessary at
> all.
> Sripal>I am importing only audit export details. Currently we do not
> have
> 	 audit export details in cluster DB and these entry will not
>        be added if we wipe crontab. Probably bug in "audit export"
>=20
>      line 513 s/send/set/
> Sripal>Done
>=20
>      I like the fact that you've added code to have the user set the
>      root password in addition to the admin password.  Please put a
>      message in here to the user informing them that we cannot recover
>      this password if they lose it, so they should make a record of
>      it and keep it in a safe place;  only a system config reset will
>      allow them to get the root password again, and of course all
>      config info will be lost.
> Sripal>Done
>=20
>=20
>=20
>=20
> nfx-tree/code/ssc-initial-config/minlabel.c
>=20
>=20
>      >>add nfx-tree/code/ssc-initial-config/minlabel.c
>=20
>      looks ok
>=20
>=20
> nfx-tree/code/ssc-initial-config/minlabel.h
>=20
>=20
>      >>add nfx-tree/code/ssc-initial-config/minlabel.h
>=20
>      looks ok
>=20
> nfx-tree/code/ssc-nfxsh/Makefile
>=20
>=20
>      looks good
>=20
>=20
> nfx-tree/code/ssc-nfxsh/cmd_flash.c
>=20
>=20
>      looks good
>=20
>=20
> nfx-tree/code/ssc-nfxsh/vtysh-linux.c
>=20
>=20
>      >>delete nfx-tree/code/ssc-nfxsh/vtysh-linux.c
>=20
>      looks good
>=20
>=20
> nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c
>=20
>=20
>      >>delete nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c
>=20
>      looks good
>=20
>=20
> nfx-tree/code/ssc-nfxsh/vtysh_initial.c
>=20
>=20
>      >>add nfx-tree/code/ssc-nfxsh/vtysh_initial.c
>=20
>      this should have been done as an integrate of vtysh-openbsd.c,
>      not a delete/add
>=20
>      opening description: please fix
> Sripal>Done
>=20
>=20
> nfx-tree/code/ssc-pm/rc.onstor
>=20
>=20
>      looks good
>=20
>=20
> openbsd/src/usr.sbin/dhcp/dhclient/scripts/dhclient-script
>=20
>      revert unchanged file?
>=20
> Sripal>sent you wrong file. It should be
> //depot/cg_fti/linux/rootfs/sbin/dhclient-script
>=20

------_=_NextPart_001_01C889E6.30134586
Content-Type: text/html;
	charset="us-ascii"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.7653.38">
<TITLE>RE: FTI code + Migration script review</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">Andy,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">See my inline comments below</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">Thanks,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">Sripal.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">-----Original Message-----<BR>
From: Andy Sharp<BR>
Sent: Wednesday, March 19, 2008 7:55 AM<BR>
To: Sripal Surendiran (HCL)<BR>
Cc: Sudharsan Srinivasan; Tim Gardner; Paul Hammer; Narain Ramadass<BR>
Subject: Re: FTI code + Migration script review</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">linux/rootfs/Makefile</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; See Larry Scheer's review of this =
file.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt; I could not trace the Larry comment =
for</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">linux/rootfs/Makefile</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">. =
Where it is?</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">linux/rootfs/etc/init.d/onstor</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; please preserve the code from =
initial-config that performed the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; auto-upgrade function, and keep that =
functionality here.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 40, the grep regex is fuzzy.&nbsp; it =
doesn't skip over comment</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; lines and i don't know why the 'inet' part =
is in there.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep -v '^#' =
/etc/network/interfaces |</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp; egrep &quot;iface eth[01][ ]+.*dhcp&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">&quot;[ =
]*ifa</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">ce&quot; would take care of =
comments</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">.</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">Anyway</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">I switched to your =
logic.</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">B</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">ut =
changed</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">grep -v '^#'</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
to</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">grep -v '^</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">[ ]*</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">#'</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">,</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">s</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">ince comments need not be at the first =
column.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; while you're here, please get rid of line =
12 &quot;... emrs crap ...&quot;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt; This is not part of my =
change.</FONT></SPAN><SPAN LANG=3D"en-us"> </SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">I =
have removed the comment</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 45, this comment seems to contradict =
what's happening in</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; the code, or what should be =
happening?&nbsp; if INITIALCONFIG=3Dno,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; shouldn't pmtabfile be the standard =
one?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">You =
interpret</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">y</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">es to initial config to =
be done. I interpret yes as</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">initial =
config</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">already done</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> (~ =
complement)</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">. Some mis</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">understanding</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">.</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> I =
switched to your</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">words</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
and added comment.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 68-69 this should be sda and sdb, not =
hda and hdc.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt; This is not part of my =
change.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN =
LANG=3D"en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">&nbsp; Anyway modified =
as you said</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 92,112 again, this logic seems =
backwards, should be if</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; INTIALCONFIG=3Dno.&nbsp; not to mention =
trailing whitespace on both</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; these lines.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt; Explanation for line =
45</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New"> comment</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> hold =
good</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New"> for this</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; why all the gratuitous whitespace changes =
starting from line 141</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; to the end of the file?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">Reason being I have</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">executed :retab from vim =
to remove all tabs and convert</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">it</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">to =
spaces.</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">Probably my vimdiff =
ignore</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">d</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
*iwhite*.</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">Now reverted back to old =
style.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">linux/rootfs/etc/init.d/onstor-config</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">linux/rootfs/etc/onstor/initial-config</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; excellent</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">linux/rootfs/sbin/dhclient-script</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; i need to know some design factors =
here.&nbsp; what's this file supposed</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; to be doing?&nbsp; how is it different =
from the standard one?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">a.</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> This script is called =
by dhclient binary.</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> </SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">b.</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">This script tries =
to</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">contact DHCP server and get the configuration =
details</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">c</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">. If the script could =
not contact DHCP server, it fall backs</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
the</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New"> interface ip to default</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">a</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">ddress</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">d</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">. If script could =
contact DHCP server, s</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">ets the interface to =
values obtained from the DHCP server</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">e</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">. The configuration =
information obtained</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">is</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
stored in</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">/</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">onstor/conf/nasgwayinit.conf file.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">f. This file is used by initial configuration UI to =
show the default values.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; it would seem to need a lot of =
comments.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">Added</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; whitespace on 309, =
312-314</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> Done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; possibly ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/sm-sct/taskmgr.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/Makefile</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 24,39 trailing =
whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;Done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/initial-config-linux.c</FONT></SPAN=
></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/initial-config-linux.c</FONT></SPAN></P>=


<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 309 function =
initconf_updateInterfaceConf()</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Instead of writing shell =
scripts on the fly like</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; this, create a library of =
commonly used shell</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; functions for yourself that =
do these common tasks,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; and then just invoke from =
your C code like so:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; do_system(&quot;. =
/onstor/lib/system-config-lib.sh;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; function_name %s %s&quot;, =
argument, argument);</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; Many of these functions can =
be culled from the current</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; initial-config script, and =
other places.&nbsp; See my comments</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; for =
onstor-config.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Sripal&gt; Deferred for =
now.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; OK.&nbsp; Sigh.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 385, this is a bogus route =
command.&nbsp; you can let the route</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; program figure out the netmask, or specify =
it correctly, but</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0 is never right, obviously.&nbsp; =
to let route figure it out,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; which is probably best, use =
this:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; fprintf(fp, &quot;route add default gw =
%s&quot;, gateway);</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; obviously that also implies that you =
change the variable name to</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; gateway, which is what it really =
is.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Sripal&gt;Deferred. This is how =
initial-config script works.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Nack.&nbsp;&nbsp; What is =
INITCONF_ROUTE_FILE?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">Changing the format would affect</FONT></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">route =
add</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">nfxsh</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">command. They add each route in the following format =
</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">&quot;route add -net &lt;ip&gt; netmask =
&lt;gway&gt; gw &lt;gwip&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">to</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
/etc/network/if-up.d</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">/addroutes</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> irrespective =
of</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">whether</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">the</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">route</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New"> is</FONT></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">d</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">efault</FONT></SPAN><SPAN LANG=3D"en-us"> =
<FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">o</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">r net</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">.</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">ipmd</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
parse</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">s</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> this file and =
ignore</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">the route,</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">if =
the user tries to add duplicate entry.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">I also got mail from Tim to preserve =
th</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">is</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> =
format</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">,</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> when I started the =
initial configuration.</FONT></SPAN><SPAN LANG=3D"en-us"> </SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Changed</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"></FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">INITCONF_ROUTE_FILE</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> to</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">INITCONF_GATEWAY_FILE</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/initial-config-openbsd.c</FONT></SP=
AN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/initial-config-openbsd.c</FONT></SPAN></=
P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/initial-config.c</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; overall very large improvement to the code =
in this file.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 265 ifdef OpenBSD normally not =
allowed, but i might be</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; prepared to accept this one.&nbsp; there =
are exceptions to the rule.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; perhaps put a comment above it saying what =
this chunk of BSD-only</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; code is for.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> Probably I missed =
yesterday. I moved to $(OS).h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 355 is there really a macro with the =
name</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; INITCONF_INIT_CONF_FILE?&nbsp; =
seriously.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt; Renamed</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">the</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New"> MACRO</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 435,436, space afer '-'.&nbsp; no, =
i'm not checking the logic of</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; all those strcmp's and strcpy's =
~:^)</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 514,549 this logic is broken in =
several ways.&nbsp; you can fix</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; these like you fixed the other one.&nbsp; =
i realize it wasn't part of</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; this change, but hey.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 891, what does this comment =
mean?&nbsp; what's a zombie in this</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; context?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> The status shown by =
/onstor/conf/nasgwayinit.status file is no longer valid. The process =
that</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New"></FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">performed the initial =
configuration has</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">already</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New">died.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; lines 885, 909/10, 916 fix =
spacing</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/initial-config.h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/migrate.sh</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/migrate.sh</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 274 and friends, we don't need no =
parens</FONT></SPAN></P>

<P DIR=3DLTR><SPAN =
LANG=3D"en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2 =
FACE=3D"Courier New">cat &lt;&lt;END =
&gt;$LINUX_INT_CONF</FONT></SPAN></P>

<P DIR=3DLTR><SPAN =
LANG=3D"en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2 =
FACE=3D"Courier New">foo</FONT></SPAN></P>

<P DIR=3DLTR><SPAN =
LANG=3D"en-us">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=3D2 =
FACE=3D"Courier New">END</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 388,413, please include the official =
list(s) of config</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; files, in /onstor/lib.&nbsp; see =
flash_install.sh or initial-config</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; for examples.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Sripal&gt; Certain config files are =
irrelevant to migration.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Nack.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Use the lists.&nbsp; They are there to =
support accurate maintenance of</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; the code -- a developer has to be able to =
count on changing the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; list(s) and having that work for =
everything. If there is a file you</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; can't tolerate copying, deal with that in =
tar arguments/options or</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; use sed to remove it or =
something.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; updateCrontab() - cannot emrscron be used =
for this?&nbsp; in conjunction</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; with the modify-cron command, of =
course.&nbsp; that way, you don't have</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; to &quot;upgrade&quot; the crontab =
file.&nbsp; on boot up, root crontab file is</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; wiped and rebuilt every time, so this =
should be necessary at all.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Sripal&gt;I am importing only audit export =
details. Currently we do</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; not have audit export details in cluster =
DB and these entry will</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; not be added if we wipe crontab. Probably =
bug in &quot;audit export&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; Andy&gt; Of all the stupid....storing =
configuration information</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; in crontab.&nbsp; Jeez.&nbsp; Someday this =
will be fixed....</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 396, move most of this code into the =
reInstallCorruptFile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; function so that input md5sum does not =
have to be calculated twice.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; in other words, have the function do the =
check, issue the message</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; and attempt the =
reinstall.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">Instead passed input =
md5sum as argument to function</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 456, no &quot;&quot; =
needed</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 486, the device file might not exist =
for a couple of reasons,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; one of which is they forgot to insert the =
CF card.&nbsp; perhaps you</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; can output a message to that effect and =
ask the user to make sure</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; the card is inserted, and then continue =
on.&nbsp; also offer the option</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; to exit.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 514 The root =
password</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 516 s/get the factory default =
password/reset the root</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; password./</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 517 replace with &quot;Please store =
the root password in a safe,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; secure place.&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/minlabel.c</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/minlabel.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-initial-config/minlabel.h</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/minlabel.h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-nfxsh/Makefile</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-nfxsh/cmd_flash.c</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-nfxsh/vtysh-linux.c</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;delete =
nfx-tree/code/ssc-nfxsh/vtysh-linux.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;delete =
nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-nfxsh/vtysh_initial.c</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-nfxsh/vtysh_initial.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; this should have been done as an integrate =
of vtysh-openbsd.c,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; not a delete/add.&nbsp; makes it much =
harder to review this way.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">I =
have</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">i</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">ntegrated =
dev</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New"> branch vtysh-openbsd.c as cg_fti vtysh_initial.c. =
But still I could not see the difference with p4 =
diff.</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Instead of showing &quot;add&quot;, it now changed =
to &quot;branch&quot;. Is this</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">OK?</FONT></SPAN><SPAN =
LANG=3D"en-us"> </SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">If</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">NO</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">,</FONT></SPAN><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" =
SIZE=3D2 FACE=3D"Courier New"> a</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">ny pointers on how to =
do?</FONT></SPAN><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; please fix trailing =
whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 137, why was this section of the code =
changed from a pipe</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; to a temporary file?&nbsp; there is =
nothing wrong with the pipe as</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; far as i can see.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">Linux</FONT></SPAN><SPAN =
LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier =
New">seems to have</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> huge number =
of</FONT></SPAN><SPAN LANG=3D"en-us"> <FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">time zone</FONT></SPAN><SPAN LANG=3D"en-us"><FONT =
COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New"> list</FONT></SPAN><SPAN =
LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 FACE=3D"Courier New">. =
Pipe gives me error in console.</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">nfx-tree/code/ssc-pm/rc.onstor</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">openbsd/src/etc/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">openbsd/src/etc/rc</FONT></SPAN></P>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 224, whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; line 233 i thought we weren't going to do =
this anymore?&nbsp; pmtab and</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; pmtab.init were staying put, no more =
copying.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">openbsd/src/etc/rc.initial</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT COLOR=3D"#FF00FF" SIZE=3D2 =
FACE=3D"Courier New">Sripal&gt;done</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&nbsp;&nbsp;&nbsp;&nbsp; super excellent.&nbsp; thank =
you.</FONT></SPAN></P>
<BR>
<BR>
<BR>
<BR>
<BR>
<BR>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier New">On =
Tue, 18 Mar 2008 09:33:02 -0700 &quot;Sripal Surendiran =
(HCL)&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&lt;sripal.surendiran@onstor.com&gt; wrote:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Thanks Andy,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; I have incorporated your review comments. Request you to =
re-review.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Please see my inline comments.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Thanks again,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; -----Original Message-----</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; From: Andy Sharp </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sent: Saturday, March 15, 2008 7:06 AM</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; To: Sudharsan Srinivasan</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Cc: Tim Gardner; Paul Hammer; Sripal Surendiran (HCL); Narain =
Ramadass</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Subject: Re: FTI code + Migration script =
review</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; On Thu, 13 Mar 2008 08:18:48 -0700 &quot;Sudharsan =
Srinivasan&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &lt;sudharsan@onstor.com&gt; wrote:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; Hi Andy,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; While you continue your review of FTI, please pass on any =
review</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; comments that you have so far. Sripal can take care of =
these</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; comments. Also, I guess Larry has reviewed the makefiles. =
Kindly</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; pass on any review comments that Larry might have. =
</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; Regards</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &gt; Sudharsan</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Here you go.&nbsp; There is some work to do.&nbsp; ifdef =
{OpenBSD,Linux} has to</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; be removed, plus some other stuff.&nbsp; I think there are one =
or two files</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; that appear to have been a name change and not much more, but =
they are</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; showing up as adds from perforce.&nbsp; Did they start as =
integrates or</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; were they just done as adds?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; linux/rootfs/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; See Larry Scheer's review of =
this file.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; No comments found</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; linux/rootfs/etc/init.d/onstor</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not happy with removal of =
initial-config script, but am happy</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; with emrscron related =
changes.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; please preserve the code from =
initial-config that performed the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auto-upgrade function, and keep =
that functionality here.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done. Performed similar movement in BSD =
also.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Affected files:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; //depot/cg_fti/openbsd/src/etc/rc</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; //depot/cg_fti/openbsd/src/etc/rc.initial</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; //depot/cg_fti/openbsd/src/etc/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 40, the grep regex is =
hair-raising.&nbsp; please make it sane</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and as simple as possible.&nbsp; =
something like</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; grep -v '^#' =
/etc/network/interfaces | egrep &quot;iface</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; eth[01][[space]]\+ dhcp&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; linux/rootfs/etc/init.d/onstor-config</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I think someone else said this =
already, but I'll repeat it: fix</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the name and/or the logic =
surrounding the variable INITIALCONFIG.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; It is not intuitive or =
self-documenting as is.&nbsp; For example,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; change the name to NOT_INITIALCONFIG or change the logic, or =
even</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; better, change the possible values to yes/no, and =
have</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; INITIALCONFIG=3Dyes when the filer is in an initial config =
state.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 38, seriously dense sed =
script.&nbsp; for maintainability,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; please turn it into 3 separate =
scripts, or better yet,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; three separate shell functions =
like &quot;interfaces_reset_type&quot;,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
&quot;interfaces_reset_address&quot;, =
&quot;interfaces_reset_netmask&quot; and</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call them from this function, =
for greater code reuseability.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 76, you can remove the call =
to newaliases, it is a no-op</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 86, add back auto-upgrade =
logic from</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /etc/onstor/initial-config =
here.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; linux/rootfs/etc/onstor/initial-config</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;delete =
linux/rootfs/etc/onstor/initial-config</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; don't delete it, just remove it =
from makefile for now</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;File is preserved. Removed stuff other than auto =
upgrade </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/sm-sct/taskmgr.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 93-94; 112-113 indentation =
style does not match surrounding</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; code.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; Nothing part of my change</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 2333-2336, what does this =
do?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; added comment in code</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-initial-config/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 23 make this based on the =
value of $(OS) rather than</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; $(PROD).</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
nfx-tree/code/ssc-initial-config/initial-config-linux.c</FONT></SPAN></P>=


<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/initial-config-linux.c</FONT></SPAN></P>=


<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this should be an integrate of =
initial-config-linux.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; This is new file added in this =
branch</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; please pare down that massive =
list of includes to only those that</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; are actually =
needed.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 85, many whitespace =
violations, including trailing</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 93, return the errno, not =
-1.&nbsp; adjust callers accordingly.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Changed return value to NFX_ERR and =
NFX_OK.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 99,151 not needed, fgets =
does this</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 136,233,244 trailing =
whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line =
142,156,164,173,177,188,196,203,207 return some kind =
of</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errno value, like =
ENOTFOUND.&nbsp; ok, i just made that up, but you</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; know what i mean. EINVAL, =
ENOENT, something like that.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Changed return value to NFX_ERR and =
NFX_OK</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 244, spacing?&nbsp; =
operators should be surrounded with a space,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; like =3D=3D, ?, : and so =
on.&nbsp; and of course fix the trailing space.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 250 why not return the =
actual errno? same for all the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; returns in this function.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Changed return value to NFX_ERR and =
NFX_OK</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line function =
initconf_updateInterfaceConf()</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Instead of writing shell scripts =
on the fly like</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this, create a library of =
commonly used shell</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; functions for yourself that do =
these common tasks,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and then just invoke from your C =
code like so:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do_system(&quot;. =
/onstor/lib/system-config-lib.sh;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function_name %s %s&quot;, =
argument, argument);</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Many of these functions can be =
culled from the current</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; initial-config script, and other =
places.&nbsp; See my comments</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for =
onstor-config.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; Deferred for now. This has to been put to my todo =
list. Will</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; take up later.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 361 the description text =
and the argument variable name</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; could use some clarifying.&nbsp; =
This method updates the default</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gateway address in the =
configuration file.&nbsp; gateway - ip address</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; of the gateway.&nbsp; you get =
the idea.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 374, trailing =
whitespace</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 385, this is a bogus route =
command.&nbsp; you can let the route</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; program figure out the netmask, =
or specify it correctly, but</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0 is never right, =
obviously.&nbsp; to let route figure it out,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; which is probably best, use =
this:</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fprintf(fp, &quot;route add =
default gw %s&quot;, gateway);</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; obviously that also implies that =
you change the variable name to</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gateway, which is what it really =
is.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Deferred. This is how initial-config script works. =
This format</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; is also used by ipmd libraries. Not sure of side =
effects.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
nfx-tree/code/ssc-initial-config/initial-config-openbsd.c</FONT></SPAN></=
P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/initial-config-openbsd.c</FONT></SPAN></=
P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I seriously doubt you need all =
these include files.&nbsp; Please pare</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; these down to the absolute =
minimum.&nbsp; Same goes for the Linux</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; version of this =
file.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; same comments as for the Linux =
version.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; much trailing whitespace as =
well.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
nfx-tree/code/ssc-initial-config/initial-config.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Please do not use if[n]def =
OpenBSD or Linux, or variants thereof.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Read the porting guide wiki page =
under the Cougar project if you</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; need pointers on how to do =
that.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; please clean up trailing =
whitespace.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Error return paths: in =
initial-config-$(OS) I said return errno</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; value instead of -1.&nbsp; Well, =
you can do that, or you can return</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; some NFX_error_value that is =
appropriate.&nbsp; Your choice.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;used NFX_ERR and NFX_OK as return =
value</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 10 =
spelling</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 381 do not use parens in =
return statements.&nbsp; return is not</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a function =
call.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 385, this logic is broken =
in several ways.&nbsp; just because a</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string in the file is longer =
than INITCONF_MAX_STR_SIZE, whatever</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the heck that is, doesn't mean =
an automatic error.&nbsp; errors should</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; only come from the parsing part =
of the code. not to mention that</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; if (buf[0] !=3D '\0' &amp;&amp; buf[strlen(buf) - 1] =3D=3D =
'\n') might fail but the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string be complete.&nbsp; and =
the assignement on line 386 is</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; redundant.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 458, is there some reason =
the last argument in this function</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call is on another =
line?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 519 there is a standard =
scanf way to specify a variable</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; field width.&nbsp; please use =
that.&nbsp; barring that, at least add a</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comment about what this code is =
doing.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;That requires you hardcode the field width in format =
specifier.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I used my MACRO for =
specifying the field width.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; these (void) casts are not =
needed.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 529,564, why did these =
lines change?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Could not understand the comment</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 646, all operators should =
be surrounded by space, like '|'</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; After these issues have been =
addressed I'll re-review.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
nfx-tree/code/ssc-initial-config/initial-config.h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 22 no ifdef OpenBSD/Linux, =
please.&nbsp; portable files should</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remain that way, not to mention =
that we don't build on the target</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; system, so these macros =
shouldn't be counted on.&nbsp; put OS specific</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; defines in =
$(OS).h.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 95 ditto</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-initial-config/migrate.sh</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/migrate.sh</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; please clean up trailing =
whitespace.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 117,147 do something like =
this instead: /bin/mount -o</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ro,ufstype=3D44bsd =
&quot;$SEC_DEV_FILE&quot;4 $MOUNT_PT &gt; /dev/null =
2&gt;&amp;1</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 119,149 please use proper =
spacing -- operators like ']' and</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ';' should have space around =
them.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 229,242 use spaces or tabs =
to indent, not both.&nbsp; tabs are</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; always preferred, of =
course.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Changed to spaces.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 388, please include the =
official list(s) of config files, in</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /onstor/lib.&nbsp; see =
flash_install.sh or initial-config for</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; examples.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt; Certain config files are irrelevant to migration. =
Hence having</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; my</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; own =
list.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; updateCrontab() - cannot =
emrscron be used for this?&nbsp; in</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; conjunction with the modify-cron command, of course.&nbsp; =
that way, you</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; don't have to &quot;upgrade&quot; the crontab file.&nbsp; on =
boot up, root crontab</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; file is wiped and rebuilt every time, so this should be =
necessary at</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; all.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;I am importing only audit export details. Currently =
we do not</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; have</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; audit export details in =
cluster DB and these entry will not</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; be added if we wipe =
crontab. Probably bug in &quot;audit export&quot;</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; line 513 =
s/send/set/</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I like the fact that you've =
added code to have the user set the</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root password in addition to the =
admin password.&nbsp; Please put a</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; message in here to the user =
informing them that we cannot recover</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this password if they lose it, =
so they should make a record of</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; it and keep it in a safe =
place;&nbsp; only a system config reset will</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; allow them to get the root =
password again, and of course all</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config info will be =
lost.</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-initial-config/minlabel.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/minlabel.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-initial-config/minlabel.h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-initial-config/minlabel.h</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks ok</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-nfxsh/Makefile</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-nfxsh/cmd_flash.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-nfxsh/vtysh-linux.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;delete =
nfx-tree/code/ssc-nfxsh/vtysh-linux.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;delete =
nfx-tree/code/ssc-nfxsh/vtysh-openbsd.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-nfxsh/vtysh_initial.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&gt;add =
nfx-tree/code/ssc-nfxsh/vtysh_initial.c</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this should have been done as an =
integrate of vtysh-openbsd.c,</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; not a =
delete/add</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; opening description: please =
fix</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;Done</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; nfx-tree/code/ssc-pm/rc.onstor</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; looks good</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
openbsd/src/usr.sbin/dhcp/dhclient/scripts/dhclient-script</FONT></SPAN><=
/P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; revert unchanged =
file?</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; Sripal&gt;sent you wrong file. It should be</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; =
//depot/cg_fti/linux/rootfs/sbin/dhclient-script</FONT></SPAN></P>

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT SIZE=3D2 FACE=3D"Courier =
New">&gt; </FONT></SPAN></P>

</BODY>
</HTML>
------_=_NextPart_001_01C889E6.30134586--
