diff --git a/extensions/compat_xtables.c b/extensions/compat_xtables.c index 9ab4785..dbf5c11 100644 --- a/extensions/compat_xtables.c +++ b/extensions/compat_xtables.c @@ -509,4 +509,18 @@ int xtnu_skb_linearize(struct sk_buff *skb) EXPORT_SYMBOL_GPL(xtnu_skb_linearize); #endif +void *HX_memmem(const void *space, size_t spacesize, + const void *point, size_t pointsize) +{ + size_t i; + + if (pointsize > spacesize) + return NULL; + for (i = 0; i <= spacesize - pointsize; ++i) + if (memcmp(space + i, point, pointsize) == 0) + return (void *)space + i; + return NULL; +} +EXPORT_SYMBOL_GPL(HX_memmem); + MODULE_LICENSE("GPL"); diff --git a/extensions/compat_xtnu.h b/extensions/compat_xtnu.h index 6e6620a..f4477d1 100644 --- a/extensions/compat_xtnu.h +++ b/extensions/compat_xtnu.h @@ -154,4 +154,6 @@ extern void xtnu_proto_csum_replace4(__u16 __bitwise *, struct sk_buff *, __be32, __be32, bool); extern int xtnu_skb_linearize(struct sk_buff *); +extern void *HX_memmem(const void *, size_t, const void *, size_t); + #endif /* _COMPAT_XTNU_H */