|
@@ -250,6 +250,29 @@ extern struct socket *sockfd_lookup(int fd, int *err);
|
|
#define sockfd_put(sock) fput(sock->file)
|
|
#define sockfd_put(sock) fput(sock->file)
|
|
extern int net_ratelimit(void);
|
|
extern int net_ratelimit(void);
|
|
|
|
|
|
|
|
+#define net_ratelimited_function(function, ...) \
|
|
|
|
+do { \
|
|
|
|
+ if (net_ratelimit()) \
|
|
|
|
+ function(__VA_ARGS__); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define net_emerg_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_emerg, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_alert_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_alert, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_crit_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_crit, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_err_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_err, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_notice_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_notice, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_warn_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_warn, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_info_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_info, fmt, ##__VA_ARGS__)
|
|
|
|
+#define net_dbg_ratelimited(fmt, ...) \
|
|
|
|
+ net_ratelimited_function(pr_debug, fmt, ##__VA_ARGS__)
|
|
|
|
+
|
|
#define net_random() random32()
|
|
#define net_random() random32()
|
|
#define net_srandom(seed) srandom32((__force u32)seed)
|
|
#define net_srandom(seed) srandom32((__force u32)seed)
|
|
|
|
|