xref: /linux-6.15/include/linux/if_tunnel.h (revision e086cadc)
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