1 #ifndef __LINUX_NET_WRAPPER_H
2 #define __LINUX_NET_WRAPPER_H 1
4 #include_next <linux/net.h>
5 #include <linux/atomic.h>
7 #ifndef net_ratelimited_function
8 #define net_ratelimited_function(function, ...) \
10 if (net_ratelimit()) \
11 function(__VA_ARGS__); \
14 #define net_emerg_ratelimited(fmt, ...) \
15 net_ratelimited_function(pr_emerg, fmt, ##__VA_ARGS__)
16 #define net_alert_ratelimited(fmt, ...) \
17 net_ratelimited_function(pr_alert, fmt, ##__VA_ARGS__)
18 #define net_crit_ratelimited(fmt, ...) \
19 net_ratelimited_function(pr_crit, fmt, ##__VA_ARGS__)
20 #define net_err_ratelimited(fmt, ...) \
21 net_ratelimited_function(pr_err, fmt, ##__VA_ARGS__)
22 #define net_notice_ratelimited(fmt, ...) \
23 net_ratelimited_function(pr_notice, fmt, ##__VA_ARGS__)
24 #define net_warn_ratelimited(fmt, ...) \
25 net_ratelimited_function(pr_warn, fmt, ##__VA_ARGS__)
26 #define net_info_ratelimited(fmt, ...) \
27 net_ratelimited_function(pr_info, fmt, ##__VA_ARGS__)
28 #define net_dbg_ratelimited(fmt, ...) \
29 net_ratelimited_function(pr_debug, fmt, ##__VA_ARGS__)
32 #ifndef net_get_random_once
33 bool __net_get_random_once(void *buf, int nbytes, bool *done,
36 #define ___NET_RANDOM_STATIC_KEY_INIT ATOMIC_INIT(0)
39 #define net_get_random_once(buf, nbytes) \
41 bool ___ret = false; \
42 static bool ___done = false; \
43 static atomic_t ___done_key = \
44 ___NET_RANDOM_STATIC_KEY_INIT; \
45 if (!atomic_read(&___done_key)) \
46 ___ret = __net_get_random_once(buf, \