}
EXPORT_SYMBOL_GPL(xtnu_register_target);
+int xtnu_register_targets(struct xtnu_target *nt, unsigned int num)
+{
+ unsigned int i;
+ int ret;
+
+ for (i = 0; i < num; ++i) {
+ ret = xtnu_register_target(&nt[i]);
+ if (ret < 0) {
+ if (i > 0)
+ xtnu_unregister_targets(nt, i);
+ return ret;
+ }
+ }
+ return 0;
+}
+EXPORT_SYMBOL_GPL(xtnu_register_targets);
+
void xtnu_unregister_target(struct xtnu_target *nt)
{
xt_unregister_target(nt->__compat_target);
}
EXPORT_SYMBOL_GPL(xtnu_unregister_target);
+void xtnu_unregister_targets(struct xtnu_target *nt, unsigned int num)
+{
+ unsigned int i;
+
+ for (i = 0; i < num; ++i)
+ xtnu_unregister_target(&nt[i]);
+}
+EXPORT_SYMBOL_GPL(xtnu_unregister_targets);
#endif
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 23)
# define ip_route_me_harder xtnu_ip_route_me_harder
# define xt_register_target xtnu_register_target
# define xt_unregister_target xtnu_unregister_target
+# define xt_register_targets xtnu_register_targets
+# define xt_unregister_targets xtnu_unregister_targets
#endif
#include "compat_xtnu.h"
extern void xtnu_unregister_matches(struct xtnu_match *, unsigned int);
extern int xtnu_register_target(struct xtnu_target *);
extern void xtnu_unregister_target(struct xtnu_target *);
+extern int xtnu_register_targets(struct xtnu_target *, unsigned int);
+extern void xtnu_unregister_targets(struct xtnu_target *, unsigned int);
#endif /* _COMPAT_XTNU_H */