ANDROID: netfilter: xt_quota2: make quota2_log work well

In upstream commit 7200135bc1e61f1437dc326ae2ef2f310c50b4eb
(netfilter: kill ulog targets)
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=7200135bc1e6

ipt_ULOG target was removed, meanwhile, the IP_NF_TARGET_ULOG Kconfig
and ipt_ULOG.h header file were removed too. This causes we cannot enable
QUOTA2_LOG, and netd complains this error: "Unable to open quota socket".
So when we reach the quota2 limit, userspace will not be notified with
this event.

Since IP_NF_TARGET_ULOG was removed, we need not depend on
"IP_NF_TARGET_ULOG=n", and for compatibility, add ulog_packet_msg_t
related definitions copied from "ipt_ULOG.h".

Change-Id: I38132efaabf52bea75dfd736ce734a1b9690e87e
Reported-by: Samboo Shen <samboo.shen@spreadtrum.com>
Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
This commit is contained in:
Liping Zhang 2016-06-22 16:49:48 +08:00 committed by Amit Pundir
parent 62610922e8
commit 93d9817199
2 changed files with 20 additions and 2 deletions

View File

@ -1427,7 +1427,6 @@ config NETFILTER_XT_MATCH_QUOTA2
config NETFILTER_XT_MATCH_QUOTA2_LOG
bool '"quota2" Netfilter LOG support'
depends on NETFILTER_XT_MATCH_QUOTA2
depends on IP_NF_TARGET_ULOG=n # not yes, not module, just no
default n
help
This option allows `quota2' to log ONCE when a quota limit

View File

@ -21,8 +21,27 @@
#include <linux/netfilter/x_tables.h>
#include <linux/netfilter/xt_quota2.h>
#ifdef CONFIG_NETFILTER_XT_MATCH_QUOTA2_LOG
#include <linux/netfilter_ipv4/ipt_ULOG.h>
/* For compatibility, these definitions are copied from the
* deprecated header file <linux/netfilter_ipv4/ipt_ULOG.h> */
#define ULOG_MAC_LEN 80
#define ULOG_PREFIX_LEN 32
/* Format of the ULOG packets passed through netlink */
typedef struct ulog_packet_msg {
unsigned long mark;
long timestamp_sec;
long timestamp_usec;
unsigned int hook;
char indev_name[IFNAMSIZ];
char outdev_name[IFNAMSIZ];
size_t data_len;
char prefix[ULOG_PREFIX_LEN];
unsigned char mac_len;
unsigned char mac[ULOG_MAC_LEN];
unsigned char payload[0];
} ulog_packet_msg_t;
#endif
/**