> > > +static void packet_parse_headers(struct sk_buff *skb, struct socket
> *sock)
> > > +{
> > > +       if (!skb->protocol && sock->type == SOCK_RAW) {
> > > +               skb_reset_mac_header(skb);
> > > +               skb->protocol = dev_parse_header_protocol(skb);
> > > +       }
> > > +
> > > +       skb_try_probe_transport_header(skb);
> > > +}
> >
> >
> > In relation to the discussion at
> >
> >   af_packet: fix raw sockets over 6in4 tunnel
> >   http://patchwork.ozlabs.org/patch/1023623/
> >
> > if adding a new header_ops callback to parse link layer headers,
> > please have it return both protocol and link layer header length.

Sorry, I miss the point here, can you elaborate more? If all you need is
to have some header_ops callback that returns the L2 header length,
there is one already, it's called parse. Or do you have a specific
reason why you want my callback to also return the header length?

> This could just be an extension of existing header_ops->validate.

If you suggest extending an existing function, parse looks more
suitable, but I decided not to touch the existing ones for two reasons:

1. I don't want to break the existing code that uses the parse function
and will need to be modified to pass an extra parameter.

2. I don't want to spend machine time on copying the destination MAC
when I only need the protocol, and vice versa.

I'm looking forward to hearing your thoughts about it.

Reply via email to