[Click] tcp->thdport and udp->uh_dport not returning correct values

Beyers Cronje bcronje at gmail.com
Fri May 13 10:05:49 EDT 2011


You probably forgot to convert to host byte order:

src_port = ntohs(tcp->th_sport);

The way you are assigning your pointers are also prone to errors.

A better way would be something in the lines of:

  const click_ip6 *ip6h = p->ip6_header();
  const click_tcp *tcph = p->tcp_header();

  if (!p->has_network_header()) {
      p->kill();
      return;
  }

  // Do your stuff here


The above code assumes that you have used the proper Click configuration to
ensure IPv6 packets via Classifier and that the packets are passed through
MarkIP6Header or CheckIP6Header so that the proper packet header annotations
are set.

Beyers



On Fri, May 13, 2011 at 3:33 PM, milos rovcanin <ro1208984 at gmail.com> wrote:

> Greetings,
>
> Like it's said in the subject, this code:
>
> click_ether * eth = (click_ether *)p->data();
> click_ip6 * ip6 = (click_ip6 *)(eth+1);
>
>  if(ip6->ip6_nxt == 6) {
>   click_tcp* tcp = (click_tcp*)(ip6+1);
>   src_port = tcp->th_sport;
>   dst_port = tcp->th_dport;
> }
>
> just won't return correct values for dst_port and src_port! I have checked
> it in Wireshark too.
> What am I doing wrong?
>
> Thanks in advance!
> --
> Milos Rovcanin
> Department of Information Technology
> Internet Based Communication Networks and Services research group (IBCN)
> Ghent University - IBBT
> Gaston Crommenlaan 8 (Bus 201), B-9050 Gent, Belgium
> T: +32 9 33 14946 ; T Secr: +32 9 33 14900
> E: Milos.Rovcanin at intec.UGent.be
> W: www.ibcn.intec.UGent.be
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>


More information about the click mailing list