From: Jozsef Kadlecsik Date: Wed, 17 Dec 2014 06:44:37 +0000 (+0100) Subject: Compatibility: check kernel source for list_last_entry X-Git-Tag: pablo~35 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c350a7f39402ace2456abe609beb2e6d53b3127a;p=thirdparty%2Fipset.git Compatibility: check kernel source for list_last_entry list_last_entry is missing on CentOS7, reported by Ricardo Klein. --- diff --git a/configure.ac b/configure.ac index 42122745..74bc7de7 100644 --- a/configure.ac +++ b/configure.ac @@ -376,6 +376,16 @@ else AC_SUBST(HAVE_TCF_EMATCH_STRUCT_NET, undef) fi +AC_MSG_CHECKING([kernel source for list_last_entry]) +if test -f $ksourcedir/include/linux/list.h && \ + $GREP -q 'list_last_entry' $ksourcedir/include/linux/list.h; then + AC_MSG_RESULT(yes) + AC_SUBST(HAVE_LIST_LAST_ENTRY, define) +else + AC_MSG_RESULT(no) + AC_SUBST(HAVE_LIST_LAST_ENTRY, undef) +fi + AC_MSG_CHECKING([kernel source for struct net_generic]) if test -f $ksourcedir/include/net/netns/generic.h && \ $GREP -q 'struct net_generic' $ksourcedir/include/net/netns/generic.h; then diff --git a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in index 375a18a3..c33de443 100644 --- a/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in +++ b/kernel/include/linux/netfilter/ipset/ip_set_compat.h.in @@ -40,6 +40,7 @@ #@HAVE_XT_MTCHK_PARAM_STRUCT_NET@ HAVE_XT_MTCHK_PARAM_STRUCT_NET #@HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET@ HAVE_TCF_EMATCH_OPS_CHANGE_ARG_NET #@HAVE_TCF_EMATCH_STRUCT_NET@ HAVE_TCF_EMATCH_STRUCT_NET +#@HAVE_LIST_LAST_ENTRY@ HAVE_LIST_LAST_ENTRY /* Not everything could be moved here. Compatibility stuffs can be found in * xt_set.c, ip_set_core.c, ip_set_getport.c, pfxlen.c too. @@ -164,4 +165,9 @@ static inline int nla_put_net32(struct sk_buff *skb, int attrtype, __be32 value) } #endif +#ifndef HAVE_LIST_LAST_ENTRY +#define list_last_entry(ptr, type, member) \ + list_entry((ptr)->prev, type, member) +#endif + #endif /* __IP_SET_COMPAT_H */