extern int netlink_batch_send(struct list_head *err_list);
extern void netlink_restart(void);
-extern void netlink_abi_error(void) __noreturn;
+#define netlink_abi_error() \
+ __netlink_abi_error(__FILE__, __LINE__, strerror(errno));
+extern void __noreturn __netlink_abi_error(const char *file, int line, const char *reason);
extern int netlink_io_error(struct netlink_ctx *ctx,
const struct location *loc, const char *fmt, ...);
extern void netlink_open_error(void) __noreturn;
nf_mon_sock = nfsock_open();
}
-void __noreturn netlink_abi_error(void)
+void __noreturn __netlink_abi_error(const char *file, int line,
+ const char *reason)
{
fprintf(stderr, "E: Contact urgently your Linux kernel vendor. "
- "Netlink ABI is broken: %s\n", strerror(errno));
+ "Netlink ABI is broken: %s:%d %s\n", file, line, reason);
exit(NFT_EXIT_FAILURE);
}