diff options
author | Alexander Aring <alex.aring@gmail.com> | 2013-08-16 21:59:56 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-08-20 13:23:11 -0700 |
commit | 4666669fc3b83f0d01b08c6b17432563f2eedcba (patch) | |
tree | 393f1fb642ac6aeff475f72e5b4a297385c2d5e0 | |
parent | 31afe1f73e46221650acfcb411e6949f4a8f7571 (diff) | |
download | linux-4666669fc3b83f0d01b08c6b17432563f2eedcba.tar.gz linux-4666669fc3b83f0d01b08c6b17432563f2eedcba.tar.bz2 linux-4666669fc3b83f0d01b08c6b17432563f2eedcba.zip |
6lowpan: introduce lowpan_fetch_skb function
This patch adds a helper function to parse the ipv6 header to a
6lowpan header in stream.
This function checks first if we can pull data with a specific
length from a skb. If this seems to be okay, we copy skb data to
a destination pointer and run skb_pull.
Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Reviewed-by: Werner Almesberger <werner@almesberger.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ieee802154/6lowpan.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/net/ieee802154/6lowpan.h b/net/ieee802154/6lowpan.h index 4b8f917658b5..a636545d8dcf 100644 --- a/net/ieee802154/6lowpan.h +++ b/net/ieee802154/6lowpan.h @@ -230,4 +230,16 @@ dest = 16 bit inline */ #define LOWPAN_NHC_UDP_CS_P_11 0xF3 /* source & dest = 0xF0B + 4bit inline */ +static inline bool lowpan_fetch_skb(struct sk_buff *skb, + void *data, const unsigned int len) +{ + if (unlikely(!pskb_may_pull(skb, len))) + return true; + + skb_copy_from_linear_data(skb, data, len); + skb_pull(skb, len); + + return false; +} + #endif /* __6LOWPAN_H__ */ |