On Tue, Sep 27, 2005 at 12:31:36PM +0200, Hermann Lauer wrote:
> Hello Andrew,

Hi,

Sorry for the late reply. I've been digesting what you've written, and
mulling over it.
 
> On Fri, Sep 16, 2005 at 07:57:48PM +1000, Andrew Pollock wrote:
> > I've got to say I'm not quite following what you're saying the problem
> > is here. I've examined the stock "linux" dhclient-script that ships with
> > the source, and I can't see how it's passing any arguments to the hooks
> > either.
> 
> That's done implicit - see the following lines from 
> dhcp-3.0.3/client/scripts/linux bash script:
> 
> # Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
> exit_with_hooks() {
>   exit_status=$1
>   if [ -f /etc/dhclient-exit-hooks ]; then
>     . /etc/dhclient-exit-hooks
>   fi
> # probably should do something with exit status of the local script
>   exit $exit_status
> }
> 
> Note they source the exit hooks, so the arguments are preserved
> and thus available to /etc/dhclient-exit-hooks. They
> even care about storing the argument to keep the exit code intact.
> 
> The arg1 is set different with the following code further down:
> 
>     exit_with_hooks 0
>   fi
>   ifconfig $interface inet 0 down
>   exit_with_hooks 1
> 
> > 
> > That said, you talk about detecting failures. I had a quick play with
> > the debug hook that ships with the client package, and enabled it, and
> > there's a "reason" variable available to it. I tried playing with it,
> > but the best I could do is get it to be set to "FAIL", not "TIMEOUT"
> > that you speak of.
> > 
> > So if you can give me an example of how you'd like this to work, I can
> > see what I can do.
> 
> You have to configure some leases to try without a dhcp server,
> then dhcp-client will try to ping the router configured there
> and if it is available it will TIMEOUT with a different exit code
> to the /etc/dhclient-exit-hooks - so that you can recognise that
> your laptop is connected to the home network, for example.
> 
> I can give you log files from my laptop, so you can see that this
> really works - but maybe this discussion should be taken to the
> dhcp-client mailing list. I use a modified dhclient-script which even
> did not need a router to be configured, because at my home network
> I did'nt want to depend on one machine to be always up. 
> 
> The debian bug here is that the arg1 is not propagated trough
> that run_script part. My hack at the moment is the follwing:
> 
> exit_with_hooks() {
>     exit_status=$1
>     hook_arg1=$1
> ...
> run_hook() {
> ...
>     if [ -f $script ]; then
>         . $script $hook_arg1
>     fi
> ...
> 
> So my setup works with this hack, but a bash expert would probably know
> a better solution.
> 

So, how does this sound...?

If run_hook() is called with the name of the script and then all the
arguments (i.e. $*) that dhclient-script was called with, then run_hook()
has access to all the arguments. Simply shifting once will throw away the
name of the hook, and make $1 the first argument that dhclient-script was
called with.

If you could please substitute your doctored dhclient-script with what's at
http://people.debian.org/~apollock/dhcp3/dhclient-script and let me know if
I'm on the right track or not, that'd be great.

regards

Andrew


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to