build: rename configure.in to configure.ac
PATCH 1/3 build: rename configure.in to configure.ac
% autoreconf -fi
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in' [...]
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in' [...]
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
--- configure.ac | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.in | 94 ---------------------------------------------------------- 2 files changed, 94 insertions(+), 94 deletions(-) create mode 100644 configure.ac delete mode 100644 configure.in
configure.ac new file +94 -0
@@ -0,0 +1,94 @@ +AC_INIT(nft-sync, 0.1-alpha, [email protected]) +AC_CONFIG_AUX_DIR([build-aux]) + +AC_CANONICAL_HOST +AC_CONFIG_MACRO_DIR([m4]) +AM_INIT_AUTOMAKE([-Wall foreign subdir-objects + tar-pax no-dist-gzip dist-bzip2 1.6]) + +dnl kernel style compile messages +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) + +AC_PROG_CC +AC_DISABLE_STATIC +AM_PROG_LIBTOOL +AC_PROG_INSTALL +AC_PROG_LN_S +AM_PROG_LEX +AC_PROG_YACC + +case "$host" in +*-*-linux*) ;; +*) AC_MSG_ERROR([Linux only, dude!]);; +esac + +dnl Dependencies +if test -z "$ac_cv_prog_YACC" +then + echo "*** Error: No suitable bison/yacc found. ***" + echo " Please install the 'bison' package." + exit 1 +fi +if test -z "$ac_cv_prog_LEX" +then + echo "*** Error: No suitable flex/lex found. ***" + echo " Please install the 'flex' package." + exit 1 +fi + +AC_MSG_CHECKING(flex version) +flex_version=`$ac_cv_prog_LEX --version | sed 's/version//g' | awk '/flex/ {print $2}'` +flex_major=`echo $flex_version| cut -d . -f 1` +flex_minor=`echo $flex_version| cut -d . -f 2` +flex_rev=`echo $flex_version| cut -d . -f 3` + +if test "$flex_major" -eq "2" && test "$flex_minor" -eq "5" && test "$flex_rev" -ge "33"; then + AC_MSG_RESULT([$flex_version. OK]) +else + AC_MSG_WARN([flex version $flex_version found. + Version 2.5.33 or greater is required. You may experience problems + while compilating the conntrack-tools. Please, consider to upgrade + flex.]) +fi + +PKG_CHECK_MODULES([LIBMNL], [libmnl >= 1.0.3]) +PKG_CHECK_MODULES([LIBNFTNL], [libnftnl >= 1.0.0]) +AC_CHECK_HEADER([ev.h], + AC_CHECK_LIB([ev], [ev_loop_new], [BUILD_LIBEV=$WITH_LIBEV], + [test x$WITH_LIBEV != xauto && AC_MSG_ERROR("libev not found")]), + [test x$WITH_LIBEV != xauto && AC_MSG_ERROR("ev.h not found")]) + +AC_CHECK_HEADERS(arpa/inet.h) +dnl check for inet_pton +AC_CHECK_FUNCS(inet_pton) +dnl Some systems have it, but not IPv6 +if test "$ac_cv_func_inet_pton" = "yes" ; then +AC_MSG_CHECKING(if inet_pton supports IPv6) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ +#ifdef HAVE_SYS_TYPES_H +#include <sys/types.h> +#endif +#ifdef HAVE_SYS_SOCKET_H +#include <sys/socket.h> +#endif +#ifdef HAVE_NETINET_IN_H +#include <netinet/in.h> +#endif +#ifdef HAVE_ARPA_INET_H +#include <arpa/inet.h> +#endif +int main() + { + struct in6_addr addr6; + if (inet_pton(AF_INET6, "::1", &addr6) < 1) + exit(1); + else + exit(0); + } + ]])],[ AC_MSG_RESULT(yes) + AC_DEFINE_UNQUOTED(HAVE_INET_PTON_IPV6, 1, [Define to 1 if inet_pton supports IPv6.]) + ],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)]) +fi + +AC_CONFIG_FILES([Makefile src/Makefile include/Makefile tests/Makefile]) +AC_OUTPUT
configure.in deleted +0 -94
94 lines not on this page · raw message
PATCH 2/3 mnl: sync source code with nft
Let's update the mnl source code to match the latest in nft.
--- include/linux/netfilter/nf_tables.h | 125 +++++++++++++++++++++- include/mnl.h | 2 include/utils.h | 9 ++ src/main.c | 2 src/mnl.c | 198 ++++++++++++++++++++++------------- src/utils.c | 7 + 6 files changed, 261 insertions(+), 82 deletions(-)
include/linux/netfilter/nf_tables.h +116 -9
@@ -1,7 +1,8 @@#ifndef _LINUX_NF_TABLES_H#define _LINUX_NF_TABLES_H -#define NFT_CHAIN_MAXNAMELEN 32 +#define NFT_CHAIN_MAXNAMELEN 32 +#define NFT_USERDATA_MAXLEN 256enum nft_registers { NFT_REG_VERDICT,
@@ -50,6 +51,8 @@ enum nft_verdicts {* @NFT_MSG_NEWSETELEM: create a new set element (enum nft_set_elem_attributes) * @NFT_MSG_GETSETELEM: get a set element (enum nft_set_elem_attributes) * @NFT_MSG_DELSETELEM: delete a set element (enum nft_set_elem_attributes) +* @NFT_MSG_NEWGEN: announce a new generation, only for events (enum nft_gen_attributes) +* @NFT_MSG_GETGEN: get the rule-set generation (enum nft_gen_attributes) */ enum nf_tables_msg_types {NFT_MSG_NEWTABLE ,
@@ -67,6 +70,8 @@ enum nf_tables_msg_types {NFT_MSG_NEWSETELEM ,NFT_MSG_GETSETELEM ,NFT_MSG_DELSETELEM , +NFT_MSG_NEWGEN , +NFT_MSG_GETGEN , NFT_MSG_MAX, };
@@ -156,6 +161,7 @@ enum nft_chain_attributes {* @NFTA_RULE_EXPRESSIONS: list of expressions (NLA_NESTED: nft_expr_attributes) * @NFTA_RULE_COMPAT: compatibility specifications of the rule (NLA_NESTED: nft_rule_compat_attributes) * @NFTA_RULE_POSITION: numeric handle of the previous rule (NLA_U64) +* @NFTA_RULE_USERDATA: user data (NLA_BINARY, NFT_USERDATA_MAXLEN) */ enum nft_rule_attributes {NFTA_RULE_UNSPEC ,
@@ -165,6 +171,7 @@ enum nft_rule_attributes {NFTA_RULE_EXPRESSIONS ,NFTA_RULE_COMPAT ,NFTA_RULE_POSITION , +NFTA_RULE_USERDATA , __NFTA_RULE_MAX };#define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
@@ -209,6 +216,29 @@ enum nft_set_flags { };/** +* enum nft_set_policies - set selection policy +* +* @NFT_SET_POL_PERFORMANCE: prefer high performance over low memory use +* @NFT_SET_POL_MEMORY: prefer low memory use over high performance +*/ +enum nft_set_policies { +NFT_SET_POL_PERFORMANCE , +NFT_SET_POL_MEMORY , +}; + +/** +* enum nft_set_desc_attributes - set element description +* +* @NFTA_SET_DESC_SIZE: number of elements in set (NLA_U32) +*/ +enum nft_set_desc_attributes { +NFTA_SET_DESC_UNSPEC , +NFTA_SET_DESC_SIZE , + __NFTA_SET_DESC_MAX +}; +#define NFTA_SET_DESC_MAX (__NFTA_SET_DESC_MAX - 1) + +/** * enum nft_set_attributes - nf_tables set netlink attributes * * @NFTA_SET_TABLE: table name (NLA_STRING)
@@ -218,6 +248,9 @@ enum nft_set_flags {* @NFTA_SET_KEY_LEN: key data length (NLA_U32) * @NFTA_SET_DATA_TYPE: mapping data type (NLA_U32) * @NFTA_SET_DATA_LEN: mapping data length (NLA_U32) +* @NFTA_SET_POLICY: selection policy (NLA_U32) +* @NFTA_SET_DESC: set description (NLA_NESTED) +* @NFTA_SET_ID: uniquely identifies a set in a transaction (NLA_U32) */ enum nft_set_attributes {NFTA_SET_UNSPEC ,
@@ -228,6 +261,9 @@ enum nft_set_attributes {NFTA_SET_KEY_LEN ,NFTA_SET_DATA_TYPE ,NFTA_SET_DATA_LEN , +NFTA_SET_POLICY , +NFTA_SET_DESC , +NFTA_SET_ID , __NFTA_SET_MAX };#define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
@@ -263,12 +299,14 @@ enum nft_set_elem_attributes {* @NFTA_SET_ELEM_LIST_TABLE: table of the set to be changed (NLA_STRING) * @NFTA_SET_ELEM_LIST_SET: name of the set to be changed (NLA_STRING) * @NFTA_SET_ELEM_LIST_ELEMENTS: list of set elements (NLA_NESTED: nft_set_elem_attributes) +* @NFTA_SET_ELEM_LIST_SET_ID: uniquely identifies a set in a transaction (NLA_U32) */ enum nft_set_elem_list_attributes {NFTA_SET_ELEM_LIST_UNSPEC ,NFTA_SET_ELEM_LIST_TABLE ,NFTA_SET_ELEM_LIST_SET ,NFTA_SET_ELEM_LIST_ELEMENTS , +NFTA_SET_ELEM_LIST_SET_ID , __NFTA_SET_ELEM_LIST_MAX };#define NFTA_SET_ELEM_LIST_MAX (__NFTA_SET_ELEM_LIST_MAX - 1)
@@ -454,12 +492,14 @@ enum nft_cmp_attributes {* @NFTA_LOOKUP_SET: name of the set where to look for (NLA_STRING) * @NFTA_LOOKUP_SREG: source register of the data to look for (NLA_U32: nft_registers) * @NFTA_LOOKUP_DREG: destination register (NLA_U32: nft_registers) +* @NFTA_LOOKUP_SET_ID: uniquely identifies a set in a transaction (NLA_U32) */ enum nft_lookup_attributes {NFTA_LOOKUP_UNSPEC ,NFTA_LOOKUP_SET ,NFTA_LOOKUP_SREG ,NFTA_LOOKUP_DREG , +NFTA_LOOKUP_SET_ID , __NFTA_LOOKUP_MAX };#define NFTA_LOOKUP_MAX (__NFTA_LOOKUP_MAX - 1)
@@ -535,6 +575,11 @@ enum nft_exthdr_attributes {* @NFT_META_L4PROTO: layer 4 protocol number * @NFT_META_BRI_IIFNAME: packet input bridge interface name * @NFT_META_BRI_OIFNAME: packet output bridge interface name +* @NFT_META_PKTTYPE: packet type (skb->pkt_type), special handling for loopback +* @NFT_META_CPU: cpu id through smp_processor_id() +* @NFT_META_IIFGROUP: packet input interface group +* @NFT_META_OIFGROUP: packet output interface group +* @NFT_META_CGROUP: socket control group (skb->sk->sk_classid) */ enum nft_meta_keys {NFT_META_LEN ,
@@ -556,6 +601,11 @@ enum nft_meta_keys {NFT_META_L4PROTO ,NFT_META_BRI_IIFNAME ,NFT_META_BRI_OIFNAME , +NFT_META_PKTTYPE , +NFT_META_CPU , +NFT_META_IIFGROUP , +NFT_META_OIFGROUP , + NFT_META_CGROUP, };/**
@@ -590,7 +640,6 @@ enum nft_meta_attributes {* @NFT_CT_PROTOCOL: conntrack layer 4 protocol * @NFT_CT_PROTO_SRC: conntrack layer 4 protocol source * @NFT_CT_PROTO_DST: conntrack layer 4 protocol destination -* @NFT_CT_LABELS: conntrack label bitset (stored in conntrack extension) */ enum nft_ct_keys {NFT_CT_STATE ,
@@ -606,7 +655,7 @@ enum nft_ct_keys {NFT_CT_PROTOCOL ,NFT_CT_PROTO_SRC ,NFT_CT_PROTO_DST , - NFT_CT_LABEL, + NFT_CT_LABELS, };/**
@@ -615,12 +664,14 @@ enum nft_ct_keys {* @NFTA_CT_DREG: destination register (NLA_U32) * @NFTA_CT_KEY: conntrack data item to load (NLA_U32: nft_ct_keys) * @NFTA_CT_DIRECTION: direction in case of directional keys (NLA_U8) +* @NFTA_CT_SREG: source register (NLA_U32) */ enum nft_ct_attributes {NFTA_CT_UNSPEC ,NFTA_CT_DREG ,NFTA_CT_KEY ,NFTA_CT_DIRECTION , +NFTA_CT_SREG , __NFTA_CT_MAX };#define NFTA_CT_MAX (__NFTA_CT_MAX - 1)
@@ -660,6 +711,8 @@ enum nft_counter_attributes {* @NFTA_LOG_PREFIX: prefix to prepend to log messages (NLA_STRING) * @NFTA_LOG_SNAPLEN: length of payload to include in netlink message (NLA_U32) * @NFTA_LOG_QTHRESHOLD: queue threshold (NLA_U32) +* @NFTA_LOG_LEVEL: log level (NLA_U32) +* @NFTA_LOG_FLAGS: logging flags (NLA_U32) */ enum nft_log_attributes {NFTA_LOG_UNSPEC ,
@@ -667,6 +720,8 @@ enum nft_log_attributes {NFTA_LOG_PREFIX ,NFTA_LOG_SNAPLEN ,NFTA_LOG_QTHRESHOLD , +NFTA_LOG_LEVEL , +NFTA_LOG_FLAGS , __NFTA_LOG_MAX };#define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1)
@@ -696,11 +751,32 @@ enum nft_queue_attributes {* * @NFT_REJECT_ICMP_UNREACH: reject using ICMP unreachable * @NFT_REJECT_TCP_RST: reject using TCP RST +* @NFT_REJECT_ICMPX_UNREACH: abstracted ICMP unreachable for bridge and inet */ enum nft_reject_types {NFT_REJECT_ICMP_UNREACH ,NFT_REJECT_TCP_RST , +NFT_REJECT_ICMPX_UNREACH , +}; + +/** +* enum nft_reject_code - Generic reject codes for IPv4/IPv6 +* +* @NFT_REJECT_ICMPX_NO_ROUTE: no route to host / network unreachable +* @NFT_REJECT_ICMPX_PORT_UNREACH: port unreachable +* @NFT_REJECT_ICMPX_HOST_UNREACH: host unreachable +* @NFT_REJECT_ICMPX_ADMIN_PROHIBITED: administratively prohibited +* +* These codes are mapped to real ICMP and ICMPv6 codes. +*/ +enum nft_reject_inet_code { +NFT_REJECT_ICMPX_NO_ROUTE =0 , +NFT_REJECT_ICMPX_PORT_UNREACH , +NFT_REJECT_ICMPX_HOST_UNREACH , +NFT_REJECT_ICMPX_ADMIN_PROHIBITED , + __NFT_REJECT_ICMPX_MAX }; +#define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX - 1)/** * enum nft_reject_attributes - nf_tables reject expression netlink attributes
@@ -736,6 +812,7 @@ enum nft_nat_types {* @NFTA_NAT_REG_ADDR_MAX: source register of address range end (NLA_U32: nft_registers) * @NFTA_NAT_REG_PROTO_MIN: source register of proto range start (NLA_U32: nft_registers) * @NFTA_NAT_REG_PROTO_MAX: source register of proto range end (NLA_U32: nft_registers) +* @NFTA_NAT_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32) */ enum nft_nat_attributes {NFTA_NAT_UNSPEC ,
@@ -745,19 +822,49 @@ enum nft_nat_attributes {NFTA_NAT_REG_ADDR_MAX ,NFTA_NAT_REG_PROTO_MIN ,NFTA_NAT_REG_PROTO_MAX , +NFTA_NAT_FLAGS , __NFTA_NAT_MAX };#define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)/** -* enum nft_nfacct_attributes - nf_tables nfacct expression netlink attributes +* enum nft_masq_attributes - nf_tables masquerade expression attributes +* +* @NFTA_MASQ_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32) +*/ +enum nft_masq_attributes { +NFTA_MASQ_UNSPEC , +NFTA_MASQ_FLAGS , + __NFTA_MASQ_MAX +}; +#define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1) + +/** +* enum nft_redir_attributes - nf_tables redirect expression netlink attributes +* +* @NFTA_REDIR_REG_PROTO_MIN: source register of proto range start (NLA_U32: nft_registers) +* @NFTA_REDIR_REG_PROTO_MAX: source register of proto range end (NLA_U32: nft_registers) +* @NFTA_REDIR_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32) +*/ +enum nft_redir_attributes { +NFTA_REDIR_UNSPEC , +NFTA_REDIR_REG_PROTO_MIN , +NFTA_REDIR_REG_PROTO_MAX , +NFTA_REDIR_FLAGS , + __NFTA_REDIR_MAX +}; +#define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1) + +/** +* enum nft_gen_attributes - nf_tables ruleset generation attributes * -* @NFTA_NFACCT_NAME: nfacct object name (NLA_STRING) +* @NFTA_GEN_ID: Ruleset generation ID (NLA_U32) */ -enum nft_nfacct_attributes { -NFTA_NFACCT_NAME , - __NFTA_NFACCT_MAX, +enum nft_gen_attributes { +NFTA_GEN_UNSPEC , +NFTA_GEN_ID , + __NFTA_GEN_MAX }; -#define NFTA_NFACCT_MAX (__NFTA_NFACCT_MAX -1) +#define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1)#endif /* _LINUX_NF_TABLES_H */
include/mnl.h +2 -0
@@ -11,6 +11,8 @@#include "config.h" +void mnl_genid_get (struct mnl_socket *nf_sock); +struct nft_rule_list *mnl_rule_dump (struct mnl_socket *nf_sock,int family);struct nft_chain_list *mnl_chain_dump (struct mnl_socket *nf_sock,int family);struct nft_table_list *mnl_table_dump (struct mnl_socket *nf_sock,int family);
include/utils.h +9 -0
@@ -1,7 +1,16 @@#ifndef _UTILS_H_#define _UTILS_H_ +#include <stdint.h> + +#define __noreturn __attribute__((__noreturn__)) +void xfree (const void *ptr); +void __memory_allocation_error (const char *filename,uint32_t line)__noreturn ; + +#define memory_allocation_error () \ + __memory_allocation_error(__FILE__, __LINE__); +#endif /* _UTILS_H_ */
src/main.c +2 -0
@@ -108,6 +108,8 @@ int main(int argc, char *argv[]) goto err; } +mnl_genid_get (nfts_inst.nl_query_sock); +nfts_log (NFTS_LOG_INFO ,"listening at %s" ,inet_ntoa (nfts_inst.tcp.server.ipv4.inet_addr)); }
src/mnl.c +125 -73
308 lines not on this page · raw message
src/utils.c +7 -0
@@ -8,6 +8,7 @@*/ #include <stdlib.h> +#include <stdio.h> #include "utils.h"
@@ -15,3 +16,9 @@ void xfree(const void *ptr) {free ((void *)ptr); } + +void __noreturn __memory_allocation_error (const char *filename,uint32_t line) +{ +fprintf (stderr,"%s:%u: Memory allocation failure\n" , filename, line); +exit (EXIT_FAILURE ); +}
Pablo Neira Ayuso
maintainerRe: [nft-sync PATCH 2/3] mnl: sync source code with nft
Quoted 1 line · Arturo Borrero Gonzalez
Let's update the mnl source code to match the latest in nft.
Please, split this in smaller patches, it's good to keep track of the git history when looking at the past.
include/linux/netfilter/nf_tables.h
Quoted 14 lines
Signed-off-by Arturo Borrero Gonzalez <[email protected]>--- include/linux/netfilter/nf_tables.h | 125 +++++++++++++++++++++- include/mnl.h | 2 include/utils.h | 9 ++ src/main.c | 2 src/mnl.c | 198 ++++++++++++++++++++++------------- src/utils.c | 7 + 6 files changed, 261 insertions(+), 82 deletions(-)include/linux/netfilter/nf_tables.h +0
-0
[...]
At least this one should come in an initial patch to refresh the cached header.
We should also start abstracting and moving things to the library in a way that nft-sync can reuse, so we avoid code redundancy.
Re: [nft-sync PATCH 2/3] mnl: sync source code with nft
Quoted 3 lines · Pablo Neira Ayuso
We should also start abstracting and moving things to the library in a way that nft-sync can reuse, so we avoid code redundancy.
Ok, I like that path.
I tried it once (a patch series called mnlio, some time ago). I will try again :-)
Signature · 5 lines
Arturo Borrero González -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/3 client: parse ruleset before printing
In reply to Arturo Borrero GonzalezInstead of printing directly the payload to stdout, let's parse it with libnftnl, so we make sure we fetch a ruleset that we actually understand.
--- src/client.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-)
src/client.c +46 -3
@@ -21,12 +21,55 @@#include "msg_buff.h" #include "proto.h" #include "config.h" +#include "utils.h" + +#include <libnftnl/ruleset.h> +#include <libnftnl/common.h> + +static struct nft_ruleset *payload2ruleset (struct msg_buff *msgb) +{ +struct nft_ruleset *rs; +struct nft_parse_err *err; +char *data = (char *)(msgb_data (msgb) +sizeof (struct nft_sync_hdr )); + + rs =nft_ruleset_alloc (); +if (rs ==NULL ) +memory_allocation_error (); + + err =nft_parse_err_alloc (); +if (err ==NULL ) +memory_allocation_error (); + +if (nft_ruleset_parse (rs,NFT_PARSE_XML , data, err) <0 ) { +nft_parse_perror ("unable to parse remote ruleset" , err); +nft_parse_err_free (err); +nft_ruleset_free (rs); +return NULL ; + } + +nft_parse_err_free (err); +return rs; +}static void print_payload (struct msg_buff *msgb) { -write (1 ,msgb_data (msgb) +sizeof (struct nft_sync_hdr ), -msgb_len (msgb) -sizeof (struct nft_sync_hdr )); -write (1 ,"\n" ,1 ); +struct nft_ruleset *rs =payload2ruleset (msgb); + +if (rs ==NULL ) { +nfts_log (NFTS_LOG_ERROR , +"unable to parse remote ruleset\n" ); +return ; + } + +if (nft_ruleset_fprintf (stdout, rs,NFT_OUTPUT_XML ,0 ) <0 ) { +nfts_log (NFTS_LOG_ERROR , +"unable to print remote ruleset to stdout\n" ); +nft_ruleset_free (rs); +return ; + } + +nft_ruleset_free (rs); +fprintf (stdout,"\n" ); }static int process_response (struct msg_buff *msgb,int len)
Pablo Neira Ayuso
maintainerRe: [nft-sync PATCH 3/3] client: parse ruleset before printing
Quoted 2 lines · Arturo Borrero Gonzalez
Instead of printing directly the payload to stdout, let's parse it with libnftnl, so we make sure we fetch a ruleset that we actually understand.
Alvaro has been working on a new interface that provides a callback to express incremental updates through xml/json.
He should be posting that soon I guess, it would be good if this change is based on that.
Quoted 7 lines · Arturo Borrero Gonzalez
% autoreconf -fi
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in' [...]
aclocal: warning: autoconf input should be named 'configure.ac', not 'configure.in'
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in' [...]
automake: warning: autoconf input should be named 'configure.ac', not 'configure.in'
Applied, thanks.
Please next time use format-patch -M80%, it detects renames and the patch is way smaller and easier to review.