aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/dst.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/dst.h')
-rw-r--r--include/net/dst.h32
1 files changed, 24 insertions, 8 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index 81d1413a8701..a217c838ec0d 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -43,10 +43,11 @@ struct dst_entry {
43 short error; 43 short error;
44 short obsolete; 44 short obsolete;
45 int flags; 45 int flags;
46#define DST_HOST 1 46#define DST_HOST 0x0001
47#define DST_NOXFRM 2 47#define DST_NOXFRM 0x0002
48#define DST_NOPOLICY 4 48#define DST_NOPOLICY 0x0004
49#define DST_NOHASH 8 49#define DST_NOHASH 0x0008
50#define DST_NOCACHE 0x0010
50 unsigned long expires; 51 unsigned long expires;
51 52
52 unsigned short header_len; /* more space at head required */ 53 unsigned short header_len; /* more space at head required */
@@ -228,22 +229,37 @@ static inline void skb_dst_force(struct sk_buff *skb)
228 229
229 230
230/** 231/**
232 * __skb_tunnel_rx - prepare skb for rx reinsert
233 * @skb: buffer
234 * @dev: tunnel device
235 *
236 * After decapsulation, packet is going to re-enter (netif_rx()) our stack,
237 * so make some cleanups. (no accounting done)
238 */
239static inline void __skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev)
240{
241 skb->dev = dev;
242 skb->rxhash = 0;
243 skb_set_queue_mapping(skb, 0);
244 skb_dst_drop(skb);
245 nf_reset(skb);
246}
247
248/**
231 * skb_tunnel_rx - prepare skb for rx reinsert 249 * skb_tunnel_rx - prepare skb for rx reinsert
232 * @skb: buffer 250 * @skb: buffer
233 * @dev: tunnel device 251 * @dev: tunnel device
234 * 252 *
235 * After decapsulation, packet is going to re-enter (netif_rx()) our stack, 253 * After decapsulation, packet is going to re-enter (netif_rx()) our stack,
236 * so make some cleanups, and perform accounting. 254 * so make some cleanups, and perform accounting.
255 * Note: this accounting is not SMP safe.
237 */ 256 */
238static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev) 257static inline void skb_tunnel_rx(struct sk_buff *skb, struct net_device *dev)
239{ 258{
240 skb->dev = dev;
241 /* TODO : stats should be SMP safe */ 259 /* TODO : stats should be SMP safe */
242 dev->stats.rx_packets++; 260 dev->stats.rx_packets++;
243 dev->stats.rx_bytes += skb->len; 261 dev->stats.rx_bytes += skb->len;
244 skb->rxhash = 0; 262 __skb_tunnel_rx(skb, dev);
245 skb_dst_drop(skb);
246 nf_reset(skb);
247} 263}
248 264
249/* Children define the path of the packet through the 265/* Children define the path of the packet through the