All of lore.kernel.org
 help / color / mirror / Atom feed
* Problem getting IPv6 port numbers
@ 2011-03-25 11:27 Mark Montague
  2011-03-25 13:29 ` Jan Engelhardt
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Montague @ 2011-03-25 11:27 UTC (permalink / raw)
  To: netfilter-devel

  I'm writing a netfilter match extension (xtables-addons 1.33, kernel 
2.6.35, .family=NFPROTO_UNSPEC) that needs to examine the source and 
destination port numbers of all packets.  The following code 
successfully gets the port numbers for IPv4 TCP and UDP packets:

static bool xt_mymatch_mt(const struct sk_buff *skb,
                           struct xt_action_param *par)
{
         const __be16 *pptr;
         __be16 _ports[2];
         int sport = 0;
         int dport = 0;

         if (par->fragoff == 0) {
                 pptr = skb_header_pointer(skb, par->thoff,
                         sizeof(_ports), _ports);
                 if (pptr != NULL) {
                         sport = ntohs(pptr[0]);
                         dport = ntohs(pptr[1]);
                 }
         }
         /* ...remaining code omitted... */
}

However, when I test this with "telnet ::1 1234", it does not work for 
IPv6 TCP packets (I have not tried with IPv6 UDP packets yet).  By 
adding printk() statements, I've determined that par->fragoff is never 0 
for my IPv6 TCP packets -- instead, it is large numbers such as 
33569744, 2164528116, or 2164412871.  However, par->in and par->out are 
both correct.  par->matchinfo, ipv6_hdr(skb)->saddr, and 
ipv6_hdr(skb)->daddr are also all correct.

What am I doing wrong?

Thanks in advance for any help.

--
   Mark Montague
   mark@catseye.org


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-03-26 12:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-25 11:27 Problem getting IPv6 port numbers Mark Montague
2011-03-25 13:29 ` Jan Engelhardt
2011-03-26  2:54   ` Mark Montague
2011-03-26 12:19     ` Jan Engelhardt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.