11da177e4SLinus Torvalds #ifndef _IF_TUNNEL_H_ 21da177e4SLinus Torvalds #define _IF_TUNNEL_H_ 31da177e4SLinus Torvalds 4c19e654dSHerbert Xu #include <linux/ip.h> 5125a77edSBrian Haley #include <linux/in6.h> 6607ca46eSDavid Howells #include <uapi/linux/if_tunnel.h> 7aa0010f8SAmerigo Wang #include <linux/u64_stats_sync.h> 8aa0010f8SAmerigo Wang 9*e086cadcSAmerigo Wang /* 10*e086cadcSAmerigo Wang * Locking : hash tables are protected by RCU and RTNL 11*e086cadcSAmerigo Wang */ 12*e086cadcSAmerigo Wang 13*e086cadcSAmerigo Wang #define for_each_ip_tunnel_rcu(pos, start) \ 14*e086cadcSAmerigo Wang for (pos = rcu_dereference(start); pos; pos = rcu_dereference(pos->next)) 15*e086cadcSAmerigo Wang 16aa0010f8SAmerigo Wang /* often modified stats are per cpu, other are shared (netdev->stats) */ 17aa0010f8SAmerigo Wang struct pcpu_tstats { 18aa0010f8SAmerigo Wang u64 rx_packets; 19aa0010f8SAmerigo Wang u64 rx_bytes; 20aa0010f8SAmerigo Wang u64 tx_packets; 21aa0010f8SAmerigo Wang u64 tx_bytes; 22aa0010f8SAmerigo Wang struct u64_stats_sync syncp; 23aa0010f8SAmerigo Wang }; 246fd8bb88SMasahide NAKAMURA 251da177e4SLinus Torvalds #endif /* _IF_TUNNEL_H_ */ 26