|
@@ -229,60 +229,17 @@ ipt_get_target(struct ipt_entry *e)
|
|
|
}
|
|
|
|
|
|
/* fn returns 0 to continue iteration */
|
|
|
-#define IPT_MATCH_ITERATE(e, fn, args...) \
|
|
|
-({ \
|
|
|
- unsigned int __i; \
|
|
|
- int __ret = 0; \
|
|
|
- struct ipt_entry_match *__match; \
|
|
|
- \
|
|
|
- for (__i = sizeof(struct ipt_entry); \
|
|
|
- __i < (e)->target_offset; \
|
|
|
- __i += __match->u.match_size) { \
|
|
|
- __match = (void *)(e) + __i; \
|
|
|
- \
|
|
|
- __ret = fn(__match , ## args); \
|
|
|
- if (__ret != 0) \
|
|
|
- break; \
|
|
|
- } \
|
|
|
- __ret; \
|
|
|
-})
|
|
|
+#define IPT_MATCH_ITERATE(e, fn, args...) \
|
|
|
+ XT_MATCH_ITERATE(struct ipt_entry, e, fn, ## args)
|
|
|
|
|
|
/* fn returns 0 to continue iteration */
|
|
|
-#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
|
|
-({ \
|
|
|
- unsigned int __i; \
|
|
|
- int __ret = 0; \
|
|
|
- struct ipt_entry *__entry; \
|
|
|
- \
|
|
|
- for (__i = 0; __i < (size); __i += __entry->next_offset) { \
|
|
|
- __entry = (void *)(entries) + __i; \
|
|
|
- \
|
|
|
- __ret = fn(__entry , ## args); \
|
|
|
- if (__ret != 0) \
|
|
|
- break; \
|
|
|
- } \
|
|
|
- __ret; \
|
|
|
-})
|
|
|
+#define IPT_ENTRY_ITERATE(entries, size, fn, args...) \
|
|
|
+ XT_ENTRY_ITERATE(struct ipt_entry, entries, size, fn, ## args)
|
|
|
|
|
|
/* fn returns 0 to continue iteration */
|
|
|
#define IPT_ENTRY_ITERATE_CONTINUE(entries, size, n, fn, args...) \
|
|
|
-({ \
|
|
|
- unsigned int __i, __n; \
|
|
|
- int __ret = 0; \
|
|
|
- struct ipt_entry *__entry; \
|
|
|
- \
|
|
|
- for (__i = 0, __n = 0; __i < (size); \
|
|
|
- __i += __entry->next_offset, __n++) { \
|
|
|
- __entry = (void *)(entries) + __i; \
|
|
|
- if (__n < n) \
|
|
|
- continue; \
|
|
|
- \
|
|
|
- __ret = fn(__entry , ## args); \
|
|
|
- if (__ret != 0) \
|
|
|
- break; \
|
|
|
- } \
|
|
|
- __ret; \
|
|
|
-})
|
|
|
+ XT_ENTRY_ITERATE_CONTINUE(struct ipt_entry, entries, size, n, fn, \
|
|
|
+ ## args)
|
|
|
|
|
|
/*
|
|
|
* Main firewall chains definitions and global var's definitions.
|