[Click] Please help. TCP and UDP Headers problems.

Josh Butler tuna_armadillo at hotmail.com
Thu Nov 22 07:13:59 EST 2007


Hi Bart,

Many thanks for the reply. Modified the code, see below, but still
getting exactly the same errors... Getting really desperate now. Please
don't give up on me, I'm not usually this slow.

void
MyTee::push(int, Packet *p_in)
{

  WritablePacket *p = p_in->uniqueify();
  if (!p) //kill if no memory available.
  return 0;

  click_ip *iph = p->ip_header(); // Get pointer to IP Header

  if (!iph) // Make sure it's a valid header
  {                             
    p->kill(); // Kill if invalid to avoid memory leaks  
    return;
  }

  SrcIP = iph->ip_src;
  DstIP = iph->ip_dst;
  Protocol = iph->ip_p;

  if (Protocol == 6) 
  {
  click_tcp *tcph = p->tcp_header();
  SrcPort = tcph->th_sport;
  DstPort = tcph->th_dport;
  }
  
  else if (Protocol == 17) {
  click_udp *udph = p->udp_header();
  SrcPort = udph->uh_sport;
  DstPort = udph->uh_dport;
  }


On Thu, 2007-11-22 at 09:12 +0100, Bart Braem wrote:
> On Thursday 22 November 2007 01:57:08 Josh Butler wrote:
> > //CODE\\
> >
> > 66  const click_ip *iph = p->ip_header(); // Get pointer to IP
Header
> > 67
> > 68   if (!iph) // Make sure it's a valid header
> > 69   {                          
> > 70     p->kill(); // Kill if invalid to avoid memory leaks  
> > 71     return;
> > 72   }
> > 73
> > 74   SrcIP = iph->ip_src;
> > 75   DstIP = iph->ip_dst;
> > 76
> > 77   if (iph->ip_p == 6) //Is packet tcp?
> > 78   {
> > 79   click_tcp *tcph = p->tcp_header(); //get pointer to tcp header.
> > 80   SrcPort = tcph->th_sport;
> > 81   DstPort = tcph->th_dport;
> > 82   }
> > 83  
> > 84   else if (iph->ip_p == 17){ //Is packet udp?
> > 85   click_udp *udph = p->udp_header(); //get pointer to udp header.
> > 86   SrcPort = udph->uh_sport;
> > 87   DstPort = udph->uh_dport;
> > 88   }
> >
> > //END CODE\\
> >
> > Terminal shows the following errors:
> >
> > ./elements/local/mytee.cc: In member function ‘virtual void
> > MyTee::push(int, Packet*)’:
> >
> > ./elements/local/mytee.cc:80: error: invalid conversion from ‘const
> > click_tcp*’ to ‘click_tcp*’
> >
> Read the header file packet.hh in the include/click directory: in
Packet the 
> function tcp_header(); returns a const pointer. So either use a 
> WriteablePacket or change the type of the tcp header.
> 
> > ./elements/local/mytee.cc:81: error: invalid use of undefined type
> > ‘struct click_tcp’
> >
> > ./include/click/packet.hh:17: error: forward declaration of ‘struct
> > click_tcp’
> >
> > ./elements/local/mytee.cc:82: error: invalid use of undefined type
> > ‘struct click_tcp’
> >
> > ./include/click/packet.hh:17: error: forward declaration of ‘struct
> > click_tcp’
> >
> All these errors result from the previous one.
> 
> > ./elements/local/mytee.cc:86: error: invalid conversion from ‘const
> > click_udp*’ to ‘click_udp*’
> >
> This is the same problem of the return type of that function.
> 
> > ./elements/local/mytee.cc:87: error: invalid use of undefined type
> > ‘struct click_udp’
> >
> > ./include/click/packet.hh:18: error: forward declaration of ‘struct
> > click_udp’
> >
> > ./elements/local/mytee.cc:88: error: invalid use of undefined type
> > ‘struct click_udp’
> >
> > ./include/click/packet.hh:18: error: forward declaration of ‘struct
> > click_udp’
> 
> These errors also result from the previous ones.
> 
> Regards,
> Bart
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click




More information about the click mailing list