[Click] Scoping/naming issues
Philip Prindeville
philipp_subx at redfish-solutions.com
Mon Jan 17 21:25:22 EST 2011
Not really sure how your example relates to my problem statement...
In my case, the ARPQuerier() I'm creating has specific state it retains, and:
(1) needs to be plumbed into the middle of a pipeline in one other elementclass (for IP packets);
(2) needs to be plumbed to the outputs of several instances of the above elementclass (for the ARP packets);
Maybe I'm missing something in what you're saying.
On 1/17/11 6:09 PM, Cliff Frey wrote:
> I actually really like this property of elementclasses. Specifically, an elementclass is a substitute for an element. In cases like you describe Philip, i end up writing configs like:
>
> elementclass MyNull { input -> output; }
>
> // input/output 0: internet
> // input/output 1: LAN
> elementclass MyRouter {
> input [0] -> from_inet :: MyNull();
> input [1] -> from_lan :: MyNull();
> to_inet :: MyNull() -> [0] output;
> to_lan :: MyNull() -> [1] output;
>
> from_inet -> Classifier(12/0800, ...)
> ...
> }
> On Mon, Jan 17, 2011 at 4:55 PM, Philip Prindeville <philipp_subx at redfish-solutions.com <mailto:philipp_subx at redfish-solutions.com>> wrote:
>
> Yeah, it especially makes sense to have arpfoo be global if it needs to be accessible from two different elementclass's, one that deals with the IP flow (input [0] and output [0]) and another one that deals strictly with the ARP request/reply flow (input [1] and output [1]).
>
> Someone else will have to come up with the patches... I've not yet dabbled in the code itself.
>
>
> On 1/17/11 4:35 PM, Eddie Kohler wrote:
> > Hi Philip,
> >
> > I can see why you thought compound elements would work that way, but they don't. They are very strictly encapsulated: all connections to other elements must take place through explicit inputs and outputs.
> >
> > I admit it would make sense to do it the way you've imagined. Patches welcome...
> >
> > Eddie
> >
> >
> > On 1/15/11 2:53 PM, Philip Prindeville wrote:
> >> I've got a configuration where I do:
> >>
> >> ...
> >> arpfoo :: ARPQuerier(...);
> >>
> >> elementclass Bar {
> >> ...
> >> class :: classifier(...);
> >> ...
> >> class [2] -> [1] arpfoo;
> >> ...
> >> }
> >>
> >>
> >> but it complains that "unknown element class 'arpfoo'" in a few places, and that input 1 isn't used...
> >>
> >> So I'm confused. Everything is scoped globally... even stuff defined within an elementclass gets scoped globally.
> >>
> >> Why then can't I access a global variable from within an elementclass's scope?
> >>
> >> What am I missing?
> >>
> >> Thanks,
> >>
> >> -Philip
>
More information about the click
mailing list