Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 7 Feb 2012 21:13:05 +0100
From:      peter knezel <peter.knezel@gmail.com>
To:        Damien Fleuriot <ml@my.gd>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: From analysis of a simple ifstated.conf to more compex example
Message-ID:  <CAAwfu_kfj2mqT9qVSh2_9LpfcvOrxBJiwNRi_x79VcjGQLwGqw@mail.gmail.com>
In-Reply-To: <4F314AFB.8080901@my.gd>
References:  <CAAwfu_n+VjgeihzWRa1F6v6PhCA943sFHR7eFxA1Ycc8NbjXpQ@mail.gmail.com> <4F314AFB.8080901@my.gd>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
Hello Damien,

I did read your example but cannot get idea from it.
For three interfaces you have much more possibilities.

Imagine you start the server from uuu state which is equal to
net = '( "ifconfig -a -u |grep carp0 > /dev/null" every 3 && "ifconfig -a -u
|grep carp1 > /dev/null" every 3 && "ifconfig -a -u |grep carp2 > /dev/null"
every 3)'

Now you put down one carp interface - so system is in state :
*state one:*
(duu) || (udu) || (uud) <----which is same as !$net
run script1.sh
go to twoff

now imagine, you put down any other carp interface:
*state twoff: *
(dud) || (ddu) || (udd)
run script2.sh
go to two

*state two: *
put all interfaces up
run script3.sh
go to state one

it means, this is one of the possibilities system can behave (this
situation does not describe all possible states - I have taken this
special example.)

Now if you want to put up after putting down one carp interface, you fail
since it is in state twoff.
Only of you put down second carp interface it goes to state two and if you
put both up, it will go to state one.

This is where my ifstated.conf fails to work.

Kind regards,

Peter Knezel


On 7 February 2012 17:02, Damien Fleuriot <ml@my.gd> wrote:

> On 2/7/12 3:36 PM, peter knezel wrote:
> > Hello all,
> >
> > I would like to ask somebody to explain me how the ifstated works
> according to
> > the following configuration file.
> > I have three virtual carp interfaces carp0,carp1 and carp2.
> >
> > I try to understand the following setting:
> > The server is in state one (all carp interfaces are up) and if there
> > is carp down of any:
> > one (carp0 or carp1 or carp2),
> > two ([carp0 and carp1] or [carp0 and carp2] or [carp1 and carp2]),
> > three interfaces (carp 0 and carp1 and carp2), server
> > runs the script testdown.sh and put the server into state two.
> > If all carp interfaces are up, the server runs the testup.sh and set
> > the state to one.
> >
>
> That is my understanding.
>
>
> > Is it the way the system works?
> > Or am I wrong?
> >
> > ===
> > init-state one
> >
> > net = '( "ifconfig -a -u |grep carp0 > /dev/null" every 3 && "ifconfig
> -a -u
> > |grep carp1 > /dev/null" every 3 && "ifconfig -a -u |grep carp2 >
> /dev/null"
> > every 3)'
> >
> > state one {
> >        if ( ! $net ) {
> >                run "/usr/local/testdown.sh"
> >                set-state two
> >        }
> > }
> >
> > state two {
> >        if ( $net ) {
> >                run "/usr/local/testup.sh"
> >                set-state one
> >        }
> > }
> > ===
> >
> > Is there any possibility to define and set ifstated.conf that reacts
> when:
> >
> >  any one of the carp interfaces is down - followed by another any
> > other carp interface down
> >
> >
> > I tried to define states:
> >
> > duu ="!carp0.link.up && carp1.link.up && carp2.link.up"
> > udu ="carp0.link.up && !carp1.link.up && carp2.link.up"
> > uud ="carp0.link.up && carp1.link.up && !carp2.link.up"
> > ddu ="!carp0.link.up && !carp1.link.up"
> > dud ="!carp0.link.up && !carp2.link.up"
> > udd ="!carp1.link.up && !carp2.link.up"
> >
> > and used them but somehow I cannot incorporate all state changes and
> > include it in ifstated.conf.
> >
>
>
> Works fine here, did you not have any luck with the file I posted earlier ?
> _______________________________________________
> freebsd-questions@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "
> freebsd-questions-unsubscribe@freebsd.org"
>



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?CAAwfu_kfj2mqT9qVSh2_9LpfcvOrxBJiwNRi_x79VcjGQLwGqw>