[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