[Click] Problem compiling a new element

Ramanathan Palaniappan ramwisc at gmail.com
Tue Nov 15 14:10:17 EST 2005


Hi,

I know that Tee has the same functionality but I just wanted to play  
around with click and get used to adding new elements. I copied the  
nullelement.cc and nulllelement.hh files to elements\local and  
modified the class names to add a different element. The element was  
compiled successfully, but the script reports "Unknown element  
class". I have attached the *.cc, *.hh, linuxmodule/elements.cc and  
linumodule\elements.conf file for reference.

Thanks,
Ramanathan

On 11/15/05, Eddie Kohler <kohler at cs.ucla.edu> wrote:
Ramanathan,

Your elements.conf file reports that your element is using the name
ReplicateElement.  So I don't know why you say it doesn't work.  Or
are you trying to change the name to Replicate as in your sample.hh
file?

There are a number of problems with your code as well.  You cannot
push a packet twice, as your ReplicateElement does.  You need to
clone it once

void ReplicateElement::push(int port, Packet *p)
{
     output(0).push(p->clone());   // should really check for errors
     output(1).push(p);
}

And as people point out Tee does this job just fine.  So...?
Eddie



On Nov 15, 2005, at 8:52 AM, Ramanathan Palaniappan wrote:

 > Hi,
 >
 > I did make elemlist and the element has compiled successfully. I  
tried
 > changing the name from Replicate to ReplicateElement but did not
 > work. I
 > have attached my elements.conf file.
 >
 > Thanks,
 > Ramanathan
 >
 >
 >
 > On 11/15/05, Frederic Van Quickenborne <
 > frederic.vanquickenborne at intec.ugent.be > wrote:
 >>
 >> Hi,
 >>
 >> I know this does not solve your original problem, but the "Tee"
 >> element,
 >> included in Click, is a packet copier
 >> ( http://pdos.csail.mit.edu/click/doc/Tee.n.html).
 >>
 >> Many regards,
 >> Frederic.
 >>
 >> Ramanathan Palaniappan wrote:
 >>
 >>> Hi,
 >>>
 >>> I have added a simple element to Click and I have compiled it
 >> successfully.
 >>> But when I use the element in my script, Click reports "unknown
 >>> element
 >>> class". I have attached the *.cc and *.hh files for reference.
 >>> The new
 >>> element was placed under "elements/local" and local was enabled
 >>> during
 >>> configuration.
 >>>
 >>> Any suggestions would be greatly appreciated.
 >>>
 >>>
 >>>  
--------------------------------------------------------------------
 >>> ----
 >>>
 >>> /*
 >>> * nullelement.{cc,hh} -- do-nothing element
 >>> * Eddie Kohler
 >>> *
 >>> * Copyright (c) 1999-2000 Massachusetts Institute of Technology
 >>> *
 >>> * Permission is hereby granted, free of charge, to any person
 >>> obtaining
 >> a
 >>> * copy of this software and associated documentation files (the
 >> "Software"),
 >>> * to deal in the Software without restriction, subject to the
 >>> conditions
 >>> * listed in the Click LICENSE file. These conditions include: you
 >>> must
 >>> * preserve this copyright notice, and you cannot mention the
 >>> copyright
 >>> * holders in advertising related to the Software without their
 >> permission.
 >>> * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR  
IMPLIED.
 >> This
 >>> * notice is a summary of the Click LICENSE file; the license in  
that
 >> file is
 >>> * legally binding.
 >>> */
 >>>
 >>> #include <click/config.h>
 >>> #include "sample.hh"
 >>> CLICK_DECLS
 >>>
 >>> ReplicateElement::ReplicateElement()
 >>> : Element(1, 2)
 >>> {
 >>> MOD_INC_USE_COUNT;
 >>> }
 >>>
 >>> ReplicateElement::~ReplicateElement()
 >>> {
 >>> MOD_DEC_USE_COUNT;
 >>> }
 >>>
 >>> void
 >>> ReplicateElement::push(int port, Packet *p)
 >>> {
 >>> output(0).push(p);
 >>> output(1).push(p);
 >>> }
 >>>
 >>>
 >>>
 >>> EXPORT_ELEMENT(ReplicateElement)
 >>> ELEMENT_REQUIRES(linuxmodule)
 >>> //ELEMENT_REQUIRES(userlevel)
 >>> //ELEMENT_MT_SAFE(ReplicateElement)
 >>> CLICK_ENDDECLS
 >>>
 >>>
 >>>
 >>>  
--------------------------------------------------------------------
 >>> ----
 >>>
 >>> _______________________________________________
 >>> click mailing list
 >>> click at amsterdam.lcs.mit.edu
 >>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
 >>>
 >>>
 >>
 >> --
 >> Frederic Van Quickenborne
 >> Department of Information Technology (INTEC)
 >> Ghent University - IBBT - IMEC
 >> Gaston Crommenlaan 8 (Bus 201), B-9050 Gent, Belgium
 >> tel.: +32-9331 4974; tel. secr.: +32-9331 4900
 >> fax: +32-9331 4899
 >> Frederic.VanQuickenborne at intec.ugent.be
 >> http://www.ibcn.intec.ugent.be
 >>
 >> The contents of this e-mail are intended for the named addressee
 >> (s) only.
 >> It contains information which may be confidential and which may
 >> also be
 >> privileged. Unless you are the named addressee (or authorised to
 >> receive for
 >> the addressee) you may not copy or use it, or disclose it to
 >> anyone else. If
 >> you received it in error please notify us immediately and then
 >> destroy it.
 >> Further, we make every effort to keep our network free from viruses.
 >> However, you do need to check this e-mail and any attachments to
 >> it for
 >> viruses as we can take no responsibility for any computer virus
 >> which might
 >> be transferred by way of this e-mail.
 >>
 >>
 >>
 >> <elements.conf>
 > _______________________________________________
 > click mailing list
 > click at amsterdam.lcs.mit.edu
 > https://amsterdam.lcs.mit.edu/mailman/listinfo/click





More information about the click mailing list