This is useful to explain to users what to do during a migration.
extern char localpeer[MAX_HOSTNAME_LEN];
extern struct list global_listener_queue; /* list of the temporarily limited listeners */
extern struct task *global_listener_queue_task;
+extern unsigned int warned; /* bitfield of a few warnings to emit just once */
+
+/* bit values to go with "warned" above */
+/* #define WARN_* */
+
+/* to be used with warned and WARN_* */
+static inline int already_warned(unsigned int warning)
+{
+ if (warned & warning)
+ return 1;
+ warned |= warning;
+ return 0;
+}
#endif /* _TYPES_GLOBAL_H */
struct task *global_listener_queue_task;
static struct task *manage_global_listener_queue(struct task *t);
+/* bitfield of a few warnings to emit just once (WARN_*) */
+unsigned int warned = 0;
+
/*********************************************************************/
/* general purpose functions ***************************************/
/*********************************************************************/